먼저 실습을 위해 쿠버네티스를 설치하고 Pod를 생성 해보자.
기초 실습
https://brunch.co.kr/@topasvga/2102
1
오브젝트?
쿠버네티스에서 사용하는 속성을 포함해 부르는 단위
예) 파드, 네임스페이스, 볼륨, 서비스, 디플로이먼트, 리플리카 세트
2
파드?
쿠버네티스에서 실행되는 최소 단위.
IP를 가진다.
파드 안에 1개의 컨테이너 또는 2개 의 컨테이너가 사용된다.
3
네임 스페이스?
리소스를 구분하여 관리하는데 사용한다.
3개의 네임스페이스가 사용된다.
기본으로 사용되는 디폴트, 쿠버네티스 시스템에서 사용되는 Kube-system, 컨테이너들이 속해있는 metallb-system
4
볼륨?
파드가 생성될때 사용할수 있는 저장소.
파드가 사라지면 없어지는 임시 저장소이다.
파드가 사라지더라도 저장과 보존이 가능한 볼륨 오브젝트를 통해 생성,사용할수 있도록 설정할수도 있다.
5
서비스?
기존 인프라의 로드밸런서와 같은 역할을 한다.
6
디플로이먼트?
기본 오브젝트에 한계가 있어 좀더 효율적으로 동작할수 있도록 구현된것이 디플로이 먼트 구성이다.
디플로이먼트-- 리플리카세트-----파드 로 구성된다.
디플로이먼트로 파드가 생성되면, 파드 자동 증가 기능을 사용할수 있다.
7
리플리카세트 ?
디플로이먼트로 생성한 파드에 대해 관리하는 오브젝트이다.
디플로이먼트로 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
파드 자체가 문제 생기면 자동 복구해서 항상 동작하도록 보장하는 기능이 있다.
파드를 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
특정 워커 노드 서버가 불안하다.
해서, 특정 워커 노드 서버에 파드를 생성되지 않도록 하고 싶다.
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
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
https://brunch.co.kr/@topasvga/2104
감사합니다.