1. Kubernetes Host Scope
cilium IPAM的kubernetes host-scope模式通过选项ipam: kubernetes
开启,将集群IP地址分配委托给每个独立的节点,并在每个kubernetes node的podCIDR
范围内分配IP地址。
这种模式下,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.Node
annotation
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
选项配合使用。