[Section4] 쿠버네티스(kubernetes) - 워크로드
2023. 7. 21. 12:15
🧑🏻💻 TIL(Today I Learned)
✔️ 파드(Pods), 디플로이먼트(Deployment), 서비스(Service)
💡 파드(Pods)
➡️ 쿠버네티스의 배포 가능한 가장 작은 컴퓨팅 유닛, 그 자체로 하나의 논리적인 호스트
➡️ 파드는 다음을 포함할 수 있음
- 하나 이상의 애플리케이션 컨테이너
- IP 주소
- 볼륨과 같은 공유 스토리지
➡️ 쿠버네티스에서는 "워크로드 리소스"를 만들기 위해 YAML 파일과 리소스 정의 파일을 사용하는 것이 보통
✍🏻 워크 로드
➡️ 쿠버네티스에서는 "쿠버네티스상에서 작동되는 애플리케이션"
➡️ 클라우드 분야에서는 "어떤 애플리케이션을 실행할 때 필요한 IT 리소스의 집합"
➡️ 파드를 생성하기 위해 파드를 정의할 때도 아래와 같은 형태의 YAML 파일을 사용할 수 있음
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
- 위에서 정의한 YAML 파일에는 다음과 같은 정보가 담겨있음
- apiVersion : 사용하려는 API의 버전
- kind : 정의하려는 리소스의 종류
- metadata : 리소스에 대한 메타데이터 정의, name 필드에는 해당 pod 이름 지정
- spec : pod의 스펙 또는 구성 정보 정의
- name : 컨테이너의 이름
- image : 컨테이너가 사용할 Docker 이미지
- ports : 컨테이너가 수신 대기할 포트 정의, 컨테이너 외부에서 이 포트로 접근하여 Ngix 서버에 연결할 수 있음
💡 디플로이먼트(Deployment)
➡️ 쿠버네티스에서 Deployment는 한글로 번역한 뜻이아니라 파드의 교체/배치(placement)와 관련된 명세라고 할 수 있음
➡️ 파드를 업데이트하기 위한 선언적 명세라고 할 수 있음
➡️ 디플로이먼트 리소스를 통해 아래와 같은 것을 할 수 있음
- (레플리카셋, 즉 복제본 구성을 이용하여) 파드를 원하는 개수만큼 실행시킬 수 있음
- (제어판, Control Plane 이용하여) 파드를 업데이트할 수 있음
- 파드 롤백도 가능함
✍🏻 디플로이먼트가 지원하는 배포 전략
➡️ 파드의 복제본을 자동으로 업데이트하게 해주는 명세이기 때문에 쿠버네티스가 지원하는 배포 전략으로는 재생성과 롤링 배포 방식을 선택할 수 있음
📍 쿠버네티스가 지원하는 배포 전략
: 애플리케이션의 여러 복제본이 존재할 경우 각각의 복제본을 새 버전으로 업데이트하는 방법으로 다음과 같은 배포 전략이 있음
- 재생성(Recreate) : 이전 버전을 삭제하고 새 버전 생성
- 블루/그린 배포 : 한 번에 이전 버전에서 새 버전으로 연결을 전환
- 롤링 배포 : 이전 버전을 scale down, 새 버전을 scale up 하는 방식으로 단계별로 교체 --> 롤아웃(rollout)이라고 부름
- 카나리 배포 : 새 버전이 잘 작동한다고 한단되면 이전 버전을 교체
💡 서비스
➡️ 서비스 리소스를 사용하면 파드에서 실행 중인 애플리케이션을 클러스터 외부에서 접근할 수 있음
➡️ 서비스를 사용하여 클러스터 내부에서 사용할 수 있는 서비스만 게시할 수 있음
➡️ 쿠버네티스에서 서비스는 파드의 집합에 접근할 수 있는 정책을 정의하는 추상적 개념, 서비스 리소스가 정의된 YAML 파일에 selector라는 것을 이용해 서비스할 대상 타겟을 설정할 수 있음
실습은 도커 공식 문서를 참고하여 진행하였음
https://kubernetes.io/ko/docs/tutorials/
'SEB_BE_45 > 공부 정리' 카테고리의 다른 글
[Section4] 운영 환경 구성 - 고가용성(HA: High Availability) (0) | 2023.07.26 |
---|---|
[Section4] 운영환경(cloud) - AWS (0) | 2023.07.24 |
[Section4] 쿠버네티스(Kubernetes) (0) | 2023.07.21 |
[Section4] Docker (0) | 2023.07.20 |
[Section4] Oauth2 인증(Authentication) (0) | 2023.07.17 |