Я пытаюсь подключить узел Windows к кластеру Kubernetes, но при запуске kube-proxy в пользовательском режиме я продолжаю получать ошибку The requested address is not valid in its context
. Как я могу это исправить?
Отвечу на этот вопрос сам, потому что это была одна из тех маленьких недоработок при настройке узла Windows в кластере K8S.
Код в netsh.go из базы кода Kubernetes включает в себя такую функцию:
// 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)"
}
Эта функция сообщает, что IP-адреса проксируемой службы будут добавлены к адаптеру сетевой карты с именем vEthernet (HNS Internal NIC)
если вы не укажете INTERFACE_TO_ADD_SERVICE_IP
переменная среды, вызвав 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 приводит к появлению сетевой карты с именем vEthernet (cbr0)
, который можно использовать в INTERFACE_TO_ADD_SERVICE_IP
переменная окружения.