温馨提示×

CentOS系统Kubernetes安装常见问题

小樊
40
2025-12-23 16:41:34
栏目: 智能运维

CentOS 上安装 Kubernetes 的常见问题与排查要点

一 环境前置检查与系统配置

  • 资源与系统基线:建议单节点至少CPU≥2核、内存≥2GB、磁盘≥20GB;执行yum update -y更新系统并安装常用工具(如 bash-completion、wget、vim、net-tools、gcc)。
  • 关闭 Swap:Kubelet 默认要求关闭 Swap。临时执行swapoff -a;永久禁用需注释**/etc/fstab**中的 swap 行。
  • SELinux:建议测试环境设为SELINUX=permissive/disabled,执行setenforce 0临时生效,或编辑**/etc/selinux/config**永久修改。
  • 防火墙:为减少初期排障复杂度,可临时systemctl stop firewalld && systemctl disable firewalld;生产环境应按需放行端口。
  • 内核与网络参数:加载br_netfilter并开启桥接流量经 iptables 处理:
    • modprobe br_netfilter
    • echo ‘1’ | tee /proc/sys/net/bridge/bridge-nf-call-iptables
    • echo ‘1’ | tee /proc/sys/net/bridge/bridge-nf-call-ip6tables
    • 写入**/etc/sysctl.d/k8s.conf并执行sysctl -p**
  • 时间同步:安装并启用chrony/ntpd,避免证书与组件通信异常。

二 容器运行时与 kubelet 常见报错

  • CRI 未就绪或 containerd 未启动:报错如“CRI v1 runtime API is not implemented … containerd.sock”时,检查并启动 containerd:
    • systemctl status/start/enable containerd
  • 使用 containerd 时的 cgroup 驱动:确保与 kubelet 一致(推荐systemd)。生成默认配置并修改:
    • containerd config default | tee /etc/containerd/config.toml
    • sed -i ‘s/SystemdCgroup = false/SystemdCgroup = true/g’ /etc/containerd/config.toml
    • systemctl restart containerd
  • Docker 配置(如使用 Docker):在**/etc/docker/daemon.json**设置镜像加速与 cgroup 驱动:
    • { “registry-mirrors”: [“https://mirrors.aliyun.com/dockerhub”], “exec-opts”: [“native.cgroupdriver=systemd”] }
    • systemctl daemon-reload && systemctl restart docker
  • kubelet 无法启动:查看journalctl -xefu kubelet;常见原因为 Swap 未关闭、cgroup 驱动不一致、镜像不可达等。

三 镜像拉取与初始化失败

  • 使用国内镜像仓库加速:kubeadm 初始化时指定**–image-repository=registry.aliyuncs.com/google_containers**;提前拉取镜像:
    • kubeadm config images pull --config=init-config.yaml
  • coredns 镜像标签问题:如遇 coredns 特定标签拉取失败,可手动拉取并重命名标签(示例:docker pull …/coredns:1.8.4 后 docker tag …)。
  • kubeadm init 失败排查:使用kubeadm init --config=kubeadm.yaml --ignore-preflight-errors=SystemVerification查看更详细错误;必要时检查**/var/log/messages**、kubelet 日志与网络连通性。

四 网络与端口问题

  • 端口与通信:Master 与 Node 之间需放通多端口;初期可临时关闭防火墙验证是否为策略阻断。参考官方文档的“Check required ports”,并用netstat -tnlp检查占用。
  • Pod 网络插件:初始化后需部署 CNI 插件(如CalicoFlannel):
    • kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    • 或 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.11.0/Documentation/kube-flannel.yml
  • 节点 NotReady:多因未安装 CNI、内核版本偏低或网络参数未生效;可升级内核并复核br_netfilter/ip_forward等参数。
  • 重启后异常:常见于仅临时关闭了 SELinux/防火墙/Swap;重启后用journalctl -xefu kubeletkubectl describe pod定位。

五 快速排查清单

  • 查看节点与系统状态:
    • kubectl get nodes;kubectl get pods -A
    • free -m、df -h、top/vmstat 3、journalctl -xefu kubelet
  • 复核关键配置:
    • getenforce、swapoff -a、cat /proc/sys/net/bridge/bridge-nf-call-iptables
    • systemctl status containerd docker kubelet
  • 网络连通与端口:
    • ping/ss/telnet 检查节点互通与端口可达;必要时按官方清单精确放行防火墙规则。

0