k8s/concept

쿠버네티스 기초 kubectl 명령어

부엉이사장 2023. 11. 20. 19:53

# 자동완성기능

일단 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를 수정했더니

이렇게 바뀌더라.

 

'k8s > concept' 카테고리의 다른 글

pod/ static pod & resource & 환경변수  (0) 2023.11.27
pod/ liveness-probe(self-healing)  (0) 2023.11.27
pod/ flow & init container & infra container  (0) 2023.11.26
pod/ 멀티파드, yaml파일 생성  (0) 2023.11.26
쿠버네티스 namespace  (0) 2023.11.23