지금까지 쿠버네티스에 대한 개념과 전체적인 아키텍처에 대해서 알아보는 시간을 가졌다. 쿠버네티스에 대한 얘기에서 '오브젝트(object)'가 빠질 수 없는데 이번 시간에는 오브젝트가 무엇을 의미하는지에 대해서 알아보도록 하자.
[지난 시간 내용 - 쿠버네티스의 아키텍처]
2024.04.13 - [[기술공부]/Kubernetes] - [k8s] 쿠버네티스란? with 쿠버네티스 아키텍처 - (1)
[k8s] 쿠버네티스란? with 쿠버네티스 아키텍처 - (1)
지금까지 가상화 배포에서 컨테이너 배포로 바뀌게 된 배경과, 쿠버네티스가 등장하게 된 배경에 대해 알아보았다. 이번 시간에는 쿠버네티스의 개념과 아키텍처에 대해 알아보도록 하자. [지
developers-haven.tistory.com
< k8s 오브젝트 >
k8s는 클러스터 상태를 계속 체크하면서 선언된 상태가 되도록 조치를 취해주게 된다. 이때, 다양한 오브젝트(object)를 이용하여 클러스터 상태를 나타내게 된다. 쉽게 생각하면 시스템에서 배포하고 관리되는 기본 단위를 오브젝트라고 이해하면 된다.
< 대표적인 k8s 오프젝트 6가지 >
(1) Pod
- k8s에서 실행되는 가장 작은 배포 단위
- pod 안에는 1개 이상의 컨테이너 생성 가능 (1 Pod = N Containers)
- pod는 스토리지, 네트워크 속성을 가지며 pod 내의 컨테이너는 해당 pod의 스토리지와 네트워크 공유
- Why? 여러 컨테이너를 pod 단위로 묶어서 배포할까?
- pod 내의 컨테이너들은 동일 IP를 기준으로 서로 다른 port를 가지고 있는데 → 컨테이너 끼리 데이터를 교환할 때 IP 호출 없이 localhost를 통해서 통신 가능 (컨테이너들간의 통신이 쉽고 효율적)
(2) Deployment
- 여러 개의 pod를 생성하고 관리하는 역할 → pod 배포 자동화를 위한 오브젝트 (with ReplicaSet & 배포 전략)
- ReplicaSet : 지정된 수만큼 pod 복제본을 유지하도록 보장
- 배포 전략 : k8s 서비스의 무중단 업데이트를 위한 배포 전략
Deployment 대표적인 배포 전략 3가지
1. Recreate 전략
: 새로운 App을 배포하기 위해 이전 pod를 모두 삭제하고 새로운 pod를 생성하는 방식
2. Rolling update 전략
: 이전 pod를 일정 갯수만큼 점진적으로 새로운 pod로 교체하는 방식
3. Blue-Green 전략
: 현재 환경(Blue)과 동일한 새로운 환경(Green)을 구성하여 Green 환경에서 App 배포 후 테스트되면 트래픽을 Blue → Green 환경으로 전환하는 방식 (만약 문제가 발생하면 롤백 가능)
(3) Service
- pod는 클러스터 내부에서만 접근이 가능하기 때문에 → 클러스터 외부에서 pod에 요청이 불가능하다
- 이때 Service 오브젝트를 통해 클러스터 외부로부터 요청을 받을 수 있게 IP를 노출하게 된다 → 쉽게 이해하자면 pod를 통해 실행되고 있는 App을 네트워크에 노출시켜주는 가상의 컴포넌트
(4) Volume
- pod 내의 컨테이너에 데이터를 저장하거나 공유하기 위한 저장 공간 → pod가 접근하여 read/write 할 수 있는 곳
- pod는 일시적으로 뜨고 사라지기 때문에 → pod가 종료되어도 데이터를 보존하기 위해 볼륨 사용
대표적인 Volume 방식
1. emptyDir : pod의 라이프사이클 동안만 존재하는 임시 볼륨으로 pod가 종료되면 함께 사라짐
2. hostPath : pod가 올라간 Node의 path에 마운트하여 사용하는 방식
(5) Namespace
- k8s 클러스터 내에 생성된 가상 클러스터로, 리소스들을 그룹화하여 사용할 수 있게 해주는 역할
- 팀/환경/서비스 단위 처럼 목적에 맞게 네임스페이스 구성 가능
(6) Secret
- 암호화 데이터를 저장하는데 사용되며 비밀번호, ssh key 같은 민감 정보를 저장
실제 쿠버네티스에는 이 외에도 더 다양한 오브젝트들이 있다. 이번 시간에는 가장 기본적인 오브젝트가 무엇이고, 어떤 기능을 하는지에 대해서 배워보고자 했다. 앞으로 계속 쿠버네티스를 공부하면서 이러한 오브젝트들에 대해 더 깊은 내용을 하나씩 배워볼 예정이다.
참고 페이지
https://www.msaschool.io/operation/operation/operation-two/
'[기술공부] > Kubernetes' 카테고리의 다른 글
[k8s] 쿠버네티스 오브젝트 - service(서비스)에 대하여 (0) | 2024.04.13 |
---|---|
[k8s] 쿠버네티스 오브젝트 - pod에 대하여 (0) | 2024.04.13 |
[k8s] 쿠버네티스란? with 쿠버네티스 아키텍처 - (2) (37) | 2024.04.13 |
[k8s] 쿠버네티스란? with 쿠버네티스 아키텍처 - (1) (0) | 2024.04.13 |
[k8s] 도커와 쿠버네티스의 관계 (0) | 2024.04.13 |