Kubernetes 如何通过it访问pod';是否从同一命名空间的其他pod中删除主机名?

Kubernetes 如何通过it访问pod';是否从同一命名空间的其他pod中删除主机名?,kubernetes,kubernetes-pod,Kubernetes,Kubernetes Pod,有没有办法通过主机名访问pod? 我有一个主机名为:my-pod-1的pod,需要连接到另一个主机名为: my-pod-2 在没有服务的情况下,实现这一目标的最佳方法是什么?通过您的描述,您希望找到。您可以通过使用headless服务访问podName.svc来访问pod 或者通过pod ip地址访问pod。我不知道“访问”pod到底是什么意思,但如果您需要通过编程方式对某些pod进行一些HTTP调用,您可以执行类似于此nodejs库的操作 这是一种黑客行为,但基本上它可以从Kubernetes

有没有办法通过主机名访问pod? 我有一个主机名为:
my-pod-1
的pod,需要连接到另一个主机名为:
my-pod-2

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

通过您的描述,您希望找到。您可以通过使用headless服务访问
podName.svc
来访问pod


或者通过pod ip地址访问pod。

我不知道“访问”pod到底是什么意思,但如果您需要通过编程方式对某些pod进行一些HTTP调用,您可以执行类似于此nodejs库的操作


这是一种黑客行为,但基本上它可以从Kubernetes API查询端点列表(pod的IP)。

为了通过名称(而不是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"]
使用:

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

Shlomi

可能的重复项不确定如何配置,但我建议使用statefulset,以便仍然有一个复制控制器和一个允许名称解析的服务(podname.servicename.namespace.svc.cluster.local)。对于集群优先DNS,您只需要指定“podname.servicename.namespace”,kube DNS将处理其余的。
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