编写一个用于在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>"
在使用这个脚本之前,请确保你已经:
<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官方文档,并根据实际需求进行调整。