在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!"
在使用这个脚本之前,请确保你已经:
MASTER_NODE
变量设置为你的主节点名称。WORKER_NODES
数组设置为你的工作节点名称列表。NETWORK_CIDR
和POD_CIDR
。运行这个脚本将会:
请注意,这个脚本是一个基本的示例,实际的部署可能需要更多的配置和步骤,例如设置持久化存储、配置Ingress控制器、设置监控和日志收集等。此外,根据你的具体需求,你可能需要选择不同的网络插件。