Cloud-native (75) 썸네일형 리스트형 [Kubernetes]How to use Kubernetes CronJob and Job Contents CronJob의 Manifest 정의 및 배포 CronJob의 실행 시간 제약 CronJob의 동시성 관리 CronJob의 History Limit Job의 Manifest 정의 및 배포 CronJob Manifest 정의 및 배포 cronjob-concurrency.yaml apiVersion: batch/v1 kind: CronJob metadata: name: hello-concurrency spec: schedule: "*/1 * * * *" startingDeadlineSeconds: 600 concurrencyPolicy: Forbid jobTemplate: spec: template: spec: containers: - name: hello image: busybox args.. [Kubernetes]What is a Kubernetes CronJob(크론잡) 크론잡은 백업, 리포트 생성 등의 정기적 작업을 수행하기 위해 사용된다. 각 작업은 무기한 반복되도록 구성해야 한다(예: 1일/1주/1달마다 1회). 작업을 시작해야 하는 해당 간격 내 특정 시점을 정의할 수 있다. 크론잡은 반복 일정에 따라 잡을 만든다. 하나의 크론잡 오브젝트는 크론탭 (크론 테이블) 파일의 한 줄과 같다. 크론잡은 잡을 크론 형식으로 쓰여진 주어진 일정에 따라 주기적으로 동작시킨다. 모든 크론잡의 시간은 kube-controller-manager(컨트롤러 프로세스를 실행하는 컨트롤 플레인 컴포넌트) 의 시간대를 기준으로 한다. Example - CronJob apiVersion: batch/v1 kind: CronJob metadata: name: hello spec: schedul.. [Kubernetes]What is a Kubernetes Job(잡) 하나 이상의 파드를 생성하고 지정된 수의 파드가 성공적으로 종료될 때까지 계속해서 파드의 실행을 재시도한다. → 특정 개수만큼의 파드를 정상적으로 실행 종료함을 보장한다. → Pod 실행 실패, 하드웨어 장애 발생, 노드 재시작 등 문제가 발생하면 다시 Pod를 실행한다. 실행된 후 종료해야 하는 성격의 작업을 실행시킬때 사용하는 컨트롤러이다. Job 은 apply로 update 할 수 없고 삭제 후 다시 apply해야 한다. Job 하나가 Pod를 여러개 실행할 수도 있다. Example - Job job.yaml apiVersion: batch/v1 kind: Job metadata: name: pi spec: template: spec: containers: - name: pi image: perl.. [Kubernetes]StatefulSet Update strategy 스테이트풀셋의 .spec.updateStrategy 필드는 스테이트풀셋의 파드에 대한 컨테이너, 레이블, 리소스의 요청/제한 그리고 주석에 대한 자동화된 롤링 업데이트를 구성하거나 비활성화할 수 있다. 두 가지 가능한 전략이 있다. RollingUpdate 파드를 순차적으로 업데이트 한다. OnDelete 파드를 자동으로 업데이트하지 않는다. 사용자는 컨트롤러가 스테이트풀셋의 .spec.template를 반영하는 수정된 새로운 파드를 생성하도록 수동으로 파드를 삭제해야 한다. rollingUpdate (default) #중간생략 spec: terminationGracePeriodSeconds: 10 containers: - name: nginx-statefulset image: nginx ports: -.. [Kubernetes]What is Kubernetes StatefulSet(스테이트풀세트) StatefulSet은 상태가 있는 파드들을 관리하는 컨트롤러이다. ReplicaSet, Deployment는 모두 상태가 없는 파드들을 관리하는 용도였다. StatefulSet을 사용하면, 볼륨을 사용해서 특정 데이터를 저장한 후 파드를 재시작했을 때 해당 데이터를 유지할 수 있다. Deployment와 다르게 StatefuleSet은 각 파드의 독자성을 유지한다. → 이 파드들은 동일한 스펙으로 생성되지만, 서로 교체는 불가능하다. 각각은 재 스케줄링 간에도 지속적으로 유지되는 식별자를 가진다. When we use StatefulSets StatefulSet은 아래에 해당하는 애플리케이션에 유용하다. 안정되고 지속성을 가지는 고유한 네트워크 식별자 안정되고 지속성을 가지는 스토리지 순차적인 배포와 .. [Kubernetes]What is Kubernetes DaemonSet(데몬세트) DaemonSet은 보통 로그 수집기를 실행하거나 노드를 모니터링하는 모니터링용 데몬 등 클러스터 전체에 항상 실행시켜두어야 하는 파드에 사용한다. 클러스터 전체 노드에 특정 파드를 실행할 때 사용하는 컨트롤러 클러스터 안에 새롭게 노드가 추가되었을 때 데몬세트가 자동으로 해당 노드에 파드를 실행시킨다. 반대로 노드가 클러스터에서 빠졌을 때는 해당 노드에 있던 파드는 그대로 사라질 뿐 다른곳으로 옮겨가서 실행되지 않는다. Example - DaemonSet 로그 수집기를 실행하는 데몬세트 설정 apiVersion: apps/v1 kind: DaemonSet metadata: name: fluentd-elasticsearch namespace: kube-system labels: k8s-app: fluen.. [Kubernetes]Deplyoment Pausing and Resuming a rollout of a Deployment - 디플로이먼트 배포 일시 중지, 배포 재개, 재시작하기 Deployment를 업데이트할 때 해당 Deployment에 대한 롤아웃을 일시 중지할 수 있다. 변경 사항을 적용할 준비가 되면, Deployment 롤아웃을 재개한다. 이러한 방법으로, 불필요한 롤아웃을 트리거하지 않고 롤아웃 일시 중지와 재개 사이에 여러 수정 사항을 적용할 수 있다. 배포 일시 중지 - rollout pause $ kubectl rollout pause deployment.apps/nginx-deployment deployment.apps/nginx-deployment paused $ kubectl set image deploy/nginx-deployment nginx-deployment=nginx:1.12 deployment.apps/nginx-deployment image u.. [Kubernetes]Rolling Back a Kubernetes Deployment - 디플로이먼트 롤백 때때로 디플로이먼트의 롤백을 원할 수도 있다. 예를 들어 디플로이먼트가 지속적인 충돌로 안정적이지 않은 경우. 기본적으로 모든 디플로이먼트의 롤아웃 기록은 시스템에 남아있어 언제든지 원할 때 롤백이 가능하다. Check Rollback Changes - 롤백 변경 내용 확인 Deployment를 변경한 내역은 아래 명령어로 확인할 수 있다. kubectl rollout history deploy $ kubectl rollout history deploy nginx-deployment deployment.apps/nginx-deployment REVISION CHANGE-CAUSE 2 3 4 상세 내용 확인 —revision=[num] $ kubectl rollout history deploy nginx-.. 이전 1 ··· 3 4 5 6 7 8 9 10 다음