首页主机资讯centos上k8s部署常见问题

centos上k8s部署常见问题

时间2025-11-24 12:02:03发布访客分类主机资讯浏览837
导读:CentOS 上 Kubernetes 部署常见问题与排查清单 一 环境准备与系统要求 操作系统建议使用CentOS 7.x/8.x,内核与基础网络正常;容器运行时建议使用Docker CE(或 containerd),并确保kubele...

CentOS 上 Kubernetes 部署常见问题与排查清单

一 环境准备与系统要求

  • 操作系统建议使用CentOS 7.x/8.x,内核与基础网络正常;容器运行时建议使用Docker CE(或 containerd),并确保kubelet/kubeadm/kubectl版本匹配。
  • 基础项检查与设置:
    • 关闭或放行防火墙(生产环境建议按端口放行而非直接关闭):
      • 直接关闭示例:systemctl stop firewalld & & systemctl disable firewalld
      • 端口放行示例:firewall-cmd --permanent --zone=trusted --add-port=6443/tcp 等,随后 firewall-cmd --reload
    • 关闭 SELinux 或设为宽容模式:setenforce 0 并修改 /etc/selinux/configSELINUX=permissive/disabled
    • 禁用 Swap:swapoff -a 并注释 /etc/fstab 中的 swap 行
    • 主机名与 hosts:如 hostnamectl set-hostname master,并在 /etc/hosts 维护节点解析
    • 时间同步:安装并启用 chrony/ntp,保证节点间时间一致
    • 资源建议:单节点至少2 CPU 核2 GB 内存
      以上为常见前置条件与系统要求,未满足会导致后续组件异常或节点 NotReady。

二 组件安装与初始化关键点

  • 安装容器运行时与 kube 组件:
    • Docker 示例:yum install -y docker-ce docker-ce-cli containerd.io & & systemctl enable --now docker
    • kube 组件:yum install -y kubelet kubeadm kubectl & & systemctl enable --now kubelet
  • 配置 Docker 使用 systemd cgroup 驱动(与 kubelet 一致):
    • /etc/docker/daemon.json 中加入:{ "exec-opts": ["native.cgroupdriver=systemd"]} ,随后 systemctl restart docker
  • 内核参数(必需):
    • /etc/sysctl.d/k8s.conf 写入:
      • net.bridge.bridge-nf-call-iptables = 1
      • net.bridge.bridge-nf-call-ip6tables = 1
      • net.ipv4.ip_forward = 1
    • 执行 sysctl -p 生效
  • 初始化控制平面(示例):
    • kubeadm init --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16
    • 国内环境指定镜像仓库可显著缓解拉取失败
  • 配置 kubectl:
    • mkdir -p $HOME/.kube & & cp -i /etc/kubernetes/admin.conf $HOME/.kube/config & & chown $(id -u):$(id -g) $HOME/.kube/config
  • 安装网络插件(二选一,按所选 CIDR 保持一致):
    • 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
  • 节点加入:
    • 在 Master 生成命令:kubeadm token create --print-join-command
    • 在 Worker 执行输出的 kubeadm join ...
      以上步骤覆盖安装、驱动/内核、初始化与网络插件的关键环节,遗漏常导致 Pod 无法调度或节点 NotReady。

三 高频故障与快速修复

  • 镜像拉取失败(国内常见)
    • 现象:ImagePullBackOff/ErrImagePull
    • 处理:使用国内镜像仓库(如 registry.aliyuncs.com/google_containers)或手动 docker pull/tag 所需镜像;初始化时通过 --image-repository 指定仓库
  • 节点 NotReady
    • 现象:kubectl get nodes 显示 NotReady
    • 处理:确认网络插件已安装且 Pod 运行正常(kubectl get pods -n kube-system);检查内核参数与转发是否生效;确认节点间网络互通
  • 节点无法加入集群
    • 现象:kubeadm join 失败或超时
    • 处理:核对 Master IP、端口与 Token 是否最新;检查防火墙/安全组放通 6443/10250 等端口;确保时间同步;必要时 kubeadm reset 后重试
  • Pod 挂载卷失败(MountVolume.SetUp failed)
    • 现象:挂载 ConfigMap/Secret/PVC 失败
    • 处理:检查节点内核版本与系统组件;升级内核或修复底层存储/权限问题后重启 kubelet
  • kubelet 启动异常
    • 现象:systemctl status kubelet 报错或不断重启
    • 处理:journalctl -u kubelet -f 查看具体错误;常见为 cgroup 驱动不一致、镜像缺失、Swap 未关闭、内核参数未生效等,逐项修正后 systemctl restart kubelet
  • Pod 无法调度
    • 现象:Pending 状态
    • 处理:检查节点资源(CPU/内存)、污点与容忍、亲和/反亲和规则;扩容节点或调整调度约束
      以上问题覆盖镜像、网络、加入、存储与调度的高频场景,按序排查通常可快速恢复。

四 常用命令与验证步骤

  • 集群状态:kubectl get nodeskubectl get pods -A
  • 组件日志:journalctl -u kubelet -fjournalctl -u docker -f
  • 重置与重装:kubeadm reset(清理后重新 kubeadm initkubeadm join
  • 连通性验证:
    • 部署测试应用:kubectl run nginx --image=nginx --port=80 --restart=Never
    • 暴露服务:kubectl expose deployment nginx --type=NodePort --port=80
    • 访问测试:通过 NodeIP:NodePort 验证
      以上命令覆盖状态核验、日志定位、重置与业务验证的常用操作,有助于快速闭环问题。

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


若转载请注明出处: centos上k8s部署常见问题
本文地址: https://pptw.com/jishu/754313.html
Kubernetes集群在CentOS上的监控方法 CentOS上K8S安装后如何启动

游客 回复需填写必要信息