예 :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 Variables 및 Exposing 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를 끝에 가져올 수 있습니다. 그러나 더 쉬운 방법이 있습니까?
감사합니다. 귀하의 의견을 명확하게 알 수 있습니다. 그러나 사실,'redis-trib.rb create-replicas 1 host1 : port1 ... hostN : portN' 명령을 사용하여 ** Redis 클러스터 **를 배치했습니다. 그런 다음 pod_B의 container_B에 서비스가 있습니다 해당 redis 클러스터를 연결하여 값을 읽고 씁니다. 그래서 pod_A (redis 클러스터)의 ** PortIP **를 가져와야합니다. – CHENJIAN
또한 podA에서 podB의 IP 주소를 가져와야합니다. 이것에 대한 해결책을 찾으십니까? 환경 변수를 사용 하시겠습니까? 해결책이 있는지 알려주세요. 감사. –
마지막으로 서비스 (환경 변수 및 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 –