k8s安装过程中centos报错怎么解决
导读:CentOS 上安装 Kubernetes 报错的快速排查与修复 一、先定位错误 查看 kubelet 日志,优先定位组件层问题:sudo journalctl -f -u kubelet。 若是 kubeadm 初始化失败,保留完整输出...
CentOS 上安装 Kubernetes 报错的快速排查与修复
一、先定位错误
- 查看 kubelet 日志,优先定位组件层问题:
sudo journalctl -f -u kubelet。 - 若是 kubeadm 初始化失败,保留完整输出;必要时用
kubeadm init --config=kubeadm.yaml --ignore-preflight-errors=SystemVerification仅跳过系统校验以拿到更详细日志(排障后请去掉该参数再正式安装)。 - 确认节点与系统状态:
kubectl get nodes(能执行时)、kubectl get pods -A、top/vmstat/df -h检查资源与磁盘。 - 若组件未起来,检查对应服务状态:
systemctl status kubelet、systemctl status containerd/docker。
二、基础环境与内核参数
- 关闭 Swap:
swapoff -a & & sed -i '/swap/s/^/#/' /etc/fstab(K8s 要求禁用 Swap)。 - SELinux 与防火墙:测试阶段可临时
setenforce 0、systemctl stop firewalld;生产环境建议按需放行端口或接口而非全关。 - 内核参数与转发:
cat > /etc/sysctl.d/k8s.conf < < EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF sysctl -p - 主机名与时间同步:
hostnamectl set-hostname master或nodeX;yum install -y ntpdate & & ntpdate time.windows.com。 - 资源基线:建议每节点至少 CPU≥2 核、内存≥2GB、磁盘≥20GB。
三、容器运行时与镜像拉取
- 安装并启动容器运行时(以 containerd 为例):
yum install -y containerd.io & & systemctl enable --now containerd。 - 若使用 Docker,需把 cgroup 驱动设为 systemd 并配置国内镜像加速:
cat > /etc/docker/daemon.json < < EOF { "exec-opts": ["native.cgroupdriver=systemd"], "registry-mirrors": ["https://mirrors.aliyun.com/dockerhub"] } EOF systemctl daemon-reload & & systemctl restart docker - 镜像拉取失败(国内常见):使用国内仓库并重打标签后初始化,例如:
kubeadm init --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 # 若个别镜像仍失败,可手动 docker pull/tag,例如 coredns:1.8.0 - 常见 CRI 报错如 “CRI v1 runtime API is not implemented … containerd.sock”,多为 containerd 未启动或未按预期工作:
systemctl status containerd & & sudo systemctl start containerd & & sudo systemctl enable containerd。
四、网络与防火墙关键点
- 放行关键端口(firewalld 示例,按你的 zone 调整):
firewall-cmd --permanent --zone=trusted --add-interface=docker0 firewall-cmd --permanent --zone=trusted --add-port=6443/tcp firewall-cmd --permanent --zone=trusted --add-port=10250/tcp firewall-cmd --permanent --zone=trusted --add-port=10251/tcp firewall-cmd --permanent --zone=trusted --add-port=10252/tcp firewall-cmd --reload - 安装 CNI 网络插件(Pod 间通信必需):
- Flannel:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml - Calico:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
- Flannel:
- 初始化时指定 Pod CIDR(与所选插件一致),如:
--pod-network-cidr=10.244.0.0/16(Flannel 常用),或按 Calico 文档配置。
五、常见报错对照与修复
| 报错关键词 | 典型原因 | 快速修复 |
|---|---|---|
| CRI v1 runtime API is not implemented … containerd.sock | containerd 未运行或未就绪 | systemctl start containerd &
&
systemctl enable containerd |
| containerd: failed to start | 配置/权限/内核未就绪 | 检查 /etc/containerd/config.toml 与内核模块(br_netfilter/overlay),重启服务 |
| kubelet 不断重启/不健康 | cgroup 驱动不一致(Docker 与 kubelet 不同) | Docker 配置 "exec-opts": ["native.cgroupdriver=systemd"] 并重启 |
| 镜像拉取失败(gcr.io/google_containers/…) | 国内网络不通 | --image-repository=registry.aliyuncs.com/google_containers 或手动拉取并重打标签 |
| Node NotReady | CNI 未安装/网络未通 | 安装 Flannel/Calico,确认节点间互通与路由 |
| Port 6443/10250 被占用 | 已有进程占用或防火墙拦截 | `ss -lntp |
| MountVolume.SetUp failed | 内核/驱动/权限问题 | 升级内核、检查挂载与权限、确认 SELinux/AppArmor 策略 |
| kubeadm init 预检失败 | Swap 未关/内核参数缺失/防火墙阻断 | 关闭 Swap、设置内核参数、放行端口后重试 |
- 若初始化多次失败,先清理再重来:
kubeadm reset -f,确认环境干净后重新kubeadm init。 - 仍无法解决时,保留并贴出完整错误日志(如
journalctl -xeu kubelet、kubeadm init输出),便于进一步定位。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: k8s安装过程中centos报错怎么解决
本文地址: https://pptw.com/jishu/763511.html
