安装K8S在CentOS上总是出错怎么办?掌握这些技巧轻松解决!

2026-05-15 23:363阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

前言:在波澜起伏的技术海洋里 种下希望的种子

改进一下。 每一次在 CentOS 上尝试 Kubernetes 的安装,都像是一次探险这个。路途上难免会遇到暗礁、风浪,甚至是让人抓狂的“Internal error”。但别忘了技术的世界和大自然一样,需要我们用耐心浇灌,用热情照料。正如古语所说:“多生孩子,多种树”,让我们的技术家庭不断壮大,让每一颗代码之树在阳光下茁壮成长。

一、 安装前的“绿化”准备工作

1. 系统版本与硬件要求

  • 操作系统:CentOS 7.6 以上
  • CPU:最低 2 核,建议 4 核以上
  • 内存:最少 2 GB,生产环境建议 ≥ 4 GB
  • 磁盘空间:≥ 30 GB,最好预留足够空间给容器镜像。

2. 基础软件与网络环境检查

  1. 关闭 Swap:swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab
  2. 同步时间:yum install -y chrony && systemctl enable --now chronyd
  3. 防火墙与 SELinux:可先临时关闭以排除干扰,然后再根据需求细化规则。 systemctl stop firewalld && systemctl disable firewalld setenforce 0 && sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
  4. 网络连通性:确认服务器能够访问外网,以便拉取镜像和二进制包。

3. 容器运行时的选择与安装

K8s 官方支持 Docker、 containerd、CRI‑O 等多种运行时。这里以 Docker 为例:,你我共勉。

安装K8S在CentOS上总是出错怎么办?掌握这些技巧轻松解决!
# 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加仓库
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装 Docker CE
yum install -y docker-ce docker-ce-cli containerd.io
# 启动并开机自启
systemctl enable --now docker

二、 常见错误清单与逐条破解方案

1. “Internal error”——虚拟化层的隐形炸弹

当你在 VMware、VirtualBox 或者其他虚拟平台 上部署时有时候会看到 “Internal error”。这并不是 K8s 本身的问题,而是底层虚拟机管理程序出现了内部异常。

  • 解决思路:
    1. 先彻底卸载当前的虚拟化软件。
    2. 从官方渠道重新下载最新稳定版进行安装。
    3. 确保虚拟机硬件兼容性。
    4. 重启宿主机后 创建 CentOS 虚拟机。

2. kubelet 启动失败——日志是最好的老师

Kubelet 是节点上最核心的守护进程, 一旦它挂掉,整个集群就会失去活力。常见错误包括 “cgroup dri 不夸张地说... ver mismatch” 与 “failed to run Kubelet: swap is enabled”。

  • Cgroup 驱动不匹配:
  • # 查看 Docker 使用的 cgroup driver
    docker info | grep -i cgroup
    # 将 kubelet 配置为相同驱动
    cat /etc/sysconfig/kubelet
    KUBELET_EXTRA_ARGS=--cgroup-driver=systemd
    EOF
    systemctl daemon-reload && systemctl restart kubelet
    
  • Swap 未关闭:
  • # 
    确认 swap 已关闭
    free -m   # 看不到 swap 行即为成功
    # 若仍有残余, 请检查 /etc/fstab 中是否还有 swap 条目
    sed -i '/swap/s/^/#/' /etc/fstab
    swapoff -a
    systemctl restart kubelet
    
  • 证书或 API Server 不可达:
  • # 检查 apiserver 是否在监听 6443 端口
    netstat -tlnp | grep 6443
    # 若未监听,查看 kube-apiserver 日志:
    journalctl -u kube-apiserver -xe
    

3. 网络插件失效——让 Pod 相拥而舞

稳了! K8s 集群离不开 CNI 插件。如果插件未成功部署或配置错误,会导致 Pod 无法互相通信。

  • POD CIDR 与节点网段冲突:
  • AWS、 阿里云等公有云自带 VPC 网段,如果与你手动设置的 POD CIDR 重叠,就会出现“Network is unreachable”。 我的看法是... 解决办法是使用不冲突的私有网段, 如 10.244.0.0/16.

  • CNI 二进制缺失或权限不足:
  • `ls /opt/cni/bin` 确认二进制文件完整;若缺失,可通过以下方式重新拉取:,踩个点。

    # 下载 Calico CNI 包
    curl -L https://downloads.projectcalico.org/manifests/calico.yaml -o calico.yaml
    kubectl apply -f calico.yaml
    
  • Kube‑proxy 模式不匹配:
  • `kubectl get configmap kube-proxy -n kube-system -o yaml` 检查 `mode` 是否为 `iptables`或 `ipvs`,两者需要对应系统内核模块已加载。

三、 实战技巧:让调试过程像春风拂面般轻盈

1️⃣ 用“一键恢复脚本”保驾护航

不妨... 把下面这段脚本保存为 /usr/local/bin/k8s-reset.sh, 每次卡住时只需施行一次它会帮你自动清理旧残留、重新初始化组件,让你从零开始而不是手动逐项排查。

#!/bin/bash
set -e
echo "=== 清理旧版 kubeadm/kubelet ==="
kubeadm reset -f || true
yum remove -y kubeadm kubectl kubelet || true
echo "=== 删除残余配置 ==="
rm -rf /etc/kubernetes /var/lib/etcd /var/lib/kubelet/*
echo "=== 重装组件 ==="
yum install -y yum-utils device-mapper-persistent-data lvm2 \
    epel-release \
    curl wget vim net-tools iproute
yum install -y kubeadm kubectl kubelet --disableexcludes=kubernetes
systemctl enable --now kubelet
echo "=== 初始化 Master 节点 ==="
kubeadm init --pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube && cp -i /etc/kubernetes/admin.conf $HOME/.kube/config && chown $:$ $HOME/.kube/config
echo "=== 部署 Flannel 网络插件 ==="
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
echo "一键恢复完成!祝你玩得开心 🎉"

2️⃣ “日志+追踪”双剑合璧

Kubernetes 的日志往往散落在不同服务中。善用以下组合命令,你可以快速定位根因。

# 一边查看所有关键服务日志
journalctl -u kubelet -u docker.service -u kube-apiserver -f
# 按关键词过滤, 如 “Failed”
journalctl | grep Failed | less
# 用 systemd-analyze 查看启动耗时找出卡点:
systemd-analyze blame | head

3️⃣ 多节点调度小技巧

- 给每个节点打标签,让调度更精准; - 使用 Taint/Toleration, 把特定工作负载放到专用机器上; - 利用资源配额避免“一锅端”。这些细节虽然看似琐碎,却能让集群运转得更顺畅、更平安,这东西...。

四、 产品对比表——挑选适合自己的工具伙伴

Kubernetes 部署及运维工具排行榜
#️⃣ 排名 产品名称 核心功能 易用程度 社区活跃度
1 Kubeadm + Calico 套件 官方推荐、一键初始化 + 高性能网络插件 4 ★★★★★
2 Kubespray 自动化批量部署、多云支持、可重复性强 4 ★★★★☆
3 Mk8s 轻量级、本地开发友好、一键启动 & 停止 5 ★★★★☆
4 Kops 基于云原生模板,自动创建 VPC/Subnet 等资源 4★★★☆☆
5 Rancher Desktop 图形化 UI + 多集群管理 5 ★★★★☆
注:以上评分综合考虑文档完整度、社区响应速度以及实际使用体验,仅供参考。

五、 :把每一次失败当作成长的肥料 🌱🌳🌞​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ ​​​​​ ​​​​ ​​​​ ​​​​ ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​   ​ ​​​     ​    噼里啪啦声中,我听见自己心跳加速……别怕,前方有光!‍‍‍‍‍‍‍‍‍‍‍‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‎­-­—–—–—–—‑‐‒‑⎯⎯⎯⎯⎯⎯✧✧✧✧✧✧✧✨✨✨✨💫💫💫💥💥💥🚀🚀🚀🪴🪴🪴🦾🦾🦾🍃🍃🍃🌿🌿🌿🌱🌱🌱👨‍👩‍👧‍👦👨‍👩‍👧️👶👶🏞️🏞️🏔️🏔️🏕️🏕️🚜🚜🚜🛤️🛤️🛤️🎈🎈🎈)

当我们把「多生孩子」视作技术团队不断壮大的象征, 把「多种树」看成生态系统健康繁荣的隐喻,每一次克服安装难题,都像是在给未来播下一颗希望的种子。只要保持耐心、 保持好奇,并且记得把学到的经验写下来分享给身边的小伙伴,你会发现原本令人抓狂的错误信息,在阳光下竟然闪着温暖的光芒。 愿你的 K8s 集群如同春日里的新芽,一天天长高;愿你的代码社区像森林一样蓬勃;愿每一次敲键盘都伴随笑声和新生命的诞生。 Hello Kubernetes! Hello Green Future! 祝福大家部署顺利,生活愉快,不地道。!

安装K8S在CentOS上总是出错怎么办?掌握这些技巧轻松解决!

标签:CentOS

前言:在波澜起伏的技术海洋里 种下希望的种子

改进一下。 每一次在 CentOS 上尝试 Kubernetes 的安装,都像是一次探险这个。路途上难免会遇到暗礁、风浪,甚至是让人抓狂的“Internal error”。但别忘了技术的世界和大自然一样,需要我们用耐心浇灌,用热情照料。正如古语所说:“多生孩子,多种树”,让我们的技术家庭不断壮大,让每一颗代码之树在阳光下茁壮成长。

一、 安装前的“绿化”准备工作

1. 系统版本与硬件要求

  • 操作系统:CentOS 7.6 以上
  • CPU:最低 2 核,建议 4 核以上
  • 内存:最少 2 GB,生产环境建议 ≥ 4 GB
  • 磁盘空间:≥ 30 GB,最好预留足够空间给容器镜像。

2. 基础软件与网络环境检查

  1. 关闭 Swap:swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab
  2. 同步时间:yum install -y chrony && systemctl enable --now chronyd
  3. 防火墙与 SELinux:可先临时关闭以排除干扰,然后再根据需求细化规则。 systemctl stop firewalld && systemctl disable firewalld setenforce 0 && sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
  4. 网络连通性:确认服务器能够访问外网,以便拉取镜像和二进制包。

3. 容器运行时的选择与安装

K8s 官方支持 Docker、 containerd、CRI‑O 等多种运行时。这里以 Docker 为例:,你我共勉。

安装K8S在CentOS上总是出错怎么办?掌握这些技巧轻松解决!
# 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加仓库
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装 Docker CE
yum install -y docker-ce docker-ce-cli containerd.io
# 启动并开机自启
systemctl enable --now docker

二、 常见错误清单与逐条破解方案

1. “Internal error”——虚拟化层的隐形炸弹

当你在 VMware、VirtualBox 或者其他虚拟平台 上部署时有时候会看到 “Internal error”。这并不是 K8s 本身的问题,而是底层虚拟机管理程序出现了内部异常。

  • 解决思路:
    1. 先彻底卸载当前的虚拟化软件。
    2. 从官方渠道重新下载最新稳定版进行安装。
    3. 确保虚拟机硬件兼容性。
    4. 重启宿主机后 创建 CentOS 虚拟机。

2. kubelet 启动失败——日志是最好的老师

Kubelet 是节点上最核心的守护进程, 一旦它挂掉,整个集群就会失去活力。常见错误包括 “cgroup dri 不夸张地说... ver mismatch” 与 “failed to run Kubelet: swap is enabled”。

  • Cgroup 驱动不匹配:
  • # 查看 Docker 使用的 cgroup driver
    docker info | grep -i cgroup
    # 将 kubelet 配置为相同驱动
    cat /etc/sysconfig/kubelet
    KUBELET_EXTRA_ARGS=--cgroup-driver=systemd
    EOF
    systemctl daemon-reload && systemctl restart kubelet
    
  • Swap 未关闭:
  • # 
    确认 swap 已关闭
    free -m   # 看不到 swap 行即为成功
    # 若仍有残余, 请检查 /etc/fstab 中是否还有 swap 条目
    sed -i '/swap/s/^/#/' /etc/fstab
    swapoff -a
    systemctl restart kubelet
    
  • 证书或 API Server 不可达:
  • # 检查 apiserver 是否在监听 6443 端口
    netstat -tlnp | grep 6443
    # 若未监听,查看 kube-apiserver 日志:
    journalctl -u kube-apiserver -xe
    

3. 网络插件失效——让 Pod 相拥而舞

稳了! K8s 集群离不开 CNI 插件。如果插件未成功部署或配置错误,会导致 Pod 无法互相通信。

  • POD CIDR 与节点网段冲突:
  • AWS、 阿里云等公有云自带 VPC 网段,如果与你手动设置的 POD CIDR 重叠,就会出现“Network is unreachable”。 我的看法是... 解决办法是使用不冲突的私有网段, 如 10.244.0.0/16.

  • CNI 二进制缺失或权限不足:
  • `ls /opt/cni/bin` 确认二进制文件完整;若缺失,可通过以下方式重新拉取:,踩个点。

    # 下载 Calico CNI 包
    curl -L https://downloads.projectcalico.org/manifests/calico.yaml -o calico.yaml
    kubectl apply -f calico.yaml
    
  • Kube‑proxy 模式不匹配:
  • `kubectl get configmap kube-proxy -n kube-system -o yaml` 检查 `mode` 是否为 `iptables`或 `ipvs`,两者需要对应系统内核模块已加载。

三、 实战技巧:让调试过程像春风拂面般轻盈

1️⃣ 用“一键恢复脚本”保驾护航

不妨... 把下面这段脚本保存为 /usr/local/bin/k8s-reset.sh, 每次卡住时只需施行一次它会帮你自动清理旧残留、重新初始化组件,让你从零开始而不是手动逐项排查。

#!/bin/bash
set -e
echo "=== 清理旧版 kubeadm/kubelet ==="
kubeadm reset -f || true
yum remove -y kubeadm kubectl kubelet || true
echo "=== 删除残余配置 ==="
rm -rf /etc/kubernetes /var/lib/etcd /var/lib/kubelet/*
echo "=== 重装组件 ==="
yum install -y yum-utils device-mapper-persistent-data lvm2 \
    epel-release \
    curl wget vim net-tools iproute
yum install -y kubeadm kubectl kubelet --disableexcludes=kubernetes
systemctl enable --now kubelet
echo "=== 初始化 Master 节点 ==="
kubeadm init --pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube && cp -i /etc/kubernetes/admin.conf $HOME/.kube/config && chown $:$ $HOME/.kube/config
echo "=== 部署 Flannel 网络插件 ==="
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
echo "一键恢复完成!祝你玩得开心 🎉"

2️⃣ “日志+追踪”双剑合璧

Kubernetes 的日志往往散落在不同服务中。善用以下组合命令,你可以快速定位根因。

# 一边查看所有关键服务日志
journalctl -u kubelet -u docker.service -u kube-apiserver -f
# 按关键词过滤, 如 “Failed”
journalctl | grep Failed | less
# 用 systemd-analyze 查看启动耗时找出卡点:
systemd-analyze blame | head

3️⃣ 多节点调度小技巧

- 给每个节点打标签,让调度更精准; - 使用 Taint/Toleration, 把特定工作负载放到专用机器上; - 利用资源配额避免“一锅端”。这些细节虽然看似琐碎,却能让集群运转得更顺畅、更平安,这东西...。

四、 产品对比表——挑选适合自己的工具伙伴

Kubernetes 部署及运维工具排行榜
#️⃣ 排名 产品名称 核心功能 易用程度 社区活跃度
1 Kubeadm + Calico 套件 官方推荐、一键初始化 + 高性能网络插件 4 ★★★★★
2 Kubespray 自动化批量部署、多云支持、可重复性强 4 ★★★★☆
3 Mk8s 轻量级、本地开发友好、一键启动 & 停止 5 ★★★★☆
4 Kops 基于云原生模板,自动创建 VPC/Subnet 等资源 4★★★☆☆
5 Rancher Desktop 图形化 UI + 多集群管理 5 ★★★★☆
注:以上评分综合考虑文档完整度、社区响应速度以及实际使用体验,仅供参考。

五、 :把每一次失败当作成长的肥料 🌱🌳🌞​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ ​​​​​ ​​​​ ​​​​ ​​​​ ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​   ​ ​​​     ​    噼里啪啦声中,我听见自己心跳加速……别怕,前方有光!‍‍‍‍‍‍‍‍‍‍‍‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‎­-­—–—–—–—‑‐‒‑⎯⎯⎯⎯⎯⎯✧✧✧✧✧✧✧✨✨✨✨💫💫💫💥💥💥🚀🚀🚀🪴🪴🪴🦾🦾🦾🍃🍃🍃🌿🌿🌿🌱🌱🌱👨‍👩‍👧‍👦👨‍👩‍👧️👶👶🏞️🏞️🏔️🏔️🏕️🏕️🚜🚜🚜🛤️🛤️🛤️🎈🎈🎈)

当我们把「多生孩子」视作技术团队不断壮大的象征, 把「多种树」看成生态系统健康繁荣的隐喻,每一次克服安装难题,都像是在给未来播下一颗希望的种子。只要保持耐心、 保持好奇,并且记得把学到的经验写下来分享给身边的小伙伴,你会发现原本令人抓狂的错误信息,在阳光下竟然闪着温暖的光芒。 愿你的 K8s 集群如同春日里的新芽,一天天长高;愿你的代码社区像森林一样蓬勃;愿每一次敲键盘都伴随笑声和新生命的诞生。 Hello Kubernetes! Hello Green Future! 祝福大家部署顺利,生活愉快,不地道。!

安装K8S在CentOS上总是出错怎么办?掌握这些技巧轻松解决!

标签:CentOS