《關於我怎麼把一年內學到的新手 IT/SRE 濃縮到 30 天筆記這檔事》 Day 06 使用 Kubespray 建立自己的 K8S(一)
本篇大綱
這篇文章是要講述自建 K8s 了,如果不想採用 kubeadm
方式,可以採用 Kubespray
自動化安裝,實務上來說有多方測試調教會較穩定,也比較方便。
內文
Kubespray
我這裡採用當下最新版本 v2.19.1
,需要先在系統內安裝 Ansible,Ansible 需要 Python 才能運作,我們可以看看文件來查看相容性問題。
https://github.com/kubernetes-sigs/kubespray/blob/v2.19.1/docs/ansible.md
VM 上的版本預先裝好的是 Python 3.10.4 的版本,依照官方教學文件建議裝上 Ansible 2.12 版本,並且使用 Python Virtual Environment。
這裡我們先裝 Python Virtual Environment
1 |
|
那這樣我們就可以把 Kubespray 專案抓下來了,複製下列命令就會抓特定版本。
1 |
|
接下來就開始安裝 Kubespray 相關環境:
1 |
|
這邊都會是順利進行的,然後就會看到前面多了 (kubespray-venv)
就代表已經啟動 Python Virtualenv 了。
接下來就來複製 Inventory:
1 |
|
複製完後,編輯 inventory/mycluster/inventory.ini
,那檔案就是我們的 Server 的設定相關資訊。
1 |
|
這些相關參數設定可以在 https://github.com/kubernetes-sigs/kubespray/blob/v2.19.1/docs/ansible.md#inventory 這裡找到。
基本上把所有被註解的相關參數都刪除掉就好,[bastion]
如果你的 Node 是無法直接連線就需要設定,有需要的就自行設定,因為這裡都是直接連線到 bastion-host
做操作,因此不需要。
那就依照 Ansible 給的語法把 Host 資訊填寫上去,[all]
填寫所有的主機內容、IP、登入 Username。
1 |
|
參數基本上只要照預設也是可以跑,需要調參數就自行去翻 Kubespray 文件。
那我們就改兩個地方
inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml
的cluster_name
,改成k8s.yjerry.tw
(名字自訂)。inventory/mycluster/group_vars/all/all.yml
的 Line 20 解除註解loadbalancer_apiserver_localhost
設定為false
,因為我們沒有多個 Master node,因此不需要 Load Balancer API Server。
最後下此命令安裝:
1 |
|
安裝完以後會顯示這樣。
我們已經安裝好了,但是需要拿它裡面的 Token 才可以存取,Token 會放在 Master node 的 /etc/kubenetes/admin.conf
。
1 |
|
嘗試用 kubectl
存取節點
1 |
|
那接下來我們就把 scp
把 config 檔案下載出來,回到 bastion-host
。
1 |
|
開啟編輯,把裡面的 127.0.0.1
改為 192.168.200.101
。
但是因為我們還沒在 bastion-host
裝上 kubectl
,去官方網站下載,因為 Cluster 版本為 1.23.7,下載的 kubectl
也是要在 1.23.7 (一個 minor version 以內是可以相容的,裝上 1.22 或 1.24 都可以)
1 |
|
bastion-host
再執行一次 kubectl get node
1 |
|
這樣就可以在 bastion-host
控制 Kubernetes cluster 了。
到這裡為止我們已經建好 Cluster,但是如果想要擴充資源該怎麼辦呢?Kubespray 也可以做到,明天就接續講 Kubespray 加入刪除節點。
本系列內容也會同步貼到我的 iT 邦幫忙 https://ithelp.ithome.com.tw/users/20112934 歡迎來點一下追蹤,那我們就下一篇文章見啦!