我有一个名为foo的服务,它有一个指向foo pod的选择器:
apiVersion: v1
kind: Service
metadata:
labels:
name: foo
name: foo
namespace: bar
spec:
clusterIP: 172.20.166.230
ports:
- port: 8080
protocol: TCP
targetPort: 8080
selector:
name: foo
sessionAffinity: None
type: ClusterIP我有一个带有标签foo的名为foo的部署/pod
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "3"
generation: 3
labels:
name: foo
name: foo
namespace: bar
spec:
selector:
matchLabels:
name: foo
template:
metadata:
labels:
name: foo
spec:
containers:
image: my/image:tag
imagePullPolicy: Always
name: foo
ports:
- containerPort: 8080
protocol: TCP
dnsPolicy: ClusterFirst我从foo pod向foo主机发出请求,主机已解析,但请求未通过:
$ curl -vvv foo:8080
* Rebuilt URL to: foo:8080/
* Trying 172.20.166.230...
* TCP_NODELAY set这在Kubernetes中应该是这样工作的吗?
从相同名称空间的其他pods请求foo没有任何问题。
我之所以不简单地使用localhost:8080 (它工作得很好),是因为我对不同pod使用的主机有相同的配置文件,所以我不想为每个pod编写特定的逻辑。
Kubernetes 1.6.4,单节点集群,iptables模式。
发布于 2017-12-06 19:31:08
这看起来是使用iptables作为代理模式时的默认行为。
https://stackoverflow.com/questions/47436841
复制相似问题