Kubernetes CKA課程筆記 15

同時安裝kubeadm & kubectl & kubelet

ZONGRU Li
Oct 11, 2021

接著考慮要安裝前面第11篇筆記 — Kubernetes Cluster 安裝步驟細節解說

提到的Kubernetes Processes

在11篇最後面有總結我們總共要安裝的東西有:

這些複雜的安裝則可以全權交給 — kubeadm

kubeadm:

  • 基本上每台(master或worker1或worker2)都要安裝
  • 但是有一個指令只會執行"乙次"
  • 只執行預計的master node
  • kubeadm init
  • 透過上述指令將機台轉為真正的master node(或稱Control Plane Node)
  • 該指令會精心安排整個Cluster setup,具體內容如下:
  1. 建立/etc/kubernetes目錄
  2. 產生自簽憑證授權單位(CA)來設定每一個元件的identity
  3. 產生憑證並放置在內部
  4. 建立Static Pod manifest files/etc/kubernetes/manifests
  5. (上述過程kebelet就會偵測到該目錄的manifest files,並建出Static Pod)
  6. 建立各種必要設定供必要的Processes(ex:API Server,kubelet,etcd…)
  7. 待這個指令完成結束就代表單一Node Cluster建立完畢
  8. 但是記得kubeadm並不安裝或管理kubelet
  9. 亦即我們需要自行安裝kubelet

另外我們要與K8s Cluster溝通則需要client command line tool:kubectl

所以總共要安裝:

  1. kubeadm
  2. kubelet
  3. kubectl

下面再將上述三樣應用程式簡單敘述:

1.kubelet:

  • 啟動Pod與Container
  • 每一台都要裝的物件

2.kubeadm:

  • Command line tool,專門用來初始化整個Cluster

3.kubectl:

  • 也是Command line tool,專門用來對Cluster溝通(建置好後最常用)

並且kubelet,kubeadm,kubectl這三樣都是由Kubernetes官方維護

所以release版本會是相同的

實際安裝:

打開安裝doc網頁,在安裝Container Runtime下面

繼續往下拉找到分散式系統類型分類安裝(ubuntu就是Debian-based的)

所以依序複製上述指令進行安裝,首先進到master node:

  1. 安裝Kubernetes的安裝套件的repository

2.下載Google Cloud的公開簽署key(後面連線安裝倉庫(repo.)要用)並下載repo

3.最後一步要特別說明,如下安裝三個應用程式

但是沒帶版本號表示決定最後一版

但若是我們想裝以前的版本?

所以要先能查到版本號執行以下:

apt-cache madison kubeadm

看起來要先跑sudo apt-get update做更新

接著再重跑指令就看到一大堆版本號:

若要安裝指定版本(例如1.22.2-00)的三個應用程式就要類似這樣打:

sudo apt-get install -y kubelet=1.22.2-00 kubeadm=1.22.2-00 kubectl=1.22.2-00

這邊先跟著講師安裝1.21.0-00版本

避免誤升級

而依樣用指令做檢查,執行:

service kubelet status

這邊看到非running,因為kubelet目前沒工作的關係,是正常的,在等kubeadm

所以接著就是要跑kubeadm指令,可以先用以下指令查詢指令使用方式:

kubeadm --help

確認安裝版本執行:

kubeadm version

其中如kubectl同理執行kubectl version

以上預定的master機就做完建立Cluster的準備工作了!

但是以上的準備工作(kubelet,kubeadm,kubectl)也要在worker機上安裝

所以到worker兩台準備寫shell script:

在兩台worker機上建立sh名稱為:install-k8s-components.sh

同理開始貼安裝過程要的指令:

wq儲存後記得chmod u+x 檔名(改為可以執行的權限)

然後分別執行下去(./install-k8s-components.sh):

兩台都跑完sh了

然後一樣用檢查指令看有沒有回應(下面kubelet可以用另外兩個替換):

service kubelet status

kubeadm version

或只打以下,至少會出現指令不完整的提示錯誤

kubeadm

kubectl

至此雖然Cluster還沒裝下去,但是我們有:

另外特別注意到,我寫blog當下的K8s安裝文件已經來到1.22版

有注意到前面開的必要port可能跟講師的1.21不一樣

怕後面真的裝Cluster有問題

所以我上面kubeadm選擇1.21版可能也要將1.21必要port打開:

只有master多加

之後看沒問題可能嘗試將可能多餘的10259,10257 port關掉

參考課程(reference)

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet