쿠버네티스 기초 kubectl 명령어
# 자동완성기능
일단 kubectl명령어를 사용할 때 탭키로 자동완성이 안되더라.
우분투 환경이다.
echo "source <(kubectl completion bash)" >> ~/.bashrc
echo 'source <(kubeadm completion bash)' >> ~/.bashrc
source ~/.bashrc
이거 두개 치고 시작하샘
++ adm도 추가헀음.
# 일단 pod라는 게 컨테이너를 띄우는 느낌이다.
pod 하나에 여러 컨테이너를 띄울 수도 있고 그렇다는데 뭐 그렇단다.
도커는 그냥 Dockerfile과 컨테이너 띄우는 정도를 알고 쿠버네티스를 배우면 될 것 같다.
암튼 docker run 하듯 배워봐야겠다.
# 약어 보기
kubectl api-resources
# kubectl 명령어 구조
kubectl [command] [TYPE] [NAME] [flags]
양식은 이렇다.
command : delete get 등등 영어로 동사 들어가는 듯
type은 pod node service 등등이 들어감
name은 이름.. 컨테이너 이름 같은 거 들어감
flag는 옵션 같은 거인 듯?
모르는 거 있으면
kubectl [command] --help
얘로 알아보샘
# get nodes
kubectl get nodes
이걸 마스터 노드에서 치면
요래 뜨게 됨
kubectl get nodes 노드이름
얘는
똑같은 형식으로 worker1만 보여줌
# describe node 노드이름
kubectl describe node 노드이름
이렇게 쭈르륵 나오는데..
뭐 자세하게 설명은 그렇고
이렇게 이 노드의 아이피 호스트이름등 꽤나 자세한 정보들을 볼 수 있더라.
참고로 호스트네임 설정 잘해줘야 연결 잘됨
# run
kubectl run 팟이름 --image=이미지이름:이미지태그 --port 포트번호
해당이미지로 pod 띄울 수 있음
근데 이렇게 여러 개 만들어보면
결과가 이렇다.
가용가능한 노드들 중 하나에 랜덤으로? 해준다고 한다.
만약에 노드가 하나 죽으면 살아있는 애들 중에 pod을 띄워준단다.
특정 노드를 정하고 싶으면 selector을 이용해야 한다.
추가적으로 쿠버네티스는 yaml파일로 파드를 만드는 경우가 많기 때문에,
run대신 create명령어를 더 자주 쓰게 된다.
# create
kubectl create -f 야믈파일경로
helllo.yaml파일로 쿠버네티스 명령을 실행하는 거다.
예를 들어
pod생성 yaml파일은
요렇게 생겼다.
요렇게 nginx-pod.yaml파일로 생성한 nginx-pod pod가 생겨났다.
꼭 pod뿐 아니라 다른 것도 가능하다.
이건 namespace관련 yaml파일임.
네임스페이스가 잘 생성된 걸 볼 수 있다.
# get pod
위에서도 봤지만 pod목록을 보여주는 명령어다.
kubectl get pods
웹서버라는 pod가 동작되고 있다.
더 자세히 보려면
kubectl get pods -o wide
좀 더 자세히 볼 수 있음.
저 자세히 보려면 kubectl describe pod 팟이름으로 알아보자
++
kubectl get pod 파드이름 -o yaml
야믈 형식으로 보여줘
json도 되고..
더 응용해서
kubectl get pod 파드이름 -o yaml > text.yaml
kubectl create -f test.yaml
이렇게 pod형식을 얌을형식으로 나온걸 text.yaml파일로 만들고
이 야믈 파일로 파드를 만들 때 쓸 수 있다.
Dockerfile이랑 비슷한 것 같다.
# delete
kubectl delete pod 파드이름
namespace 등등도 지울 수 있다.
++ deploy지우기
kubectl delete deployments.apps 디플로이이름
# exec
kubectl exec 파드이름 -it -- /bin/bash
얘는 나올 때 exit 쳐서 나와도 안 꺼짐.
# logs
kubectl logs 파드이름
로그 보는 거..
실시간은 -f로
# 실행문제 체크하기
kubectl run webserver --image=nginx:latest --port 80 --dry-run
# 실행상태 yaml포맷으로 보여줘
kubectl run webserver --image=nginx:latest --port 80 --dry-run -o yaml
이걸 yaml파일로 저장하면 Dockerfile처럼 만들 수 있음.
파일내용임
++ dd반복 : 지우기
# yaml파일 만들기
kubectl run webserver --image=nginx:latest --port 80 --dry-run -o yaml > webserver-pod.yaml
아까는 이미 존재하는 pod를 yaml파일로 만든 거고
이건 생성 안 한 pod를 그대로 yaml파일로 만든 거임.
# yaml파일로 pod 만들기
kubectl create -f 야믈파일이름
아까 썼던 거고..
# edit
kubecl edit deployment 디플로이이름
드가면 vi에디터가 뜨는데 여기서 원하는거 수정하고 wq누르면 바로 적용됨
난 replicas를 수정했더니
이렇게 바뀌더라.