์‹ค์Šต ํ™˜๊ฒฝ

  • control plane, worker node1, worker node2
  • docker, kubeadm, kubectl, kubelet ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผํ•จ.
  • ๋ช…๋ น์–ด ์‹คํ–‰ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ํ™•์ธ
    kubectl --help
    

kubectl์ด ๋ญ์•ผ?

  • โ€œ์ฟ ๋ฒ„์•ผ ๋‚˜ ์›น์„œ๋ฒ„ 3๊ฐœ ์‹คํ–‰ํ•ด์ค˜โ€ ํ•  ๋•Œ <- kubectl ๋ช…๋ น์–ด๋กœ k8s์— ์‹คํ–‰ ์š”์ฒญ

kubectl ๋ช…๋ น์–ด ๊ธฐ๋ณธ ๊ตฌ์กฐ

kubectl [command] [TYPE] [NAME] [flags]
  • command : ์ž์›์— ์‹คํ–‰ํ•  ๋ช…๋ น (create, get, delete, edit โ€ฆ)
  • TYPE : ์ž์›์˜ ํƒ€์ž… (node, pod, service โ€ฆ)
  • NAME : ์ž์›์˜ ์ด๋ฆ„
  • flag : ๋ถ€๊ฐ€์ ์œผ๋กœ ์„ค์ •ํ•  ์˜ต์…˜ (โ€“help, -o options โ€ฆ )
    kubectl get pod webserver -o wide
    

kubectl ๋ช…๋ น์–ด ์ž๋™์™„์„ฑ

  • BASH ์‰˜ ๊ธฐ์ค€
    source <(kubectl completion bash)
    source <(kubeadm completion bash)
    
    echo "source <(kubectl completion bash)" >> ~/.bashrc
    echo "source <(kubeadm completion bash)" >> ~/.bashrc
    

kubectl commands

  • kubectl โ€“help
  • kubectl command โ€“help

  • kubectl run <์ž์›์ด๋ฆ„> <์˜ต์…˜>
  • kubectl create -f obj.yaml
  • kubectl apply -f obj.yaml

  • kubectl get <์ž์›์ด๋ฆ„> <๊ฐ์ฒด์ด๋ฆ„>
  • kubectl edit <์ž์›์ด๋ฆ„> <๊ฐ์ฒด์ด๋ฆ„>
  • kubectl describe <์ž์›์ด๋ฆ„> <๊ฐ์ฒด์ด๋ฆ„>

  • kubectl delete pod main

kubectl์˜ ๊ธฐ๋ณธ ๋ช…๋ น์–ด ์‚ฌ์šฉ๋ฒ•

  • kubectl api-resources
  • kubectl ๋„์›€๋ง ๋ณด๊ธฐ
    kubectl --help 
    
    kubectl logs --help
    
  • ์ž‘์—… Node ์ •๋ณด ๋ณด๊ธฐ
    kubectl get nodes
    

๋ช…๋ น์–ด๋ฅผ ํ†ตํ•œ ์‹ค์ „ ์—ฐ์Šต

  • ์ปจํ…Œ์ด๋„ˆ Pod ์ƒ์„ฑ
    $kubectl run webserver --image=nginx:1.14 --port 80
    pod/webserver created
    
    kubectl get pods
    
    kubectl get pods -o wide
    
  • ๋™์ž‘ ์ค‘์ธ ์›น ์„œ๋ฒ„ ํ™•์ธ
    curl ip
    
  • ์ปจํ…Œ์ด๋„ˆ n๊ฐœ๋ฅผ ์‹คํ–‰ํ•ด์ค˜
    $kubectl create deployment mainui --image=httpd --replicas=3
    deployment.apps/mainui created
    
  • ํ™•์ธ
    kubectl get deployment.apps
    kubectl describe deployments.apps mainui
    kubectl get pods
    kubectl get pod mainui-asdadasdfasdf -o wide
    kubectl get pod webserver -o wide
    kubectl get pod webserver -o yaml
    kubectl get pod webserver -o json
    
    
  • ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€๋กœ ์ ‘๊ทผํ•ด์„œ webserver index.html ๋ฐ”๊พธ๊ธฐ
    kubectl exec webserver -it -- /bin/bash
    
  • ๋กœ๊ทธ ํ™•์ธ
    kubectl logs webserver
    
  • ํฌํŠธ ํฌ์›Œ๋”ฉ
    kubectl port-forward webserver 8080:80
    
  • ์‹คํ–‰ ์ค‘์ธ pod์— ๋Œ€ํ•ด ์ˆ˜์ •
    kubectl get deployment.apps
    kubectl edit deployment.apps mainui
    kubectl get pods
    
  • webserver ์‹คํ–‰์ด ๋˜๋Š”์ง€ ์•ˆ๋˜๋Š”์ง€ ํ™•์ธ
    kubectl run webserver --image=nginx1.14 --port 80 --dry-run
    
  • ์‹คํ–‰ ํ•  pod๋ฅผ yaml ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด๋‘๊ธฐ
    kubectl run webserver --image=nginx1.14 --port 80 --dry-run -o yaml > webserver-pod.yaml
    
  • pod ์‚ญ์ œ ๋ฐ ํ™•์ธ
    kubectl delete pod webserver
    
    kubectl get pods
    
    kubectl delete deployments.apps mainui
    
    kubectl get pods
    
  • yaml ํŒŒ์ผ๋กœ pod ์ƒ์„ฑํ•˜๊ธฐ
    kubectl create -f webserver-pod.yaml
    kubectl get pods -o wide