Kubernetes 如何通过it访问pod';是否从同一命名空间的其他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
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