如何从相同名称空间的其他Pod中按主机名访问Pod?

时间:2019-07-16 10:37:15

标签: kubernetes kubernetes-pod

是否可以通过主机名访问Pod? 我有一个主机名为my-pod-1的Pod,需要连接到另一个具有主机名的Pod: my-pod-2

在没有服务的情况下实现此目标的最佳方法是什么?

3 个答案:

答案 0 :(得分:3)

根据您的描述,您想找到Headless-Service。您可以通过无头服务访问podName.svc来访问pod。

按Pod IP地址访问Pod。

答案 1 :(得分:0)

我不确定“访问”一个Pod到底是什么意思,但是如果您需要以编程方式对某些Pod进行一些HTTP调用,则可以执行与libcluster nodejs库类似的操作。 / p>

这是一种小技巧,但基本上可以与从Kubernetes API查询端点列表(pod的IP)一起使用。

答案 2 :(得分:0)

为了通过名称(而不是 IP)从一个 Pod 连接到另一个 Pod, 用指向它的服务名称替换另一个 pod 的 IP。

例如, 如果 my-pod-1 (172.17.0.2) 正在运行 rabbitmq, 而 my-pod-2 (172.17.0.4) 正在运行一个 rabbitmq 消费者(假设在 python 中)。

在 my-pod-2 中而不是运行:

spec:
  containers:
  - name: consumer-container
    image:  shlomimn/rabbitmq_consumer:latest
    args: ["/app/consumer.py","-p","5672","-s","172.17.0.2"]

使用:

spec:
  containers:
  - name: consumer-container
    image:  shlomimn/rabbitmq_consumer:latest
    args: ["/app/consumer.py","-p","5672","-s","rabbitmq-svc"]

rabbitmq_service.yaml 在哪里,

apiVersion: v1
kind: Service
metadata:
  name: rabbitmq-svc
  namespace: rabbitmq-ns
spec:
  selector: 
    app:  rabbitmq
  ports:
  - name: rabbit-main
    protocol: TCP
    port: 5672
    targetPort: 5672

施洛米