温馨提示×

centos k8s集群怎么搭

小樊
42
2026-10-18 01:21:52
栏目: 智能运维

下面给你一个从零在 CentOS 上搭建 Kubernetes(k8s)集群的实战型步骤,以 kubeadm + containerd 为例(目前最主流、官方推荐)。

适用版本示例:
CentOS 7 / CentOS 8 Stream
Kubernetes 1.28+
网络插件:Calico(也可用 Flannel)


一、环境准备

1. 机器规划

至少 2 台机器:

角色 IP 主机名
master 192.168.1.10 k8s-master
node 192.168.1.11 k8s-node1

生产建议:3 master + N node


2. 所有节点执行(master + node)

2.1 关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

2.2 关闭 SELinux

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

2.3 关闭 swap

swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab

2.4 设置主机名

hostnamectl set-hostname k8s-master   # master
hostnamectl set-hostname k8s-node1    # node

2.5 配置 hosts

cat >> /etc/hosts <<EOF
192.168.1.10 k8s-master
192.168.1.11 k8s-node1
EOF

2.6 内核参数

cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
EOF

sysctl --system

二、安装容器运行时(containerd)

1. 安装依赖

yum install -y yum-utils device-mapper-persistent-data lvm2

2. 安装 containerd

yum install -y containerd

3. 生成配置

mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml

修改(关键):

SystemdCgroup = true

4. 启动

systemctl enable containerd
systemctl start containerd

三、安装 kubeadm / kubelet / kubectl

1. 配置 yum 源

cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
EOF

2. 安装

yum install -y kubelet kubeadm kubectl
systemctl enable kubelet

四、初始化 Master 节点

1. 初始化

kubeadm init \
  --apiserver-advertise-address=192.168.1.10 \
  --pod-network-cidr=10.244.0.0/16

Calico 用 192.168.0.0/16 也可,后面要对应

2. 配置 kubectl

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

五、安装网络插件(Calico)

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

查看状态:

kubectl get pods -n kube-system

六、Node 加入集群

在 node 节点执行 master 初始化后输出的命令,类似:

kubeadm join 192.168.1.10:6443 \
  --token xxxx \
  --discovery-token-ca-cert-hash sha256:xxxx

token 过期可重新生成:

kubeadm token create --print-join-command

七、验证集群

kubectl get nodes

状态应为 Ready


八、常见问题

1. node 一直是 NotReady

  • 网络插件未装
  • CIDR 不匹配
  • containerd Cgroup 没改

2. kubectl 命令报错

  • 没配置 .kube/config

3. 想用 Docker 而不是 containerd?

不推荐(Docker 已废弃 k8s 支持)


九、下一步你可以做什么

  • 部署 Dashboard
  • 配置 Ingress
  • 搭建 Helm
  • 高可用 Master(keepalived + haproxy)

如果你愿意,我可以: ✅ 给你 一键脚本
✅ 教你 高可用集群
✅ 帮你 排错当前环境

你现在是在 虚拟机 / 云服务器 / 裸机?

0 踩