쿠버네티스(K8S) 오브젝트 등 여러 용어들(작성중)
쿠버네티스의 기본 오브젝트에는 4가지가 있다.
1. 파드
- 쿠버네티스의 최소 단위. 서비스를 구동하는데 필요한 최소 단위
- 1개의 파드는 한 개 이상의 컨테리너를 가질 수 있지만 보통 1개의 파드에 1개의 컨테이너를 사용
2. 네임스페이스
- 쿠버네티스 클러스터에서 사용되는 리소스들을 구분해서 관리하는 그룹
3. 볼륨
- 파드가 생성될 때 파드에서 사용할 수 있는 디렉토리를 제공
4. 서비스
- 파드의 접속 정보가 고정이지 않기 때문에 새로 파드가 생성될 때 부여되는 새로운 IP를 기존에 제공하던 기능과 연결 (GW와 비슷한 역할)
추가적인 용어들
5. 디플로이먼트
- 레플리카셋 오브젝트를 합쳐놓은 형태 (레플리카셋을 포함하는 오브젝트의 상태 감시)
- 다수의 파드 생성시 하나씩 생성하면 비효율적이므로 레플리카셋 오브젝트로 다수의 파드를 생성 (+ 롤링 업데이트 등의 기능 추가)
- 파드의 동작을 보장하기 위한 조건 (self-healing)
6. cordon
- cordon을 적용하면 해당 node에 더이상 pod가 할당되지 않도록 함. kubectl get nodes로 검색했을 때 SchedulingDisabled 상태로 표기됨
7. drain
- 지정된 node의 pod를 전부 다른 곳으로 이동시킴 (--ignore 옵션은 강제로 이동)
- cordon하고 delete pod 하는것과 유사함
8. 서비스
- 외부에서 쿠버네티스 클러스터에 접속하는 방법
- NodePort
9. Ingress
- 여러 개의 디플로이먼트가 있을 때 그 수만큼 노드포트 서비스를 구동하게 해줌
- 고유한 주소를 제공해 사용 목적에 따라 다른 응답을 제공할 수 있고, L4/L7 로드밸런서와 보안 인증서 처리
- NGINX Ingress Controller
- 사용자가 접속하는 경로에 따라 다른 결과값을 제공
10. MetalLB
- 온프레미스에서 로드밸런서를 사용하기 위해 내부에 로드밸런서 서비스를 받아주는 구성을 지원
- Bare Metal로 구성된 쿠버네티스에서도 로드밸런서를 사용할 수 있게 고안된 프로젝트
- MetalLB 컨트롤러 : protocol을 정의하고 external IP를 부여
- MetalLB 스피커 : 정해진 작동 방식에 따라 경로를 만들 수 있도록 네트워크 정보를 광고 하고 수집하여 각 Pod에 경로를 제공
11. HPA
- 부하에 따라 자동으로 파드 수를 조절
12. Metrics-Server
- HPA가 자원을 요청할 때 Metrics-Server를 통해서 계측값을 전달받음
13. DaemonSet
- 디플로이먼트의 replicas가 노드수만큼 정해져 있는 형태, Node 1개당 Pod 1개만을 생성
- Node를 관리하는 Pod(1개 이상 필요하지 않음)는 데몬셋으로 만드는 것이 효과적
14. ConfigMap
- config를 목적으로 함
15. PV / PVC (Persistent Volume Claim)
- PV는 볼률을 사용할 수 있게 준비하는 단계이고, PVC는 준비된 볼륨에서 일정 공간을 할당받음
16. Stateful Set
- Pod가 만들어지는 이름과 순서를 예측해야 할 때
- Redis, Zookeeper, Cassandra, MongoDB 등의 Master-slave 구조 시스템에 필요
17. Helm
- kubectl을 좀 더 확장해서 복잡한 오브젝트와 구성 환경을 자동으로 맞추는 도구
- 패키지를 손쉽게 배포할 수 있도록 패키지를 관리하는 쿠버네티스 전용 패키지 매니저
- Helm으로 프로메테우스 grafana 등 쉽게 설치 가능
18. taint / tolerations
- taint 설정 시 쉽게 접근하지 못하고, tolerations라는 키가 있어야 접근 가능
- 마스터노드, GPU 노드, DB 전용 등에 사용
작성중..