1 분 소요

POD

  • 애플리케이션의 단일 인스턴스
  • 가장 작은 개체
  • 단일 pod에 여러 컨테이너가 올라 갈 수 있음
    • 동일한 네트워크, 동일한 스토리지
kubectl run nginx --image {image}
apiVersion: kube API 버전
kind: 만들려는 객체의 유형
metadata: 이름, 레이블 개체등 개체 데이터(사전)
  name: myapp-pod
  lables: 필터링
    app: myapp
    type: front-end
sepc: 사양
  containers: [List/Array]
    - name: nginx
      image: nginx
k create -f {}.yaml
k run nginx --image nginx
k describe po {pod}

Replicaset

  • 단일포드의 여러인스턴스는 고가용성을 제공

  • 로드밸런싱 & 스캐일링
  • 단일 파드여도 자동 회복 기능을 제공

  • 서로 다른 노드의 여러 pod간 부하를 분산하고 애플리케이션을 확장
  • Replicas <= 100
Repication Controller Replica Set
오래 됨 새로운 권장방법
Selector X Selector O

Replication Controller

apiVersion: v1
kind: RelicationController
metadata:
  name: myapp-rc
  labels:
    app: myapp
    type: front-end
spec:
  teplate:
    # 아래부분은 파드에 metadata부분과 동일하다
    metadata:
    name: mypod-pod
    lables:
      app: myapp
      type: front-end
    spec:
      continaers:
        - name: nginx-controller
          image: nginx
replicas: 100

Replicat Set

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  # 케이스에 따라 레플리카를 수정한다.
  replicas: 3
  selector:
    matchLabels:
      tier: frontend
  template:
    metadata:
      labels:
        tier: frontend
    spec:
      containers:
        - name: php-redis
          image: gcr.io/google_samples/gb-frontend:v3

Label Selector

파드가 많아지면 식별하기 어렵고 replicasetselector를 지정하여 모니터링할 부분을 알고 있게 만들어 쉽게 관리할 수 있음.

sacle 조정 명령어

복제본 세트 업데이트

kubectl replace -f replicaset-definition.yml

복제 매개 변수 사용

kubectl scale --replicas=6 -f replicaset-definition.yml
kubectl scale --replicas=6 replicaset myapp-replicaset

alias

k scale --replicas=6 rs myapp-repicaset

Deployment

  • deployment > replicaset > pod

deployment 안에 replicaset이 있으며 그 안에 pod가 있다.

  • 인스턴스를 여러개 구성
  • 인스턴스를 업그레이드 가능
  • 롤링 업데이트, 변경사항 실행 취소, 일시중지 및 재개
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  # 케이스에 따라 레플리카를 수정한다.
  replicas: 3
  selector:
    matchLabels:
      tier: frontend
  template:
    metadata:
      labels:
        tier: frontend
    spec:
      containers:
        - name: php-redis
          image: gcr.io/google_samples/gb-frontend:v3

alias

# k get all로 보면 앞에 alias를 확인 할 수 있다.
k get deploy

TIP

파일을 생성하여 만들기는 시험떄 어려울 수 있기에 다음과 같이 run 명령어를 사용하여 yaml파일을 가져올 수 있다.

  • pod
k run nginx --image=nginx --dry-run=client -o yaml > pod.yaml
  • deployment
k create depoly --image=nginx --dry-run=client --replicas-o yaml > deploy_sample.yaml

댓글남기기