centos部署k8s遇到问题怎么办
导读:CentOS 部署 Kubernetes 的排查与修复指南 一 快速定位路径 查看节点与系统组件状态:执行kubectl get nodes、kubectl get pods -A;若 kubectl 报本地连接被拒绝,多为未正确配置 k...
CentOS 部署 Kubernetes 的排查与修复指南
一 快速定位路径
- 查看节点与系统组件状态:执行kubectl get nodes、kubectl get pods -A;若 kubectl 报本地连接被拒绝,多为未正确配置 kubeconfig 或 kubelet 未就绪。随后用kubectl describe node 与kubectl get events定位异常事件。
- 查看关键服务日志:journalctl -u kubelet -f(节点上最重要的排错入口),必要时查看 kube-proxy、kube-apiserver、kube-controller-manager、kube-scheduler 的日志。
- 检查网络连通与端口:节点间可 ping/traceroute;确认 CNI 插件(如 Calico/Flannel)已部署且 Pod 网络 CIDR 与 kube-controller-manager 的 –service-cluster-ip-range 不冲突。
- 资源与版本:用 kubectl top nodes/pods -A 检查资源;确认 kubelet/kubeadm/kubectl 与 容器运行时版本匹配,组件与插件版本兼容。
- 系统层面:查看 dmesg、/var/log/messages 或 /var/log/syslog 的内核与系统报错。
二 常见故障与修复要点
- 镜像拉取失败(国内环境常见):初始化时使用 –image-repository=registry.aliyuncs.com/google_containers;或手动拉取并重新打标,例如:
docker pull coredns:1.8.0
docker tag coredns:1.8.0 registry.aliyuncs.com/google_containers/coredns:1.8.0
docker rmi -f coredns:1.8.0 - 节点 NotReady 或 Pod 一直 ContainerCreating:确认 CNI 已部署(如 Calico:kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml),检查 Pod CIDR 与网络插件配置一致。
- kubelet 起不来或反复重启:查看 journalctl -u kubelet;常见原因包括 Swap 未关闭、Cgroup 驱动不一致(Docker 建议设置 “exec-opts”: [“native.cgroupdriver=systemd”])、或 内核参数未生效。
- 节点加入失败:核对 kubeadm join 使用的 token/ca-cert-hash 是否过期,节点与 API Server 网络是否可达,必要的 端口是否放行。
- 组件版本冲突或旧组件残留:如 yum 安装 docker-ce 冲突,先彻底卸载旧版(yum remove containerd.io docker-ce docker-ce-cli),再安装;保持 kubelet/kubeadm/kubectl 版本一致。
三 最小可用配置清单(CentOS 7/8)
- 基础系统设置:
- 关闭 Swap:swapoff -a & & sed -ri ‘s/.swap./#& /’ /etc/fstab
- 内核参数:
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 - 主机名与解析:设置唯一 hostname,并在 /etc/hosts 或 DNS 中完成解析。
- 容器运行时(Docker 示例):
- 安装与开机自启:yum install -y docker-ce docker-ce-cli containerd.io & & systemctl enable --now docker
- 配置 cgroup 驱动:
cat > /etc/docker/daemon.json < < EOF
{
“exec-opts”: [“native.cgroupdriver=systemd”],
“registry-mirrors”: [“https://hub-mirror.c.163.com”]
}
EOF
systemctl restart docker
- Kubernetes 组件:
- 安装:yum install -y kubelet kubeadm kubectl & & systemctl enable --now kubelet
- 初始化控制平面(示例):
- kubeadm init --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16
- 安装 CNI(示例):
- kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
- 工作节点加入:
- 使用 kubeadm join … 命令(由 init 输出),确保 token 未过期、网络可达。
四 一键回滚与重试
- 重置节点到干净状态:kubeadm reset -f,清理 /etc/cni/net.d、/var/lib/kubelet 等残留目录,重启 kubelet 后再尝试初始化或加入。
- 重新初始化前,再次确认:Swap 关闭、内核参数生效、防火墙/SELinux 策略不会阻断 6443/10250/2379-2380 等关键端口、以及 镜像仓库可达。
五 获取帮助与提交有效信息
- 提交问题时请附带:操作系统与内核版本(如 uname -a)、容器运行时与版本(如 docker version 或 crictl version)、kubeadm/kubelet/kubectl 版本(如 kubeadm version)、完整的错误日志(如 journalctl -u kubelet -n 200)、以及 kubectl describe pod 与 kubectl get events 的输出。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos部署k8s遇到问题怎么办
本文地址: https://pptw.com/jishu/775316.html
