centos

怎样编写centos k8s部署脚本

小樊
50
2025-03-30 00:00:26
栏目: 智能运维

编写一个用于在CentOS上部署Kubernetes (k8s) 的脚本可以自动化整个安装过程,节省时间和减少错误。以下是一个基本的示例脚本,使用kubeadm工具来部署Kubernetes集群。请注意,这个脚本假设你在一个干净的CentOS系统上操作,并且你有root权限或者可以使用sudo。

#!/bin/bash

# 确保脚本在出现错误时退出
set -e

# 更新系统包
echo "Updating system packages..."
yum update -y

# 安装必要的软件包
echo "Installing required packages..."
yum install -y kubelet kubeadm kubectl docker

# 启动并启用kubelet服务
echo "Starting kubelet service..."
systemctl enable --now kubelet

# 配置Docker以使用kubernetes.io镜像加速器(可选)
# 请替换为你选择的镜像加速器地址
IMAGE_PULL_POLICY="IfNotPresent"
DOCKER_OPTS="--registry-mirror=https://<your-registry-mirror>"

# 设置Docker配置
cat <<EOF > /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "registry-mirrors": ["$DOCKER_OPTS"]
}
EOF

# 重启Docker服务
echo "Restarting Docker service..."
systemctl restart docker

# 初始化Kubernetes主节点
echo "Initializing Kubernetes master node..."
kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.23.0 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers

# 设置kubectl命令行工具的环境变量
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 安装网络插件(这里以Flannel为例)
echo "Installing Flannel network plugin..."
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

# 输出加入工作节点的命令
echo "Cluster initialization complete. You can now join worker nodes using the following command:"
echo "sudo kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>"

在使用这个脚本之前,请确保你已经:

  1. 备份了重要数据。
  2. 理解了脚本中的每个步骤。
  3. 根据你的实际情况修改了脚本中的 <your-registry-mirror>, <master-ip>, <master-port>, <token>, 和 <hash>

运行脚本:

chmod +x deploy-k8s.sh
sudo ./deploy-k8s.sh

这个脚本会安装Docker、kubelet、kubeadm和kubectl,然后初始化Kubernetes主节点,并安装Flannel作为网络插件。最后,它会输出用于加入工作节点的命令。

请注意,这个脚本是一个基本的示例,实际的部署可能需要更多的配置和调整,比如设置高可用性控制平面、配置持久化存储、设置网络策略等。在生产环境中部署Kubernetes之前,建议详细阅读Kubernetes官方文档,并根据实际需求进行调整。

0
看了该问题的人还看了