在 CentOS 上顺利安装 Kubernetes 的实操指南
一 环境准备与前置条件
sudo swapoff -a && sudo sed -i '/swap/s/^/#/' /etc/fstabsudo setenforce 0 && sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/configsudo systemctl stop firewalld && sudo systemctl disable firewalld;生产环境按需放行端口(如 6443、10250、10251、10252、2379/2380、8472/4789 UDP 等,取决于网络插件与控制面组件)。sudo systemctl start docker && sudo systemctl enable docker。cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-\$basearch/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
sudo yum install -y kubelet kubeadm kubectl --disableexcludekubernetes && sudo systemctl enable --now kubelet二 使用 kubeadm 初始化集群
sudo kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers(如网络受限,可指定国内镜像仓库)。sudo kubeadm init \
--apiserver-advertise-address=<MASTER_IP> \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.22.15 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
说明:
--pod-network-cidr 需与所选 CNI 插件一致(如 Flannel 默认 10.244.0.0/16,Calico 常见 192.168.0.0/16)。kubeadm join ... 命令,务必保存。mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlkubectl apply -f https://docs.projectcalico.org/manifests/calico.yamlkubectl get nodes 应看到 master 状态为 Ready;kubectl get pods -A 核心组件与网络插件 Pod 均为 Running。三 加入 Worker 节点
kubeadm token create --print-join-command
kubeadm join ... --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>。kubectl get nodes,等待新节点变为 Ready。systemctl status docker / crictl ps)。四 快速验证与常见问题处理
kubectl run nginx --image=nginx:1.25 --port=80 --restart=Never
kubectl expose deployment nginx --type=NodePort --port=80
kubectl get svc nginx # 获取 NodePort
curl http://<任一节点IP>:<NodePort>
kubeadm config images pull。admin.conf 且属主正确。journalctl -xeu kubelet,常见为 cgroup 驱动不一致(Docker 默认 cgroupfs,kubelet 常用 systemd,需统一)。五 单机与替代方案
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
sudo minikube start --driver=none
minikube status
适合快速验证或在资源受限环境下体验 Kubernetes。