brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Jan 11. 2022

NCP 5탄-쿠버네티스 오브젝트 -4/9


먼저 실습을 위해  쿠버네티스를 설치하고 Pod를 생성 해보자.



기초 실습

https://brunch.co.kr/@topasvga/2102



<1> 쿠버네티스 오프젝트란?

<2> 리플리카세트로 파드수 증가 시키기

<3> 파드의 숫자 보장 기능

<4> 특정 워커노드는 사용 안하기

<5> deploy 삭제

<6> 다음은 - 81. 롤링 업데이트와 원복 - 5/10



<1> 쿠버네티스 오프젝트란?


1

오브젝트?

쿠버네티스에서 사용하는 속성을 포함해 부르는 단위

예)  파드, 네임스페이스, 볼륨, 서비스, 디플로이먼트, 리플리카 세트


2

파드?

쿠버네티스에서 실행되는 최소 단위. 

IP를 가진다.

파드 안에 1개의 컨테이너 또는 2개 의 컨테이너가 사용된다.


3

네임 스페이스?

리소스를 구분하여 관리하는데 사용한다.

3개의 네임스페이스가 사용된다.

기본으로 사용되는 디폴트, 쿠버네티스 시스템에서 사용되는 Kube-system, 컨테이너들이 속해있는 metallb-system


4

볼륨?

파드가 생성될때 사용할수 있는 저장소.

파드가 사라지면 없어지는 임시 저장소이다.

파드가 사라지더라도 저장과 보존이 가능한 볼륨 오브젝트를 통해 생성,사용할수 있도록 설정할수도 있다.


5

서비스?

기존 인프라의 로드밸런서와 같은 역할을 한다.


6

디플로이먼트?

기본 오브젝트에 한계가 있어 좀더 효율적으로 동작할수 있도록 구현된것이 디플로이 먼트 구성이다.

디플로이먼트-- 리플리카세트-----파드 로 구성된다.

디플로이먼트로 파드가 생성되면,  파드  자동 증가 기능을 사용할수 있다.


7

리플리카세트 ?

디플로이먼트로 생성한 파드에 대해 관리하는 오브젝트이다.




<2> 리플리카세트로 파드수 증가 시키기



디플로이먼트로 Pod를 생성해서 가능한것이다.


1

리플리카세트로 파드수 증가 시키기?


변경전

(admin-k8s:default) root@k8s-m:~# k get pods

NAME                        READY   STATUS    RESTARTS   AGE

dep-nginx-75ddff596-2qtk2   1/1     Running   0          52m

nginx-pod                   1/1     Running   0          56m



리플리카세트로 파드수  증가 시키기?

디플로이먼트로 Pod를 생성해서 가능한것이다.


변경후

k scale deployment dep-nginx --replicas=3


(admin-k8s:default) root@k8s-m:~# k scale deployment dep-nginx --replicas=3

deployment.apps/dep-nginx scaled


k get pods


(admin-k8s:default) root@k8s-m:~# k get pods

NAME                        READY   STATUS    RESTARTS   AGE

dep-nginx-75ddff596-2qtk2   1/1     Running   0          177m

dep-nginx-75ddff596-ll4jp   1/1     Running   0          7s

dep-nginx-75ddff596-zx8vg   1/1     Running   0          7s



2

단일로 생성한 nginx-pod 로  파드수 증가가 가능한가?

이건 안된다 


k scale pod nginx-pod --replicas=2


(admin-k8s:default) root@k8s-m:~# k scale pod nginx-pod --replicas=2

Error from server (NotFound): the server could not find the requested resource


3

디플로이 먼트로 생성된 파드만 리플리카세트로 파드수 증가가 가능하다.

아래만 가능 


k get deploy,pods


(admin-k8s:default) root@k8s-m:~# k get deploy,pods

NAME                        READY   UP-TO-DATE   AVAILABLE   AGE

deployment.apps/dep-nginx   3/3     3            3           3h


NAME                            READY   STATUS    RESTARTS   AGE

pod/dep-nginx-75ddff596-2qtk2   1/1     Running   0          3h

pod/dep-nginx-75ddff596-ll4jp   1/1     Running   0          3m19s

pod/dep-nginx-75ddff596-zx8vg   1/1     Running   0          3m19s





<3> 파드의 숫자 보장 기능


파드 자체가 문제 생기면 자동 복구해서 항상 동작하도록 보장하는 기능이 있다.

파드를 1개 삭제해서 제대로 동작하는지 확인해 보자


1

현재 파드수 확인 

dep-nginx- 파드 3개


k get pods


(admin-k8s:default) root@k8s-m:~# k get pods

NAME                        READY   STATUS    RESTARTS   AGE

dep-nginx-75ddff596-2qtk2   1/1     Running   0          3h27m

dep-nginx-75ddff596-ll4jp   1/1     Running   0          29m

dep-nginx-75ddff596-zx8vg   1/1     Running   0          29m




2

1개 삭제 해봄

k delete pod dep-nginx-75ddff596-ll4jp


(admin-k8s:default) root@k8s-m:~# k delete pod dep-nginx-75ddff596-ll4jp

pod "dep-nginx-75ddff596-ll4jp" deleted


3

다시 확인

dep-nginx-  파드 3개로 유지되고 있음.  

삭제한 파드대신 새로 생긴 Pod가  15초 경과 함


k get pods


(admin-k8s:default) root@k8s-m:~# k get pods

NAME                        READY   STATUS    RESTARTS   AGE

dep-nginx-75ddff596-2qtk2   1/1     Running   0          3h27m

dep-nginx-75ddff596-k5lkn   1/1     Running   0          15s

dep-nginx-75ddff596-zx8vg   1/1     Running   0          30m

nginx-pod                   1/1     Running   0          3h31m


4

삭제하는법은?

디플로이먼트를 삭제해야 한다!


 k get deploy,pods


(admin-k8s:default) root@k8s-m:~# k get deploy,pods

NAME                        READY   UP-TO-DATE   AVAILABLE   AGE

deployment.apps/dep-nginx   3/3     3            3           3h30m


NAME                            READY   STATUS    RESTARTS   AGE

pod/dep-nginx-75ddff596-2qtk2   1/1     Running   0          3h30m

pod/dep-nginx-75ddff596-k5lkn   1/1     Running   0          2m29s

pod/dep-nginx-75ddff596-zx8vg   1/1     Running   0          32m



5

k delete deploy dep-nginx


dep-nginx-  파드들 모두 없어짐


k get pods,deploy

(admin-k8s:default) root@k8s-m:~# k get pods,deploy

NAME            READY   STATUS    RESTARTS   AGE

pod/nginx-pod   1/1     Running   0          3h34m




<4> 특정 워커 노드는 사용 안하기


특정 워커 노드 서버가 불안하다.

해서, 특정 워커 노드 서버에 파드를 생성되지 않도록 하고 싶다.



1

k create deployment dep-nginx --image=nginx


k scale deployment dep-nginx --replicas=4



2

k get pods -o=custom-columns=NAME:.metadata.name,STATUS:,NODE:.spec.nodeName


(admin-k8s:default) root@k8s-m:~# k get pods -o=custom-columns=NAME:.metadata.name,STATUS:,NODE:.spec.nodeName


NAME                        STATUS   NODE

dep-nginx-75ddff596-cxxzq   <none>   k8s-w2

dep-nginx-75ddff596-fhkxx   <none>   k8s-w1

dep-nginx-75ddff596-pzlcp   <none>   k8s-w2

dep-nginx-75ddff596-ws65r   <none>   k8s-w2



3

k8s-w1  서버가 불안 하다.

앞으로 파드는 k8s-w2에 생성하고자 한다.

k8s-w1 서버의 현재 상태를 보존하자


 k cordon k8s-w1


(admin-k8s:default) root@k8s-m:~# k cordon k8s-w1

node/k8s-w1 cordoned


(admin-k8s:default) root@k8s-m:~# k get nodes

NAME     STATUS                     ROLES                  AGE    VERSION

k8s-m    Ready                      control-plane,master   3d5h   v1.21.4

k8s-w1   Ready,SchedulingDisabled   <none>                 3d5h   v1.21.4

k8s-w2   Ready                      <none>                 3d5h   v1.21.4



4

사용자가 늘어 pod를 10개로 늘리자~


k scale deployment dep-nginx --replicas=10


(admin-k8s:default) root@k8s-m:~# k scale deployment dep-nginx --replicas=10

deployment.apps/dep-nginx scaled



5

모든 신규 파드는 k8s-w2에 생성 되었다


k get pods -o=custom-columns=NAME:.metadata.name,STATUS:,NODE:.spec.nodeName


(admin-k8s:default) root@k8s-m:~# k get pods -o=custom-columns=NAME:.metadata.name,STATUS:,NODE:.spec.nodeName


NAME                        STATUS   NODE

dep-nginx-75ddff596-82j6b   <none>   k8s-w2

dep-nginx-75ddff596-c54df   <none>   k8s-w2

dep-nginx-75ddff596-cdjm7   <none>   k8s-w2

dep-nginx-75ddff596-cxxzq   <none>   k8s-w2

dep-nginx-75ddff596-fhkxx   <none>   k8s-w1

dep-nginx-75ddff596-g8hw8   <none>   k8s-w2

dep-nginx-75ddff596-hd48v   <none>   k8s-w2

dep-nginx-75ddff596-pzlcp   <none>   k8s-w2

dep-nginx-75ddff596-ws65r   <none>   k8s-w2

dep-nginx-75ddff596-x2sjq   <none>   k8s-w2

nginx-pod                   <none>   k8s-w2




6

해제

k uncordon k8s-w1


(admin-k8s:default) root@k8s-m:~# k uncordon k8s-w1

node/k8s-w1 uncordoned


(admin-k8s:default) root@k8s-m:~# k get nodes

NAME     STATUS   ROLES                  AGE    VERSION

k8s-m    Ready    control-plane,master   3d5h   v1.21.4

k8s-w1   Ready    <none>                 3d5h   v1.21.4

k8s-w2   Ready    <none>                 3d5h   v1.21.4




7

15개로 늘려 확인


k scale deployment dep-nginx --replicas=15


(admin-k8s:default) root@k8s-m:~# k scale deployment dep-nginx --replicas=15

deployment.apps/dep-nginx scaled



k get pods -o=custom-columns=NAME:.metadata.name,STATUS:,NODE:.spec.nodeName


w1 에도 파드가 할당됨

k get pods -o=custom-columns=NAME:.metadata.name,STATUS:,NODE:.spec.nodeName


(admin-k8s:default) root@k8s-m:~# k get pods -o=custom-columns=NAME:.metadata.name,STATUS:,NODE:.spec.nodeName

NAME                        STATUS   NODE

dep-nginx-75ddff596-82j6b   <none>   k8s-w2

dep-nginx-75ddff596-9kzmx   <none>   k8s-w1

dep-nginx-75ddff596-c54df   <none>   k8s-w2

dep-nginx-75ddff596-cdjm7   <none>   k8s-w2

dep-nginx-75ddff596-cxxzq   <none>   k8s-w2

dep-nginx-75ddff596-fhkxx   <none>   k8s-w1

dep-nginx-75ddff596-g8hw8   <none>   k8s-w2

dep-nginx-75ddff596-hd48v   <none>   k8s-w2

dep-nginx-75ddff596-hrt82   <none>   k8s-w1

dep-nginx-75ddff596-pzlcp   <none>   k8s-w2

dep-nginx-75ddff596-rqpcr   <none>   k8s-w1

dep-nginx-75ddff596-ws65r   <none>   k8s-w2

dep-nginx-75ddff596-x2sjq   <none>   k8s-w2

dep-nginx-75ddff596-zb5sf   <none>   k8s-w1

dep-nginx-75ddff596-zxxnz   <none>   k8s-w1

nginx-pod                   <none>   k8s-w2




<5> deploy 삭제


1

deploy 삭제


k delete deploy dep-nginx


(admin-k8s:default) root@k8s-m:~# k delete deploy dep-nginx



2

single pod 삭제


(admin-k8s:default) root@k8s-m:~# k delete pod nginx-pod

pod "nginx-pod" deleted




<6>  81. 롤링 업데이트와 원복 


https://brunch.co.kr/@topasvga/2104




감사합니다.

        

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari