반응형
Kubernetes의 컨트롤러는 클러스터 상태를 원하는 상태로 유지하기 위해 사용되는 주요 컴포넌트입니다.
컨트롤러는 클러스터의 현재 상태를 지속적으로 모니터링하고, 필요에 따라 조치를 취하여 원하는 상태를 유지합니다.
Kubernetes에서 제공하는 다양한 유형의 컨트롤러는 각각 특정한 목적과 기능을 가지고 있습니다.
주요 컨트롤러 타입은 다음과 같습니다:
1. ReplicationController
- 목적: 지정된 수의 Pod 복제본이 항상 실행되도록 보장합니다.
- 특징: 특정 수의 동일한 Pod를 유지하며, Pod가 죽거나 삭제되면 새로운 Pod를 생성합니다.
- 예시:
apiVersion: v1 kind: ReplicationController metadata: name: my-replication-controller spec: replicas: 3 selector: app: myapp template: metadata: labels: app: myapp spec: containers: - name: mycontainer image: myimage
2. ReplicaSet
- 목적: 지정된 수의 Pod 복제본이 항상 실행되도록 보장합니다.
- 특징: ReplicationController의 개선된 버전으로, 더 강력한 레이블 셀렉터를 지원합니다. ReplicaSet은 보통 Deployment에 의해 관리됩니다.
- 예시:
apiVersion: apps/v1 kind: ReplicaSet metadata: name: my-replicaset spec: replicas: 3 selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: mycontainer image: myimage
3. Deployment
- 목적: 애플리케이션의 배포 및 업데이트를 관리합니다.
- 특징: ReplicaSet을 생성하고 관리하여 애플리케이션의 롤아웃, 롤백, 업데이트 전략을 제공합니다.
- 예시:
apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment spec: replicas: 3 selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: mycontainer image: myimage
4. StatefulSet
- 목적: 상태를 가지는 애플리케이션을 관리합니다.
- 특징: Pod의 정해진 순서와 네트워크 식별자를 보장하며, 데이터가 있는 Pod에 적합합니다. 예를 들어, 데이터베이스 클러스터와 같은 상태 저장 애플리케이션에 사용됩니다.
- 예시:
apiVersion: apps/v1 kind: StatefulSet metadata: name: my-statefulset spec: serviceName: "my-service" replicas: 3 selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: mycontainer image: myimage volumeMounts: - name: myvolume mountPath: /data volumeClaimTemplates: - metadata: name: myvolume spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 1Gi
5. DaemonSet
- 목적: 클러스터의 모든 (또는 특정) 노드에서 단일 Pod 복제본이 실행되도록 보장합니다.
- 특징: 클러스터 내의 모든 노드에 Pod를 배포하며, 노드가 추가되거나 제거될 때 자동으로 조정됩니다. 주로 로그 수집, 모니터링 에이전트, 시스템 관리 작업 등에 사용됩니다.
- 예시:
apiVersion: apps/v1 kind: DaemonSet metadata: name: my-daemonset spec: selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: mycontainer image: myimage
6. Job
- 목적: 일회성 작업을 실행하고 완료를 보장합니다.
- 특징: 작업이 완료될 때까지 하나 이상의 Pod를 실행하며, 성공적으로 완료되면 더 이상 실행되지 않습니다.
- 예시:
apiVersion: batch/v1 kind: Job metadata: name: my-job spec: template: metadata: labels: app: myapp spec: containers: - name: mycontainer image: myimage restartPolicy: Never
7. CronJob
- 목적: 일정한 시간 간격으로 Job을 실행합니다.
- 특징: Cron 표현식을 사용하여 주기적으로 Job을 실행하며, 특정 시간에 작업을 예약할 수 있습니다.
- 예시:
apiVersion: batch/v1 kind: CronJob metadata: name: my-cronjob spec: schedule: "*/5 * * * *" jobTemplate: spec: template: metadata: labels: app: myapp spec: containers: - name: mycontainer image: myimage restartPolicy: Never
이러한 다양한 컨트롤러들은 Kubernetes 클러스터에서 애플리케이션의 다양한 요구 사항을 충족시키기 위해 사용되며, 각각의 목적과 사용 사례에 맞게 선택하여 사용할 수 있습니다.
반응형
'가상 머신 > 쿠버네티스' 카테고리의 다른 글
[ 쿠버네티스 / Kurbernetes ] 서비스에 대해서 알아보기 (0) | 2024.07.03 |
---|---|
[ 쿠버네티스 / Kurbernetes ] Pod의 라이프 사이클 (0) | 2024.07.03 |
[ 쿠버네티스 / Kurbernetes ] Pod의 특징 (0) | 2024.07.03 |
[ 쿠버네티스 / Kurbernetes ] K8s 구성하는 주요 프로세스 (0) | 2024.07.03 |
[ 쿠버네티스 / Kurbernetes ] 이미지가 컨테이너에서 실행되는 과정 순서대로 보기 (0) | 2024.07.02 |