温馨提示×

centos中k8s安装常见问题

小樊
38
2025-12-21 17:40:07
栏目: 智能运维

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

一 环境准备与系统配置

  • 资源与系统基线:建议单节点至少2 核 CPU / 2GB 内存 / 20GB 磁盘;所有节点保持时间同步(如 chrony/ntp),避免因时间漂移导致证书校验或组件异常。
  • 必做项:
    • 关闭 Swap:swapoff -a 并注释 /etc/fstab 中的 swap 行。
    • 内核参数:开启桥接与转发
      • net.bridge.bridge-nf-call-ip6tables = 1
      • net.bridge.bridge-nf-call-iptables = 1
      • net.ipv4.ip_forward = 1
    • 防火墙与 SELinux:测试环境可临时关闭 firewalldSELinux;生产环境建议按需放行端口与策略。
  • 容器运行时:Kubernetes v1.24+ 默认使用 containerd/CRI,若使用 Docker,需确保其与 containerd 正确配置并运行。
  • 常见报错与要点:
    • “preflight: Some fatal errors occurred: [ERROR CRI] … Unimplemented …” 表示 CRI 不可用,检查 containerd 是否启动并监听 /run/containerd/containerd.sock
    • “MountVolume.SetUp failed” 常与内核版本过低或模块缺失有关,必要时升级内核。
    • 初始化卡在拉取镜像,优先使用国内镜像源手动拉取并重命名镜像

二 初始化与组件安装

  • 安装组件:通过 YUM 安装 kubelet / kubeadm / kubectl 并启用 kubelet 服务。
  • 初始化命令要点:
    • 指定版本与仓库:如 kubeadm init --kubernetes-version=v1.28.x --image-repository=registry.aliyuncs.com/google_containers
    • 指定 Pod CIDR:与所选网络插件一致(如 Calico 常用 192.168.0.0/16Flannel 常用 10.244.0.0/16)。
  • 常见报错与要点:
    • “remote version is much newer … falling back to: stable-1.28” 表示 kubeadm 自动回退版本,建议显式指定与你安装组件一致的 Kubernetes 版本
    • 镜像拉取慢/失败:更换 kubernetes 与 Docker 镜像源,或提前用 crictl pull 拉取所需镜像。
    • 加入集群失败:检查 token 有效期CA 证书哈希、以及 apiserver 地址可达性

三 网络与 CNI 插件

  • 部署时机:在 kubeadm init 后、节点 Ready 之前部署 CNI 网络插件(如 Calico/Flannel)。
  • Flannel VXLAN 场景:
    • 确认节点间 UDP 8472 放行(firewalld/安全组)。
    • 确认 Pod CIDR 与 Flannel 配置一致(如 10.244.0.0/16)。
    • 检查 Flannel Pod 状态与日志、节点路由表是否正确下发。
  • 系统与内核:
    • 确认 net.ipv4.ip_forward=1 与桥接相关 iptables 参数为 1。
    • 某些环境下 SELinux 开启会导致 Flannel 初始化失败,可临时关闭验证。
  • 常见现象与要点:
    • 不同节点 Pod IP 不通:优先排查 VXLAN/主机路由/安全组/防火墙。
    • Pod 内无法解析 DNS:检查 kube-dns/kubeproxy 是否正常、iptables FORWARD 策略是否为 ACCEPT。
    • Service 访问异常:核对 Endpoints、容器端口与 Service 端口映射、以及 kube-proxy 规则是否生效。

四 防火墙端口与节点互通

  • 常见需放行端口(示例):
    • 6443/TCP(kube-apiserver)
    • 2379–2380/TCP(etcd)
    • 10250/TCP(kubelet API)
    • 10251/TCP(kube-scheduler)
    • 10252/TCP(kube-controller-manager)
    • 30000–32767/TCP(NodePort 范围)
    • Flannel VXLAN:8472/UDP
  • 排查建议:
    • 节点间先验证 主机 IP 互通(ping、traceroute)。
    • 如启用 firewalld,按需添加端口/富规则并 reload;云环境同步检查 安全组

五 日志与快速定位命令清单

  • 查看节点与系统组件状态:
    • kubectl:get nodesget pods -Adescribe node logs -n kube-system
    • 系统服务:systemctl status kubeletjournalctl -f -u kubelet
    • 容器运行时:systemctl status containerdcrictl ps -acrictl images
  • 初始化与镜像:
    • 带配置初始化:kubeadm init --config=kubeadm.yaml
    • 忽略特定预检(仅测试):–ignore-preflight-errors=SystemVerification
  • 网络连通性:
    • 节点间:ping <node_ip>
    • Flannel VXLAN:nc -zv <node_ip> 8472ss -u ln | grep 8472
  • 内核与转发:
    • sysctl:sysctl -p、检查 net.ipv4.ip_forward 与桥接参数
  • 重置与重试:
    • 重置集群:kubeadm reset -f,清理后重新 init

0