Development/k8s

[따배쿠] 기본 명령어 학습하기

곽진돔 2024. 2. 13. 23:59

자동 완성

  • 약어 또는 용어의 앞글자만 쓰고 탭키를 누르면 자동 완성된다.
  • po,pod,pods 모두 동일하게 파드에 동작한다.
kubectl get po # Po만 입력 후탭을 입력하면 자동완성됨.
kubectl get po
kubectl get pod
kubectl get pods

 

kubectl

큐브씨티엘 또는 큐브 컨트롤이라고 읽는다.

쿠버네티스 클러스터에 명령을 내리는 CLI 이다.

 

쿠버네티스 명령어 도움말

각각의 명령어 사용법과 추가 옵션을 설명해준다.

kubectl --help
kubectl [명령어] --help # 리눅스와 동일하다.

 

노드

작업 Node 정보보기

노드 정보를 조회할 때는 아래 명령어를 입력한다.

# 정보를 조회할 땐 get
# 현재 설치된 노드들이 조회됨.
kubectl get nodes # no 입력 후 탭 누르면 자동완성

# 자세한 정보 조회
kubectl get nodes -o wide

# 마스터 정보에 대해 자세히 조회하고 싶을 때: 노드에 대한 상세 정보 조회
# OS, 메모리와 생성가능한 파드 등에 대해 조회할 수 있음.
kubectl describe node master.example.com

 

파드

  • run: 컨테이너 파드를 만드는 명령어
# 웹 서버 프로그램은 프로그램이 실행되면서 80번 포트를 열어서 
# 클라이언트 커넥션이 들어오기를 대기(Listen)하는 프로그램
# 대시가 하나일 경우 (-) 시스템 파이브 계열 
# 대시가 두개일 경우 DS계열 --help, --port, --image
# 띄어쓰기를 기준으로 여러개 옵션 줄 수 있음. 띄어쓰기 기준으로 첫번째 플래그, 두번째 플래그
kubectl run webserver --image=nginx:1.14 --port 80
kubectl get pods
# ContainerCreatin...

# 생성 중인 컨테이너 파드에 대해 상세히 조회하려면 describe 명령어 사용
kubectl describe pod webserver

# 자세한 정보 조회
kubectl get nodes -o wide # IP까지 조회
# NODE: 현재 실행 중인 node

# 웹 서버에 접속
# curl: 커맨드 라인이라는 웹 브라우저(명령어 형식으로 사용할 수 있음)
curl 10.44.0.1
# => welcome to nginx 출력

# 좀 더 깔끔하게 웹 페이지를 확인하려면 elinks 설치
sudo apt-get update
sudo apt-get install elinks # 이링크스
elinks 10.44.0.1

kubectl get pods webserver
kubectl get pods

 

deployment 생성

이미 실행 중인 파드의 경우, 동일한 이름의 파드를 실행할 수 없다.

# deployment 생성
# mainui 라는 deployment 생성, 이미지는 httpd라는 아파치 웹서버 실행 
# :(콜론)뒤에 아무것도 안쓰면 latest 버전임
# replicas: httpd라는 웹서버를 3개 실행 => deployment를 쓰는 이유
kubectl create deployment mainui --image=httpd:latest --replicas=3

# 생성된 deployment 확인
kubectl get deployments.apps 

# running 상태가 아니므로, 재조회
kubectl describe deployments.apps mainui
kubectl get pods

# deployment로 mainui 3개 생성하면
# mainui-d77bf4d9f-6cwdj 형식으로 uuid 느낌의 텍스트가 붙는다.

kubectl get pod webserver -o wide
kubectl get pod webserver -o yaml # yaml 포맷
kubectl get pod webserver -o json # json 포맷

kubectl get pods

# 컨테이너 내부로 들어가서 웹 페이지 바꾸기
# exec는 pod에서만 실행되므로 pod 안써도 됨
kubectl exec webserver -it -- /bin/bash

# 컨테이너 내부 접속 완료
cd /user/share/nginx/html/
cat index.html
echo "TEST WEB" > index. html
exit
curl 10.44.0.1

# 컨테이너 동작 로그 확인
kubectl logs webserver

# 포트 포워딩을 통해 외부에서 접근 가능: 파드에서만 실행가능하므로, 타입지정 안해도 됨
kubectl port-forward webserver 8080:80

# 세션 복제 후 마스터 시스템에서 확인
curl localhost:8080

kubectl get deployments.apps

# 편집 (동작 중인 오브젝트 수정에 사용), vi 편집기가 열림
kubectl edit deployments.apps mainui 
# replicas 를 3에서 5로 변경 => 파드를 3개에서 5개로 변경함
kubectl get pods # mainui가 3개에서 5개로 늘어남

kubectl run webserver --image=nginx:1.14 --port 80
# 실행 가능한지 체크하는 것
kubectl run webserver --image=nginx:1.14 --port 80 --dry-run
# yaml 포맷으로 확인
kubectl run webserver --image=nginx:1.14 --port 80 --dry-run -o yaml 
# 쿠버네티스를 사용하는 webserver-pod.yaml 저장
kubectl run webserver --image=nginx:1.14 --port 80 --dry-run -o yaml > webserver-pod.yaml
# webserver-pod.yaml: 웹 서버를 실행하는 yaml 파일 생성
# 이미 실행 중인 파드의 경우, 동일한 이름의 파드를 실행할 수 없음

 

파드 삭제

파드를 삭제하기 위해서 delete pod 명령어를 를 사용한다.

# 파드 삭제
kubectl delete pod webserver
kubectl get pods
kubectl delete deployments.apps mainui # Terminating : 삭제 중
kubectl get pods

 

yaml 파일로 웹서버 파드 실행

생성한 yaml 파일로 웹 서버 파드를 실행할 수 있다.

# yaml 파일로 웹서버 파드 실행
kubectl create -f webserver-pod.yaml 
kubectl get pods
kubectl get pods -o wide

 

파드 생성 방법

파드 생성에는 run 사용과 yaml 파일을 사용하는 방법이 있다.

# 명령어(run)을 사용한 것처럼 파드를 생성할 수도 있고, yaml 파일을 사용하여 파드를 생성할 수도 있다.
# 1번 방법: run 사용
kubectl run webserver --image=nginx:1.14 --port 80
# 2번 방법: yaml 파일 사용
kubectl create -f webserver-pod.yaml