La maggior parte dei passaggi per preparare i nodi Kubernetes sono automatizzati da due container, nsx-ovs e nsx-ncp-bootstrap, eseguiti rispettivamente nei DaemonSet nsx-node-agent e nsx-ncp-bootstrap.
Prima di installare NCP, assicurarsi che nei nodi Kubernetes sia installato Python e che sia accessibile tramite l'interfaccia della riga di comando. Per installarlo, è possibile utilizzare il gestore dei pacchetti di Linux. In Ubuntu è ad esempio possibile eseguire il comando apt install python.
sudo cat /sys/module/apparmor/parameters/enabled
sudo /etc/init.d/apparmor status
Il file del profilo ncp-apparmor fornisce un profilo AppArmor per l'agente del nodo di NSX denominato node-agent-apparmor, diverso dal profilo docker-default nei modi seguenti:
- Viene rimossa la regola deny mount.
- Viene aggiunta la regola mount.
- Vengono aggiunte alcune opzioni di network, capability, file e umount.
È possibile sostituire il profilo node-agent-apparmor con un profilo diverso. In tal caso, è necessario modificare il nome del profilo node-agent-apparmor nel file YAML di NCP.
- /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
Se i file /opt/cni/bin/loopback e /etc/cni/net.d/99-loopback.conf esistono già, non vengono sovrascritti. Se il tipo di sistema operativo è Ubuntu, nell'host viene copiato anche il file ncp-apparmor.
Il container del bootstrap sposterà l'indirizzo IP e le route da br-int a node-if. Arresterà inoltre OVS se è in esecuzione nell'host perché OVS verrà eseguito nel container nsx-ovs. Il container nsx-ovs creerà l'istanza di br-int se non esiste, aggiungerà l'interfaccia di rete (node-if) collegata al commutatore logico del nodo per br-int e verificherà che lo stato dei collegamenti br-int e node-if sia attivo. Sposterà l'indirizzo IP e le route da node-if a br-int. Quando il pod nsx-node-agent o il container nsx-ovs viene riavviato, si verifica un tempo di inattività di alcuni secondi.
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
Eseguire quindi il comando 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
Eseguire quindi il comando systemctl restart network.service.
Per informazioni sulla configurazione di route persistenti per RHEL, vedere https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/sec-configuring_static_routes_in_ifcfg_files.
Se necessario, è possibile annullare le modifiche apportate dal container del bootstrap. Per ulteriori informazioni, vedere Pulizia dei nodi Kubernetes.