CentOS 下使用 kubeadm 安装 Kubernetes 教程
一 环境准备与前置条件
sudo systemctl stop firewalld && sudo systemctl disable firewalldsudo setenforce 0 并修改 /etc/selinux/config 将 SELINUX=enforcing 改为 SELINUX=disabledsudo swapoff -a 并在 /etc/fstab 中注释含 swap 的行sudo hostnamectl set-hostname <master|nodeX>/etc/hosts,添加各节点 IP 与主机名 映射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
sudo yum install -y ntpdate && sudo ntpdate ntp.aliyun.com二 安装容器运行时与 Kubernetes 组件
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker && sudo systemctl enable docker
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
sudo yum install -y kubeadm kubelet kubectl --disableexcludekubernetes
sudo systemctl enable --now kubelet
说明:kubelet 会持续重启直至集群初始化完成,这是正常现象。三 初始化 Master 节点
sudo kubeadm init \
--apiserver-advertise-address=<Master_IP> \
--pod-network-cidr=10.244.0.0/16 \
--image-repository registry.aliyuncs.com/google_containers
常见参数说明:
--apiserver-advertise-address:指定 Master IP--pod-network-cidr:Pod 网段,Flannel 常用 10.244.0.0/16--image-repository:国内镜像加速,避免拉取 gcr.io 失败mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubeadm join ... 命令,稍后在 Worker 节点执行以加入集群。四 安装 CNI 网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
五 加入 Worker 节点与验证
sudo kubeadm join <Master_IP>:6443 \
--token <token> \
--discovery-token-ca-cert-hash sha256:<hash>
若 token 过期,可在 Master 执行 kubeadm token create --print-join-command 重新生成。kubectl get nodes
kubectl get pods -A
kubectl cluster-info
正常时所有节点状态为 Ready,核心系统 Pod 均为 Running。六 常见问题与优化建议
--image-repository registry.aliyuncs.com/google_containers;必要时配置 Docker 国内镜像加速。firewalld 停止/禁用策略简化排障。--control-plane-endpoint 与 --upload-certs 参数进行高可用部署。