반응형

레플리케이션 컨트롤러

: pod가 항상 실행되도록 하는 쿠버네티스 리소스

  - 실행중인 pod의 수를 모니터링하고, 실제 원하는 갯수와 실행수가 일치하는지를 확인한다.

  - 라벨셀렉터와 매치되는 pod를 찾음 -> 매치되는 수와 원하는 수를 비교 -> 많거나 적으면, 생성 삭제 한다.

  - 3가지 필수요소

     1) 레플리케이션컨트롤러의 범위에 있는 pod를 결정하는 label Selector

     2) 실행해야 하는 pod의 원하는 수를 지정하는 복제본 수

     3) 새로운 pod 복제본을 만들때 사용되는 pod Template




- 레플리케이션 컨트롤러 목록 정보 얻기

  $kubectl get rc


- 레플리케이션 컨트롤러 상세 정보 확인

  $kubectl describe rc [rc명]


- 레플리케이션 컨트롤러의 yaml 정의 열기

  $kubectl edit rc [rc명]


- 레플리케이션 컨트롤러 스케일업(pod수 증가)

  $kubectl scale rc [rc명] --replicas=10


- 레플리케이션 컨트롤러 삭제

  1) 레플리케이션 컨트롤러와 pod를 모두 삭제

    $kubectl delete rc [rc명]

  2) 레플리케이션 컨트롤러만 삭제하고 pod는 계속 실행

    $kubectl delete rc [rc명] --cascade=false



레플리카셋

: 차세대 레플리케이션 컨트롤러

  - 일반적으로 레플리카셋을 직접 만들지는 않음 / deployment 할때 생성됨

  - 레플리케이션컨트롤러와 똑같이 동작

     그러나, 더 풍부한 표현식 pod selector 를 갖음

      ex) env=p , env=k   이 조건에 대해서

            레플리케이션 컨트롤러는 포드를 위 2개 조건을 동시에 일치시킬 수 없다.

           그러나, 단일 레플리카셋 은 2개의 pod 세트와 일치시킬수 있으며,  단일 포드로 취급할 수 있다.

     ex ) env=*  ( 값과 상관없이 키 에 대한 일치)

          

- 레플리카셋 조회

  $kubectl get rs


- matchExpression 셀렉터

  spec:

  replicas: 3

  selector:

    matchExpressions:

      - key: app

        operator: In

        values:

         - k



4가지 연산자

 1) In : 라벨의 값이 지정된 값 중 하나와 일치해야 한다.

2) NotIn : 라벨의 값이 지정된 값과 일치해서는 안된다.

3) Exists : pod에는 지정된 key 가 있는 라벨이 포함되어야 한다. (값은 중요하지 않음)

4) DoesNotExist : pod에는 지정된 key가 있는 라벨을 포함하면 안된다.



- 레플리카셋 삭제

  $kubectl delete rs [rs명]

   레플리카셋 삭제하면 해당 pod도 삭제됨




데몬셋

- 각 노드에서 pod를 실행해야 하는 경우가 있음

   ex) 로그 수집기, 리소스 모니터 , kube-proxy

- 데몬셋은 각 노드에서 단일 pod 복제본만 실행하지만, 레플리카셋은 클러스터 전체에서 무작위로 분산시킨다.

- 데몬셋에 의해 만들어진 pod는 이미 대상 node가 지정되어 있고, 쿠버네티스 스케쥴러는 건너뛴다.

- 노드가 다운되더라도, 데몬셋은 어느 곳에서도 pod를 생성하지 않는다.

- 스케쥴을 불가능하게 만드는 속성은 스케쥴러에서만 유효하고, 데몬셋에서 만드는 pod는 스케쥴러와는 무관하다.



- 데몬셋 조회

  $kubectl get ds


- 노드에 라벨 적용하기

  $kubectl label node [노드명] aaa=bbb



잡(job)

 레플리케이션컨트롤러, 레플리카셋 , 데몬셋은 작업의 완료를 고려하지 않고, 계속적으로 타스크를 실행한다.

완료 가능한 타스크에서는 프로세스가 종료된 후 다시 시작하면 안된다. 이를 할 수 있게 해주는게 잡

 - job에서 관리하는 pod는 성공적으로 끝날때까지 재스케쥴 된다.

 - job 조회

   $kubectl get jobs


- job의 타스크가 완료되면 pod 는 더이상 running 하지 않고, Completed 상태로 된다.

  pod가 완료될때 삭제되지 않는 이유는 로그를 검사할 수 있기 위해서다

  (로그 확인 : kubectl logs [pod명] )


- job은 2개 이상의 pod인스턴스를 만들고, 병렬 또는 순차적으로 실행하도록 구성할 수 있다.

  이는 job spec의  completions 와 parallelism  속성으로 수행


spec:

  completions: 5

  parallelism: 2

  template:

    metadata:

      labels:

        app: batch-job


순차적으로 처리를 위해서 completions에 설정


-job이 실행되는 동안에도 scaling 이 가능하다.

 


- 쿠버네티스의 cron 처리는, CronJob 

apiVersion: batch/v1beta1

kind: CronJob

metadata:

  name: 배치잡명

spec:

  schedule: "0,10,20,30,40,50,60 * * * *"

  jobTemplate:

    spec:

      template:

        metadata:

          labels:

            app: ㅇㅇㅇㅇ

        spec:

          restartPolicy: OnFailure

          containers:

          - name: main

            image: 이미지명








반응형

'DevOps' 카테고리의 다른 글

쿠버네티스 명령어 #4  (0) 2018.12.31
Docker 명령어  (0) 2018.12.28
쿠버네티스 명령어 #2  (0) 2018.12.27
kubernetes 명령어#1  (0) 2018.12.27
미니큐브 설치 맥  (0) 2018.12.23

+ Recent posts