在Debian系統上實現Kubernetes(K8S)的自動化部署可以通過以下步驟進行:
硬件和系統要求:
安裝Docker:
在所有節點上安裝Docker及其相關組件:
sudo apt update
sudo apt install -y docker.io
sudo systemctl enable --now docker.service
禁用Swap:
為了確保Kubernetes組件能夠順利運行,建議禁用Swap分區:
sudo swapoff -a
sudo sed -i '/ swap / s/1/g' /etc/fstab
安裝kubeadm、kubelet和kubectl:
添加Kubernetes的APT倉庫并安裝必要的工具:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
設置主機名及更新hosts文件:
在每個節點(包括主控節點和工作節點)上設置主機名,并在 /etc/hosts 文件中添加相應的條目以確保節點之間的通信。
sudo hostnamectl set-hostname "k8s-master01.test.local"
# 在第一個工作節點運行
sudo hostnamectl set-hostname "k8s-worker01.test.local"
# 在第二個工作節點運行
在所有節點的 /etc/hosts 文件中添加以下條目:
192.168.16.20 k8s-master01.test.local k8s-master01
192.168.16.21 k8s-worker01.test.local k8s-worker01
192.168.16.22 k8s-worker02.test.local k8s-worker02
初始化Kubernetes集群:
在主節點上使用 kubeadm 初始化集群:
sudo kubeadm init --apiserver-advertise-address 192.168.16.20 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.28.0 --control-plane-endpoint 192.168.16.20 --service-cidr 10.100.0.0/16 --token-ttl 0 --pod-network-cidr 10.244.0.0/16
初始化過程中,主節點會生成一個加入命令,你需要保存這個命令,因為稍后需要用它來加入工作節點。
加入工作節點:
在每個工作節點上,使用從主節點初始化中獲得的加入命令將它們加入到集群中:
sudo kubeadm join 192.168.16.20:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:186e7256966f0e2b3485a3b3ab15a0f1357195745e3d2fa6e9f386cfc24ecc5d
配置網絡插件:
Kubernetes集群需要一個網絡插件來管理Pod之間的通信。常用的網絡插件有Calico、Flannel等。以下是使用Calico的示例:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
驗證部署:
初始化完成后,你可以使用以下命令來驗證集群是否正常運行:
kubectl get nodes
kubectl get pods --all-namespaces
以上步驟提供了一個基本的Kubernetes集群部署流程,具體配置可能會根據實際需求和環境有所不同。在生產環境中部署Kubernetes之前,請確保進行充分的測試和驗證。