首页 文章

通过自己的服务从pod请求localhost不起作用

提问于
浏览
0

我有一个名为 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 回答

  • 0

    当使用iptables作为代理模式时,这似乎是一种默认行为 .

相关问题