我正在遵循this指南来为服务类型nodeport保留源IP。
kubectl创建部署源-ip-app --image = k8s.gcr.io / echoserver:1.4
kubectl公开部署源-ip-app --name = clusterip --port = 80 --target-port = 8080
这时,可以通过nodeip:nodeport从外部访问我的服务
当我更改服务流量政策时,
kubectl补丁程序svc nodeport -p'{“ spec”:{“ externalTrafficPolicy”:“ Local”}}'
我的服务无法访问。
我找到了一个类似的issue,但是该解决方案对我没有太大帮助或无法理解。我看到一些github线程说这与kube代理中的主机名覆盖有关,我也不清楚。
我正在使用kubernetes v1.15.3版本。 Kube代理以iptables模式运行。我有一个主节点和几个工作节点。 我的minikube也面临着同样的问题。
任何帮助将不胜感激。
答案 0 :(得分:1)
从文档here
如果没有本地终结点,则发送到该节点的数据包将被丢弃
因此,您需要使用kubernetes节点的正确节点IP来访问服务。此处正确的节点IP是调度了pod的节点的IP。
如果您可以确保每个节点(主节点和工作节点)都具有该Pod的副本,则不必这样做。