下面给你一个在 CentOS 上搭建 Kubernetes(K8s)集群的实战步骤教程,以 kubeadm + CentOS 7/8 为例,适合学习和生产入门。
至少 2 台 CentOS 机器:
| 角色 | 主机名 | IP |
|---|---|---|
| Master | k8s-master | 192.168.1.10 |
| Worker | k8s-node1 | 192.168.1.11 |
建议:Master ≥ 2核4G,Node ≥ 2核2G
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭 SELinux
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 关闭 swap
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab
# 设置主机名
hostnamectl set-hostname k8s-master # master
hostnamectl set-hostname k8s-node1 # node
# 配置 hosts
cat >> /etc/hosts <<EOF
192.168.1.10 k8s-master
192.168.1.11 k8s-node1
EOF
modprobe br_netfilter
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
K8s 1.24+ 默认不再支持 docker
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y containerd.io
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
# 修改 SystemdCgroup = true
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
systemctl restart containerd
systemctl enable containerd
cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
EOF
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet
kubeadm init \
--apiserver-advertise-address=192.168.1.10 \
--image-repository registry.aliyuncs.com/google_containers \
--pod-network-cidr=10.244.0.0/16
初始化成功后会看到:
kubeadm join 192.168.1.10:6443 --token xxx --discovery-token-ca-cert-hash xxx
⚠️ 保存好这一段
配置 kubectl:
mkdir -p $HOME/.kube
cp /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
查看状态:
kubectl get nodes
kubectl get pods -n kube-system
在 Node 节点执行:
kubeadm join 192.168.1.10:6443 \
--token xxx \
--discovery-token-ca-cert-hash sha256:xxx
kubectl get nodes
状态为 Ready 即成功 ✅
kubeadm token create --print-join-command
kubeadm reset
如果你愿意,我可以: ✅ 给你 一键脚本 ✅ 教你 CentOS Stream / Rocky ✅ 帮你 排错 ✅ 给你 生产级方案
你现在是 学习还是生产环境?