static pod

  • control-plane(master)의 api를 실행하지 않고 pod를 만든다
  • worker노드의 kubelet 의 특정 디렉터리에 yaml을 만들면 자동으로 pod가 생성되고, yaml이 사라지만 pod가 사라짐
  • 즉 kubelet 데몬을 통해 pod가 생성됨
  • 보통 /etc/kubernetes/manifests 여기 위치가 worker노드의 static pod 생성 파일 저장 위치
  • 마스터 노드의 static pod는 다음과 같다
  • controlplane $ pwd /etc/kubernetes/manifests controlplane $ ls etcd.yaml kube-controller-manager.yaml kube-apiserver.yaml kube-scheduler.yaml

pod 리소스

  • 보통 pod를 만들때 따로 리소스를 제한하지 않으면 모든 리소스를 다쓸 수 있다.

  • 또한 pod를 생성할때 클라이언트가 원하는 자원이상이 남는 노드에 만들 수 있다.

    • request는 scheduler가 결정, 즉 이것 이상으로 리소스가 있는 노드에 pod를 만든다
    • limit은 리소스가 초과되면 자동으로 restart 된다.
    • limit만 쓰면 동일한 값으로 requests가 복제가 되어 들어감
    • request만 쓰면 limit은 따로 안들어감
    • 만약 requests를 너무 크게 잡아서, 장비가 감당하지 못하면 pod가 생성되지 않고 pending이 된다,
  • 컨테이너별로 리소스 설정

  • yaml 예제

      resources:
        requests:
          memory: 1
          cpu: 1Gi
        limits:
          memory: 3
          cpu: 3Gi

pod 변수

  • pod 생성 yaml에서 컨테이너의 환경변수를 변경하고 설정할 수 있다.
  • 이미 컨테이너에 환경설정이 되어있어도 이를 덮어써서 변경할 수 있다.
  • ex
      env:
      - name: ${name}
        value: ${value}

pod의 세가지 패턴

  • sidecar : 한 pod에서는 로그를 만들고 다른 pod에서는 이를 분석, 즉 두개가 함께 동작
  • adapter : 외부에 모니터가 있고, 어뎁터 pod가 외부에 모니터링 정보를 받고, web pod가 모니터링 정보를 받아 시각화하여 외부에 제공
  • ambassador : 웹서버pod에 고객이 웹서버를 이용하면 이에 대한 정보를 ambassador pod가 lb 역할로 이를 받아 외부에 제공

'쿠버네티스' 카테고리의 다른 글

ReplicaSet  (0) 2022.04.04
Controller  (0) 2022.04.03
init container / infra container (pause conatiner)  (0) 2022.03.28
livenessProbe  (0) 2022.03.28
쿠버네티스 명령어 정리  (0) 2022.03.28

init container란?

  • 메인컨테이너를 실행하는데 필요한 환경세팅

  • init 컨테이너가 성공해야 main 컨테이너가 실행됨

    • 또는 컨테이너의 사전 점검

    • 하기와 같이 설정 가능

infra container (pause conatiner)

  • pod를 만들면 자동으로 하나씩 생성되는 컨테이너
  • pod에 대한 ip나 인프라등을 관리하고 생성한다.

'쿠버네티스' 카테고리의 다른 글

Controller  (0) 2022.04.03
static pod / pod 리소스 / pod 변수  (0) 2022.04.03
livenessProbe  (0) 2022.03.28
쿠버네티스 명령어 정리  (0) 2022.03.28
쿠버네티스 yaml 파일과 api 버전  (0) 2022.03.20

self-healing

  • 정상적인 컨테이너로 어플리케이션 서비스를 하는것을 보장

  • 정상적이지 않으면 컨테이너를 restart한다

  • 설정 방법

    • spec에 linessProbe 추가
  • httpGet

    livenessProbe:
    httpGet:
      path:/
      port:80
  • tcpSocket

    livenessProbe:
    tcpSocket:
      port:8080
  • exec

    livenessProbe:
    exec:
      command:
      - ${명령어}

+ Recent posts