2017-03-24 1 views
1

:Pod_B의 다른 container_B에서 Pod_A의 PortIP 주소를 확인하는 방법은 무엇입니까?

NAMESPACE  NAME  READY  STATUS RESTARTS AGE  IP    NODE 
test   pod_A  1/1  Running  1  17d 192.168.1.171  10-0-0-171.master 
test   pod_B  1/1  Running  1  17d 192.168.1.172  10-0-0-172.node 

사용하여 :

kubectl exec -it pod_B --namespace=test -- sh 

내 pod_B에서 실행되는 container_b에 쉘을 얻을 수 있습니다.

그러나 container_b의 셸에있을 때 Pod_A의 PortIP 주소를 "192.168.1.171"로 어떻게 가져올 수 있습니까?

유사한 질문 How to know a Pod's own IP address from a container in the Pod?Exposing Pod Information to Containers Through Environment VariablesExposing Pod Information to Containers Using a DownwardApiVolumeFile 같은 몇 가지 공식 문서가있다. 하지만 내 문제를 해결할 수는 없습니다.

는 UPDATE ----------- -----------

최근, I는 K8S apiserver를 사용하여 고정시켰다. Pod_B의 container_b에서 http://k8s_apiserver:port/api/v1/pods에서 JSON 응답을 가져 와서 파싱하고 Pod_A의 PortIp를 끝에 가져올 수 있습니다. 그러나 더 쉬운 방법이 있습니까?

답변

0

을 사용하여 창 사이의 서비스 검색에 사용할 수 있습니다.

service_A으로 pod_A 포드에 대한 서비스를 생성하면 서비스는 포드 주소를 가리키는 자신의 IP 주소가됩니다. 이 서비스는 service_A.service.default.cluster.local과 같은 DNS 이름도 갖습니다. pod_B에서 pod_A으로 통신하려면 이제 DNS 이름을 사용하고 더 이상 pod_A의 IP 주소에 대해 걱정할 필요가 없습니다.

+0

감사합니다. 귀하의 의견을 명확하게 알 수 있습니다. 그러나 사실,'redis-trib.rb create-replicas 1 host1 : port1 ... hostN : portN' 명령을 사용하여 ** Redis 클러스터 **를 배치했습니다. 그런 다음 pod_B의 container_B에 서비스가 있습니다 해당 redis 클러스터를 연결하여 값을 읽고 씁니다. 그래서 pod_A (redis 클러스터)의 ** PortIP **를 가져와야합니다. – CHENJIAN

+0

또한 podA에서 podB의 IP 주소를 가져와야합니다. 이것에 대한 해결책을 찾으십니까? 환경 변수를 사용 하시겠습니까? 해결책이 있는지 알려주세요. 감사. –

+0

마지막으로 서비스 (환경 변수 및 DNS)를 사용하여 솔루션을 얻었습니다. 다음은 참고 번호입니다. [kubernetes service] (https://kubernetes.io/docs/concepts/services-networking/service/) 예를 들어, TCP 포트 6379를 노출시키는 "redis-master"서비스는 클러스터 IP 주소 10.0.0.11이 할당되었습니다. REDIS_MASTER_SERVICE_HOST = 10.0.0.11 REDIS_MASTER_SERVICE_PORT = 6379 –

관련 문제