Dev./Kubernetes & Helm

Kubernetes: 리소스 생성해보기

Ivan'show 2023. 9. 15.
728x90
반응형

쿠버네티스는 공식문서 한글화가 굉장히 잘 되어 있는 듯 하다.

Mission: replication controller / image: teacherssamko/simple-web:v1 / replicas: 3

https://kubernetes.io/ko/docs/concepts/workloads/controllers/replicationcontroller/
# code
apiVersion: v1
kind: ReplicationController
metadata:
  name: test
spec:
  replicas: 3
  selector:
    app: test
  template:
    metadata:
      name: test
      labels:
        app: test
    spec:
      containers:
      - name: test
        image: teacherssamko/simple-web:v1
        ports:
        - containerPort: 8000
k create -f test-rc.yaml
k get rc

#
kimminhyeok@Ivans-Mac k8s % k get rc
NAME   DESIRED   CURRENT   READY   AGE
test   3         3         3       6m16s

Mission: pods는 남겨둔 채 replication controller만 지우기

https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#deleting-only-a-replicationcontroller
k delete rc test --cascade=orphan
# result
kimminhyeok@Ivans-Mac k8s % k get po
NAME         READY   STATUS    RESTARTS   AGE
test-85hbx   1/1     Running   0          9m24s
test-kh8x4   1/1     Running   0          9m24s
test-skbgz   1/1     Running   0          9m24s

kimminhyeok@Ivans-Mac k8s % k get rc
No resources found in default namespace.

rc 는 지워지지만 파드들은 정상적으로 실행중

rc 가 지워지므로서 각 파드들은 관리가 되고 있지 않게 되었다. 이번에는 replica set 을 이용해서 한번 관리해 보자

Mission: replicaset으로 기존 pods 관리

https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/

관리되고 있지 않은 파드들의 레이블 정보를 selector.spec 에 적어주면 먼저 탐색하면서 랜덤으로 레플리케이션 갯수만큼 가져와 관리하게 되고 같은 레이블의 초과되는 부분들은 삭제하게 된다.

이 때 유저들은 1초 미만의 중단을 경험하게 된다.

# create rs yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: test
  labels:
    app: test
spec:
  # 케이스에 따라 레플리카를 수정한다.
  replicas: 3
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
      - name: test
        image: teacherssamko/simple-web:v1
        ports:
          - containerPort: 8000
k create -f test-rs.yaml
# result
kimminhyeok@Ivans-Mac k8s % k get po
NAME         READY   STATUS    RESTARTS   AGE
test-85hbx   1/1     Running   0          22m
test-kh8x4   1/1     Running   0          22m
test-skbgz   1/1     Running   0          22m

kimminhyeok@Ivans-Mac k8s % k get rs
NAME   DESIRED   CURRENT   READY   AGE
test   3         3         3       9s

추가적으로 생성되지 않고 관리되고 있지 않던 app=test 레이블을 가진 파드들이 포함되어서 관리되기 시작한다.

Mission: replicas 4로 변경

scale: rs - test

k scale --replicas 4 rs test
kimminhyeok@Ivans-Mac k8s % k get po --show-labels      
NAME         READY   STATUS    RESTARTS   AGE     LABELS
test-85hbx   1/1     Running   0          35m     app=test
test-kh8x4   1/1     Running   0          35m     app=test
test-skbgz   1/1     Running   0          35m     app=test
test-ss6qg   1/1     Running   0          3m55s   app=test

Mission: review-probe.yaml / replicaset / random / liveness-probe 설정

기존에 있는 rs 코드에 livenessProbe 를 추가해서 상태관리를 해준다.

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: review-probe
  labels:
    app: test
spec:
  # 케이스에 따라 레플리카를 수정한다.
  replicas: 3
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
      - name: test
        image: teacherssamko/simple-web:unhealthy
        ports:
          - containerPort: 8000
        livenessProbe:
          httpGet:
            path: /
            port: 8000
          initialDelaySeconds: 3
          periodSeconds: 3
728x90
반응형

'Dev. > Kubernetes & Helm' 카테고리의 다른 글

Kubernetes: ConfigMap  (0) 2023.09.18
Kubernetes: svc - pod 구조 이해  (0) 2023.09.17
Kubernetes: 서비스, 파드의 관리자  (0) 2023.09.16
Kubernetes: 명령어와 익숙해지기  (0) 2023.09.15
Kubernetes: Intro  (0) 2023.09.12

댓글