在解决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
kubeadm join失败)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
ImagePullBackOff/CrashLoopBackOff)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> # 排查解析错误
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>
kubelet、kubeadm、kubectl)版本一致,且与网络插件(如Flannel、Calico)兼容。参考Kubernetes官方版本兼容性矩阵。sudo apt update
sudo apt upgrade -y kubelet kubeadm kubectl
sudo systemctl restart kubelet
通过以上步骤,可覆盖Debian系统上Kubernetes部署与运行的常见问题。若问题仍未解决,建议查阅Kubernetes官方文档或社区论坛(如Stack Overflow、Kubernetes Slack)获取更具体的帮助。