温馨提示×

如何在centos用k8s

小樊
51
2026-10-03 10:01:43
栏目: 智能运维

下面给你一个在 CentOS 上从零使用 Kubernetes(k8s)的实用路线,适合新手到可运行集群。我会按版本选择 → 环境准备 → 安装 → 初始化集群 → 使用来讲。


一、选择方案(很重要)

在 CentOS 上使用 k8s,常见三种方式:

方案 适合场景 难度
kubeadm(官方推荐) 学习 / 生产 ⭐⭐⭐
minikube 本地学习 ⭐
二进制手动安装 深入理解 ⭐⭐⭐⭐⭐

✅ 推荐:kubeadm(CentOS 7 / 8 / Stream 都可用)


二、环境准备(所有节点都要做)

1️⃣ 系统要求

  • CentOS 7.9 / 8 / Stream
  • 2 核 CPU 以上
  • 2G 内存以上(master 建议 4G)
  • 多台机器(1 master + N worker)

2️⃣ 关闭防火墙 & SELinux

systemctl stop firewalld
systemctl disable firewalld

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

3️⃣ 关闭 swap

swapoff -a
sed -i '/swap/d' /etc/fstab

4️⃣ 设置主机名(每台不同)

hostnamectl set-hostname master
# worker 节点
hostnamectl set-hostname node1

5️⃣ 配置 hosts

cat >> /etc/hosts <<EOF
192.168.1.10 master
192.168.1.11 node1
EOF

6️⃣ 内核参数

cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
EOF

sysctl --system

三、安装容器运行时(Docker 或 containerd)

✅ 推荐 containerd(k8s 1.24+ 默认)

安装 containerd

yum install -y containerd
systemctl enable containerd
systemctl start containerd

四、安装 kubeadm / kubelet / kubectl

cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.kubernetes.io/core:/stable:/v1.29/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.kubernetes.io/core:/stable:/v1.29/rpm/repodata/repomd.xml.key
EOF

yum install -y kubelet kubeadm kubectl
systemctl enable kubelet

五、初始化 Master 节点

kubeadm init \
  --pod-network-cidr=10.244.0.0/16

成功后会看到:

kubeadm join 192.168.1.10:6443 --token xxx --discovery-token-ca-cert-hash xxx

⚠️ 保存这段命令(worker 加入用)

配置 kubectl

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

六、安装网络插件(必须)

推荐 Flannel

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

七、Worker 节点加入集群

在 worker 节点执行 master 输出的:

kubeadm join 192.168.1.10:6443 \
  --token xxx \
  --discovery-token-ca-cert-hash sha256:xxx

八、验证集群

kubectl get nodes
kubectl get pods -A

状态为 Ready 即成功 ✅


九、跑一个测试应用

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get svc

十、常见问题

❌ node NotReady

  • 网络插件没装
  • containerd 没启动

❌ kubeadm 版本不兼容

kubeadm version
kubelet --version

十一、下一步你可以学

  • Pod / Deployment / Service
  • Ingress(nginx)
  • Helm
  • 持久化存储(PV / PVC)
  • 高可用 master

如果你愿意,可以告诉我:

  • ✅ CentOS 版本
  • ✅ 单节点还是多节点
  • ✅ 学习还是生产

我可以直接给你定制命令清单。

0 踩