Debian中K8s安装失败怎么办
导读:Debian 上 Kubernetes 安装失败排查与修复 一 快速自检清单 资源与系统:至少准备2 核 CPU、2 GB 内存、20–50 GB 磁盘,系统为Debian 稳定版,内核不低于3.10,并具备稳定网络与NTP 时间同步。...
Debian 上 Kubernetes 安装失败排查与修复
一 快速自检清单
- 资源与系统:至少准备2 核 CPU、2 GB 内存、20–50 GB 磁盘,系统为Debian 稳定版,内核不低于3.10,并具备稳定网络与NTP 时间同步。
- 禁用 Swap:Kubernetes 不支持启用 Swap 的环境,执行:
sudo swapoff -a,并在/etc/fstab中注释含 swap 的行,永久生效。 - 容器运行时:安装并启动 containerd(或 Docker,二者择一)。示例:
sudo apt update & & sudo apt install -y containerd & & sudo systemctl enable --now containerd。 - 安装组件:添加 Kubernetes APT 源并安装 kubelet、kubeadm、kubectl,然后执行
sudo apt-mark hold kubelet kubeadm kubectl防止被升级破坏版本一致性。 - 初始化命令要点:控制平面节点执行
kubeadm init,常见参数包括--apiserver-advertise-address=< 本机IP>、--pod-network-cidr=10.244.0.0/16(与所选网络插件匹配)、必要时指定--image-repository使用国内镜像源。 - 配置 kubectl:
mkdir -p $HOME/.kube & & sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config & & sudo chown $(id -u):$(id -g) $HOME/.kube/config。 - 安装网络插件:如 Flannel:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml。 - 节点就绪:工作节点加入后,使用
kubectl get nodes检查状态是否为 Ready。
二 常见故障与修复
- 镜像拉取失败:国内环境可指定镜像仓库(如
registry.aliyuncs.com/google_containers),或提前用crictl pull/docker pull拉取所需镜像并重新打标签;若使用 containerd,确保/etc/containerd/config.toml的 sandbox_image 与拉取镜像一致。 - 预检失败(常见为 Swap 未关闭、端口被占用、内核参数不当):关闭 Swap、释放端口、按需设置内核参数(如启用桥接转发
net.bridge.bridge-nf-call-iptables=1等)。 - 端口未放行:若启用 UFW,放行关键端口(示例):
sudo ufw allow 6443,2379,2380,10250,10251,10252,10255/tcp & & sudo ufw reload;如使用 firewalld/iptables,做等价的放行规则。 - 节点 NotReady:多因网络插件未就绪或 kube-proxy 异常,检查
kubectl get pods -n kube-system,确认 flannel/cilium/kube-proxy 运行正常;必要时重新应用网络插件清单。 - 组件版本不兼容:核对 kubelet/kubeadm/kubectl 与要部署的 Kubernetes 版本一致,参考官方兼容矩阵,避免混装。
- kubeconfig 配置错误:确认
$HOME/.kube/config存在且有效,执行kubectl config view校验当前上下文与集群信息。
三 关键日志与定位命令
- 查看 kubelet 日志:
sudo journalctl -u kubelet -xe,关注启动失败原因(镜像、cgroup、swap、端口冲突等)。 - 查看系统日志:
sudo journalctl -xe或/var/log/syslog,定位网络、服务、权限相关错误。 - 查看集群组件日志:
kubectl logs -n kube-system < pod-name>,优先排查 coredns、kube-proxy、flannel 等系统 Pod。 - 查看节点与组件状态:
kubectl get nodes、kubectl get pods -A -o wide,快速判断网络插件与控制平面是否就绪。
四 一键纠偏脚本示例
#!/usr/bin/env bash
set -e
# 0) 基本环境
sudo apt update &
&
sudo apt install -y ca-certificates curl gnupg lsb-release
# 1) 关闭 Swap
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 2) 安装 containerd(若已安装可跳过)
sudo apt install -y containerd
sudo systemctl enable --now containerd
# 3) 安装 kubelet/kubeadm/kubectl
curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.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 >
/dev/null
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
# 4) UFW 放行(如启用)
sudo ufw allow 6443,2379,2380,10250,10251,10252,10255/tcp || true
sudo ufw reload || true
# 5) 初始化控制平面(按需修改参数)
API_IP=$(ip -4 addr show scope global | grep -oP '(?<
=inet\s)\d+(\.\d+){
3}
' | head -n1)
sudo kubeadm init \
--apiserver-advertise-address=$API_IP \
--pod-network-cidr=10.244.0.0/16 \
--image-repository=registry.aliyuncs.com/google_containers
# 6) 配置 kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 7) 安装 Flannel 网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
echo "Init done. Run on worker nodes:"
echo " sudo kubeadm join $API_IP:6443 --token <
token>
--discovery-token-ca-cert-hash sha256:<
hash>
"
说明:请将 <
token>
与 <
hash>
替换为 kubeadm init 输出中的实际值;如使用云厂商或受限网络,请提前准备镜像或使用内网镜像仓库。
五 仍未解决时请准备的信息
- 执行
kubeadm init的完整输出与关键报错片段。 sudo journalctl -u kubelet -xe的最后 100 行。kubectl get nodes -o wide与kubectl get pods -A -o wide的结果。- 当前系统信息:
uname -a、lsb_release -a、free -m、df -h、ip a、sudo ufw status或防火墙规则。 - 使用的 Kubernetes 版本与容器运行时版本(
kubelet --version、crictl version或docker version)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian中K8s安装失败怎么办
本文地址: https://pptw.com/jishu/759881.html
