쿠버네티스 kubernetes
문제편
1. CNCF와 MSA에 대해 설명하시오.
2. kubeadm, kubelet, kubectl에 대하여 설명하시오.
3. 명령형 커맨드와 선언형 커맨드의 차이에 대하여 설명하시오.
4. 쿠버네티스 네트워크 플러그인의 종류와 특징을 간단히 설명하시오.
5. 쿠버네티스 컨트롤러들과 특징을 간단히 설명하시오.
6. Configmap과 Secret에 대해 설명하시오.
7. 서비스의 종류와 특징에 관하여 설명하시오.
8. PV와 PVC가 연결될 때, 서로 용량이 같을 경우, PV가 용량이 더 클 경우, PVC가 용량이 더 클 경우 각각 어떻게 연결되는가?
9. 쿠버네티스 스케쥴링에 대해 설명하시오.
10. 파드 Taints 스케쥴링 옵션 중 NoShedule, PreferNoSchedule, NoExecute에 대해 설명하시오.
11. PriorityClass, preemptionPolicy, PDB에 대하여 설명하시오.
12. TopologyKey에 대하여 설명하시오.
13. QOS클래스에 대하여 설명하시오.
14. 쿠버네티스 리소스 할당에서의 kube-reserved와 system-reserved에 대하여 설명하시오.
15. Eviction Manager와 Eviction Threshold에 대하여 설명하시오.
16. 쿠버네티스의 볼륨 플러그인 emptyDir, hostPath에 대하여 설명하시오.
17. 쿠버네티스 헬스체크 Liveness, Readiness, Startup Prove에 대하여 설명하시오.
18. OCI와 CRI에 대하여 설명하시오.
19. 컨테이너 런타임의 종류는?
해답편
1. CNCF와 MSA에 대해 설명하시오.
=>
- CNCF : 클라우드 네이티브 오픈소스를 관리하는 재단. Linux Foundation의 하위재단. 쿠버네티스가 CNCF의 첫번째 프로젝트.
- MSA : MicroService Architecture. DevOps에서의 소프트웨어 아키텍쳐. App을 작은 독립적인 서비스로 분할.
기존의 방식이 모놀리틱이며, 모놀리틱에 비해 빠르고 효율적이지만 복잡하다는 단점이 있다.
2. kubeadm, kubelet, kubectl에 대하여 설명하시오.
=> 쿠버네티스 관련 툴들로써
1) kubeadm : 쿠버네티스 공식 구축 도구
2) kubelet : 워커 노드에 설치되어 마스터 노드의 명령을 수행
3) kubectl : 클러스터에서 사용되는 CLI 도구
3. 명령형 커맨드와 선언형 커맨드의 차이에 대하여 설명하시오.
=>
- 명령형 커맨드 : 원하는 결과를 위해 명령어를 하나씩 세부적으로 진행. ex) 이동 > 삭제 > 복귀 등.
- 선언형 커맨드 : 최종 결과를 던져주면 시스템이 결과를 위해 알아서 수행. 쿠버네티스가 활용하는 방식.
4. 쿠버네티스 네트워크 플러그인의 종류와 특징을 간단히 설명하시오.
=>
1) 플라넬 Flannel : 제일 간단하며 오버레이 네트워크 구현. 암호화와 Network Policy가 불가능하다는 제약이 있다.
2) 칼리코 Calico : BGP를 지원하며 TLS암호화를 지원. 온프레미스 환경에서 사용하기 좋다. 1클러스터당 5,000개의 노드 지원.
3) 실리움 Cilium : BPF기반의 네트워킹 지원. 다소 높은 커널 버전과 복잡성이 단점.
* BPF : 패킷 필터링 도구. 커널을 거치지 않고 효율적으로 패킷을 처리.
4) 위브넷 Weave Net : 경량 인프라에 특화. 1 클러스터당 500개의 노드 지원.
5. 쿠버네티스 컨트롤러들과 특징을 간단히 설명하시오.
=>
1) ReplicaSet : 가장 기본적인 컨트롤러.
2) Deployment : 레플리카셋을 관리하며, 버전관리와 롤링업데이트를 수행
3) StatefulSet : 순서대로 파드를 생성할 때 사용.
4) DaemonSet : 모든 노드마다 반드시 하나씩 파드를 배포할 때 사용. 로그용 파드 등.
5) Job 및 CronJob : Job은 일회성 작업, CronJob은 주기적 작업에 사용.
6. Configmap과 Secret에 대해 설명하시오.
=> 둘 다 정보를 저장하되,
- Configmap : URL, 포트 번호 등을 저장
- Secret : 패스워드 등의 민감한 정보를 저장
7. 서비스의 종류와 특징에 관하여 설명하시오.
=>
1) ClusterIP : 클러스터 내부 파드간 통신.
2) NodePort : 외부에서 접근 가능하도록 포트를 통해 통신.
3) LoadBalancer : CSP(AWS, Azure 등)의 LB를 통해 통신.
8. PV와 PVC가 연결될 때, 서로 용량이 같을 경우, PV가 용량이 더 클 경우, PVC가 용량이 더 클 경우 각각 어떻게 연결되는가?
=> PVC 용량 > PV 용량 일 경우 연결되지 않고, 나머지 경우는 연결된다.
9. 쿠버네티스 스케쥴링에 대해 설명하시오.
=>
A. 기본 스케쥴링 - 필터링
[yaml]
1) Taints : 파드 생성 yaml에 적용시, 해당 노드에는 파드가 할당 X
2) NodeSelctor : 파드 생성 yaml에 적용시, 해당 노드에 파드가 할당 O
3) Toleration : 파드 생성 yaml에 적용시, 해당 노드에는 Taints가 되어있어도 파드가 할당 O
[명령어]
4) Cordon : 명령어 사용시, 해당 노드에는 파드가 할당 X
5) Drain : 명령어 사용시, 해당 노드에는 파드가 할당 X + 노드에 존재하던 파드들이 바깥으로 축출
* ignore-daemonsets으로 데몬셋을 무시 가능
B. 고급 스케쥴링 - 스코어링
Required와 Refer로 선호도 레벨을 정할수 있다.
1) Node Affinity : 특정 파드-노드 끼리 배치O 스케쥴링.
2) Node Anti-Affinity : 특정 파드-노드끼리 배치X 스케쥴링.
3) Interpod Affinity : 특정 파드-파드 끼리 배치O 스케쥴링.
4) Interpod Ainti-Affinity : 특정 파드-파드끼리 배치X 스케쥴링
10. 파드 Taints 스케쥴링 옵션 중 NoShedule, PreferNoSchedule, NoExecute에 대해 설명하시오.
=>
1) NoSchedule : Toleration이 없으면 파드 스케쥴 X, 노드에 있던 기존 파드는 존재 O
2) PreferNoSchedule : Toleration이 없으면 파드 스케쥴 X지만 가변. 리소스 부족 등으로 불가피할 때 스케쥴 될 수도 있음. 노드에 있던 기존 파드는 존재 O
3) NoExecute : Toleration이 없으면 파드 스케줄 X, 노드에 있던 기존 파드는 존재 X(축출 또는 종료)
11. PriorityClass, preemptionPolicy, PDB에 대하여 설명하시오.
=> 리소스 부족 등의 이유로 기존 스케쥴링 된 파드를 축출하는 kind와 옵션.
- PriorityClass : Kind. 우선순위 value로 평가. 설정이 없으면 기본 순위. 파드 생성 yaml에 참조하면 우선순위를 받는다.
- preemptionPolicy : PriorityClass옵션 중 우선순위에 상관없이 축출되지 않도록 하는 설정.
- PDB PodDisruptionBudget : kind. 축출시 최소 n개, 최대 n개씩만 축출 설정 가능.
12. TopologyKey에 대하여 설명하시오.
=>
- TopologyKey : 파드를 노드에 스케쥴링 할 때 존과 리전을 결정하는 설정.
13. QOS클래스에 대하여 설명하시오.
=> 쿠버네티스가 컨테이너에 OOM Scoring을 적용할 때의 기준.
파드의 Limit(최대값)과 Request(최소값)에 따라
1) BestEffort : 우선순위 3. OOM Score 1,000. 유휴에 따라 모든 자원 사용이 가능하지만, 리소스 부족시 Limit과 Request 모두 사용 불가할 수 있다.
2) Burstable : 우선순위 2. OOM Score min(max(2 1,000 - (1000* 메모리의 Requests) / 머신 메모리 용량), 999)
Request까지는 보장받는다.
3) Guaranteed : 우선순위 1. OOM Scre -998. 리소스 부족시 Limit과 Request 모두 사용 가능.
14. 쿠버네티스 리소스 할당에서의 kube-reserved와 system-reserved에 대하여 설명하시오.
=> 시스템용으로 확보된 리소스.
A. Allocatable : 할당 가능한 리소스. (파드 등)
B. Node Capacity : 리소스 총량
- kube-reserved : 컨테이너 런타임, 쿠버네티스 리소스에 확보된 리소스.
- system-reserved : OS, Daemon등에 확보된 리소스.
15. Eviction Manager와 Eviction Threshold에 대하여 설명하시오.
=> 시스템이 과부하되지 않도록 쿠버네티스 내부에서 동작하는 구성 요소.
Allocatable, kube-reserved, system-reserved 값을 확인하여 Eviction Threshold값을 넘기지 않는지 확인. OOM Killer가 작동하지 않도록 관리한다.
Eviction Threshold는 soft와 hard 2가지가 있으며, soft 제한에 걸리면 terminationGracePeirodSecond값에 따라 파드를 정지. hard 제한은 바로 파드 정지.
16. 쿠버네티스의 볼륨 플러그인 emptyDir, hostPath에 대하여 설명하시오.
=>
- emptyDir : 파드와 파드끼리 공유하는 임시 볼륨.
- hostPath : 파드와 노드끼리 공유하는 볼륨.
17. 쿠버네티스 헬스체크 Liveness, Readiness, Startup Prove에 대하여 설명하시오.
=> 파드가 정상인지 체클하는 헬스체크방법들.
1) Liveness Probe : 파드 내부의 컨테이너가 정상 동작 중인지 확인
2) Readiness Probe : 파드가 요청을 받아들일 수 있는지 확인
3) Startup Prove : 파드의 첫 번째 기동이 완료되었는지 확인
18. OCI와 CRI에 대하여 설명하시오.
=>
- OCI : Open Container Initiative. 컨테이너 런타임 표준.
- CRI : Container Runtime Interface. kubelet과 <-> 특정 컨테이너 런타임과의 표준화.
19. 컨테이너 런타임의 종류는?
=> Docker, ContainerD, CRI-O
'면접을 위한 CS 지식' 카테고리의 다른 글
클라우드 엔지니어 면접을 위한 CS 지식 정리 10 - 클라우드 AWS Security (0) | 2023.10.12 |
---|---|
클라우드 엔지니어 면접을 위한 CS 지식 정리 9 - 클라우드 AWS Network (0) | 2023.10.02 |
클라우드 엔지니어 면접을 위한 CS 지식 정리 7 - 운영 (0) | 2023.09.07 |
클라우드 엔지니어 면접을 위한 CS 지식 정리 6 - 보안 (0) | 2023.09.03 |
클라우드 엔지니어 면접을 위한 CS 지식 정리 5 - 네트워크 (0) | 2023.08.29 |