這篇文章是要架設 Cloud Native Infra Labs 的第三部分,接續前面設定好的 Key pair,要來設定 VM Instance,還有一些小 Bug。
接下來我們就來設定 VM 啦!
回顧一下這次架設 Kubernetes Cluster,分配如下:
Server Name | CPU | Ram | Private IP | Notes |
---|---|---|---|---|
bastion-host | 2 | 2G | 192.168.200.100/24 | Public IP, Control Center |
k8s-m0 | 4 | 4G | 192.168.200.101/24 | K8S Master node |
k8s-n0 | 4 | 4G | 192.168.200.102/24 | K8S Worker node 0 |
k8s-n1 | 4 | 4G | 192.168.200.103/24 | K8S Worker node 1 |
gitlab-runner | 2 | 2G | 192.168.200.104/24 | GitLab Shell Runner |
我這裡會架設 5 台 Instance,其中 3 台做為 Kubernetes 的 Master Node 跟 Worker Node,1 台做為跳板 Host,剩下 1 台如果有機會講到 GitLab CI/CD 的話就會把他排進去做為 Shell Runner。
這邊我們先架設 bastion-host
按下 發動雲實例
bastion-host
來源選擇 Ubuntu-22.04
類型選擇 m1.small
(2 vCPUs, 2 GB)
網路選擇 public
,等等再手動掛 private
。
安全性群組給予 Public SSH
跟 Private SSH
。
Key Pair 選擇上次新增的金鑰對,就可以發動雲實例了。
手動掛上網卡,按下 附加網路卡
。
由網路(跟 IP 位址)
private
192.168.200.100
加完網路卡記得重開 VM
就來試試連線,<PUBLIC_IP>
填寫 bastion-host
寫的 IP,<PRIVATE_KEY_PATH>
填寫私鑰的路徑。
ssh -i <PRIVATE_KEY_PATH> ubuntu@<PUBLIC_IP>
ssh -i my-server ubuntu@103.122.116.3 # 反正我 IP 鎖上了
確認可以連線後就可以來建立其他的 Instance。
這裡就依序把 k8s-m0
、k8s-n0
、k8s-n1
、gitlab-runner
建立起來。
gitlab-runner
選擇 2 vCPUs, 2 GB,其餘選擇 4 vCPU, 4 GB。
每一台都加入 private
網路。
安全性群組就是 Private SSH
都要加入,k8s-m0
加入 Master node
,k8s-n0
跟 k8s-n1
加入 Worker node
。
如果發現 private
網路分配的 IP 沒有想要的,可以先卸除網路卡。
再像剛剛前面的步驟加入回去,最後再重開機 VM 即可。
接完後會發現,怎麼都 ping 不到。
這邊我們用下列命令查詢:
ip addr
就會發現他的另一個網卡沒有設定到。(這裡不知道是 Openstack 問題還是 Lab 本身問題)
我們來手動修改:(vim 或 nano 都可以,覺得順手就好)
sudo vim /etc/netplan/50-cloud-init.yaml
檔案內容會長這樣
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
ens3:
dhcp4: true
match:
macaddress: fa:16:3e:8b:cb:6a
set-name: ens3
version: 2
幫另外一組網卡 ens4
加入設定(設定 DHCP 沒關係,因為 Openstack 已經鎖定了。)
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
ens3:
dhcp4: true
match:
macaddress: fa:16:3e:8b:cb:6a
set-name: ens3
ens4:
dhcp4: true
match:
macaddress: fa:16:3e:1f:f6:de # 填寫 ens4 的 Mac address
set-name: ens4
version: 2
看好差不多就可以套用,但注意如果套用失敗就連不進去了,就需要再次重建了。
sudo netplan apply
重新 apply 之後就會有內網了,也可以 Ping 到主機。
接下來我們就把 Key 複製進去 Bastion Host 裡面,可以使用 scp
複製檔案進去到 Bastion Host。
scp -i <PRIVATE_KEY_PATH> <LOCAL_FILE_PATH> <REMOTE_USER>@<REMOTE_IP>:<REMOTE_PATH>
這個就是從 Local 端傳到 Remote 端,反之亦然。
scp -i my-server ./my-server ubuntu@103.122.116.3:~/private.key
我這裡是把它取名為 private.key
,然後就可以試著用 ssh
連線到其他的內網 VM 了。
ssh -i private.key ubuntu@192.168.200.101
ssh -i private.key ubuntu@192.168.200.102
ssh -i private.key ubuntu@192.168.200.103
ssh -i private.key ubuntu@192.168.200.104
這篇內容已經把主機架設好了,接下來我們就來簡介 K8s 還有為什麼會需要 K8s 吧!
本系列內容也會同步貼到我的 Blog https://blog.yangjerry.tw 歡迎來我的 Blog 點一下 RSS 追蹤,那我們就下一篇文章見啦!