- run, create : 파드와 디플로이먼트 생성
- get, exec : 생성된 파드 현황 조회 및 파드 내 bash 스크립트 실행 (파드 접속)
- scale, delete : 파드의 수량 증가/감소 및 오브젝트 삭제
- create namespace : 네임 스페이스 생성
[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>