在应用 kubectl apply service.yaml 时出现错误"ipfamily IPv6 is not configured on cluster"



使用Kubernetes 1.21,它是双栈和印花布网络,但在应用服务之后。error "The Service "eva-ce-node-port- Service -0;spec.ipFamilies[0]:无效值:[]string(nil): ipfamily集群上没有配置IPv6

但是pod显示双ip(ipv4和ipv6)

为了解决这个问题,我在service.yaml中添加了以下几行:ipFamilyPolicy: PreferDualStackipFamilies:

IPv6
  • IPv4但是在添加这些行之后仍然得到上述错误。
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-configConfigMap来更新Calico CNI配置,而不需要重新部署整个集群(参见使用etcd数据存储安装Calico)。
但是你可能需要重新启动相关的pod(例如,Calico组件或CNI插件)才能使更改生效。删除它们会使Kubernetes自动重启它们。

如果没有指定,Calico CNI插件会创建一个IP池(IPv4的默认CIDR块为192.168.0.0/16)。

要将IP池配置添加到calico-config ConfigMap,您应该将该配置放在data:部分下,因为这是存储配置信息的地方。
metadata:节用于存储有关ConfigMap的元数据,如其名称和名称空间,并且不是配置数据的正确位置。

最新更新