출처 : kubernetes in action


Downward API

 - 해당 POD 의 내부에서 실행중인 프로세스에 POD 자체의 메타 데이터를 노출할 수 있다.

    . pod 명

    . pod ip 주소

    . pod 네임스페이스

    . pod 가 실행되고 있는 Node 명

      ...


1) 환경변수를 통한 메타데이터 노출

apiVersion: v1

kind: Pod

metadata:

  name: 포드명

spec:

  containers:

  - name: main

    image: ㅇㅇㅇ

    command: ㅇㅇㅇ

    resources:

      requests:

         ....

      limits:

         ....

    env:

    - name: POD_NAME

      valueFrom:

        fieldRef:

          fieldPath: metadata.name

    - name: POD_NAMESPACE

      valueFrom:

        fieldRef:

          fieldPath: metadata.namespace

    .....



   2) downward API 볼륨 내의 file을 통한 메타데이터 전달

       




Deployment

- 애플리케이션을 배포하고 이를 선언적으로 업데이트하는데 사용하는 상위 수준의 리소스

- deployment 를 만들면 레플리카셋 리소스가 아래에 만들어짐

   (레플리카셋은 pod를 복제하고 관리)

- deployment 가 필요한 이유는...

   : 애플리케이션을 업데이트할때 추가적인 ReplicationController 가 필요하고, 이전 ReplicationController와 잘 조화되게끔 컨트롤러를 조정해야 한다.

     즉, 전체적으로 통제할 무언가가 필요하고 그 역할을 deployment가 담당한다.

     (deployment 가 직접 수행하는 것은 아니고 쿠버네티스 컨트롤 플레인에서 실행하는 컨트롤러 프로세스가 이를 수행)


- deployment 상태 확인 명령어

   $kubectl rollout status deployment [deployment리소스명]



- Deployment 전략

  > Recreate 전략

     : 새 pod를 만들기 전에 기존 pod를 삭제

       애플리케이션이 여러 버젼을 동시에 실행할 수 없으며, 새 버젼을 시작하기 전에 이전버젼을 완전히 중지해야 하는경우 사용

       애플리케이션 down time 짧게 포함된다.


   > RollingUpdate 전략

      : 오래된 pod를 하나씩 제거하는 동시에 새로운 pod를 추가해 전체 업데이트 프로세스에 걸쳐 애플리케이션을 사용할 수 있도로한다.



Deployment의 롤아웃 히스토리 보여주기

   - deployment는 리비전 히스토리를 유지하므로 롤아웃, 롤백이 가능하다.

   - 히스토리는 레플리카셋 내부에 저장된다.

  $kubectl rollout history deployment [deployment명]


특정 Deployment 리비전으로 롤백하기

    $kubectl rollout undo deployment [deployment명] --to-revision=1

  - 비활성 레플리카셋을 삭제하면 롤백할 수 없으므로 삭제하면 안된다.

 

롤링 업데이트 전략의 maxSurge와 maxUnavailable 속성

    - maxSurge

       : 배포에 구성된 원하는 복제본 수 위에 존재하도록 허용하는 포드 인스턴스 수를 결정한다.

         즉, 이값이 25% 이면 원하는 수보다 25% 더 많은 포드 인스턴스까지만 있을 수 있다.

              25%이고, 원하는 수가 4면, 최대 5개까지만 존재할 수 잇다는 것


    - maxUnavailable

       : 업데이트 중에 원하는 복제본 수에 비례하여 사용할 수 없는 포드 인스턴스 수를 결정한다.


롤아웃 프로세스 일시 중지

    - deployment 는 롤아웃 프로세스 중에 일시 중지될 수 있다.

      이렇게 하면 나머지 롤아웃을 진행하기 전에 새 버전이 제대로 작동하는지 확인 할 수 있다.

      $kubectl rollout pause deployment [deployment명]

    - 카나리아 릴리즈

      : 잘못된 버전의 애플리케이션을 롤아웃 하고 모든 사용자에게 영향을 줄 위험을 최소화하기 위한 기술

    - 롤아웃 재개

      $kubectl rollout resume deployment [deployment명]      


 




'DevOps' 카테고리의 다른 글

Docker 명령어 정리  (2) 2019.03.21
쿠버네티스 기존 리소스 수정  (0) 2019.02.08
쿠버네티스 명령어 #6  (0) 2019.01.31
쿠버네티스 구조  (0) 2019.01.10
pod-레플리케이션컨트롤러-서비스  (0) 2019.01.10
쿠버네티스 명령어#5  (0) 2019.01.02

+ Recent posts