일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- putty Inactive
- gitlab 잔디옮기기
- nodemailer
- redis cli
- aws
- ERR unknown command 'JSON.SET'
- vscode
- Ngrinder Docker
- AWS S3 버킷 삭제
- AWS S3 migration
- 캐시백
- 캐시백챌린지
- aws s3
- 잔디이전
- 패스트캠퍼스
- Avast Security
- elastic cache
- 환급챌린지
- Window redis-cli
- ERR unknown command 'JSON.GET'
- AWS S3 계정이동
- 패스트캠퍼스후기
- redis-cli
- RedisJSON
- 한 번에 끝내는 AWS 인프라 구축과 DevOps 운영 초격차 패키지 Online
- 패캠챌린지
- Avast 구독취소
- 직장인자기계발
- Redis
- 직장인인강
- Today
- Total
Developing
패스트캠퍼스 캐시백 챌린지 60일차 본문
Replicaset과 관련된 내용의 클립을 수강하는식으로 챌린지를 진행하였다. 지금까지의 내용을 토대로하면 k8s에서는 컨테이너를 pod를 통해 관리하고, 이 pod 갯수를 늘릴때 ReplicaSet으로 관리한다고 한다. 그리고 짐작하건데 다음내용으로 배울 deployment가 replicaset을 관리하게 되는 것 같아 보인다. 쉽지는 않지만 그래도 할만한 것 같다.. 다음 포스팅으로는 Deployment API Resource와 관련된 내용을 포스팅 할 예정이다.
레플리카셋(ReplicaSet)
- 파드의 수를 늘릴때 사용하는 API 리소스
- 정해진 수의 파드가 항상 실행될 수 있도록 관리
- 기존 실행중이던 다프에 문제가 생기면 파드를 다시 스케줄링
- ReplicationController의 신규 버전(현재는 Deprecated)
- 파드와 마찬가지로 레플리카셋을 직접 관리하는 경우는 거의 없음
레플리카셋의 동작원리
- ReplicaSet Controller가 Control Plane에 존재
- spec.selector에 대응되는 파드의 수가 spec.replicas와 동일한지 지속적으로 검사하고, 다를 경우 스케일 아웃 혹은 인 진행
- 레이블 셀렉터(Label Selector)
⇒ 쿠버네티스 오브젝트는 모두 metadata.labels에 Key - Value 형태의 레이블 값을 가짐
⇒ 특정 오브젝트 목록을 필터링하기 위한 기능이 Label Selector
⇒ matchLabels와 matchExpressions 옵션 제공
(많은 쿠버네티스 API 리소스가 Label Selector를 통해 기능을 제공한다.)
⇒ 리소스 간 느슨한 결합 유지(Loosely Coupled)
레플리카셋 실습
실습링크는 하단의 링크에 해당한다.
https://github.com/tedilabs/fastcampus-devops/tree/main/3-docker-kubernetes/7-k8s-replicaset
# 분할탭 기능에서 작업하여 지속적으로 데이터를 갱신해서 확인한다.
$ watch kubectl get pod --show-labels
# pod 3개 생성
$ kubectl apply -f replicaset.yaml
# replicaset에 대한 정보 확인
$ kubectl get replicasets
# hello replicaset의 정보를 확인 가능
$ kubectl get replicatsets hello
# replicaset의 short name은 rs임을 확인
$ kubectl api-resources | grep replicaset
# replicaset에 대한 정보 확인 (축약어 사용)
$ kubectl get rs
# replicas 속성과 관련된 test하기위해 제거
$ kubectl delete -f replicaset.yaml
# dummy pod 하나 생성(label:hello)
$ kubectl apply -f dummy-pod.yaml
# replicaset으로 pod 생성시도(label:hello)
$ kubectl apply -f replicaset.yaml
본래 replicaset.yaml의 replicas에서 3개의 pod를 만들라고 되어있지만, hello 라는 Label이 붙은 pod가 이미 1개 존재하기에 2개가 생성된 모습이다.
# 특정 pod의 hello label 삭제시도
$ kubectl edit pod hello-jmrpn
hello를 bye로 변경해본다.
hello label이 2개가 되자 replicaset이 1개의 pod를 더 생성해준 것을 확인할 수 있다!
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
* 본 포스팅은 패스트캠퍼스 환급 챌린지를 위해 작성되었습니다.
'Devops > Fastcampus 캐시백 챌린지' 카테고리의 다른 글
패스트캠퍼스 캐시백 챌린지 62일차 (0) | 2022.06.18 |
---|---|
패스트캠퍼스 캐시백 챌린지 61일차 (0) | 2022.06.17 |
패스트캠퍼스 캐시백 챌린지 59일차 (0) | 2022.06.15 |
패스트캠퍼스 캐시백 챌린지 58일차 (0) | 2022.06.14 |
패스트캠퍼스 캐시백 챌린지 57일차 (0) | 2022.06.13 |