Debian 环境下 Kubernetes 安装常见问题与排查
一 环境准备与前置条件
sudo swapoff -a,并在 /etc/fstab 中注释 swap 行,避免 kubelet 启动失败。overlay、br_netfilternet.bridge.bridge-nf-call-iptables = 1、net.ipv4.ip_forward = 1sudo apt install -y containerdsudo systemctl enable --now containerd二 组件安装与仓库配置
sudo apt update && sudo apt install -y apt-transport-https ca-certificates curlecho "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.listsudo apt install -y kubelet kubeadm kubectlsudo apt-mark hold kubelet kubeadm kubectl(避免被系统升级干扰)三 初始化与网络插件
sudo kubeadm init --pod-network-cidr=10.244.0.0/16(Flannel 常用该网段)。mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configkubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlkubeadm init 输出中的 kubeadm join ... 命令,包含 token 与 –discovery-token-ca-cert-hash sha256:kubectl cluster-info、kubectl get nodes 应显示控制平面与节点 Ready。四 高频错误与快速修复
kubectl get pods -n kube-system,若 CrashLoopBackOff/Error,查看日志:kubectl logs -n kube-system <pod>。--pod-network-cidr 一致(如 Flannel 默认 10.244.0.0/16)。sudo systemctl status containerd(或 docker),异常时 journalctl -u containerd -xe 查看。sysctl net.bridge.bridge-nf-call-iptables、lsmod | grep br_netfilter。/etc/docker/daemon.json 添加加速器地址),或导入离线镜像。kubeadm token create --print-join-command 重新生成加入命令。kubectl get pods -n kube-system -l k8s-app=coredns;检查 Service 与 Endpoints 是否就绪。五 实用命令清单
sudo systemctl status kubelet、sudo journalctl -u kubelet -xe、tail -f /var/log/syslog、dmesgkubectl cluster-info、kubectl get nodes -o wide、kubectl get pods -Akubectl logs -n kube-system <pod> -c <container>ping <目标IP>、nc -vz <IP> <端口>top、free -m、sudo systemctl restart containerd