如何在Debian上進行K8S容器編排
Kubernetes(K8S)是一個開源容器編排平臺,用于自動化容器化應用的部署、擴展和管理。Debian作為穩定且廣泛使用的Linux發行版,是搭建K8S集群的理想基礎。以下是在Debian上利用K8S進行容器編排的詳細步驟:
master-node
、worker-node1
),并編輯/etc/hosts
文件添加節點映射(如192.168.1.10 master-node
);sudo swapoff -a
,并修改/etc/fstab
文件注釋掉Swap行(如# /swapfile none swap sw 0 0
)。K8S依賴容器運行時管理容器,推薦使用Docker(社區常用):
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker
docker run hello-world
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl # 鎖定版本,避免自動升級
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
命令執行完成后,會輸出加入Worker節點的命令(如kubeadm join 192.168.1.10:6443 --token xxx --discovery-token-ca-cert-hash sha256:yyy
),需妥善保存。mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes # 應顯示Master節點狀態為“NotReady”(需安裝網絡插件后變為Ready)
K8S需要網絡插件實現Pod間通信,常用插件為Flannel(輕量級、易部署):
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
等待插件部署完成(約1-2分鐘),再次檢查節點狀態:
kubectl get nodes # 應顯示Master節點狀態為“Ready”
在每臺Worker節點上,使用Master節點初始化時輸出的kubeadm join命令加入集群:
sudo kubeadm join 192.168.1.10:6443 --token xxx --discovery-token-ca-cert-hash sha256:yyy
加入完成后,Master節點的kubectl get nodes
會顯示Worker節點狀態為“Ready”。
kubectl create deployment nginx-app --image=nginx --replicas=2
kubectl expose deployment nginx-app --name=nginx-web-svc --type=NodePort --port=80 --target-port=80
kubectl get deployments # 查看Deployment狀態
kubectl get pods # 查看Pod狀態(應為“Running”)
kubectl get svc # 查看Service狀態(獲取NodePort,如31743)
<node-ip>
為Master/Worker節點的IP):curl http://<node-ip>:31743
若返回Nginx歡迎頁面,說明容器編排成功。通過以上步驟,即可在Debian上搭建K8S集群并實現容器編排。需注意,K8S版本迭代較快,建議參考官方文檔調整命令(如kubeadm init
的參數)。