MicroK8s 增加工作節點

MicroK8s 要增加工作節點意外的簡單,首先先至少要有兩台裝好 MicroK8s 的主機,一台作為控制節點,一台作為工作節點。
延伸閱讀: Ubuntu 24.04 安裝 MicroK8s

在控制節點上面執行以下指令:
    
microk8s add-node
    

上面的指令會將當前主機設為控制節點,並且會產生三個指令,讓你複製這個指令在其他主機上面執行,就可以很方便的讓其他主機找到控制節點。

範例執行結果如下:
    
microk8s add-node
From the node you wish to join to this cluster, run the following:
microk8s join 192.168.0.30:25000/0000888882222aaaadddeee999999fff/979797d1d1d1

Use the '--worker' flag to join a node as a worker not running the control plane, eg:
microk8s join 192.168.0.30:25000/0000888882222aaaadddeee999999fff/979797d1d1d1 --worker

If the node you are adding is not reachable through the default interface you can use one of the following:
microk8s join 192.168.0.30:25000/0000888882222aaaadddeee999999fff/979797d1d1d1
    


第一個指令是將執行指令的主機作為控制節點和工作節點加入至叢集中
第二個指令是將執行指令的主機僅作為工作節點加入至叢集中(不擔任管理職)
如果有其他網路資訊,第三個指令就是告訴你可以怎麼用其他方式連線方式新增。

在這裡我們可以在控制節點中先執行以下指令來查看節點狀態:
    
microk8s kubectl get nodes
NAME             STATUS   ROLES    AGE   VERSION
k8s-control-01   Ready    <none>   25h   v1.31.2
    

在另一台主機,要當作工作節點的那台,執行上面列出的指令即可,例如筆者在這裡只想要讓這個工作節點負責工作就好,不用擔任管理職,於是就執行第二個指令。
範例輸出:
    
microk8s join 192.168.0.30:25000/0000888882222aaaadddeee999999fff/979797d1d1d1 --worker
Contacting cluster at 192.168.0.30

The node has joined the cluster and will appear in the nodes list in a few seconds.

This worker node gets automatically configured with the API server endpoints.
If the API servers are behind a loadbalancer please set the '--refresh-interval' to '0s' in:
    /var/snap/microk8s/current/args/apiserver-proxy
and replace the API server endpoints with the one provided by the loadbalancer in:
    /var/snap/microk8s/current/args/traefik/provider.yaml

Successfully joined the cluster.
    

回到控制節點,查看節點,就會發現已經成功加入工作節點了!
    
microk8s kubectl get nodes
NAME             STATUS   ROLES    AGE   VERSION
k8s-control-01   Ready    <none>   25h   v1.31.2
k8s-worker-01    Ready    <none>   8s    v1.31.2
    

因為剛剛筆者在加入工作節點時,只讓工作節點負責工作,不負責控制,所以就無法在工作節點中執行相關指令了,執行的話會出現以下訊息,提醒我們需要在控制節點中操作:
    
microk8s kubectl get nodes
This MicroK8s deployment is acting as a node in a cluster. Please use the microk8s kubectl on the master.
    

刪除工作節點

在工作節點中執行以下指令就可以離開叢集:
    
microk8s leave
    

範例執行結果:
    
microk8s leave
Configuring services.
Generating new cluster certificates.
Waiting for node to start.
    

這時候工作節點就不再是工作節點了,就是自己單獨的 k8s,恢復正常功能,可以自己執行 k8s 指令。

不過此時在控制節點中該工作節點還是存在,只是不能工作,需要幫他取消註冊,辦理離職。

可以先查看節點狀態,會發現工作節點的狀態變成 NotReady
    
microk8s kubectl get nodes
NAME             STATUS     ROLES    AGE   VERSION
k8s-control-01   Ready      <none>   25h   v1.31.2
k8s-worker-01    NotReady   <none>   23m   v1.31.2
    

執行以下指令刪除節點:
    
microk8s remove-node 工作節點名稱
    

然後再次查看節點狀態,工作節點就已經不在了
    
microk8s kubectl get nodes
NAME             STATUS     ROLES    AGE   VERSION
k8s-control-01   Ready      <none>   25h   v1.31.2
    



參考資料:
MicroK8s - Create a MicroK8s cluster

留言