04. [CKA]Services and Networking
Service에 대해 알아보자
04. [CKA]Services and Networking
- 클러스터로 생성된 노드내 할당된 pod의 경우 각자 Private IP를 할당 받으며, 이 Private IP를 통해 Pod간 서로 통신이 가능함
- pod의 경우 dynamic하게 관리되며 스케쥴링되며, Private IP가 바뀔수가 있음으로 하드코딩해서 관리할순 없음
- 따라서
Service
가 Gateway 역할을 수행하여 들어오는 요청을 처리하며, 일부 backend pod이 종료되어도 이를 인식하여 롸우팅에서 제외 시켜 동작함. -
Service
내 Port/TargetPort를 통해 Incomming/outgoing port를 분리시켜서 서비스 define이 가능함
-
Service
를 이용하면 Kubernetes cluster 외부 유저들도External IP
를 사용하여 Internal Pods에 접근이 가능함
-
Service
정리 및 종류
-
kubectl get service
: cluster 내 구성된 service(gateway) info 확인 -
kubectl run backend-pod-3 --image-nginx --labels=type=webserver
: 라벨 정보와 함께 노드 생성하는 명령어
Service 실습
-
kubectl run be --image=nginx
: be 실행 예제 -
kubectl run fe --image=ubuntu --command -- sleep 36000
: fe 실행 예제 -
kubectl exec -it fe -- bash
: fe 실행 (curl이 없음으로 설치 필요 apt update -y && apt install curl -y) -
kubectl create -f service.yaml
: service.yaml example 파일로 service 생성 -
kubectl create -f endpoint.yaml
: endpoint.yaml example 파일로 endpoint 생성 -
kubectl get endpoints
: 생성한 endpoint 정보 확인 -
kubectl describe service <service name>
: 생성된 서비스 정보 조회(endpoint kind로 service에 endpoints가 연결된것을 확인 가능)
Selector를 활용한 Service Endpoint 등록 방법
- 실습에서 확인했지만 endpoint를 하드코딩에서 직접 입력하는 방식은 pod 관리에 적절하지 않음
- 따라서
selector
를 활용하여 endpoint를 설정 가능하며, 관리하고자 하는 pod에 label을 추가해둬야함
Service Type(ClusterIP)
-
Service
는 위에서 알아봤듯이 incomming Traffic을 적절한 endpoint로 포워딩 해주는 gate 역할을 수행하며, -
ClusterIP
는 Kubernates에서 제공하는 service type의default
형태이며, Internal IP만을 제공하여 같은 Kubernetes cluster 내에서만 유효한 IP를 가짐 -
ClusterIp
는 VirtualIP이며, 서비스가 유지되는한 IP는 변경되지 않음
실습 명령어
-
kubectl create service --help
: service 명령어 사용 종류 방법 확인 가능 -
kubectl create service clusterip <name> --tcp=<port>:<targetport> --dry-run=client -o yaml
: clusterip 서비스 타입 yaml 파일 출력
Service Type(NodePort)
kubectl
kubectl
kubectl
kubectl
kubectl
Service Type(LoadBalancer)
kubectl
kubectl
kubectl
kubectl
kubectl
kubectl
kubectl
kubectl
kubectl
kubectl
This post is licensed under
CC BY 4.0
by the author.