溫馨提示×

Debian與Kubernetes集成開發實踐

小樊
40
2025-09-19 16:09:07
欄目: 智能運維

Debian與Kubernetes集成開發實踐指南

一、前置準備

在開始集成前,需完成以下基礎配置,確保環境符合Kubernetes運行要求:

  • 系統要求:選擇Debian 10及以上穩定版本,每個節點(主/工作節點)需滿足2核CPU、2GB RAM、20GB磁盤空間,且具備穩定互聯網連接。
  • 系統更新:運行sudo apt update && sudo apt upgrade -y更新系統軟件包,修復潛在漏洞。
  • 關閉Swap分區:Kubernetes要求禁用Swap以確保內存管理的穩定性。執行sudo swapoff -a臨時關閉,編輯/etc/fstab文件注釋掉Swap相關行(如sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab)實現永久禁用。
  • 配置主機名與Hosts文件:在每個節點上設置唯一主機名(如k8s-master、k8s-node1),并通過sudo hostnamectl set-hostname <hostname>生效;編輯/etc/hosts文件,添加節點IP與主機名的映射(如192.168.1.1 k8s-master、192.168.1.2 k8s-node1),確保節點間可通過主機名通信。
  • 同步系統時間:安裝NTP服務(如sudo apt install -y ntp)并啟動,避免因時間不同步導致集群認證失敗。

二、安裝Docker容器運行時

Kubernetes依賴容器運行時管理容器,推薦使用Docker(社區主流選擇):

  • 添加Docker官方GPG密鑰與源:運行curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -導入密鑰;執行echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list添加Docker軟件源。
  • 安裝Docker引擎:運行sudo apt update更新源,再執行sudo apt install -y docker-ce docker-ce-cli containerd.io安裝Docker。
  • 啟動Docker服務:執行sudo systemctl enable --now docker設置Docker開機自啟,并通過sudo systemctl status docker驗證服務狀態(顯示“active (running)”即為成功)。

三、安裝Kubernetes核心組件

Kubernetes的核心組件(kubelet、kubeadm、kubectl)需通過官方源安裝:

  • 添加Kubernetes官方源:運行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添加Kubernetes軟件源。
  • 安裝核心組件:運行sudo apt update更新源,再執行sudo apt install -y kubelet kubeadm kubectl安裝組件;為避免組件自動升級導致集群不穩定,執行sudo apt-mark hold kubelet kubeadm kubectl鎖定版本。

四、初始化Kubernetes主節點

主節點負責集群管理(如調度、API服務),需通過kubeadm完成初始化:

  • 初始化集群:在主節點上執行sudo kubeadm init --pod-network-cidr=10.244.0.0/16--pod-network-cidr指定Pod網絡CIDR,需與后續網絡插件兼容,如Flannel默認使用10.244.0.0/16)。
  • 配置kubectl:初始化完成后,會輸出加入工作節點的命令(需保存);運行mkdir -p $HOME/.kube創建kubeconfig目錄,再執行sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config復制配置文件,最后通過sudo chown $(id -u):$(id -g) $HOME/.kube/config設置正確權限,確保當前用戶可使用kubectl管理集群。
  • 驗證主節點狀態:運行kubectl get nodes,主節點應顯示“NotReady”(需安裝網絡插件后變為“Ready”)。

五、安裝網絡插件

Kubernetes需要網絡插件實現Pod間通信,常用插件包括Flannel(輕量級)、Calico(高性能):

  • 安裝Flannel插件:運行kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml,等待插件Pod全部啟動(通過kubectl get pods -n kube-system驗證,狀態應為“Running”)。
  • 安裝Calico插件:運行kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml,同樣需驗證Pod狀態。

六、加入工作節點

工作節點負責運行應用容器,需通過主節點初始化時生成的命令加入:

  • 獲取加入命令:主節點初始化完成后,終端會輸出類似kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>的命令(需保存)。
  • 在工作節點執行命令:將上述命令復制到每個工作節點的終端,運行后即可將節點加入集群??赏ㄟ^主節點的kubectl get nodes驗證工作節點狀態(變為“Ready”即為成功)。

七、部署測試應用

通過部署一個簡單的Nginx應用,驗證集群功能:

  • 創建Deployment:編寫nginx-deployment.yaml文件,內容如下:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:latest
            ports:
            - containerPort: 80
    
    運行kubectl apply -f nginx-deployment.yaml創建Deployment。
  • 暴露Service:編寫nginx-service.yaml文件,內容如下:
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
    spec:
      type: NodePort
      selector:
        app: nginx
      ports:
      - protocol: TCP
        port: 80
        targetPort: 80
    
    運行kubectl apply -f nginx-service.yaml暴露Service,通過kubectl get svc nginx-service獲取NodePort(如30080),然后在瀏覽器訪問<master-node-ip>:30080<worker-node-ip>:30080,若看到Nginx歡迎頁面則說明部署成功。

八、自動化運維實踐(可選但推薦)

為提升集群管理效率,可引入以下自動化工具:

  • 自動化腳本:編寫Shell腳本實現常見操作(如檢查Pod狀態、備份配置),例如:
    #!/bin/bash
    echo "Checking Pod status:"
    kubectl get pods --all-namespaces
    echo "Checking node status:"
    kubectl get nodes
    
  • 配置管理工具:使用Ansible編寫Playbook,自動化安裝Kubernetes組件、配置網絡插件等任務,減少手動操作誤差。
  • CI/CD集成:通過Jenkins、GitLab CI搭建流水線,實現代碼提交后自動構建鏡像、推送至鏡像倉庫、部署至Kubernetes集群的端到端流程。
  • 監控與日志:部署Prometheus+Grafana監控集群性能(如CPU、內存使用率),使用ELK(Elasticsearch+Logstash+Kibana)收集、分析應用日志,快速定位問題。

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