# nmstate 随着混合云的出现,节点网络设置变得更加具有挑战性。不同的环境有不同的网络要求。 容器网络接口(CNI)标准实现了不同的解决方案,它解决了集群中 Pod 的通讯问题,包括为其设置 IP 和创建路由等。 然而,在所有这些情况下,节点必须在 Pod 被安排之前设置好网络。 在一个动态的、异质的集群中设置网络,具有动态的网络需求,这本身就是一个挑战。 nmstate 这个项目旨在通过 k8s CRD 的方式配置节点上的网络,它可以一定程度上简化网络配置。 ## 限制 `nmstate` 依赖 NetworkManager , 所以不是所有的 Linux 发行版都支持, 比如 ubuntu 等不支持。并且 NetworkManager 的版本必须 `>= 1.20` 可通过下面的方式检查 NetworkManager 的版本: ```shell [root@master ~]# /usr/sbin/NetworkManager --version 1.22.8-4.el8 ``` 更多内容请查阅 nmstate Helm chart 的 README 文件. ## 安装 ```shell helm repo add daocloud https://daocloud.github.io/network-charts-repackage/ helm install nmstate -n nmstate daocloud/nmstate --create-namespace ``` 更多安装细节请参考 Helm chart README文件. 在安装完成后, 创建 CR 实例, 触发 nmstate controller 工作: ```sh cat < mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:50:56:b4:e9:41 brd ff:ff:ff:ff:ff:ff inet 172.144.185.30/16 brd 172.144.255.255 scope global noprefixroute bond0.144 valid_lft forever preferred_lft forever inet6 fd00:144::172:144:185:30/64 scope global noprefixroute valid_lft forever preferred_lft forever inet6 fe80::250:56ff:feb4:e941/64 scope link noprefixroute valid_lft forever preferred_lft forever ``` 更多 example 使用例子请参考: https://github.com/nmstate/kubernetes-nmstate/tree/main/docs/examples