用于准备 Kubernetes 节点的大部分步骤都由两个容器 nsx-ovs 和 nsx-ncp-bootstrap(分别在 nsx-node-agent 和 nsx-ncp-bootstrap DaemonSet 中运行)自动执行。
安装 NCP 之前,请确保 Kubernetes 节点已安装 Python 并可通过命令行界面进行访问。您可以使用 Linux 软件包管理器来安装 Python。例如,在 Ubuntu 上,您可以运行命令 apt install python。
sudo cat /sys/module/apparmor/parameters/enabled
sudo /etc/init.d/apparmor status
ncp-apparmor 配置文件为 NSX 节点代理(称为 node-agent-apparmor)提供 AppArmor 配置文件,这与 docker-default 配置文件在以下方面有所不同:
- 移除了 deny mount 规则。
- 添加了 mount 规则。
- 添加了一些 network、capability、file 和 umount 选项。
您可以使用不同的配置文件替换 node-agent-apparmor 配置文件。如果执行此操作,则必须在 NCP YAML 文件中更改配置文件名称 node-agent-apparmor。
- /etc/cni/net.d
- /etc/apparmor.d/ncp-apparmor
- /opt/cni/bin/nsx
- /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,因为 OVS 将在 nsx-ovs 容器内运行。nsx-ovs 容器将创建 br-int 实例(如果不存在该实例),添加网络接口 (node-if)(该接口用于将节点逻辑交换机连接至 br-int),并确保 br-int 和 node-if 链路状态为“已启动”。它会将 IP 地址和路由从 node-if 移动到 br-int。重新启动 nsx-node-agent pod 或 nsx-ovs 容器时,将会停机几秒钟。
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。
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。
如有必要,您可以撤消由引导容器所做的更改。有关详细信息,请参见清理 Kubernetes 节点。