Pod
- 스케쥴링의 최소 단위
- 하나의 IP, 이름, 포트 범위를 갖는다.
- Pod 연결은 Service 가 수행
라벨
- 객체를 동적 그룹으로 묶어주는 key-value pairs
- 객체와 라벨: NxN 관계
- 객체를 식별하는 용도로만 사용.
예) 스케쥴러가 Pod 와 노드를 배치하기 위해 사용
Label selector
- 라벨을 기반으로 객체를 선택
Annotation
- 임의의 메타데이터를 객체에 연계
서비스
- Pod 그룹을 라벨로 묶어서 연결.
- 보통 layer 3 (TCP/UDP)에서 동작l <service-name>.<ns-name>.svc. cluster.local 형식으로 네임스페이스가 포함된 DNS 주소를 갖는다.
Namespace
- K8s 자원으로 관리됨
- 자원에 대한 영역을 제공
Podspec
- Pod 정의: 두 부분으로 이루어짐
1. Kubernetes API 버전
2. Kind: 리소스 유형
- 그리고 대부분의 리소스에서 중요한 3 영역을 가짐.
1. Metadata: name, namespace, label 등 Pod 에 대한 정보.
2. Spec: pod 컨텐트의 실제 설명 (예: containers, volumes 등)
3. Status: 실행 중인 Pod 에 대한 현재 정보.
K8s API
https://kubernetes.io/ko/docs/concepts/overview/kubernetes-api/
API 개요
https://kubernetes.io/ko/docs/reference/using-api/#api-%EA%B7%B8%EB%A3%B9
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/#-strong-api-groups-strong
볼륨
- PV: PersistentVolume: 이미 프로비저닝된 클러스터의 스토리지, 개별 Pod 와 독립적
- PVC: PersistentVolumeClaim: 스토리지를 요청
- SC: StorageClasses: 관리자가 볼륨 구현 세부 정보를 노출하지 않고 다양한 PV 를 제공, 다양한 스토리지 옵션을 사용 가능 (동적 프로비저닝) -> n PVC 를 사용해 PV 를 동적 생성 시 필요
CSI (Container Storage Interface 드라이버)
- EBS CSI (Container Storage Interface) 드라이버는 EKS 클러스터가 영구
볼륨에 대한 EBS 볼륨의 수명 주기를 관리할 수 있게 해주는 CSI
인터페이스를 제공.
- 서드파티 스토리지 공급자는 CSI 를 사용하여 핵심 Kubernetes 코드를 건드릴 필요없이
Kubernetes 의 새 스토리지 시스템을 드러내는 플러그인을 작성하고 배포할 수 있다.
- AWS 는 Kubernetes 에 제공할 수 있는 다양한 유형의 스토리지에 대한 CSI 드라이버를 제공
스케쥴링
스케줄러는 일련의 필터를 실행하여 Pod 배치에 사용할 수 없는 노드를 제외.
- 조건자 (Predicate): 어떤 노드가 사용 불가능한지 결정.
- 볼륨, 리소스, 토폴로지 요구 사항 등
1. 볼륨 필터: Pod 의 볼륨 요구 사항을 확인하고 호환되는 노드를 결정.
2. 리소스 필터: Pod 에 필요한 리소스가 노드 중 어디에 있는지를 고려.
리소스
컨테이너의 리소스 사용률을 제어: 리소스 request는 컨테이너 수준에서 지정.
- Request: 컨테이너 리소스 보장 à Pod 배치에 영향
- Limit: Pod 실행 후 리소스의 한도 정의
- Pod 리소스: 모든 컨테이너의 request 합
'Kubernetes (쿠버네티스)' 카테고리의 다른 글
Kubernetes Pod와 API 통신 - Ambassador (1) | 2022.10.03 |
---|