我正在寻找一种使用 hostNetwork: true 但仅适用于 IPv6 的方法,我需要主机 ipv6 功能,但还希望有一个用于 pod 的内部网络(例如用于 prometheus 或准备好的 HTTP 服务器)如果我启用 hostNetwork = true我无法绑定额外的 HTTP 服务器,因为它绑定到主机。
谢谢!
我正在寻找一种使用 hostNetwork: true 但仅适用于 IPv6 的方法,我需要主机 ipv6 功能,但还希望有一个用于 pod 的内部网络(例如用于 prometheus 或准备好的 HTTP 服务器)如果我启用 hostNetwork = true我无法绑定额外的 HTTP 服务器,因为它绑定到主机。
谢谢!
仅使用 IPv6
如果您希望只使用 IPv6(通过禁用 IPv4)或者您的主机只有 IPv6 地址,则必须通过设置 IP
为来 禁用 IPv4 的自动检测none
。使用该集合,您还必须将 a 传递 CALICO_ROUTER_ID
给每个 calico-node pod。
要禁用 IPv4,我们需要允许节点的 IPv4 为空:
spec:
bgp:
ipv4Address: none
ipv6Address: ff9b::/128
但问题是在bird(6) 配置中ipv4 地址被用作路由器ID,不幸的是它并不像使用ipv6 地址那样简单。
看一下:bgp-router-ipv6,ipv6-calico-only。
另请参阅:calico-ipv6-only。
您可以在节点中添加默认 gw。添加默认 gw 并尝试 curl 命令以从您的主机访问您的 API 服务 IP 地址。除非无法访问,否则您的集群将不会启动。示例 IP 2001:db8:0:f101::2
,添加一个虚拟路由,如下图:
sudo /sbin/route -A inet6 add default gw 2001:0db8:0:f101::1
如果您使用 ipvs 而不是 iptables,我可以看到它在没有任何默认路由的情况下工作,因为 ipvsadm 正在添加以下规则。fd20::1 是我的集群IP
TCP [fd20::1]:443 rr
-> [2001:db8:0:f101::2]:6443 Masq 1 5 0