Kubernetes CKA課程筆記 16

使用kubeadm實際建置Cluster

ZONGRU Li
Oct 12, 2021

putty打開master機,執行建置K8s Cluster指令(帶sudo是因為過程要建目錄):

sudo kubeadm init

上述自動化init過程逐步解說如下:

1.如上preflight階段:

  • kubeadm在做系統檢核確認該機台狀態是能夠允許安裝整個K8s Cluster
  • 並且pull後面Cluster安裝所需要的image

2.如上certs階段:

  • 一開始建出/etc/kubernetes/pki目錄準備存放憑證相關檔案用
  • 後面就是建出必要的憑證相關檔案(如下)
  • 往裡面看看etcd目錄可以發現etcd有自己的CA也有伺服器憑證
  • 因為只有別人會來跟etcd溝通或隔壁etcd來溝通(如下)

3.如上kubeconfig階段:

  • 也就是master四個基礎K8s元件的config file製作,並放到/etc/kubernetes
  • (如下)

4.如上kubelet-start階段:

  • 寫入kubelet相關設定,並且執行kubelet重啟
  • 此時若執行service kubelet status指令確認會看到如下(Running!!!)

這邊可以注意到還有額外目錄放kubelet設定在/var/lib/kubelet/

而不是在下面階段會提到的static pod方式,因為kubelet是一般process在跑:

其中kubelet相關設定可以看看該目錄下的config.yaml:

5.如上control-plane階段:

  • 在前面做完kubelet後,master內要用的static pod就可以用了
  • 撰寫其manifests(API server,controller-manager,scheduler)到
  • /etc/kubernetes/manifests目錄下(如下)

這邊隨意看其中一個manifests的執行:

sudo cat /etc/kubernetes/manifests/kube-apiserver.yaml|less

然後看到如下

上述就是K8s工程師唯一可以確認認知所安裝的API Server的內容細項

並且要異動只能靠修改上面紅框的參數做調整

我這邊關心的是我用的版本對應的port,也就是我用到講師用的1.21版問題:

前篇最後想到的問題

所以趕緊看看其他的yaml:

有點神奇!!!(以後再研究)

講師有提到這些擺在/etc/kubernetes/manifests目錄下要建static Pod方式

之後這些K8s Cluster必要元件若有需要異動

就直接修改其yaml就會因為kubelet盯著直接生效

並且這種run static pod方式未來還有很多用途,後面課程會有解釋

另外看一下etcd.yaml:

回到init過程:

6.如上最後有兩個addons,安裝了兩個應用程式(非static pod):

  • 1.CoreDNS(Regular Pod形式),這個後面課程會詳細介紹
  • 2.kube-proxy(Regular Pod形式),前面提過,每個Node都該有

最後其實我們還沒搞清楚Cluster中Node怎麼作為Cluster一份子來溝通

甚至我們根本還沒意會到Cluster的存在!? 待後面課程分曉

參考課程(reference)

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

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

No responses yet