1. 程式人生 > 實用技巧 >kubernetes之日常管理

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