溫馨提示×

Ubuntu環境下Kubernetes如何管理容器

小樊
36
2025-10-20 23:52:21
欄目: 智能運維

Ubuntu環境下Kubernetes容器管理指南

一、環境準備:安裝基礎組件

在Ubuntu上使用Kubernetes管理容器前,需完成以下基礎配置:

  1. 系統預處理:更新系統并關閉交換分區(Kubernetes要求),開啟IPv4轉發和內核優化,確保時間同步。
    sudo apt update && sudo apt upgrade -y
    sudo swapoff -a
    sudo sed -i '/ swap / s/1/g' /etc/fstab
    echo "net.bridge.bridge-nf-call-iptables = 1\nnet.bridge.bridge-nf-call-ip6tables = 1\nnet.ipv4.ip_forward = 1" | sudo tee /etc/sysctl.d/k8s.conf
    sudo sysctl --system
    sudo apt install -y ntpdate && sudo ntpdate ntp.aliyun.com
    
  2. 安裝容器運行時:Kubernetes依賴Docker作為容器運行時,通過以下命令安裝:
    sudo apt install -y docker.io
    sudo systemctl enable --now docker
    
  3. 安裝Kubernetes核心組件:安裝kubelet(節點管理)、kubeadm(集群初始化)、kubectl(命令行工具),并鎖定版本避免自動升級:
    sudo apt install -y apt-transport-https curl
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
    sudo apt install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl
    

二、初始化Kubernetes集群

  1. 初始化Master節點:在Master節點執行kubeadm init命令,指定Pod網絡CIDR(如10.244.0.0/16),生成加入集群的命令:
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    
    執行后,復制輸出的kubeadm join命令備用。
  2. 配置kubectl:將集群配置文件復制到用戶目錄,設置權限:
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  3. 部署網絡插件:安裝Calico(或其他插件,如Flannel)實現Pod間通信:
    kubectl apply -f https://docs.projectcalico.org/v3.26/manifests/calico.yaml
    
  4. 添加Worker節點:在Worker節點執行Master節點輸出的kubeadm join命令,完成節點加入:
    sudo kubeadm join <Master-IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash <HASH>
    

三、容器生命周期管理

  1. 部署應用:通過Deployment創建Pod副本集(以Nginx為例),指定鏡像和副本數:
    kubectl create deployment nginx --image=nginx --replicas=3
    
  2. 暴露服務:通過Service將Pod暴露為可訪問端點(如NodePort類型,端口80):
    kubectl expose deployment nginx --port=80 --type=NodePort
    
  3. 擴縮容:手動調整副本數(如擴至5個)或啟用自動擴縮容(HPA):
    kubectl scale deployment nginx --replicas=5
    # 啟用HPA(需提前安裝Metrics Server)
    kubectl autoscale deployment nginx --cpu-percent=50 --min=2 --max=10
    
  4. 刪除資源:刪除不再需要的Deployment或Service:
    kubectl delete deployment nginx
    kubectl delete service nginx
    

四、常用管理命令

  1. 查看集群狀態
    kubectl get nodes  # 查看節點狀態(需為Ready)
    kubectl get pods -o wide  # 查看Pod狀態及所在節點
    kubectl get services  # 查看Service狀態
    
  2. 查看資源詳情
    kubectl describe pod <Pod名稱>  # 查看Pod詳情(如事件、狀態)
    kubectl logs <Pod名稱>  # 查看Pod日志
    kubectl exec -it <Pod名稱> -- /bin/bash  # 進入Pod容器(交互模式)
    
  3. 刪除資源
    kubectl delete pod <Pod名稱>  # 刪除指定Pod(若屬于Deployment,會自動重建)
    kubectl delete deployment <Deployment名稱>  # 刪除Deployment及關聯Pod
    

五、容器生命周期高級管理

  1. 保持容器運行:通過livenessProbe(活性探針)檢測容器健康狀態,失敗時自動重啟;使用restartPolicy(重啟策略)控制容器失敗后的行為(如Always、OnFailure):
    # Deployment示例(包含探針)
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
    spec:
      replicas: 3
      template:
        spec:
          containers:
          - name: nginx
            image: nginx
            livenessProbe:
              httpGet:
                path: /
                port: 80
              initialDelaySeconds: 15
              periodSeconds: 10
            restartPolicy: Always
    
  2. 生命周期鉤子:通過PostStart(容器啟動后執行,如初始化腳本)和PreStop(容器終止前執行,如優雅關閉)鉤子實現自定義操作:
    # Deployment示例(包含生命周期鉤子)
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
    spec:
      replicas: 3
      template:
        spec:
          containers:
          - name: nginx
            image: nginx
            lifecycle:
              postStart:
                exec:
                  command: ["/bin/sh", "-c", "echo 'Container started' > /usr/share/nginx/html/welcome.txt"]
              preStop:
                exec:
                  command: ["/usr/sbin/nginx", "-s", "quit"]
    

六、監控與維護

  1. 監控集群狀態:使用kubectl top命令查看節點和Pod的資源使用情況(需安裝Metrics Server):
    kubectl top nodes
    kubectl top pods
    
  2. 查看集群信息:了解集群基本信息(如Kubernetes版本、云提供商):
    kubectl cluster-info
    
  3. 備份與恢復:定期備份etcd(Kubernetes數據存儲),可使用etcdctl工具或第三方工具(如Velero)。

通過以上步驟,可在Ubuntu環境下使用Kubernetes完成容器的部署、管理、擴縮容及生命周期維護,實現容器化應用的高效編排。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女