일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- kakaocloud
- 1110
- 카카오 클라우드 스쿨
- 24479
- Spring #Spring Boot #Java
- Java #백준 #코딩테스트
- Spring
- 11054
- sequelize
- python
- Spring #Java #Spring Boot #싱글톤
- 백준
- boj
- Spring #Java #Spring Boot
- 알고리즘
- java
- SpringTokenizer
- Spring #Java #Spring Boot #@BeforeEach #@AfterEach
- 카카오클라우드스쿨
- 9020
- kakaocloudschool
- node
- Java #코딩테스트
- 파이썬
- 11053
- Java #오븐시계 #백준
- 2447
- 코딩테스트
- 15552
- 7568
- Today
- Total
YoungSoo
Kubernetes 컨트롤러 본문
컨트롤러는 파드들을 관리하는 역할을 합니다. 다양한 목적에 맞게 사용할 수 있는 컨트롤라가 있다는 것이 쿠버네티스의 큰 장점입니다.
- 레플리케이션 컨트롤러(Replication Controller)
- 초기 버전의 쿠버네티스에서 사용되던 리소스 중 하나입니다.
- 레플리카를 관리하고, 레플리카의 개수를 유지하며, 레플리카의 상태를 모니터링하는 역할을 합니다.
- 레플리카세트(ReplicaSet)
- 레플리케이션 컨트롤러의 업그레이드 버전입니다.
- 레이블 셀렉터를 사용하여 관리하는 파드를 지정할 수 있습니다.
- 파드 수를 자동으로 조절하여 지정된 개수만큼 레플리카를 유지하는 역할을 합니다.
- 디플로이먼트(Deployment)
- ReplicaSet을 기반으로 만들어진 리소스입니다.
- ReplicaSet의 역할을 대체할 수 있으며, 롤링 업데이트, 롤백, 버전 관리 등을 지원합니다.
- 더 많은 기능을 가지고 있기 때문에, ReplicaSet보다 복잡하고 더 많은 리소스를 사용합니다.
- 스테이트풀셋(StatefulSet)
- 상태가 있는 애플리케이션을 배포하기 위한 리소스입니다.
- 파드를 고유한 이름으로 생성하여 순차적으로 배포하고, 파드의 상태를 관리할 수 있습니다.
- 네트워크와 스토리지 등의 상태를 유지하며, 확장성과 안정성을 보장합니다.
위의 리소스들은 모두 레플리케이션과 스케일링을 담당하는 리소스입니다. 그러나 각각의 리소스는 다양한 기능과 특징을 가지고 있습니다. 디플로이먼트는 롤링 업데이트, 롤백 등의 기능을 지원하고, 스테이트풀셋은 상태가 있는 애플리케이션을 배포할 때 유용합니다. 또한, 디플로이먼트와 스테이트풀셋은 ReplicaSet을 기반으로 만들어졌기 때문에 ReplicaSet보다 더 복잡하고 많은 리소스를 사용합니다. 따라서, ReplicaSet은 기본적인 레플리케이션 관리 기능만을 수행하고, 디플로이먼트와 스테이트풀셋은 더 복잡하고 다양한 기능을 수행할 수 있습니다. 이에 따라, ReplicaSet은 간단한 애플리케이션 배포에 적합하고, 디플로이먼트와 스테이트풀셋은 더 복잡하고 안정적인 애플리케이션 배포에 적합합니다. 선택할 리소스는 애플리케이션의 특징과 요구사항에 따라 다르게 선택해야 합니다.
디플로이먼트 롤백하기
kubectl rollout history deploy nginx-deployment - 컨테이너 이미지 변경 내용
kubectl rollout history deploy nginx-deployment --revision=3 - 특정 컨테이너 이미지 변경 상세 내용
kubectl rollout undo deploy nginx-deployment(디플로이먼트이름) - kubectl set image로 변경한 레플리카세트와 파드들로 되돌아감, 사용시 리버전이 3이었으면 2가 아니라 4로 변경
kubectl rollout undo deploy nginx-deployment(디플로이먼트이름) --to-revision=숫자 - 특정 리비전으로 변경
kubectl get deploy nginx-deployment -o=jsonpath=”{.spec.template.spec.containers[0].image}{’\n’}” - 이미지 버전이 되돌아 갔는지 확인
이렇게만 보면 무엇이 변경되었는지 모르기 때문에 이럴 땐 change-cause 항목에 내용을 추가하는게 좋습니다.
deployment.yaml 파일에서 .metadata.annotations 필드의 하위로 kubernetes.io/change-cause: version 1.10.1 로 변경해준 뒤에 변경사항을 저장하고 명령어로 적용해주면 된다.
- 잡(Job)
- 한 번 실행되고 완료되는 단발성 작업을 수행하는 리소스입니다.
- 주로 데이터 처리, 백업, 복원 등의 작업에 사용됩니다.
- 성공 또는 실패에 대한 결과를 남길 수 있고, 실패 시 재시작을 지원합니다.
- 크론잡(CronJob)
- 스케줄링 기능을 가진 리소스입니다.
- 주기적으로 반복되는 작업을 수행하며, 유닉스 크론과 유사한 기능을 제공합니다.
- 특정 시간에 실행되는 일회성 작업뿐만 아니라, 정기적인 주기로 실행되는 반복 작업도 가능합니다.
잡과 크론잡은 모두 배치 작업을 수행하는 리소스이지만, 실행 방식과 목적에 따라 다릅니다. 잡은 단발성 작업을 수행하며, 성공 또는 실패 여부를 기록하고 재시작 기능을 제공합니다. 반면, 크론잡은 주기적으로 반복되는 작업을 수행하는 스케줄링 기능을 가진 리소스입니다.
따라서, 단발성 작업을 수행해야 할 때는 잡을 사용하고, 반복적으로 수행되는 작업을 스케줄링하고 싶을 때는 크론잡을 사용하는 것이 적절합니다.
'Cloud > Kubernetes' 카테고리의 다른 글
[Kubernetes] Deployment를 왜 선택해야하지? (0) | 2023.04.30 |
---|---|
Kubernetes 서비스 (0) | 2023.03.21 |
Kubernetes Pod (0) | 2023.03.18 |
Kubernetes 아키텍처 (0) | 2023.03.17 |
Kubernetes로 컨테이너 실행하기 (0) | 2023.03.16 |