티스토리 뷰
쿠버네티스에서 Pod는 애초에 쓰고 버리고 새롭게 시작할 수 있게 설계되어 있다. Pod의 IP주소는 기동시 부여되고, 종료시 회수되기 때문에 Pod가 죽고 다시 살아날 때 IP주소가 변경된다. 그렇기 때문에 Pod의 IP주소로 Pod에 접근할 수 없다. 그래서 Pod에 접근하려면 Service를 사용해야 한다.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
clusterip-nginx ClusterIP 10.104.201.2 <none> 80/TCP 5m34s app=nginx-app
위와 같은 서비스가 있다고 해보자. ClusterIP로 된 Service이다. 이 서비스는 app=nginx-app인(key-value 구조) Pod들에 접근할 수 있는 서비스이다.
그럼 Pod들을 살펴보자. 명령어는 아래와 같다.
k get pods -o wide --show-labels
NAME READY ... IP NODE ... LABELS
mygo-7d8fd56ff5-2h4df 1/1 ... 10.40.0.2 node3 ... app=mygo,pod-template-hash=7d8fd56ff5
mygo-7d8fd56ff5-8h2m9 1/1 ... 10.46.0.2 node1 ... app=mygo,pod-template-hash=7d8fd56ff5
mygo-7d8fd56ff5-9h8pw 1/1 ... 10.46.0.9 node1 ... app=mygo,pod-template-hash=7d8fd56ff5
mygo-7d8fd56ff5-n2hlc 1/1 ... 10.46.0.7 node1 ... app=mygo,pod-template-hash=7d8fd56ff5
mygo-7d8fd56ff5-p7x6r 1/1 ... 10.32.0.3 node2 ... app=mygo,pod-template-hash=7d8fd56ff5
nginx-deploy-6b4fc78cbf-85wmk 1/1 ... 10.46.0.3 node1 ... app=nginx-app,pod-template-hash=6b4fc78cbf
nginx-deploy-6b4fc78cbf-f62l8 1/1 ... 10.46.0.5 node1 ... app=nginx-app,pod-template-hash=6b4fc78cbf
nginx-deploy-6b4fc78cbf-hg4h6 0/1 ... <none> node3 ... app=nginx-app,pod-template-hash=6b4fc78cbf
nginx-deploy-6b4fc78cbf-lmpzh 0/1 ... <none> node2 ... app=nginx-app,pod-template-hash=6b4fc78cbf
nginx-deploy-6b4fc78cbf-rddnj 1/1 ... 10.46.0.4 node1 ... app=nginx-app,pod-template-hash=6b4fc78cbf
이중 LABELS에 app=nginx-app인 Pod들이 clusterip-nginx서비스와 연결된다. 더 자세히 살펴보려면 이 서비스의 상세 내용을 살펴보자. 명령어는 아래와 같다.
kubectl describe svc clusterip-nginx
그러면 아래와 같은 결과가 나온다.
Name: clusterip-nginx
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=nginx-app
Type: ClusterIP
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.104.201.2
IPs: 10.104.201.2
Port: <unset> 80/TCP
TargetPort: 80/TCP
Endpoints: 10.46.0.3:80,10.46.0.4:80,10.46.0.5:80
Session Affinity: None
Events: <none>
그러면 Endpoints: 항목에 있는 IP가 LABELS가 app=nginx-app인 Pod들의 IP라는 것을 알 수 있다. Service는 이렇게 Pod를 찾아서 접근한다.
300x250
'공부흔적 > 쿠버네티스' 카테고리의 다른 글
특정 profile yaml파일을 선택해서 파드 만들기 (0) | 2021.07.15 |
---|---|
GKE에서 docker hub의 private 이미지로 Pod 생성하기 (0) | 2021.07.13 |
[대세는 쿠버네티스] GKE환경에서 대시보드 혹은 cmd창으로 생성하기, 노드에 접근하기 (0) | 2021.07.01 |
[대세는 쿠버네티스] GKE에서 서비스 생성시 external IP를 설정하는 문제 (0) | 2021.06.30 |
[대세는 쿠버네티스] GKE에서 dashboard 접근에 문제가 있을 때 (0) | 2021.06.30 |