準備 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規則便會新增。
  • 會新增一些 networkcapabilityfileumount 選項。

您可以使用其他設定檔取代 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-intnode-if 連結狀態運作中。會將 IP 位址和路由從 node-if 移至 br-int

備註: 如果移除 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

如需設定 RHEL 持續路由的相關資訊,請參閱https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/sec-configuring_static_routes_in_ifcfg_files

備註: IP 和靜態路由必須在上行介面 (由 ovs_uplink_port 指定) 保持持續,以確保在虛擬機器重新啟動後,與 Kubernetes API 伺服器的連線不會遺失。
備註: 依預設,nsx-ovs 具有名為 host-original-ovs-db、路徑為 /etc/openvswitch 的磁碟區掛接。這是 OVS 用來儲存檔案 conf.db 的預設路徑。如果 OVS 已設定為使用不同的路徑,或路徑為軟連結,則必須使用正確的路徑更新 host-original-ovs-db 掛接。

如有必要,您可以復原啟動程序容器所做的變更。如需詳細資訊,請參閱清理 Kubernetes 節點