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

问题描述 投票:0回答:1

使用双栈和 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家庭:

  • 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
kubernetes kubectl
1个回答
0
投票

第一个测试将是

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)。
但是您可能必须重新启动相关的 pod(例如,Calico 组件或 CNI 插件)才能使更改生效。删除它们应该会让 Kubernetes 自动重启它们。

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

要将 IP 池配置添加到 calico-config ConfigMap,您应该将配置放在

data:
部分下,因为这是存储配置信息的地方。
metadata:
部分用于存储有关 ConfigMap 的元数据,例如其名称和命名空间,而不是配置数据的正确位置。

© www.soinside.com 2019 - 2024. All rights reserved.