Centos 安装和配置 k8s
在 CentOS 7/8 上完成 Kubernetes(K8s)集群的安装+配置,推荐采用 kubeadm 工具链 + containerd/Docker + Flannel 网络 的“官方路线”。下面是一份可直接落地的操作清单,已根据最新实践整理,适用于 2025 年环境。
一、安装前准备(所有节点)
步骤 命令 / 说明
- 系统更新
yum update -y - 关闭 swap
swapoff -a && sed -ri '/swap/s/^/#/' /etc/fstab - 关闭 SELinux
setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config - 关闭防火墙
systemctl disable --now firewalld - 内核参数
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
EOF
sysctl --system - 主机名与 hosts
hostnamectl set-hostname k8s-master
echo -e "192.168.1.10 k8s-master\n192.168.1.11 k8s-node01" >> /etc/hosts - 时间同步
yum install -y chrony && systemctl enable --now chronyd
二、安装容器运行时(containerd 或 Docker)
方案 A:containerd(推荐,K8s 1.24+ 默认)
yum install -y yum-utils
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y containerd.io
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
替换 sandbox 镜像为国内源
sed -i 's|registry.k8s.io/pause:3.8|registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.8|g' /etc/containerd/config.toml
systemctl enable --now containerd
方案 B:Docker(兼容老版本)
yum install -y docker-ce-20.10.23 docker-ce-cli-20.10.23
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": { "max-size": "100m" },
"storage-driver": "overlay2",
"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"]
}
EOF
systemctl enable --now docker
三、安装 kubeadm / kubelet / kubectl(所有节点)
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=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
systemctl enable kubelet
四、初始化 Master 节点
准备 kubeadm 配置
cat > kubeadm-config.yaml <<EOF
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
nodeRegistration:
criSocket: unix:///run/containerd/containerd.sock # 如果用 Docker 改为 dockershim.sock
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
kubernetesVersion: v1.23.0
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
networking:
podSubnet: "10.244.0.0/16"
EOF
kubeadm init --config kubeadm-config.yaml
完成后执行:
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
五、安装 CNI 网络插件(Flannel)
wget https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml
六、Node 节点加入集群
在 node 上执行 init 输出的 join 命令(示例):
kubeadm join 192.168.1.10:6443 --token xxx
--discovery-token-ca-cert-hash sha256:yyy
七、验证与常用检查
命令 说明kubectl get nodes 查看节点状态kubectl get pods -A 查看所有命名空间 Podkubectl create deploy nginx --image=nginx:alpine 测试部署kubectl expose deploy nginx --port=80 --type=NodePort 暴露服务
八、可选:安装 Dashboard(图形界面)
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
NodePort 暴露
kubectl -n kubernetes-dashboard patch svc kubernetes-dashboard -p '{"spec":{"type":"NodePort","ports":[{"port":443,"targetPort":8443,"nodePort":30443}]}}'
访问:https://<任一节点IP>:30443
获取登录 token:
kubectl -n kubernetes-dashboard create token admin --duration=8760h
📌 小结
阶段 关键任务
安装 系统准备 → 容器运行时 → kubeadm 三件套 → kubeadm init
配置 网络插件 → 节点 join → 验证 →(可选)Dashboard
照此清单执行,可在 CentOS 7/8 上 20~30 分钟内完成一个可生产的 K8s 集群。