在解決Kubernetes問題前,需確保系統滿足基礎要求:
sudo apt update && sudo apt upgrade -y
更新所有系統包。sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
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
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker && sudo systemctl enable docker
sudo swapoff -a
臨時關閉,并編輯/etc/fstab
刪除或注釋Swap行永久生效。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 update
kubelet
、kubeadm
、kubectl
并鎖定版本(避免自動升級):sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
sudo kubeadm token create --print-join-command
ping <master-ip>
)。sudo ufw allow 6443/tcp # Kubernetes API Server
sudo ufw allow 2379/tcp # etcd
sudo ufw allow 2380/tcp # etcd peer
sudo ufw reload
kubectl describe pod <pod-name>
。docker pull <image-name>
。resources
字段):resources:
requests:
memory: "128Mi"
cpu: "250m"
limits:
memory: "256Mi"
cpu: "500m"
sudo systemctl status docker
。kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl get pods --all-namespaces | grep kube-flannel
(應為Running
)。kubectl exec -it <pod-name> -- ping <other-pod-ip>
。kubectl get pods -n kube-system | grep coredns
(應為Running
)。kubectl logs -n kube-system <coredns-pod-name>
(排查解析錯誤)。ConfigMap
):kubectl -n kube-system get cm coredns -o yaml
(確保forward
規則正確)。sudo systemctl status kubelet
。sudo journalctl -u kubelet -f
(定位具體錯誤,如鏡像拉取失敗、端口沖突)。/var/lib/kubelet/config.yaml
)是否正確(如clusterDNS
、clusterDomain
)。journalctl
查看kubelet、kube-apiserver等服務日志,例如:sudo journalctl -u kubelet -n 50 --no-pager # 查看kubelet最近50條日志
kubectl logs
查看容器日志,例如:kubectl logs <pod-name> # 查看指定Pod日志
kubectl logs <pod-name> -c <container-name> # 查看指定容器的日志(多容器Pod)
kubectl debug
進入Pod容器內部排查問題,例如:kubectl debug -it <pod-name> --image=busybox --target=<container-name>
sudo apt update
sudo apt upgrade -y kubelet kubeadm kubectl
sudo systemctl restart kubelet
通過以上步驟,可覆蓋Debian系統上Kubernetes部署與運行的常見問題。若問題仍未解決,建議查閱Kubernetes官方文檔或社區論壇(如Stack Overflow、Kubernetes Slack)獲取更具體的幫助。