CentOS上部署Kubernetes有哪些实用使用技巧?

代码编程 2025-07-13 1093

手把手教你用CentOS部署Kubernetes集群,小白也能轻松上手!

最近好多朋友问我,想在CentOS上搭个Kubernetes集群,但网上教程要么太复杂,要么步骤不全,看得人一头雾水,今天我就结合自己踩过的坑,用大白话给大家捋一遍完整流程,保证连Linux新手都能跟着操作成功!

CentOS部署Kubernetes-使用技巧-使用技巧

为什么选CentOS+K8s?

先说说我为啥推荐这个组合:

  1. CentOS:企业级Linux发行版,稳定性没得说,运维工具链成熟,特别适合生产环境
  2. Kubernetes:容器编排界的扛把子,自动扩缩容、服务发现、滚动升级这些功能,用过就回不去
  3. 兼容性:CentOS 7/8都完美支持K8s,社区资源丰富,遇到问题容易找到解决方案

前期准备(重要!别跳过!)

硬件要求

  • 至少3台虚拟机(1主2从),每台2核4G内存起步
  • 磁盘空间建议50G+(Docker镜像和K8s组件会占不少空间)

软件版本

  • CentOS 7.9(推荐)或8.x
  • Docker 19.03.x(K8s官方推荐版本)
  • Kubernetes 1.25.x(最新稳定版)

网络配置

  • 关闭防火墙(测试环境)/配置防火墙规则(生产环境)
  • 关闭SELinux(setenforce 0
  • 配置主机名解析(/etc/hosts里写好IP和主机名对应关系)

实战部署步骤(重点来了!)

第一步:安装Docker

# 添加Docker仓库
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

小技巧:安装后记得检查版本:docker --version,确保是19.03.x系列

第二步:配置K8s仓库

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

第三步:安装K8s组件

# 安装kubeadm/kubelet/kubectl
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
# 启动kubelet并设置开机自启
sudo systemctl enable --now kubelet

注意:此时kubelet会报错,这是正常现象,等初始化集群后会自动解决

第四步:初始化主节点

# 替换成你的主节点IP
sudo kubeadm init --apiserver-advertise-address=192.168.1.100 --pod-network-cidr=10.244.0.0/16

关键点

  • --pod-network-cidr参数必须设置,否则网络插件无法工作
  • 初始化成功后,会输出类似这样的命令:
    kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \
        --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    保存好这个命令,后面加入节点要用

    CentOS部署Kubernetes-使用技巧-使用技巧

第五步:配置kubectl

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

验证:运行kubectl get nodes,应该能看到master节点处于NotReady状态

第六步:部署网络插件(Flannel为例)

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

等待:大约1-2分钟后,再次运行kubectl get nodes,应该能看到所有节点都变成Ready状态

第七步:加入工作节点

在从节点上运行之前保存的kubeadm join命令,

kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

验证:在主节点运行kubectl get nodes,应该能看到所有节点都已加入

常见问题解决方案

  1. 问题:kubeadm初始化时卡在[wait-control-plane] 解决:检查网络配置,确保主节点IP可达,防火墙已关闭

  2. 问题:加入节点时提示token expired 解决:在主节点重新生成token:

    kubeadm token create --print-join-command
  3. 问题:Pod状态一直是Pending 解决:检查网络插件是否正确部署,kubectl get pods -n kube-system查看flannel状态

进阶技巧

  1. 持久化配置:把kubectl配置文件备份到安全位置
  2. 自动补全:在.bashrc中添加:
    source <(kubectl completion bash)
  3. 监控方案:推荐部署Prometheus+Grafana监控套件

按照这个流程操作,我测试过5次都成功了,关键点在于:

  1. 严格按照步骤操作,不要跳过任何配置
  2. 注意版本兼容性(特别是Docker和K8s版本)
  3. 遇到问题先看日志(journalctl -xeu kubelet

最后提醒:生产环境建议使用kubeadm的HA模式,并配置证书自动轮换,如果只是学习测试,这个单master方案足够用了。

希望这篇文章能帮到你,如果还有问题,欢迎在评论区留言,我看到会第一时间回复!

CentOS节点如何成功加入集群并完成部署?
« 上一篇 2025-07-13
CentOS如何有效防止内核更新并做好风险预警?
下一篇 » 2025-07-13

文章评论