Kubernetes Host Scope
cilium IPAM的kubernetes host-scope模式通过选项ipam: kubernetes开启,将集群IP地址分配委托给每个独立的节点,并在每个kubernetes node的podCIDR范围内分配IP地址。
kubernetes host模式下,cilium agent会等待kubernetes的v1.Node对象通过以下任意一种办法告知podCIDR的地址族范围后后再完成启动:
1. 通过 v1.Node的资源域
域 | 描述 |
spec.podCIDRs | IPv4 and/or IPv6 PodCIDR 范围 |
spec.podCIDR | IPv4 or IPv6 PodCIDR 范围 |
kube-controler-manager 的 --allocate-node-cidrs选项用于告诉kubernetes 为PodCIDR准备的地址范围。
2. 通过v1.Nodeannotation
Annotation | 描述 |
io.cilium.network.ipv4-pod-cidr | IPv4 PodCIDR 范围 |
io.cilium.network.ipv6-pod-cidr | IPv6 PodCIDR 范围 |
io.cilium.network.ipv4-cilium-host | IPv4 address of the cilium host interface |
io.cilium.network.ipv6-cilium-host | IPv6 address of the cilium host interface |
io.cilium.network.ipv4-health-ip | IPv4 address of the cilium-health endpoint |
io.cilium.network.ipv6-health-ip | IPv6 address of the cilium-health endpoint |
基于注释的机制主要与不支持spec.podCIDRs但支持IPv4和IPv6的旧版本Kubernetes结合使用。
配置
下面两种方式用于配置kubernetes host-scope 模式IPAM。
1. ConfigMap
- ipam: kubernetes:启用 kubernetes host-scope 模式IPAM。开启模式时如果配置了enable-ipv4: true选项会自动启用k8s-require-ipv4-pod-cidr;如果配置了enable-ipv6则会自动启用 k8s-require-ipv6-pod-cidr。
- k8s-require-ipv4-pod-cidr: true: 通知cilium agent等待,直到v1.Node资源的IPV4 PodCIDR 可用。
- k8s-require-ipv6-pod-cidr: true: 通知cilium agent等待,直到v1.Node资源的IPV6 PodCIDR 可用。
2. Helm
在helm中可使用下面的选项来实现ConfigMap的能力:
- ipam: kubernetes: --set ipam.mode=kubernetes.
- k8s-require-ipv4-pod-cidr: true: --set k8s.requireIPv4PodCIDR=true, 需要和 --set ipam.mode=kubernetes选项配合使用。
- k8s-require-ipv6-pod-cidr: true: --set k8s.requireIPv6PodCIDR=true, 需要和 --set ipam.mode=kubernetes选项配合使用。