kubernets

 

POD Design 에 대해서 정리해보도록 하자

 

우선 처음 POD Design 으로 Labels 에 대한 설명이다.

한마디로 Labels 를 잘 활용하라는 내용이었다.. (뭔가 더 설명할 만한 것이..)

 

아래와 같이 labels 를 통해 business 가 뭔지, enviroment 가 뭔지, tier 가 뭔지 설정해서 쉽게 파드를 알아볼 수 있게 설계하였다.

 

apiVersion: v1
kind: Pod
metadata:
  generateName: app-1-
  labels:
    bu: finance
    env: dev
    tier: frontend

 

이후 k get pods --selector 키=값 을 사용해서 아래와 같이 사용이 가능하다.

왠지 이런 명령어가 있을 것 같았는데 자연스럽게 알게 되었다.

 

# --selector 를 통해 labels 기반으로 검색이 가능하다.
$ k get pods --selector env=dev

# 여러개 일때
$ k get pods --selector env=dev,bu=finance,tier=front-end

 

또 전에 배웠던 개념이지만

ReplicaSet, Deployment 리소스를 가진 매니페스트는 matchLabels 에 해당하는 Labels 가 템플릿 안에 있어야 한다.

matchLabels 에 해당하는 컨테이너 만을 관리하기 때문이다.

 

apiVersion: apps/v1
kind: ReplicaSet
metadata:
   name: replicaset-1
spec:
   replicas: 2
   selector:
      matchLabels:
        tier: front-end
   template:
     metadata:
       labels:
        tier: front-end
     spec:
       containers:
       - name: nginx
         image: nginx

 

다음 강좌는 Deployment 와 연관이 있는데, 그다지 많은 내용이 없어 명령어만 정리해본다면

 

# deployment 생성
# --record : rollout 할때 history에 기록한다.
k create -f deployment-definition.yml --record

# deployment 조회
k get deployments

# deployment 생성 및 업데이트
# --record : rollout 할때 history에 기록한다.
k apply -f deployment-definition.yml

# 이미지 변경
k set image deployment/myapp-deployment nginx=nginx:1.9.1

# 롤링배포 상태 및 기록
k rollout status deployment/myapp-deployment
k rollout history deployment/myapp-deployment

# 롤링업데이트 이후에 undo 를 하게되면 이전 버전으로 롤백이 된다.
k rollout undo deployment/myapp-deployment

 

Deployment 는 StrategyType를 따로 설정하지 않으면 기본적으로 롤링업데이트(RollingUpdate) 방식을 사용하여 배포한다. 

 

이번 강좌는 조금 쉬어가는 코너로 간단하게 정리하고 넘어가도록 한다.. ㅎㅎ