我正在尝试在 EKS 上使用 CNI 自定义网络来确保从备用子集中分配 Pod IP(以防止我的集群节点所在的子网中出现 IP 匮乏(。为此,我需要创建一些 ENIConfig 并注释每个节点。
如何确保在向每个节点调度任何 Pod 之前对其进行注释,以确保不会从运行节点的子网中分配 Pod IP?
编辑:到目前为止,我能想到的唯一解决方案是:
- 默认情况下,向所有节点添加无计划污点
- 部署允许污点的自定义控制器
- 让控制器根据需要注释所有节点并删除污点
但是,如果以上是唯一的解决方法,则托管服务需要付出很多努力
怎么样:
- 默认情况下,向
- 所有节点添加
ENIConfigComplete: false
污点 - 部署容许
ENIConfigComplete: false
的守护程序集 - DaemonSet 在每个新节点上创建一个 pod,该节点
- 在节点上创建一些 ENIConfigs(bash 脚本??
- 使用
ENIConfigComplete: true
注释每个节点 - 守护程序集不再容忍节点,因此
- Pod 从节点中移除。
守护程序集将确保正确设置每个新节点。
Salesforce讨论了这种在新节点上配置磁盘的技术:
- https://engineering.salesforce.com/provisioning-kubernetes-local-persistent-volumes-61a82d1d06b0
它将避免长时间运行的控制器进程。