Kubernetes,通常縮寫為K8s,是一個開源的容器編排平臺,旨在自動化容器化應用的部署、擴展和管理。有了Kubernetes,您可以輕松地部署、更新和擴展應用,而無需擔心底層基礎設施。
一個Kubernetes集群由控制平面節點(master節點)和工作節點(worker節點)組成。確保集群的高效運行和管理的順暢進行。我們通常在工作節點上運行應用工作負載,而控制平面節點作為控制平面,用于管理集群中的工作節點和Pod。
前提條件
首先我們需要準備一臺云服務器,我是在PetaExpress領了一臺免費的云服務器,https://cn.petaexpress.com,文章結尾告訴你申請步驟。
在本指南中,我們使用一臺控制平面節點和兩臺工作節點。以下是每個節點的系統要求:
· 安裝了最小化的Ubuntu 22.04
· 最少2GB內存或更多
· 至少2個CPU核心或2個vCPU
· /var上至少有20GB的可用磁盤空間
· 具有管理員權限的Sudo用戶
· 每個節點都有可以互通
·
實驗設置
· 控制平面節點:172.20.0.2– k8smaster.example.net
· 第一工作節點:172.20.0.3 – k8sworker1.example.net
· 第二工作節點:172.20.0.4 – k8sworker2.example.net
1)設置每個節點的主機名
登錄到PetaExpress控制平面節點并通過hostnamectl命令設置主機名:
$ sudo hostnamectl set-hostname "k8smaster.example.net"
$ exec bash
在工作節點上,運行:
$ sudo hostnamectl set-hostname "k8sworker1.example.net" // 第一工作節點
$ sudo hostnamectl set-hostname "k8sworker2.example.net" // 第二工作節點
$ exec bash
在每個節點的 /etc/hosts 文件中添加以下行:
172.20.0.2 k8smaster.example.net k8smaster
172.20.0.3 k8sworker1.example.net k8sworker1
172.20.0.4 k8sworker2.example.net k8sworker2
2)禁用交換分區并添加內核參數
執行以下swapoff和sed命令以禁用交換分區。確保在所有節點上運行以下命令:
$ sudo swapoff -a
$ sudo sed -i '/ swap / s/^.?.?$/#1/g' /etc/fstab
在所有節點上加載以下內核模塊:
$ sudo tee /etc/modules-load.d/containerd.conf <
overlay
br_netfilter
EOF
$ sudo modprobe overlay
$ sudo modprobe br_netfilter
為Kubernetes設置以下內核參數,運行以下tee命令:
$ sudo tee /etc/sysctl.d/kubernetes.conf <
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOT
重新加載上述更改,運行:
$ sudo sysctl --system
3)安裝Containerd run time
在本指南中,我們使用Containerd作為Kubernetes集群的run time。因此,要安裝Containerd,首先安裝其依賴項:
$ sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates
啟用Docker倉庫:
$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
現在,運行以下apt命令以安裝Containerd:
$ sudo apt update
$ sudo apt install -y containerd.io
配置Containerd以便其使用systemd作為cgroup:
$ containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
$ sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
重啟并啟用Containerd服務:
$ sudo systemctl restart containerd
$ sudo systemctl enable containerd
4)添加Kubernetes的Apt倉庫
Kubernetes包在默認的Ubuntu 20.04包倉庫中不可用。因此,我們需要添加Kubernetes倉庫。運行以下命令以下載公共簽名密鑰:
$ curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
接下來,運行以下echo命令以添加Kubernetes apt倉庫:
$ echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
5)安裝Kubectl、Kubeadm和Kubelet
添加倉庫后,在所有節點上安裝Kubernetes組件,如kubectl、kubelet和kubeadm工具。執行以下命令:
$ sudo apt update $ sudo apt install -y kubelet kubeadm kubectl $ sudo apt-mark hold kubelet kubeadm kubectl
6)在Ubuntu 22.04上安裝Kubernetes集群
現在,我們已經準備好初始化Kubernetes集群。僅在控制平面節點上運行以下kubeadm命令:
$ sudo apt update
$ sudo apt install -y kubelet kubeadm kubectl
$ sudo apt-mark hold kubelet kubeadm kubectl
上述命令的輸出:
初始化完成后,您將看到一條包含如何將工作節點加入集群的指令的信息。請記錄下kubeadm join命令以供將來參考。
因此,要開始與集群交互,請在控制平面節點上運行以下命令:
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
接下來,嘗試運行以下kubectl命令以查看集群和節點狀態:
$ kubectl cluster-info
$ kubectl get nodes
輸出:
7)將工作節點加入集群
在每個工作節點上,使用您在第6步中初始化控制平面節點后記下的kubeadm join命令。命令應類似于:
kubeadm join k8smaster.example.net:6443 --token af4qe1.4mn5nt3v5vk0oai5
--discovery-token-ca-cert-hash sha256:c62c1826f8188f0fab5b4de07c76c41b46b5ed51cd369bdd998788ed0ade957d
來自兩個工作節點的輸出:
上述工作節點的輸出確認了這兩個節點已加入集群。使用kubectl命令從控制平面節點檢查節點狀態:
$ kubectl get nodes
命令在工作節點加入后的輸出:
正如我們所見,節點狀態是'NotReady',因此為了使其激活,我們必須安裝CNI(容器網絡接口)或網絡插件,如Calico、Flannel和Weave-net。
8)安裝Calico網絡插件
需要一個網絡插件來啟用集群中Pod之間的通信。在控制平面節點上運行以下kubectl命令以安裝Calico網絡插件:
$ kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/calico.yaml
上述命令的輸出如下所示:
驗證kube-system命名空間中Pod的狀態:
$ kubectl get pods -n kube-system
輸出:
完美,檢查節點狀態:
$ kubectl get nodes
Calico安裝后節點的狀態:
現在,我們可以說我們的Kubernetes集群是功能正常的。
憑此文章可以去PetaExpress發工單可以搞一臺2核2G的免費云服務器/月
PetaExpress 獎品的申領步驟:注冊→登錄→發工單 回復“文章網址+文章標題+申請獎勵”
審核編輯 黃宇
-
Ubuntu
+關注
關注
5文章
563瀏覽量
29704 -
云服務器
+關注
關注
0文章
566瀏覽量
13358 -
kubernetes
+關注
關注
0文章
224瀏覽量
8712
發布評論請先 登錄
相關推薦
評論