[k8s] kubectl 주요 명령어

곽동규·2024년 6월 15일
  • run, create : 파드와 디플로이먼트 생성
  • get, exec : 생성된 파드 현황 조회 및 파드 내 bash 스크립트 실행 (파드 접속)
  • scale, delete : 파드의 수량 증가/감소 및 오브젝트 삭제
  • create namespace : 네임 스페이스 생성

Nginx 파드 실행과 배시 실행

[root@k8s-master01 ~]# kubectl run nginx --image=nginx

[root@k8s-master01 ~]# kubectl get pod -o wide
NAME    READY   STATUS    RESTARTS   AGE    IP            NODE           NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          103s   10.1.69.195   k8s-worker02   <none>           <none>

이름만 변경하여 실행
nginx, nginx01 2개의 파드 실행. 각 파드는 서로 다른 IP 주소를 가지게 된다.

[root@k8s-master01 ~]# kubectl run nginx01 --image=nginx
pod/nginx01 created

[root@k8s-master01 ~]# kubectl get pod -o wide
NAME      READY   STATUS    RESTARTS   AGE     IP            NODE           NOMINATED NODE   READINESS GATES
nginx     1/1     Running   0          2m55s   10.1.69.195   k8s-worker02   <none>           <none>
nginx01   1/1     Running   0          5s      10.1.69.196   k8s-worker02   <none>           <none>

접속

[root@k8s-master01 ~]# kubectl exec -it nginx /bin/bash

root@nginx:/# apt -y update && apt -y install procps

root@nginx:/# ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.0  11404  7424 ?        Ss   06:22   0:00 nginx: master process nginx -g daemon off;
nginx         29  0.0  0.0  11868  3048 ?        S    06:22   0:00 nginx: worker process
nginx         30  0.0  0.0  11868  3048 ?        S    06:22   0:00 nginx: worker process
nginx         31  0.0  0.0  11868  3048 ?        S    06:22   0:00 nginx: worker process
nginx         32  0.0  0.0  11868  3048 ?        S    06:22   0:00 nginx: worker process
root          33  0.0  0.0   4192  3328 pts/0    Ss   06:28   0:00 /bin/bash
root         224  100  0.0   8100  4224 pts/0    R+   06:29   0:00 ps aux

디플로이먼트 생성

{디플로이먼트 이름} + {해쉬값} 으로 파드 이름이 생성 됨

[root@k8s-master01 ~]# kubectl create deployment httpd --image=httpd

[root@k8s-master01 ~]# kubectl get pod -o wide
NAME                    READY   STATUS    RESTARTS   AGE     IP            NODE           NOMINATED NODE   READINESS GATES
httpd-d7fd96647-rfj6w   1/1     Running   0          32s     10.1.79.67    k8s-worker01   <none>           <none>
nginx                   1/1     Running   0          11m     10.1.69.195   k8s-worker02   <none>           <none>
nginx01                 1/1     Running   0          8m42s   10.1.69.196   k8s-worker02   <none>           <none>

scale 명령으로 파드 수량 지정 (10개 -> 1개)
실시간으로 10개의 httpd 파드까지 늘어나는 것을 확인할 수 있다.

[root@k8s-master01 ~]# kubectl scale deployment httpd --replicas 10
deployment.apps/httpd scaled

[root@k8s-master01 ~]# kubectl get pod -o wide
NAME                    READY   STATUS              RESTARTS   AGE     IP            NODE           NOMINATED NODE   READINESS GATES
httpd-d7fd96647-2tdmv   0/1     ContainerCreating   0          5s      <none>        k8s-worker02   <none>           <none>
httpd-d7fd96647-6n9lq   0/1     ContainerCreating   0          5s      <none>        k8s-worker02   <none>           <none>
httpd-d7fd96647-9fngb   0/1     ContainerCreating   0          5s      <none>        k8s-worker01   <none>           <none>
httpd-d7fd96647-k9r5j   0/1     ContainerCreating   0          5s      <none>        k8s-worker02   <none>           <none>
httpd-d7fd96647-m8pdv   0/1     ContainerCreating   0          5s      <none>        k8s-worker01   <none>           <none>
httpd-d7fd96647-mjjmc   1/1     Running             0          5s      10.1.79.68    k8s-worker01   <none>           <none>
httpd-d7fd96647-rfj6w   1/1     Running             0          3m40s   10.1.79.67    k8s-worker01   <none>           <none>
httpd-d7fd96647-stscc   0/1     ContainerCreating   0          5s      <none>        k8s-worker01   <none>           <none>
httpd-d7fd96647-xlwdd   0/1     ContainerCreating   0          5s      <none>        k8s-worker02   <none>           <none>
httpd-d7fd96647-xw6w5   0/1     ContainerCreating   0          5s      <none>        k8s-worker02   <none>           <none>
nginx                   1/1     Running             0          14m     10.1.69.195   k8s-worker02   <none>           <none>
nginx01                 1/1     Running             0          11m     10.1.69.196   k8s-worker02   <none>           <none>

1개의 파드로 축소

[root@k8s-master01 ~]# kubectl scale deployment httpd --replicas 1
deployment.apps/httpd scaled


[root@k8s-master01 ~]# kubectl get pod -o wide
NAME                    READY   STATUS        RESTARTS   AGE    IP            NODE           NOMINATED NODE   READINESS GATES
httpd-d7fd96647-6n9lq   0/1     Terminating   0          92s    <none>        k8s-worker02   <none>           <none>
httpd-d7fd96647-9fngb   0/1     Terminating   0          92s    10.1.79.69    k8s-worker01   <none>           <none>
httpd-d7fd96647-k9r5j   0/1     Terminating   0          92s    <none>        k8s-worker02   <none>           <none>
httpd-d7fd96647-m8pdv   0/1     Terminating   0          92s    10.1.79.70    k8s-worker01   <none>           <none>
httpd-d7fd96647-rfj6w   1/1     Running       0          5m7s   10.1.79.67    k8s-worker01   <none>           <none>
httpd-d7fd96647-xlwdd   0/1     Terminating   0          92s    <none>        k8s-worker02   <none>           <none>
nginx                   1/1     Running       0          16m    10.1.69.195   k8s-worker02   <none>           <none>
nginx01                 1/1     Running       0          13m    10.1.69.196   k8s-worker02   <none>           <none>


[root@k8s-master01 ~]# kubectl get pod -o wide
NAME                    READY   STATUS    RESTARTS   AGE    IP            NODE           NOMINATED NODE   READINESS GATES
httpd-d7fd96647-rfj6w   1/1     Running   0          5m9s   10.1.79.67    k8s-worker01   <none>           <none>
nginx                   1/1     Running   0          16m    10.1.69.195   k8s-worker02   <none>           <none>
nginx01                 1/1     Running   0          13m    10.1.69.196   k8s-worker02   <none>           <none>

삭제
파드를 삭제 했지만 확인해보면 새로운 해쉬값으로 새로 생성된 것을 볼 수 있다.
이는 디플로이먼트로 httpd를 생성했고, 디플로이먼트는 속성으로 (replicas=1) 을 지정했기 때문이다.

[root@k8s-master01 ~]# kubectl delete pod httpd-d7fd96647-rfj6w
pod "httpd-d7fd96647-rfj6w" deleted


[root@k8s-master01 ~]# kubectl get pod -o wide
NAME                    READY   STATUS              RESTARTS   AGE   IP            NODE           NOMINATED NODE   READINESS GATES
httpd-d7fd96647-wfclm   0/1     ContainerCreating   0          3s    <none>        k8s-worker01   <none>           <none>
nginx                   1/1     Running             0          19m   10.1.69.195   k8s-worker02   <none>           <none>
nginx01                 1/1     Running             0          16m   10.1.69.196   k8s-worker02   <none>           <none>

디플로이먼트에서 지정한 파드 수량과 실행중인 파드 수량

[root@k8s-master01 ~]# kubectl get deployments.apps
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
httpd   1/1     1            1           10m

디플로이먼트 리소스 삭제로 진행하면 된다.

[root@k8s-master01 ~]# kubectl delete deployments.apps httpd
deployment.apps "httpd" deleted

[root@k8s-master01 ~]# kubectl get pod -o wide
NAME      READY   STATUS    RESTARTS   AGE   IP            NODE           NOMINATED NODE   READINESS GATES
nginx     1/1     Running   0          22m   10.1.69.195   k8s-worker02   <none>           <none>
nginx01   1/1     Running   0          20m   10.1.69.196   k8s-worker02   <none>           <none>

0개의 댓글