Pod
- 여러 개의 Container를 운영하는 가장 기초적인 모듈
Replicaset
- Replicaset은 동일 Pod에 대한 가용성을 안정적으로 보장받기 위한 모듈
- Pod의 개수를 유지시켜 줌
Deployment
- 같은 Pod가 여러개의 Node에 배포되는 형태
- Pod와 Replicaset에 대한 선언과 업데이트를 관리해주는 모듈
- 사용이유 : Pod가 죽을 경우를 대비하여 서버를 보호 차원에서 사용
Nginx Pod을 K8S cluster에 배포하기
• K8S 환경에서 실행중인 Pod은 한 개 이상의 container로 구성되며, 그 Pod에 있는 docker container들은 storage와 Network을 공유한다
• mynginx라는 deployment 생성하기 >> 이와 함께 pod도 생성됨
- kubectl create deployment mynginx --image=nginx
- kubectl get deployments.apps
- kubectl get pod -o wide (wide 옵션 : 어느 node에 무슨 ip 인지 확인)
10.47.0.0 : weave-net IP
- kubectl scale deployment mynginx --replicas=4
로도 수정할 수 있다.
Kubernetes deployment로 pod을 만들 때의 장점
: pod가 죽으면 자동으로 새로운 pod를 생성
기존 데이터는 cluster 외부에 저장하게 설정하여 데이터 유실을 막아야 한다.
kubectl describe deployments.apps (deployment 이름) : deployment 정보 확인
kubectl describe pod (pod 이름): pod 정보 확인
그런데, 외부에서 pod로는 직접 접속이 안된다.
따라서 서비스를 노출시켜야 한다.
Kubernetes의 서비스 유형
- ClusterIP (기본 형태)
- NodePort
- LoadBalancer
- ExternalName
1. ClusterIP
: 파드들이 클러스터 내부의 다른 리소스들과 통신할 수 있도록 해주는 가상의 클러스터 전용 IP
: Cluster IP로는 Cluster 내부(master, node1, node2, node3)에서만 접속할 수 있다.
2. NodePort
: 외부에서 노드 IP의 특정 포트(<NodeIP>:<NodePort>)로 들어오는 요청을 감지하여, 해당 포트와 연결된 파드로 트래픽을 전달하는 유형의 서비스다.
: 이때 클러스터 내부로 들어온 트래픽을 특정 파드로 연결하기 위한 ClusterIP 역시 자동으로 생성된다.
3. LoadBalancer
: 클라우드 공급자의 로드 밸런서를 사용하여 서비스를 외부에 노출시킨다.
: 외부 로드 밸런서가 라우팅되는 NodePort와 ClusterIP 서비스가 자동으로 생성된다.
: 로드 밸런서의 (virtual) IP를 통해 접속한다.
그림 출처 Google Cloud
Nodeport 서비스 이용
: 각 node IP의 특정 포트 번호로 접속 (관리자가 test 할 때의 용도로 많이 쓰임)
-kubectl create service nodeport mynginx --tcp=80:80
## 서비스 이름 : mynginx
# 앞의 80: Cluster-IP로 접속할 때 사용되는 포트 번호
# 뒤의 80: Container의 Port 번호
- kubectl get service -o wide
'Study > Cloud' 카테고리의 다른 글
Kubernetes - Namespace (0) | 2022.07.21 |
---|---|
Kubernetes - yaml (0) | 2022.07.21 |
Kubernetes 소개 및 설치 (0) | 2022.07.19 |
Docker Image Layer (0) | 2022.07.18 |
라우터 이해하기3 (0) | 2022.07.06 |