在 Windows 中运行 kubeproxy 用户模式时“请求的地址在其上下文中无效”

在 Windows 中运行 kubeproxy 用户模式时“请求的地址在其上下文中无效”

我正在尝试将 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环境变量中使用。

相关内容