編寫一個用于在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官方文檔,并根據實際需求進行調整。