準備 Kubernetes 節點
準備 Kubernetes 節點的多數步驟會分別由在 nsx-node-agent 和 nsx-ncp-bootstrap 中執行的兩個容器 (nsx-ovs 和 nsx-ncp-bootstrap) 自動化。
安裝 NCP 之前,請確定 Kubernetes 節點已安裝 Python 並可透過命令列介面進行存取。您可以使用 Linux 套件管理員進行安裝。例如,在 Ubuntu 上,您可以執行命令
apt install python
。針對 Ubuntu,安裝
NSX-T
CNI 外掛程式會將 AppArmor 設定檔檔案 ncp-apparmor
複製到 /etc/apparmor.d
並將其載入。安裝之前,AppArmor 服務必須處於執行中狀態,且目錄 /etc/apparmor.d
必須存在。否則,安裝將會失敗。您可以檢查是否已透過下列命令啟用 AppArmor 模組:
sudo cat /sys/module/apparmor/parameters/enabled
您可以檢查是否已透過下列命令啟動 AppArmor 服務:
sudo /etc/init.d/apparmor status
ncp-apparmor
設定檔檔案會針對名為 node-agent-apparmor
的 NSX 節點代理程式提供 AppArmor 設定檔,其與 docker-default
設定檔之間存在下列差異: - deny mount規則便會移除。
- mount規則便會新增。
- 會新增一些network、capability、file和umount選項。
您可以使用其他設定檔取代
node-agent-apparmor
設定檔。如果您這麼做,則必須在 NCP YAML 檔案中變更設定檔名稱 node-agent-apparmor
。NSX NCP 啟動程序容器可自動執行主機上 NSX CNI 的安裝和更新。在先前的版本中,NSX CNI 是透過 deb/rpm 套件安裝。在此版本中,則是會直接將檔案複製到主機。啟動程序容器將從套件管理員的資料庫中移除先前安裝的 NSX CNI 元件。將刪除下列目錄和檔案:
- /etc/cni/net.d
- /etc/apparmor.d/ncp-apparmor
- /opt/cni/bin/nsx
啟動程序容器會檢查檔案
10-nsx.conflist
,並在標籤 nsxBuildVersion
中尋找 CNI 版本號碼。如果此版本比啟動程序容器中的版本舊,則會將下列檔案複製到主機:- /opt/cni/bin/nsx
- /etc/cni/net.d/99-loopback.conf
- /etc/cni/net.d/10-nsx.conflist
- /etc/apparmor.d/ncp-apparmor
如果檔案
/opt/cni/bin/loopback
和 /etc/cni/net.d/99-loopback.conf
存在,則不會覆寫這些檔案。如果作業系統類型為 Ubuntu,則也會將檔案 ncp-apparmor
複製到主機。啟動程序容器會將 IP 位址和路由從
br-int
移至 node-if
。如果是在主機上執行,也將會停止 OVS,因為 OVS 將在 nsx-ovs 容器內執行。nsx-ovs 容器將建立 br-int
執行個體 (如果不存在),將連結至節點邏輯交換器的網路介面 (node-if
) 新增至 br-int
,並確定 br-int
和 node-if
連結狀態運作中。會將 IP 位址和路由從 node-if
移至 br-int
。重新啟動 nsx-node-agent 網繭或 nsx-ovs 容器時,將會停機幾秒鐘。如果移除 nsx-node-agent DaemonSet,則 OVS 不會再於主機上執行 (在容器中或主機的 PID 中)。
更新網路組態,使 IP 位址和路由保持持續。例如,對於 Ubuntu,編輯
/etc/network/interfaces
(在適當情況下使用環境的實際值),讓 IP 位址和路由保持持續:auto eth1 iface eth1 inet static address 172.16.1.4/24 #persistent static routes up route add -net 172.16.1.3/24 gw 172.16.1.1 dev eth1
然後執行命令
ifdown eth1;
ifup eth1
。對於 RHEL,建立並編輯
/etc/sysconfig/network-scripts/ifcfg-<node-if>
(在適當情況下使用環境的實際值),讓 IP 位址保持持續:HWADDR=00:0C:29:B7:DC:6F TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none IPADDR=172.10.0.2 PREFIX=24 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV4_DNS_PRIORITY=100 IPV6INIT=no NAME=eth1 UUID=39317e23-909b-45fc-9951-849ece53cb83 DEVICE=eth1 ONBOOT=yes
然後執行命令
systemctl
restart network.service
。IP 和靜態路由必須在上行介面 (由
ovs_uplink_port
指定) 保持持續,以確保在虛擬機器重新啟動後,與 Kubernetes API 伺服器的連線不會遺失。依預設,nsx-ovs 具有名為
host-original-ovs-db
、路徑為 /etc/openvswitch
的磁碟區掛接。這是 OVS 用來儲存檔案 conf.db
的預設路徑。如果 OVS 已設定為使用不同的路徑,或路徑為軟連結,則必須使用正確的路徑更新 host-original-ovs-db
掛接。如有必要,您可以復原啟動程序容器所做的變更。如需詳細資訊,請參閱清理 Kubernetes 節點。