kubernetes之日常管理

kubernetes简介和安装

  1. 集群特点:
        简化应用部署
        提高硬件资源利用率
        健康检查和自修复
        自动扩容缩容
        服务发现和负载均衡
  2. 集群架构:
    主节点,承载 k8s 的控制和管理整个集群系统的控制面板
    工作节点,运行用户实际的应用
  3. master节点包含下列5个组件:
    API-server:用来接收用户请求
    scheduler:负责任务调度,例如,在work1上创建几个pod,在work2上创建几个pod等
    controller-manager:维护整个k8s的正常运行,管理pod等是否正常运行
    etcd:数据库,例如:创建pod的信息以键值对的形式存放在etcd中等
    
  4. 所有节点都应有的组件:
    kubelet:发送任务,监控检查
  5. pod是k8s中的最小调度单元,一个 pod 包含一组容器,一个 pod 不会跨越多个工作节点
  6. pod对外通讯原理
    pod地址是不能被外界访问的,此地址为纯私有地址;
    访问pod,要创建svc(理解为负载均衡器),svc的地址是不会发生改变的,svc对通过标签的方式定位这些pod,用户发来请求到svc,svc会把请求通过kubeproxy组件转发到后端的pod;
    kubeproxy的转发方式有两种(iptables和ipvs)
  7. 第一种方式:kubeadmin安装
    系统配置(所有节点):
        关闭防火墙、selinux、配置/etc/hosts、关闭swap、配置yum源
    安装docker(所有节点)yum install docker -y
        systemctl enable docker --now
    配置相关属性(所有节点):
      cat > /etc/sysctl.d/k8s.conf <<-EOF
      net_bridge.bridge-nf-call-ip6tables=1
       net_bridge.bridge-nf-call-iptables=1
       net.ipv4.ip_forward=1
       EOF
       由于网桥工作与数据链路层,在iptables没有开启bridge-nf时,数据会直接经过网桥转发,结果就是对FORWARD的设置失效
       sysctl -p /etc/sysctl.d/k8s.conf
    配置镜像加速器(所有节点)
    cat > /etc/docker/daemon.json <<-EOF { "registry-mirrors": ["https://yg6jtm5b.mirror.aliyuncs.com"] } EOF systemctl daemon-reload systemctl restart docker
    安装相关软件包(所有节点)
    yum install -y kubelet-1.18.2-0 kubeadm-1.18.2-0 kubectl-1.18.2-0 --disableexcludes=kubernetes --disableexcludes=kubernetes(从yum源里排出一些冲突的包) 注意:需要指定版本,否则会安装最新版本 systemctl enable kubelet --now

    kubeadmin的方式来安装(master节点):
    kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.18.2 --pod-network-cidr=10.244.0.0/16

    master配置:  
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config

    worker节点配置(将worker加入集群):
    kubeadm join 192.168.108.61:6443 --token 40r8vu.uyhxvbci25pqyghs --discovery-token-ca-cert-hash sha256:05ce243870371a733cca2587cd87629edb55de5ed347bec383c3298437a2e9e5
    如果命名忘记了,可以通过如下命令找回
    kubeadm token create --print-join-command

    重置节点(所有节点都可以操作):
      kubeadm reset

    删除节点:
    kubectl drain vms62.rhce.cc --delete-local-data --force --ignore-daemonsets
    kubectl delete node vms62.rhce.cc

    配置网络calico:
    docker load -i calico_v3_10.tar
    修改calico配置文件,改为pod地址网段(master节点)
    sed -i 's/192.168.0.0/10.244.0.0/g' calico_v3.10.yaml
    kubectl apply -f calico_v3.10.yaml

    至此,集群已经安装好了!
  8. 第二种方式:kube-config.yaml
    kubeadm config view > kube-config.yaml #在装好的集群里生成kube-config.yaml文件
    cat kube-config.yaml

    apiServer:
      extraArgs:
        authorization-mode: Node,RBAC
      timeoutForControlPlane: 4m0s
    apiVersion: kubeadm.k8s.io/v1beta2
    certificatesDir: /etc/kubernetes/pki
    clusterName: kubernetes
    controllerManager: {}
    dns:
      type: CoreDNS
    etcd:
      local:
        dataDir: /var/lib/etcd
    imageRepository: registry.aliyuncs.com/google_containers
    kind: ClusterConfiguration
    kubernetesVersion: v1.18.2
    networking:
      dnsDomain: cluster.local
      podSubnet: 10.244.0.0/16
      serviceSubnet: 10.96.0.0/12
    scheduler: {}

    master配置:  
    kubeadm init --config kube-config.yaml
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config

    worker节点配置(将worker加入集群):
    kubeadm join 192.168.108.61:6443 --token 40r8vu.uyhxvbci25pqyghs --discovery-token-ca-cert-hash sha256:05ce243870371a733cca2587cd87629edb55de5ed347bec383c3298437a2e9e5
    如果命名忘记了,可以通过如下命令找回
    kubeadm token create --print-join-command

    重置节点(所有节点都可以操作):
      kubeadm reset

    删除节点:
    kubectl drain vms62.rhce.cc --delete-local-data --force --ignore-daemonsets
    kubectl delete node vms62.rhce.cc

    配置网络calico:
    docker load -i calico_v3_10.tar
    修改calico配置文件,改为pod地址网段(master节点)
    sed -i 's/192.168.0.0/10.244.0.0/g' calico_v3.10.yaml
    kubectl apply -f calico_v3.10.yaml

    至此,集群已经安装好了
  9. 常见命令:
    kubectl get nodes
    kubectl cluster-info
    kubectl version
    kubectl api-versions
    kubectl config view

  

猜你喜欢

转载自www.cnblogs.com/hym-by/p/13378611.html