前言
在架設 Kubernetes 集群之前,我們需要先配置虛擬機(VM)來充當 Control Plane 和 Node 節點。這些步驟將確保我們的環境能夠順利運行 Kubernetes 並進行後續的配置。本文將詳細介紹如何配置虛擬機,包括網路設置、SSH 設定,以及如何為 VM 分配固定 IP 地址。
架設 VM
在 Kubernetes 集群中,Control Plane 和 Node 節點的硬體資源需求須看你內部想要跑什麼服務去給,這裡我們只是要簡單Demo所以我這邊先給少一點的資源。
-
Control Plane 配置:
-
Control Plane 是 Kubernetes 的核心,負責集群的管理和調度。因此,它需要足夠的計算資源來處理請求和管理集群中的所有 Node 和 Pod。
CPU:2 核心
RAM:4 GB
-
Node 配置:
-
Node 是 Kubernetes 用來運行 Pod 的工作節點。1 核心的 CPU 對於運行基本的容器化應用程式是足夠的,特別是在測試環境中。
CPU:1 核心
RAM:4 GB
使用 NAT 網路配置 VM
NAT 網路的概念:
NAT(Network Address Translation) 是一種允許多個主機共用一個公共 IP 地址的技術。在虛擬機中,NAT 網路可用來將 VM 連接到外部網路(如互聯網),而不需要為每個 VM 分配一個獨立的公共 IP 地址。
VM 之間無法相互 PING:
當 VM 使用 NAT 網路時,它們會建立獨立的虛擬網卡,因此無法直接相互 PING。這是因為 NAT 網路通常用於隔離 VM 與外部網路的通信,而不是 VM 之間的內部通信。
設定 NAT 網路的網卡:
在虛擬機的網路設置中,選擇 NAT 作為網卡的網路模式。這樣可以確保 VM 能夠通過宿主機的網路訪問外部資源,而無需直接暴露在公共網路上。
SSH 設定(如有需要)
SSH 允許我們安全地遠程連接到 VM 進行管理和操作,並且因為我覺得比較方便所以我都會使用。以下是設定 SSH 的步驟:
設定 SSH 端口轉發:
首先,需要在虛擬機設置中分配一個對應的 IP 地址,並設置一個端口來允許外部通過 SSH 連接。這使得即使 VM 使用的是 NAT 網路模式,外部也可以通過宿主機的 IP 地址和指定的端口號來訪問 VM。
配置主機防火牆規則:
為了允許 SSH 連接,需要在宿主機上配置防火牆規則。具體做法是新增一個允許連接的規則,並設置為接受 SSH 連接的端口號。這樣可以確保 SSH 流量能夠通過防火牆到達 VM。
進到 VM 開啟 SSH。
$ apt-get install openssh-server
接下來就可以使用自己想用的工具去連 ssh。 我這邊使用了 Xsgell 7 這個工具連線,你可以選擇你習慣的工具。
設定固定 IP
在某些情況下,我們可能需要為 VM 設置固定 IP 地址,以便確保 VM 能夠穩定地使用同一 IP 進行通信。以下是設定固定 IP 地址的步驟:
-
修改網絡配置檔案:
在 Ubuntu 中,netplan 是用來配置網絡的工具。你需要打開位於 /etc/netplan/ 目錄下的網絡配置文件(通常是 .yaml 文件),並手動設置 IP 地址、網關和 DNS 伺服器。
# 打完 sudo nano /etc/netplan/ 案 tab
& sudo nano /etc/netplan/{你的網路設定檔名}
更改 .yaml
network:
version: 2
ethernets:
enp0s3:
dhcp4: false
addresses:
- 10.0.2.14/24
gateway4: 10.0.2.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
更新網路設定:
$ sudo netplan apply
驗證網路配置是否成功更新:
$ ip a
關閉 swap space。
$ swapoff -a
$ nano /etc/fstab
使用以下命令打開 /etc/fstab 文件:
$ sudo nano /etc/fstab
在打開的文件中,找到類似於以下的行,註解他(這些行定義了 Swap 分區或文件):
/swapfile none swap sw 0 0
這樣做之後,即使系統重啟,Swap 也不會被重新啟用,從而確保 Kubernetes 節點不依賴於 Swap。
◆ 每日咒術小知識
參考資料
https://medium.com/starbugs/security-%E4%BD%A0%E8%A9%B2%E7%9F%A5%E9%81%93%E6%89%80%E6%9C%89%E9%97%9C%E6%96%BC-ssh-%E7%9A%84%E9%82%A3%E4%BA%9B%E4%BA%8B-76b3518cb747