Kubernetes,通常縮寫為K8s,是一個開源的容器編排平臺,旨在自動化容器化應(yīng)用的部署、擴展和管理。有了Kubernetes,您可以輕松地部署、更新和擴展應(yīng)用,而無需擔(dān)心底層基礎(chǔ)設(shè)施。
一個Kubernetes集群由控制平面節(jié)點(master節(jié)點)和工作節(jié)點(worker節(jié)點)組成。確保集群的高效運行和管理的順暢進(jìn)行。我們通常在工作節(jié)點上運行應(yīng)用工作負(fù)載,而控制平面節(jié)點作為控制平面,用于管理集群中的工作節(jié)點和Pod。
前提條件
首先我們需要準(zhǔn)備一臺云服務(wù)器,我是在PetaExpress領(lǐng)了一臺免費的云服務(wù)器,https://cn.petaexpress.com,文章結(jié)尾告訴你申請步驟。
在本指南中,我們使用一臺控制平面節(jié)點和兩臺工作節(jié)點。以下是每個節(jié)點的系統(tǒng)要求:
· 安裝了最小化的Ubuntu 22.04
· 最少2GB內(nèi)存或更多
· 至少2個CPU核心或2個vCPU
· /var上至少有20GB的可用磁盤空間
· 具有管理員權(quán)限的Sudo用戶
· 每個節(jié)點都有可以互通
·
實驗設(shè)置
· 控制平面節(jié)點:172.20.0.2– k8smaster.example.net
· 第一工作節(jié)點:172.20.0.3 – k8sworker1.example.net
· 第二工作節(jié)點:172.20.0.4 – k8sworker2.example.net
1)設(shè)置每個節(jié)點的主機名
登錄到PetaExpress控制平面節(jié)點并通過hostnamectl命令設(shè)置主機名:
$ sudo hostnamectl set-hostname "k8smaster.example.net"
$ exec bash
在工作節(jié)點上,運行:
$ sudo hostnamectl set-hostname "k8sworker1.example.net" // 第一工作節(jié)點
$ sudo hostnamectl set-hostname "k8sworker2.example.net" // 第二工作節(jié)點
$ exec bash
在每個節(jié)點的 /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)禁用交換分區(qū)并添加內(nèi)核參數(shù)
執(zhí)行以下swapoff和sed命令以禁用交換分區(qū)。確保在所有節(jié)點上運行以下命令:
$ sudo swapoff -a
$ sudo sed -i '/ swap / s/^.?.?$/#1/g' /etc/fstab
在所有節(jié)點上加載以下內(nèi)核模塊:
$ sudo tee /etc/modules-load.d/containerd.conf <
overlay
br_netfilter
EOF
$ sudo modprobe overlay
$ sudo modprobe br_netfilter
為Kubernetes設(shè)置以下內(nèi)核參數(shù),運行以下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"
現(xiàn)在,運行以下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服務(wù):
$ sudo systemctl restart containerd
$ sudo systemctl enable containerd
4)添加Kubernetes的Apt倉庫
Kubernetes包在默認(rèn)的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
添加倉庫后,在所有節(jié)點上安裝Kubernetes組件,如kubectl、kubelet和kubeadm工具。執(zhí)行以下命令:
$ sudo apt update $ sudo apt install -y kubelet kubeadm kubectl $ sudo apt-mark hold kubelet kubeadm kubectl
6)在Ubuntu 22.04上安裝Kubernetes集群
現(xiàn)在,我們已經(jīng)準(zhǔn)備好初始化Kubernetes集群。僅在控制平面節(jié)點上運行以下kubeadm命令:
$ sudo apt update
$ sudo apt install -y kubelet kubeadm kubectl
$ sudo apt-mark hold kubelet kubeadm kubectl
上述命令的輸出:
初始化完成后,您將看到一條包含如何將工作節(jié)點加入集群的指令的信息。請記錄下kubeadm join命令以供將來參考。
因此,要開始與集群交互,請在控制平面節(jié)點上運行以下命令:
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
接下來,嘗試運行以下kubectl命令以查看集群和節(jié)點狀態(tài):
$ kubectl cluster-info
$ kubectl get nodes
輸出:
7)將工作節(jié)點加入集群
在每個工作節(jié)點上,使用您在第6步中初始化控制平面節(jié)點后記下的kubeadm join命令。命令應(yīng)類似于:
kubeadm join k8smaster.example.net:6443 --token af4qe1.4mn5nt3v5vk0oai5
--discovery-token-ca-cert-hash sha256:c62c1826f8188f0fab5b4de07c76c41b46b5ed51cd369bdd998788ed0ade957d
來自兩個工作節(jié)點的輸出:
上述工作節(jié)點的輸出確認(rèn)了這兩個節(jié)點已加入集群。使用kubectl命令從控制平面節(jié)點檢查節(jié)點狀態(tài):
$ kubectl get nodes
命令在工作節(jié)點加入后的輸出:
正如我們所見,節(jié)點狀態(tài)是'NotReady',因此為了使其激活,我們必須安裝CNI(容器網(wǎng)絡(luò)接口)或網(wǎng)絡(luò)插件,如Calico、Flannel和Weave-net。
8)安裝Calico網(wǎng)絡(luò)插件
需要一個網(wǎng)絡(luò)插件來啟用集群中Pod之間的通信。在控制平面節(jié)點上運行以下kubectl命令以安裝Calico網(wǎng)絡(luò)插件:
$ kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/calico.yaml
上述命令的輸出如下所示:
驗證kube-system命名空間中Pod的狀態(tài):
$ kubectl get pods -n kube-system
輸出:
完美,檢查節(jié)點狀態(tài):
$ kubectl get nodes
Calico安裝后節(jié)點的狀態(tài):
現(xiàn)在,我們可以說我們的Kubernetes集群是功能正常的。
憑此文章可以去PetaExpress發(fā)工單可以搞一臺2核2G的免費云服務(wù)器/月
PetaExpress 獎品的申領(lǐng)步驟:注冊→登錄→發(fā)工單 回復(fù)“文章網(wǎng)址+文章標(biāo)題+申請獎勵”
審核編輯 黃宇
-
Ubuntu
+關(guān)注
關(guān)注
5文章
582瀏覽量
30705 -
云服務(wù)器
+關(guān)注
關(guān)注
0文章
784瀏覽量
13710 -
kubernetes
+關(guān)注
關(guān)注
0文章
237瀏覽量
8925
發(fā)布評論請先 登錄
阿里云上Kubernetes集群聯(lián)邦
如何在Arm上利用Istio搭建一個基于Kubernetes的Service Mesh平臺
如何部署基于Mesos的Kubernetes集群

在Kubernetes集群發(fā)生網(wǎng)絡(luò)異常時如何排查
Kubernetes集群的關(guān)閉與重啟
Kubernetes的集群部署
在Ubuntu上編譯安裝pcl教程
K8S學(xué)習(xí)教程一:使用PetaExpress云服務(wù)器安裝Minikube 集群

K8S學(xué)習(xí)教程(二):在 PetaExpress KubeSphere容器平臺部署高可用 Redis 集群

評論