无法访问将externalTrafficPolicy作为“本地”的kubernetes服务

时间:2020-07-30 15:09:53

标签: kubernetes

我正在遵循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也面临着同样的问题。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

从文档here

如果没有本地终结点,则发送到该节点的数据包将被丢弃

因此,您需要使用kubernetes节点的正确节点IP来访问服务。此处正确的节点IP是调度了pod的节点的IP。

如果您可以确保每个节点(主节点和工作节点)都具有该Pod的副本,则不必这样做。