我有一个名为 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
的部署/ pod,其标签为 foo
:
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那样工作吗?
从同一名称空间的其他pod请求 foo
没有任何问题 .
我不是简单地使用 localhost:8080
(工作正常)的原因是我有不同pod使用的主机相同的配置文件,所以我不想为每个pod写一个特定的逻辑 .
Kubernetes 1.6.4,单节点集群,iptables模式 .
1 回答
当使用iptables作为代理模式时,这似乎是一种默认行为 .