《關於我怎麼把一年內學到的新手 IT/SRE 濃縮到 30 天筆記這檔事》 Day 04 基礎架構設定 - Instance & 網路設定

本篇大綱

這篇文章是要架設 Cloud Native Infra Labs 的第三部分,接續前面設定好的 Key pair,要來設定 VM Instance,還有一些小 Bug。

內文

接下來我們就來設定 VM 啦!

設定雲實例 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

按下 發動雲實例

day04-01.png

  • 雲實例:bastion-host

day04-02.png

來源選擇 Ubuntu-22.04

day04-03.png

類型選擇 m1.small(2 vCPUs, 2 GB)

day04-04.png

網路選擇 public,等等再手動掛 private

day04-05.png

安全性群組給予 Public SSHPrivate SSH

day04-06.png

Key Pair 選擇上次新增的金鑰對,就可以發動雲實例了。

day04-07.png

手動掛上網卡,按下 附加網路卡

day04-08.png

  • 選擇建立網路介面的形式:由網路(跟 IP 位址)
  • 網路:private
  • 固定 IP 位址:192.168.200.100

加完網路卡記得重開 VM

day04-09.png

就來試試連線,<PUBLIC_IP> 填寫 bastion-host 寫的 IP,<PRIVATE_KEY_PATH> 填寫私鑰的路徑。

ssh -i <PRIVATE_KEY_PATH> [email protected]<PUBLIC_IP>

1
ssh -i my-server [email protected] # 反正我 IP 鎖上了

day04-10.png

確認可以連線後就可以來建立其他的 Instance。

這裡就依序把 k8s-m0k8s-n0k8s-n1gitlab-runner 建立起來。

day04-11.png

gitlab-runner 選擇 2 vCPUs, 2 GB,其餘選擇 4 vCPU, 4 GB。

day04-12.png

每一台都加入 private 網路。

day04-13.png

安全性群組就是 Private SSH 都要加入,k8s-m0 加入 Master nodek8s-n0k8s-n1 加入 Worker node

day04-14.png

如果發現 private 網路分配的 IP 沒有想要的,可以先卸除網路卡。

day04-15.png

再像剛剛前面的步驟加入回去,最後再重開機 VM 即可。

day04-16.png

雙網卡修正

接完後會發現,怎麼都 ping 不到。

day04-17.png

這邊我們用下列命令查詢:

1
ip addr

day04-18.png

就會發現他的另一個網卡沒有設定到。(這裡不知道是 Openstack 問題還是 Lab 本身問題)

我們來手動修改:(vim 或 nano 都可以,覺得順手就好)

1
sudo vim /etc/netplan/50-cloud-init.yaml

檔案內容會長這樣

1
2
3
4
5
6
7
8
9
10
11
12
13
# 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 已經鎖定了。)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 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

看好差不多就可以套用,但注意如果套用失敗就連不進去了,就需要再次重建了。

1
sudo netplan apply

day04-19.png

重新 apply 之後就會有內網了,也可以 Ping 到主機。

day04-20.png

day04-21.png

複製 Private key 到 Bastion Host

接下來我們就把 Key 複製進去 Bastion Host 裡面,可以使用 scp 複製檔案進去到 Bastion Host。

scp -i <PRIVATE_KEY_PATH> <LOCAL_FILE_PATH> <REMOTE_USER>@<REMOTE_IP>:<REMOTE_PATH>

這個就是從 Local 端傳到 Remote 端,反之亦然。

1
scp -i my-server ./my-server [email protected]:~/private.key

我這裡是把它取名為 private.key,然後就可以試著用 ssh 連線到其他的內網 VM 了。

1
2
3
4
ssh -i private.key [email protected]
ssh -i private.key [email protected]
ssh -i private.key [email protected]
ssh -i private.key [email protected]

這篇內容已經把主機架設好了,接下來我們就來簡介 K8s 還有為什麼會需要 K8s 吧!

本系列內容也會同步貼到我的 iT 邦幫忙 https://ithelp.ithome.com.tw/users/20112934 歡迎來點一下追蹤,那我們就下一篇文章見啦!


《關於我怎麼把一年內學到的新手 IT/SRE 濃縮到 30 天筆記這檔事》 Day 04 基礎架構設定 - Instance & 網路設定
https://blog.yangjerry.tw/2022/09/19/it2022-day04/
作者
Jerry Yang
發布於
2022年9月19日
許可協議