在 CentOS 上配置 k8s 安装环境
一 环境要求与规划
二 所有节点通用配置
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
swapoff -a
sed -i '/swap/d' /etc/fstab
hostnamectl set-hostname k8smaster # 在对应节点执行
cat >> /etc/hosts <<EOF
172.16.3.181 k8smaster
172.16.3.182 k8snode1
172.16.3.183 k8snode2
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 -p /etc/sysctl.d/k8s.conf
yum install -y ntpdate -y
ntpdate time.windows.com # 或 chrony 同步
三 安装容器运行时与 Kubernetes 组件
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
systemctl enable --now docker
# 镜像加速(可选)
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<'EOF'
{
"registry-mirrors": ["https://docker.m.daocloud.io"]
}
EOF
systemctl daemon-reload && systemctl restart docker
cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-\$basearch/
enabled=1
gpgcheck=0
EOF
# 选择一个稳定版本,例如 v1.28.2
yum install -y kubelet-1.28.2-0 kubeadm-1.28.2-0 kubectl-1.28.2-0
systemctl enable --now kubelet
四 初始化 Master 与加入 Node
kubeadm init \
--apiserver-advertise-address=172.16.3.181 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.28.2 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
kubeadm join 172.16.3.181:6443 \
--token <TOKEN> \
--discovery-token-ca-cert-hash sha256:<HASH>
kubeadm token create --print-join-command
五 安装 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
kubectl get nodes # 状态应为 Ready
kubectl get pods -A # 核心组件与 CNI Pod Running