温馨提示×

centos部署k8s怎样自动化

小樊
54
2026-09-09 09:38:52
栏目: 智能运维

在 CentOS 上部署 Kubernetes(k8s)实现自动化,通常可以从「单机脚本化」到「生产级自动化工具」几个层次来做。下面按实用程度给你一个完整思路。


一、最基础的自动化:Shell 脚本一键部署(适合测试/学习)

1. 系统初始化(所有节点)

# init-k8s.sh
#!/bin/bash
set -e

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 关闭 SELinux
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

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

# 内核参数
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

# 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2

2. 安装容器运行时(containerd 推荐)

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y containerd.io
systemctl enable --now containerd

3. 安装 kubeadm / kubelet / kubectl

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

yum install -y kubelet kubeadm kubectl
systemctl enable --now kubelet

4. Master 初始化(自动执行)

kubeadm init \
  --pod-network-cidr=10.244.0.0/16 \
  --cri-socket=unix:///run/containerd/containerd.sock

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

5. Node 自动加入

# 在 master 上生成 join 命令
kubeadm token create --print-join-command

Node 执行:

kubeadm join <master-ip>:6443 --token xxx --discovery-token-ca-cert-hash xxx

✅ 适合:学习、PoC、临时环境


二、进阶自动化:Ansible 批量部署(推荐)

1. 架构

ansible-control
 ├── master
 ├── node1
 ├── node2

2. 示例 playbook 结构

k8s-ansible/
├── inventory.ini
├── roles/
│   ├── init/
│   ├── containerd/
│   ├── kubeadm/
├── site.yml

3. inventory.ini

[master]
192.168.1.10

[node]
192.168.1.11
192.168.1.12

4. site.yml 示例

- hosts: all
  roles:
    - init
    - containerd

- hosts: master
  roles:
    - master-init

- hosts: node
  roles:
    - node-join

✅ 优点

  • 可重复
  • 可版本管理
  • 适合多节点

三、生产级自动化(强烈推荐)

方案 1:Kubespray(官方社区方案)

✅ 基于 Ansible
✅ 支持 HA、多网卡、离线
✅ CentOS 完美支持

git clone https://github.com/kubernetes-sigs/kubespray
cd kubespray
pip install -r requirements.txt
cp -rf inventory/sample inventory/mycluster
ansible-playbook -i inventory/mycluster/hosts.yaml cluster.yml

方案 2:RKE / RKE2(SUSE)

./rke up

适合:

  • 私有云
  • 边缘
  • 国产生态

方案 3:KubeKey(KubeSphere)

./kk create cluster

✅ 中文友好
✅ 一键部署 K8s + KubeSphere


四、CI/CD 级别自动化(DevOps)

可结合:

  • Terraform(拉 CentOS 机器)
  • Ansible(装 K8s)
  • GitLab CI / Jenkins(触发)
  • ArgoCD(部署应用)

示例流程:

Terraform → CentOS VM
Ansible   → K8s 集群
ArgoCD    → 应用自动化

五、常见坑(CentOS 专属)

❌ firewalld 没关
❌ swap 没关
❌ cgroup driver 不一致
❌ 内核版本太低(建议 ≥ 4.18)
❌ 时间不同步(必须 NTP)


六、推荐组合(直接抄)

场景 推荐方案
学习 Shell + kubeadm
多节点 Ansible
生产 Kubespray
国产生态 KubeSphere / RKE2

如果你愿意,我可以:

  • ✅ 给你 完整 Ansible 仓库
  • ✅ 给你 CentOS 7 / 8 专属脚本
  • ✅ 帮你设计 高可用 K8s 架构

你现在是 测试环境还是生产环境?单节点还是多节点?

0 踩