open:kubectl

kubectl

kubectl apply -f [매니페스트 파일명]

kubectl delete -f [YAML 파일명]

STATUS 의미와 대책
ContainerCreating 이미지를 다운로드 중이거나 컨테이너를 생성하는 중에 있음을 의미한다. 컨피그맵시크릿이 마운트되지 않아 컨테이너 생성이 보류된 경우일 수도 있다
CrashLoopBackOff 파드 내의 컨테이너가 종료되어 다음 기동 시까지 대기 상태에 있음을 의미한다. 2회 이상 컨테이너가 종료되면, CrashLoopBackOff 시간 동안 대기하게 된다. 이 상황에서는 컨테이너 내의 프로세스를 재검토할 필요가 있다
Pending 파드 생성 요구를 받았지만 하나 이상의 컨테이너가 생성되지 않은 상태를 의미한다. 리소스 부족 등의 이유로 스케줄이 되지 않은 경우에 해당한다.
Running 파드의 모든 컨테이너가 생성되어 실행 중임을 의미한다.
Terminating 컨테이너에 종료 요청 시그널을 보낸 후 컨테이너가 종료할 때까지 대기 중임을 의미한다. 유예 시간을 넘겨도 컨테이너가 종료할 수 없는 경우는, 컨테이너를 강제로 종료한다
Succeeded 파드 내 모든 컨테이너가 정상적으로 종료했음을 의미한다.
Completed 파드 내 컨테이너가 정상적으로 종료되었음을 의미한다. 파드 내에 복수의 컨테이너가 있는 경우, 첫 번째 컨테이너가 정상 종료(Exit 코드=0) 하면 Completed가 표시된다
Error 컨테이너가 이상 종료 된 경우다. Exit 코드 != 0 인 경우에 이상 종료로 간주한다. 파드 내에 복수의 컨테이너가 있는 경우, 첫 번째 컨테이너가 이상 종료 하면, Error로 표시한다.
Failed 파드 내에 적어도 하나의 컨테이너가 이상 종료 했음을 의미한다.
Unknown 파드의 상태를 얻을 수 없는 상황을 의미한다
  1. kubectl delete pod 를 실행하면 파드의 종료 처기사 시작된다. 기본 유예시간은 30초다
  2. kubectl get pod의 status는 Terminating이라고 표시된다.
  3. 다음 세 가지 작업이 동시에 진행된다.
    - 파드의 PreStop hook이 정의되어 있으면, 파드 내에세 호출된다. 유예 시간을 넘어서면 PreStop hook이 실행되고 있어도, 파드 내의 메인 프로세스에서 SIGTERM이 보내지며, 2초 후에 SIGKILL로 강제 종료 된다.
    - PreStop hook이 정의되어 있지 않다면, 곧바로 파드 내의 메인 프로세스에 SIGTERM신호가 송신되며 종료 처리가 개시된다.
    - 파드가 서비스의 엔드포인트 목록에서 제거되며, 로드밸런서 (kube-proxy 등)의 목록에서도 제거된다.
  4. 유예 시간을 넘어서서 파드 내의 프로세스가 살아 있다면, 파드의 메인 프로세스에 SIGKILL을 보내서 강제로 종료한다.
  5. 제거 대상인 파드가 표시되지 않게 된다.

kubectl delete --grace-period=초

$ kubectl run hello-world --image=hello-world -it --restart=Never

  • kubectl : k8s 클러스터를 조작하기 위해 사용되는 커맨드
  • run : 컨테이너 실행을 명령하는 서브 커맨드
  • hello-world : 쿠버네티스 오브젝트의 이름 (파드컨트롤러 등)
  • –image=hello-world : 컨테이너의 이미지. 쿠버네티스에서는 파드 단위로 컨테이너가 기동되며 리포지터리명이 생략된 경우에는 도커 허브를 사용
  • -it : 도커에서의 -it와 마찬가지로, -i는 키보드를 표준 입력에 연결하고, -t는 유사터미널과 연결하여 대화 모드 설정. 옵션 --restart=Never인 경우에만 유효하며, 그 외에는 백그라운드로 실행
  • –restart=Never : 이 옵션에 따라 파드의 기동 방법 변경. Never는 직접 파드가 기동되며 Always나 OnFailure는 컨트롤러를 통해 파드가 기동

$ kubectl run hello-world --image=hello-world -it --restart=Never --rm

커맨드 동작
kubectl cluster-info k8s 클러스터의 엔드포인트를 표시
kubectl get no k8s 클러스터를 구성하는 노드 목록 표시
kubectl run 파드를 실행
kubectl get po 파드의 목록 출력
kubectl delete po 파드의 이름을 지정해서 삭제
kubectl get all 모든 오브젝트를 출력
kubectl logs 컨터에너 프로세스가 STDOUT이나 STDERR로 출력하는 로그를 표시
kubectl get deploy,po 디플로이먼트와 파드의 목록을 표시
kubectl get deploy 디플로이먼트 목록 표시
kubectl delete deploy 디플로이먼트와 관련 레플리카셋 및 파드를 일괄 삭제
kubectl get jobs 잡의 실행 상태를 출력
kubectl create job 잡 컨트롤러 제어하에서 파드를 실행
kubectl create deployment 디플로이먼트 컨트롤러 제어하에서 파드를 실행
kubectl scale 레플리카 수 변경

커맨드 동작
kubectl create -f 파일명 파일에 기술된 오브젝트를 생성
kubectl delete -f 파일명 파일에 기술된 오브젝트를 삭제
kubectl apply -f 파일명 파일에 기재된 오브젝트가 있으면 변경하고 없으면 생성

커맨드 동작
kubectl scale 레플리카 값을 변경
kubectl rollout 롤아웃의 상태 표시, 일시정지와 재개, 취소, 이력 표시
kubectl drain <노드명> 가동 중인 파드를 다른 노드로 이동
kubectl cordon <노드명> 노드에 새로운 파드의 스케줄 금지
kubectl uncordon <노드명> 노드에 새로운 파드의 스케줄을 재개
  • open/kubectl.txt
  • 마지막으로 수정됨: 2021/11/09 02:57
  • 저자 127.0.0.1