Certified Kubernetes Administrator (CKA) with Practice Tests 정리 내용입니다.
28 Practice Test - Solution (Optional)
29 ReplicaSet
Kubernetes Controller
- 쿠버네티스의 두뇌이다.
- 쿠버네티스 개체를 모니터링하는 프로세스이다.
Replica Controller
- 레플리카 컨트롤러는 클러스터 내에서 파드 여러개 띄울수 있도록 도와주며. 이를 통해 high availability 를 제공한다.
- 레플리카 컨트롤러는 desired count의 팟이 배포되는 것을 보장한다
- 레플리카 컨트롤러를 사용하면 여러개의 노드로 팟을 부하 분산 할 수 있다, 팟이 균형있게 로드가 되도록 확장을 도와준다.
Difference between ReplicaSet and Replication Controller
- 둘 다 같은 목적을 갖지만 같지 않다.
- 레플리카 컨트롤러가 이전 기술이며, 북제 세트가 권장된다
ReplicaController 만드는 방법
apiVersion: v1
kind: ReplicationController
metadata:
name: myapp-rc
labels:
app: myapp
type: front-end
spec:
template:
metadata:
name: myapp-pod
labels:
app: myapp
type: front-end
spec:
containers:
- name: nginx-container
image: nginx
replicas: 3
- replicas 를 통해 복제본 수를 설정한다.
- selector가 필수가 아님.
ReplicaSet 만드는 방법
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: myapp-replicaset
labels:
app: myapp
type: front-end
spec:
template:
metadata:
name: myapp-pod
labels:
app: myapp
type: front-end
spec:
containers:
- name: nginx-container
image: nginx
replicas: 3
selector:
matchLabels:
type: front-end
- 레플리카 컨트롤러와 달리 selector가 필수다.
- template에 팟 지정했는데 셀렉터 지정하는 이유는, 레플리카 셋에서 지정하지 않은 팟도 관리하기 위함이다.
- 레플리카 셋은 모니터링하고, 파드를 유지 시켜준다
Labels and Selectors
- 클러스터에 수백 개의 팟이 있을 것이다. 우리는 labels을 필터로 사용한다.
- 즉 selector 에 matchLabels 에 label 을 선언하면, 어떤 Pod 를 모니터링 할 지 알 수 있게 됨
- 이미 Pod 가 전부 생성되어 있는 상황에 template 을 선언해야 할까?
- → Yes!
- Pod를 새로 생성할 때 필요한 정보가 Template 에 존재해야하기 때문.
- 스케일업 하는 여러가지 방법
- 파일 복제본 수를 변경
- kubectl scale 커맨드를 사용
commands
$ kubectl create -f replicaset-definition.yaml
$ kubectl get replicaset
$ kubectl delete replicaset myapp-replicaset
$ kubectl replace -f replicaset-definition.yaml
$ kubectl scale -replicas=6 myapp-replicaset
30. Practice Test - ReplicaSets
31. Practice Test - ReplicaSets - Solution
32. Deployments
- 우리가 사용하는 이미지들은 계속 업그레이드될 것이다. 이때 한 번에 업그레이드 할 경우 중단이 발생할 수 있다. 디플로이먼트는 롤링 업데이틀르 지원한다.
- 만약 업데이트 된 내용에 문제가 생겨 적용된 버전을 전부 롤아웃 해야하는 경우에도 Deployment 를 활용할 수 있다.
- deployment>replicaset>pod
- Deployment은 ReplicaSet 보다 상위 개념이라 리플리카셋의 기본 기능들을 포함한다.
- 배포하는 YAML file 은 replicasets 과 거의 유사함. kind 만 Deployment 로 달라짐
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
labels:
app: myapp
type: front-end
spec:
template:
metadata:
name: myapp-pod
labels:
app: myapp
type: front-end
spec:
containers:
- name: nginx-container
image: nginx
replicas: 3
selector:
matchLabels:
type: front-end
33. Certification Tip!
- kubectl run 은 yaml 템플릿 생성에 도움이 된다
- kubectl run redis --image=redis123 --dry-run=client -o yaml > redis.yaml
- In k8s version 1.19+, we can specify the --replicas option to create a deployment with 4 replicas.
- kubectl create deployment --image=nginx nginx --replicas=4 --dry-run=client -o yaml > nginx-deployment.yaml
34. Practice Test - Deployments
35. Solution - Deployments (optional)28 Practice Test - Solution (Optional)
'DevOps > Kubernates' 카테고리의 다른 글
[CKA] 62-75 Node Affinity, Taints and Tolerations, DaemonSets, Static Pod (0) | 2023.04.03 |
---|---|
[CAK] 36-48 Sevice, Namespace, Kubectl commands (0) | 2023.03.30 |
[CKA] 18-27 kubelet, kube-proxy, POD, YAML, (0) | 2023.03.29 |
[CKA] 1-17 (0) | 2023.03.29 |
[Kubernetes] 헬름(Helm) (0) | 2023.03.16 |
댓글