쿠버네티스 라이프사이클

이 포스팅은 UdemyCertified Kubernetes Administrator with Practice Tests 강의를 정리한 내용입니다.

쿠버네티스 라이프사이클 에 대해 알아봅시다.

롤링 업데이트와 롤백

  • deployment 를 생성하고 후에 도커 이미지 업데이트로 인해 deployment 를 수정하면 새로운 revision이 생김
  • revision 들로 인해 변화점들을 추적할 수 있고 문제가 생겼을 때 이전 revision으로 롤백할 수 있음

롤아웃 명령어

kubectl rollout status deploy {deploy-name}

히스토리 정보

kubectl rollout history deploy {deploy-name}

Deployment 배포 종류

  • Recreate
    • 기존 pod 를 전부 내리고, 새로운 pod 를 올림
    • 새로운 pod 가 뜨기 전까지 서비스가 불가하다는 단점
  • RollingUpdate (DEFAULT)
    • 내리고 올리는 과정을 하나씩 진행
    • 서비스 중단 없음

Deployment 업데이트

  • yaml 파일을 수정하고 kubectl apply -f 커맨드로 새로운 rollout를 만듦
  • kubectl set image 커맨드 사용
kubectl set image deploy {deploy-name} {container-name}=nginx:1.9.1

롤링 업데이트 동작 과정

  • 새로운 deploy가 생성되면 그에 따른 replicaset이 생성됨
  • deploy가 수정되면 여기에 맞는 새로운 replicaset이 만들어짐
  • old replicaset 에서는 pod를 하나씩 내리면서 new replicaset 에서는 pod를 하나씩 생성

롤백

  • 새로운 deploy에 문제가 있어서 이전 버전으로 되돌리고 싶은 경우 롤백 사용
kubectl rollback undo deploy {deploy-name}

command와 args

  • 도커 커맨드 뒤에 append 하고 싶은 경우 args 필드를 작성
  • 도커파일 내에 작성된 CMD 부분을 replace 하게 됨
  • 도커파일의 ENTRYPOINT 를 replace 하고 싶은 경우 command 필드 작성
  • 정리하면 Dockerfile 의 ENTRYPOINT는 spec.containers.command와 CMD는 spec.containers.args와 대응됨
...
spec:
  containers:
  - name: ubuntu-sleeper
    image: ubuntu-sleeper
    command: ["sleep2.0"]
    args: ["10"]

환경 변수

definition 파일에서 spec.containers.env 필드를 작성

...
spec:
  containers:
  - name: sample
    ... 
    env:
    - name: APP_COLOR 
      value: pink

configMap 이나 Secret 통한 방법도 있음

  env:
  - name: APP_COLOR
  - valueFrom:
      configMapKeyRef:
  env:
  - name: APP_COLOR
    valueFrom:
      secretKeyRef: 

© 2021. All rights reserved.

Powered by Hydejack v9.1.4