centos

CentOS上Kubernetes部署的自动化脚本示例

小樊
48
2025-07-27 02:36:32
栏目: 智能运维

在CentOS上自动化部署Kubernetes集群可以使用多种工具,其中最流行的是Kubeadm。以下是一个使用Kubeadm自动化部署Kubernetes集群的示例脚本。这个脚本假设你在一个CentOS 7或更高版本的系统上操作,并且已经安装了Docker和kubeadm、kubelet和kubectl。

#!/bin/bash

# 设置变量
MASTER_NODE="master"
WORKER_NODES=("node1" "node2" "node3")
NETWORK_CIDR="10.244.0.0/16"
POD_CIDR="10.244.0.0/16"

# 安装Docker
echo "Installing Docker..."
yum install -y docker
systemctl enable docker
systemctl start docker

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

# 重启Docker服务
systemctl restart docker

# 安装kubeadm, kubelet和kubectl
echo "Installing kubeadm, kubelet and kubectl..."
yum install -y kubeadm-$(curl -s https://mirrors.aliyun.com/kubernetes/yum/doc/yum-repo-gpg) kubectl-$(curl -s https://mirrors.aliyun.com/kubernetes/yum/doc/yum-repo-gpg) kubelet-$(curl -s https://mirrors.aliyun.com/kubernetes/yum/doc/yum-repo-gpg)
yum clean all
systemctl enable kubelet
systemctl start kubelet

# 初始化主节点
echo "Initializing the Kubernetes master node..."
kubeadm init --pod-network-cidr=$POD_CIDR

# 设置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 "Get the join command for worker nodes..."
kubeadm token create --print-join-command

# 在工作节点上运行加入命令
for NODE in "${WORKER_NODES[@]}"; do
  echo "On $NODE node, run the following command to join the cluster:"
  ssh $NODE "bash -s" < <(kubeadm token create --print-join-command)
done

echo "Kubernetes cluster has been successfully deployed!"

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

  1. 准备好了CentOS服务器,并且它们之间可以通过SSH无密码登录。
  2. MASTER_NODE变量设置为你的主节点名称。
  3. WORKER_NODES数组设置为你的工作节点名称列表。
  4. 根据你的网络环境调整NETWORK_CIDRPOD_CIDR

运行这个脚本将会:

请注意,这个脚本是一个基本的示例,实际的部署可能需要更多的配置和步骤,例如设置持久化存储、配置Ingress控制器、设置监控和日志收集等。此外,根据你的具体需求,你可能需要选择不同的网络插件。

0
看了该问题的人还看了