kubectl [CMD] [TYPE] [NAME] [flags]
실습 :: pod 생성
[root@master ~]# kubectl run webserver1 --image=nginx --port=80
pod/webserver1 created
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
webserver1 1/1 Running 0 16s
[root@master ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
webserver1 1/1 Running 0 23s 10.233.75.2 node2 <none> <none>
실시간 생성 진행 확인
[root@master ~]# kubectl get pod -o wide --watch
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
webserver1 0/1 Pending 0 0s <none> <none> <none> <none>
webserver1 0/1 Pending 0 0s <none> node2 <none> <none>
webserver1 0/1 ContainerCreating 0 0s <none> node2 <none> <none>
webserver1 0/1 ContainerCreating 0 1s <none> node2 <none> <none>
webserver1 1/1 Running 0 9s 10.233.75.2 node2 <none> <none>
생성 동작 과정 확인
[root@master ~]# kubectl describe pod webserver1
···
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 2m52s default-scheduler Successfully assigned default/webserver1 to node2
Normal Pulling 2m51s kubelet Pulling image "nginx"
Normal Pulled 2m44s kubelet Successfully pulled image "nginx" in 7.683609093s (7.683651672s including waiting)
Normal Created 2m44s kubelet Created container webserver1
Normal Started 2m43s kubelet Started container webserver1
▶ scheduler : 특정 노드에 작업 할당
▶ kubelet : 이미지 불러오기 → 컨테이너 생성 → 컨테이너 실행
실습 :: deploy 생성
[root@master ~]# kubectl create deployment webserver2 --image=httpd --replicas=3
deployment.apps/webserver2 created
[root@master ~]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
webserver2 3/3 3 3 2m15s
실습 :: portforwarding
[root@master ~]# kubectl port-forward webserver1 8080:80 &
[1] 219892
[root@master ~]# Forwarding from 127.0.0.1:8080 -> 80
Forwarding from [::1]:8080 -> 80
[root@master ~]# curl <http://localhost:8080>
Handling connection for 8080
Test Web Page
[root@master ~]# ps -ef | grep 'kubectl port-forward'
root 219892 184658 0 13:51 pts/0 00:00:00 kubectl port-forward webserver1 8080:80
root 220708 184658 0 13:52 pts/0 00:00:00 grep --color=auto kubectl port-forward
[root@master ~]# kill -9 219892
[root@master ~]# ps -ef | grep 'kubectl port-forward'
root 220854 184658 0 13:52 pts/0 00:00:00 grep --color=auto kubectl port-forward
[1]+ 죽었음 kubectl port-forward webserver1 8080:80
실습 :: deploy 수정
[root@master ~]# kubectl get deployments.apps
NAME READY UP-TO-DATE AVAILABLE AGE
webserver2 3/3 3 3 26m
[root@master ~]# kubectl edit deployments.apps webserver2
deployment.apps/webserver2 edited # replicas : 3 ▶ 5
[root@master ~]# kubectl get deployments.apps
NAME READY UP-TO-DATE AVAILABLE AGE
webserver2 5/5 5 5 26m
실습 :: yaml 파일로 pod 생성
--dry-run=client실제 pod를 실행하지 않고 구동됐을 때의 결과 보여줌
[root@master ~/kube/04]# kubectl run webserver3 --image=nginx --port=80 --dry-run=client -o yaml > webserver3.yaml
[root@master ~/kube/04]# ls
'K8S Test' webserver3.yaml
[root@master ~/kube/04]# cat webserver3.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: webserver3
name: webserver3
spec:
containers:
- image: nginx
name: webserver3
ports:
- containerPort: 80
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
[root@master ~/kube/04]# vi webserver3.yaml # 편집
---
apiVersion: v1
kind: Pod
metadata:
labels:
run: webserver3
name: webserver3
spec:
containers:
- image: nginx
name: webserver3
ports:
- containerPort: 80
---
[root@master ~/kube/04]# kubectl apply -f webserver3.yaml
pod/webserver3 created
[root@master ~/kube/04]# kubectl get pod
NAME READY STATUS RESTARTS AGE
webserver1 1/1 Running 0 39m
webserver2-78d9985fc6-bl9sl 1/1 Running 0 32m
webserver2-78d9985fc6-h47dv 1/1 Running 0 6m14s
webserver2-78d9985fc6-kq4q6 1/1 Running 0 32m
webserver2-78d9985fc6-sctmh 1/1 Running 0 32m
webserver2-78d9985fc6-wlnfn 1/1 Running 0 6m14s
webserver3 1/1 Running 0 5s