首页主机资讯Debian中K8s安装失败怎么办

Debian中K8s安装失败怎么办

时间2025-12-01 10:49:03发布访客分类主机资讯浏览521
导读: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
  • 安装网络插件:如 Flannelkubectl 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.tomlsandbox_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 nodeskubectl 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 widekubectl get pods -A -o wide 的结果。
  • 当前系统信息:uname -alsb_release -afree -mdf -hip asudo ufw status 或防火墙规则。
  • 使用的 Kubernetes 版本与容器运行时版本(kubelet --versioncrictl versiondocker version)。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Debian中K8s安装失败怎么办
本文地址: https://pptw.com/jishu/759881.html
Debian系统K8s安装最佳实践是什么 Debian如何配置Laravel邮件发送

游客 回复需填写必要信息