我正在尝试将 Windows 节点连接到 Kubernetes 集群,但在用户模式下运行 kube-proxy 时,我不断收到错误The requested address is not valid in its context
。我该如何修复?
答案1
我自己回答这个问题,因为这是在 K8S 集群中设置 Windows 节点时未记录的小问题之一。
Kubernetes 代码库中的 netsh.go 中的代码包含如下函数:
// GetInterfaceToAddIP returns the interface name where Service IP needs to be added
// IP Address needs to be added for netsh portproxy to redirect traffic
// Reads Environment variable INTERFACE_TO_ADD_SERVICE_IP, if it is not defined then "vEthernet (HNS Internal NIC)" is returned
func (runner *runner) GetInterfaceToAddIP() string {
if iface := os.Getenv("INTERFACE_TO_ADD_SERVICE_IP"); len(iface) > 0 {
return iface
}
return "vEthernet (HNS Internal NIC)"
}
vEthernet (HNS Internal NIC)
此函数表示,除非您INTERFACE_TO_ADD_SERVICE_IP
通过调用指定环境变量,否则代理服务 IP 地址将被添加到名为的 NIC 适配器netsh interface ipv4 add address name="vEthernet (HNS Internal NIC)" address=10.100.0.10
。如果vEthernet (HNS Internal NIC)
不存在(除非您自己设置它,否则它不会存在),那么您会收到错误The requested address is not valid in its context
。
按照以下文档操作https://docs.microsoft.com/en-us/virtualization/windowscontainers/kubernetes/getting-started-kubernetes-windows#preparing-a-windows-node生成一个名为 的 NIC vEthernet (cbr0)
,可在INTERFACE_TO_ADD_SERVICE_IP
环境变量中使用。