在 CentOS 上跑 Kubernetes(K8s) 常见有几种方式,下面给你一个从零到可用集群的实战流程(适合学习 / 测试环境)。如果你只是想单机体验,我也可以给你更简单的方案(如 Minikube / k3s)。
swapoff -a
sed -i 's/^\(.*swap.*\)$/#\1/' /etc/fstab
systemctl disable firewalld --now
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
yum install -y containerd
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
systemctl enable containerd --now
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/repodata/repomd.xml.key
EOF
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet
kubeadm init \
--pod-network-cidr=10.244.0.0/16 \
--cri-socket unix:///run/containerd/containerd.sock
✅ 成功后会看到类似:
kubeadm join xxx.xxx.xxx.xxx:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx
mkdir -p $HOME/.kube
cp /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
测试:
kubectl get nodes
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
等一会儿:
kubectl get nodes
# STATUS 变成 Ready
在 worker 节点执行 master 初始化时输出的:
kubeadm join xxx.xxx.xxx.xxx:6443 --token xxx \
--discovery-token-ca-cert-hash sha256:xxx
kubectl get pods -A
kubectl get nodes
| 场景 | 推荐 |
|---|---|
| 学习 | k3s / Minikube |
| 单机 | k3s(最轻量) |
| 多节点 | 上面完整方案 |
curl -sfL https://get.k3s.io | sh -
kubectl get node
kubeadm init 卡住 → 检查 swap / 网络 / 防火墙如果你愿意,我可以:
你现在用的是 CentOS 几?单机还是多台?