kubernetes - 启用 hostNetwork:仅适用于 IPv6
问题描述
我正在寻找一种使用 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
推荐阅读
- spring - 项目reactor,依次处理元素,等待外部服务返回
- build.gradle - openApiGenerate 不生成模型
- css - 填充容器中的剩余空间或在tailwindcss中弯曲
- java - 使用 JPA 进行存储库调用,其中表名是 SQL 中的关键字
- rust - 匹配中的生锈匹配:简单枚举上的“虚假”非详尽错误:如何“传播”枚举变量类型的知识?
- awk - 在 bask awk 上需要帮助以通过在文件中查找模式来更新 Yaml 文件
- filter - Hasura:如何按用户指定的范围过滤,其中数据包含范围
- c# - 将 PDF 与 PDFSharp 合并时如何不丢失添加到 PDF 的注释
- gradle - 强制 Idea 默认使用 Gradle “特定位置”
- python - 用于在 pandas 列中进行批量更改的一个衬垫