使用双栈和 calico 网络的 Kubernetes 1.21 但在应用 service.yaml 后出现错误“服务“eva-ce-node-port-service-0”无效:spec.ipFamilies [0]:无效值:[] string(nil): ipfamily IPv6 未在集群上配置"
但是 pod 显示双 ip(ipv4 和 ipv6)
为了解决我在 service.yaml 中添加以下行的问题: ipFamilyPolicy:PreferDualStack ip家庭:
The Service "eva-ce-node-port-service-0" is invalid: spec.ipFamilies[0]: Invalid value: []string(nil): ipfamily IPv6 is not configured on cluster
kubectl cluster-info dump | grep -i family
您需要检查您的集群上是否实际激活了 IPv6,否则
ipFamilyPolicy: PreferDualStack
无关紧要。
如果没有提及 ipV6,则配置您的 CNI 插件。
例如,对于 Calico (
kubectl get configmap calico-config -n kube-system -o yaml
),您需要更新其配置:
- name: CALICO_IPV6POOL_CIDR
value: "<IPv6 subnet>"
- name: CALICO_IPV6POOL_BLOCK_SIZE
value: "<IPv6 block size>"
总体思路仍然是:首先检查 CNI 上的 ipV6。
您可以通过动态修改
calico-config
ConfigMap 来更新 Calico CNI 配置,而无需重新部署整个集群(请参阅使用 etcd 数据存储安装 Calico)。如果未指定,Calico CNI 插件会创建一个 IP 池(IPv4 的默认 CIDR 块为 192.168.0.0/16)。
要将 IP 池配置添加到 calico-config ConfigMap,您应该将配置放在
data:
部分下,因为这是存储配置信息的地方。metadata:
部分用于存储有关 ConfigMap 的元数据,例如其名称和命名空间,而不是配置数据的正确位置。