Controller
- 쿠버네티스에는 여러 컨트롤러가 있음
- 서비스를 관리하고 운영하는데 도움을 줌
- 4가지의 기능을 제공함
Auto Healing
- 노드위의 파드가 다운되거나 노드가 다운되면 다른 노드에 파드를 생성
Auto Scaling
- 파드의 리소스가 limit 상태일 때, 컨트롤러가 파드를 하나 더 만들어서 부하를 분산시킴
- 성능에 대한 장애없이 안정적인 운영 가능
Software Update
- 여러 파드에 업그레이드를 해야 할 경우 컨트롤러를 통해서 한 번에 쉽게 함
- 업그레이드 도중 문제가 생기면 롤백가능
Job
- 일시적인 작업을 해야할 경우, 컨트롤러가 필요한 순간에 파드를 만들어서 해당 작업을 이행하고 삭제
- 작업에만 자원이 할당되고 작업이 완료되면 자원을 수거함
Replication Controller, ReplicaSet
- Replication Controller는 Deprecated여서 ReplicaSet으로 대체됨
- Template과 Replicas 기능은 Replication Controller, ReplicaSet 공통 기능
- Selector는 ReplicaSet에만 있음
- 아직 Replication Controller를 많이 사용 중이나 ReplicaSet으로 업데이트 가능
Template
- 컨트롤러와 파드는 셀렉터와 라벨로 연결 됨
- 컨트롤러를 만들 때 템플릿으로 파드의 내용을 읽음
- 컨트롤러가 파드를 재생성할 때 템플릿을 활용하여 파드 생성
- 템플릿을 업데이트하고 기존의 파드를 다운시켜서 재생성하는 방식으로 파드 업데이트 가능
Sample YAML
- 파드에 라벨이 있고, RepliactionController에 셀렉터가 있음
- template에 파드의 내용이 들어가는데, 라벨이 지정되어 있음 --> 파드 재생성 시 컨트롤러와 연결시켜주는 역할
Replicas
- replicas만큼 파드의 개수 관리
- replicas = 1: 1개의 파드가 유지되도록 하며, 파드가 삭제되면 1개가 될 때까지 재생성함
- replicas = 3: 3개의 파드가 유지되도록 하며, 파드가 삭제되면 3개가 될 때까지 재생성함
- replicas = 1->3: 원래 1개인 파드가 3개로 늘어남 --> Scale Out, 반대는 Scale In
- Replication과 Pod를 따로 만들지 않고, Replication 안에 template을 넣어, Replication만 생성할 수 있음
- Replication안에 template이 있으면, Replication 생성 시 template을 사용하여 Pod 생성 --> 주로 이 방법을 사용
Sample YAML
Selector
- ReplicaSet에만 있는 기능
- Replication Controller는 키와 벨류가 같은 파드들만 연결됨
- ReplicaSet은 matchLabels, matchExpressions가 있음
- matchLabels: 키와 벨류가 모두 같아야 연결
- matchExpressions: 키와 벨류에 대해 Operator로 선택 가능(Exists, In)
Operator
- Exists: ReplicaSet의 키를 가지고 있는 파드를 연결시킴
- DoesNotExist: ReplicaSet의 키를 가지고 있지 않은 파드를 연결시킴
- In: ReplicaSet의 키를 가지고 있고, ReplicaSet의 벨류를 포함하고 있는 파드를 연결시킴
- NotIn: ReplicaSet의 키를 가지고 있고, ReplicaSet의 벨류를 하나라도 갖고 있지 않은 파드를 연결시킴
- 이러한 Operator는 다른 오브젝트에서도 많이 사용하니 알아두기!
Sample YAML
출처
인프런 - 대세는 쿠버네티스
'네트워크 > k8s' 카테고리의 다른 글
[k8s] 14. Deployment - Recreate, RollingUpdate (0) | 2021.02.13 |
---|---|
[k8s] 13. ReplicaSet, Selector - 실습 (0) | 2021.02.13 |
[k8s] 11. Namespace, ResourceQuota, LimitRange - 실습 (0) | 2021.02.11 |
[k8s] 10. Namespace, ResourceQuota, LimitRange (0) | 2021.02.10 |
[k8s] 9. ConfigMap, Secret - 실습 (0) | 2021.02.08 |