2024년 1월 25일
출처: 쿠버네티스 교과서(길벗)
파드는 쿠버네티스에서 애플리케이션을 구성하는 기본 요소
파드들이 제거되서 다시 대체되면 파드의 IP주소는 변경된다는 문제가 있다. 쿠버네티스는 서비스(service)에 어드레스 디스커버리(address discovery) 기능을 제공하여 이 문제를 해결하였다.
서비스는 파드에서 들고나는 통신 트래픽의 라우팅을 맡는 유연한 리소스다. 이 통신 트래픽은 클러스터 외부에서 파드로 전달도는 것과 ㅍ드에서 클러스터 외부로 전달되는 것 모두를 포함
파드는
한 파드가 다른 파드와 통신하는 데는 IP 주소가 필요하다. 이 때 두가지 문제가 발생.
새로운 IP를 찾으려면 쿠버네티스 API 통해서만 파악할 수 있다.
파드가 두 개 있다면 서로 통신할 수 있다. 하지만 먼저 서로의 IP 주소를 알아야한다.
# 각각 파드 하나를 실행하는 두 개의 디플로이먼트를 생성
kubectl apply -f sleep/sleep1.yaml -f sleep/sleep2.yaml
apply 명령으로 한 번에 여러 개의 파일을 전달, 아무 기능 없는 두 개의 파드가 생성
# 두 번째 파드의 IP 주소를 확인
kubectl get pod -l app=sleep-2 --output jsonpath='{.items[0].status.podIP}'
JSONPath 질의는 sleep-2 파드의 IP 주소를 반환
# 같은 주소를 사용하여 두 번 째 파드에서 첫 번째 파드로 ping 호출
kubectl exec deploy/sleep-1 -- ping -c 2 $(kubectl get pod -l app=sleep-2 --output jsonpath='{.items[0].status.podIP}')
exec 명령의 입력에 위 명령어의 리턴값을 전달 결과적으로 ping 명령에 sleep-2 파드의 IP 주소 전달
ping 명령이 정상적으로 동작한 것으로 보면 파드는 IP 주소를 통해 서로 통신