kubectl run test-nslookup --image=busybox:1.28 -it --rm --restart=Never -- nslookup <pod 이름>
당연히 안된다. 뭣이 당연하냐 ?
1. Pod 이름만으로 DNS 조회가 안 되는 이유
Kubernetes에서는 Pod 이름만으로 DNS 조회를 할 수 없다.
이는 Kubernetes 내부 DNS 시스템이 Pod 단위가 아니라 Service 단위로 동작하도록 설계되었기 때문
Pod을 DNS로 조회하려면 FQDN(Fully Qualified Domain Name) 형식을 사용해야 함
<POD_NAME>.<NAMESPACE>.pod.cluster.local
예를 들어, nginx-resolver라는 Pod의 IP를 찾고 싶다면
nslookup nginx-resolver.default.pod.cluster.local
이렇게 네임스페이스(default)와 도메인(pod.cluster.local)을 포함한 FQDN을 사용해야만 DNS 조회가 가능
하지만 이 방식조차 Kubernetes에서는 권장되지 않는다.
왜냐, Pod의 IP 주소는 변동될 가능성이 높다.
따라서 DNS를 사용한 안정적인 서비스 제공을 위해 Service를 활용해야 함.
2. Pod의 IP는 변할 수 있다
• Pod이 재시작되면 새로운 IP가 할당됨
• 노드 장애로 인해 Pod이 다른 노드에서 다시 생성될 수 있음
• 수평 확장(Scaling)으로 인해 여러 개의 동일한 Pod이 존재할 수 있음
3. Service가 필요한 이유
이러한 문제를 해결하기 위해 Kubernetes에서는 Service를 사용하여 Pod을 관리한다.
Service는 고정된 DNS 이름을 제공하며, 자동으로 Pod들의 IP를 추적하고 관리한다.
예를 들어, nginx-resolver Pod이 포함된 Service nginx-resolver-service가 있다면,
Pod이 재시작되거나 IP가 변경되어도 서비스의 DNS는 변경되지 않는다.
nslookup nginx-resolver-service.default.svc.cluster.local
혹은
nslookup nginx-resolver-service
이렇게 하면, 언제든지 동일한 방식으로 Pod에 접근할 수 있다.
'자질구레' 카테고리의 다른 글
[kubernetes] NetworkPolicy 테스트 (0) | 2025.02.03 |
---|---|
[Linux] "Warning: The unit file, source configuration file or drop-ins of XXX.service changed on disk. Run 'systemctl daemon-reload' to reload units." (0) | 2025.01.30 |
맥북 시간 이상할 때 (1) | 2024.12.15 |
시간복잡도, Big O, 점근적 표기법 (0) | 2024.12.12 |
vscode code 명령어 사라짐 해결 (mac) (0) | 2024.11.09 |