주녁, DevNote
article thumbnail

개요

CKA 시험에서 자주 사용되는 명령어를 정리한 글입니다.

(제가 작성한 Repository에서 더 자세한 설명을 보실 수 있습니다.)

더 자세한 내용은 공식 문서를 참조하시면 좋습니다. (kubectl 치트 시트 | 명령줄 도구 (kubectl))

상황별 명령어 모음

커맨드 단축어 설정

vi ~/.bashrc

# bashrc 마지막에 추가해주세요

# 자동완성
kubectl completion bash
kubeadm completion bash

# 단축어 세팅
alias kc="kubectl create"
export do="--dry-run=client -o yaml" # Create the YAML tamplate  (사용법은 다음 스크립트 참조)

# Save and Quit

exec $SHELL # Reload shell (반드시 대문자로 입력!)

 

# 사용법 예시
kc deploymentmy my-dep --image=nginx --replicas=3
kc deployment --image=nginx nginx $do # <- 단축어 사용
k run --image=busybox $do -- "/bin/sh" "-c" "sleep 36000"

리소스 단축어 모음(Resource Short Words)

  • pods : po
  • deployments : deploy
  • services : svc
  • replicasets : rs
  • replicationcontollers : rc
  • configmaps : cm
  • namespaces : ns
  • nodes : no
  • persistentvolumeclaims : pvc
  • persistentvolumes : pv
  • resourcequotas : quota
  • serviceaccounts : sa
  • daemonsets : ds
  • cronjobs : cj
  • ingresses : ing
  • storageclasses : sc

상황 진단(Status Diagnosis)

# kubelet 상태 확인
sudo systemctl status kubelet

# Context가 올바른지 확인
k config get-contexts
k config set-context ${Context_Name} # if you want to change context

# System Pod 상태 확인
k logs -n kube-system ${System_Pod_Name}

# 클러스터 상태 확인
k cluster-info [dump] # dump 옵션은 더 자세한 정보 출력해줌!

# 모든 네임스페이의 모든 리소스를 자세하게 출력
k get all -A -o wide

# 특정 Pod의 이벤트와 메트릭을 출력
k describe pods ${Pod_Id}
k top node my-node
k explain deployment --recursive

생성(Create)

# 특정 이미지로부터 deployment 생성하기
k create deploy nginx --image=nginx

# 서비스 & 인그레스를 특정포트로 생성하기
k create svc clusterip my-service --tcp=80:80
k create ingress ${Name} --tcp=80:80

# 파일 혹은 문자열로 컨피그맵, 시크릿 생성하기
k create secret generic my-secret --from-file ${File_Name}
k create configmap my-config --from-literal=special.how=very

조회(Read)

YAML 파일 양식을 외우는 것도 좋지만,

이미 존재하는 파일에서 가져오는 것도 좋은 방법입니다.

# 이미 존재하는 Pod 정보를 YAML로 변환해서 가져오기
k get pod ${Pod_Id} -o yaml > pod.yaml

# 커맨드 실행 결과를 YAML로 변환하기
k create deploy nginx --image=nginx  > deploy.yaml
k create deploy nginx --image=nginx $do > deploy.yaml # 단축어 설정을 해놨다면 사용할 수 있음!

생성(Update)

# 변경사항 부분 적용(기존 리소스는 유지됨)
k apply -f ${File_Name}

# 새 변경사항으로 변경 (기존 리소스는 제거되고 새로 생성)
k replace -f ${File_Name}

# 유저 쉘 에디터 상에서 리소스 편집
k edit ${Resource_Type} ${Resource_Name}

# 리소스의 특정 필드를 수정(에디터 진입 X)
k patch ${Resource_Type} ${Resource_Name} -p '{"property_name":"new_value"}'

# deployment 이미지를 교체
k set image deployment ${Deployment_Name} ${New_Image}=${Image_Url}

# deployment 이미지를 새버전으로 교체
k rollout restart deployment ${Deployment_Name}

# deployment 스케일을 변경
k scale deploy my-deployment --replicas=5

삭제(Delete)

# Pod 삭제
k delete pod ${Pod_Id}

# Pod 강제 삭제
k delete pod ${Pod_Id} --force --grace-period=0

# 특정 네임스페이스 안에 모든 Pod 삭제
k delete pod -n test --all

 

profile

주녁, DevNote

@junwork

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!