温馨提示×

centos如何用脚本部署k8s

小樊
41
2026-10-09 07:04:15
栏目: 智能运维

下面给你一个在 CentOS 7/8 上使用脚本自动化部署 Kubernetes(kubeadm 方式)的完整思路和示例脚本,适合单 Master 测试/学习环境,生产环境建议再做高可用和安全加固。


一、部署架构说明(示例)

  • 系统:CentOS 7.x / 8.x
  • 容器运行时:containerd(推荐,CentOS 8 默认)
  • K8s 版本:1.28.x(可改)
  • 部署方式:kubeadm
  • 节点:
    • 1 Master
    • N Worker

二、前置准备(所有节点执行)

1️⃣ 基础环境配置脚本 pre.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 源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

三、安装 containerd(所有节点)

2️⃣ containerd 安装脚本 containerd.sh

#!/bin/bash
set -e

yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/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#registry.aliyuncs.com/google_containers/pause#' /etc/containerd/config.toml

systemctl enable containerd
systemctl restart containerd

四、安装 kubeadm / kubelet / kubectl(所有节点)

3️⃣ k8s 组件安装 k8s-install.sh

#!/bin/bash
set -e

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=0
EOF

yum install -y kubelet-1.28.0 kubeadm-1.28.0 kubectl-1.28.0

systemctl enable kubelet

五、Master 节点初始化

4️⃣ Master 初始化脚本 master-init.sh

#!/bin/bash
set -e

kubeadm init \
  --image-repository registry.aliyuncs.com/google_containers \
  --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
chown $(id -u):$(id -g) $HOME/.kube/config

六、安装网络插件(Calico 示例)

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

七、Worker 节点加入集群

在 Master 执行:

kubeadm token create --print-join-command

Worker 节点执行输出内容,例如:

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

八、一键整合(示例思路)

# 所有节点
bash pre.sh
bash containerd.sh
bash k8s-install.sh

# Master
bash master-init.sh

# Worker
kubeadm join ...

九、常用检查命令

kubectl get nodes
kubectl get pods -A
journalctl -u kubelet -f

十、可选增强

  • ✅ 使用 Ansible 批量部署
  • ✅ HA Master(keepalived + haproxy)
  • ✅ 使用 containerd + cgroup v2
  • ✅ 离线部署(导入镜像)

如果你需要:

  • ✅ CentOS 8 专用版
  • ✅ 生产高可用版
  • ✅ 离线脚本
  • ✅ Ansible Playbook

告诉我你的环境和用途,我可以直接帮你写完整脚本。

0 踩