The kubectl Command
- kubectl은 관리자가 Kubernetes 클러스터를 제어하는 데 사용하는 유틸리티
- kubectl은 명령줄 항목을 선택한 Kubernetes 클러스터 내에서 Kube API 서버로 전송되는 API 호출로 변환
- 작업을 수행하려면 먼저 kubectl을 Kubernetes 클러스터의 위치와 사용자 인증 정보로 구성해야 한다.
- kubectl must be configured first
- Relies on a config file: $HOME/.kube/config.
- Config file contains:
- Target cluster name
- Credentials for the cluster
- Current config: kubectl config view.
- Connecting to a Google Kubernetes Engine cluster
- .kube 디렉토리와 내용이 홈 디렉토리에 유지
- 클러스터당 한 번만 실행하면 됨
- kubectl은 클러스터 내부 상태를 관리하며, 새 클러스터를 만들거나 기존 클러스터의 형태를 변경할 수 없다.
- 이러한 작업을 수행하려면 GKE GKE 제어 영역이 필요하며 이 영역은 gcloud 명령어와 Cloud Console을 인터페이스로 사용한다.
- The kubectl command syntax has several parts
- kube 폴더에 구성 파일이 구성되면 kubectl 명령어는 자동으로 이 파일을 참조하며 사용자 인증 정보를 요구하지 않고 기본 클러스터에 연결한다.
- 구문은 여러 부분으로 구성되는데 명령어, 유형과 이름, 선택적 플래그가 구성요소이다.
- kubectl [command] [TYPE] [NAME] [flags]
- The kubectl command has many uses
- Create Kubernetes objects
- View objects
- Delete objects
- View and export configurations
- 중요한 점은 kubectl을 먼저 구성하거나 --kubeconfig 또는 --contextparameters를 사용해 입력하는 명령어가 원하는 클러스터에서 수행되도록 하는 것
Q. kubectl
1. kubectl 명령어가 특정 Kubernetes 클러스터에 작동하도록 하려면 어떻게 해야 할까요? 정답을 모두 고르세요(정답 2개)
=> $HOME/.kube/config 파일을 구성합니다. / 명령어에 --kubeconfig 매개변수를 제공합니다.
2. kubectl 명령어와 상호작용하는 제어 영역 구성요소는 무엇인가요?
=> kube-apiserver
Introspection
- 인트로스펙션은 클러스터, 포드, 서비스, 클러스터 내에서 실행 중인 다른 엔진에 관한 정보를 수집하는 작업
- kubectl get pods 등의 명령어를 사용하면 객체 목록을 가져와 클러스터의 모든 포드의 목록을 반환하고 포드 상태를 알려줌
- 특정 포드에 대해 자세히 알아보려면 kubectl describe my-pod-name 명령어를 실행
- 테스트와 디버깅을 하려면 kubectl exec my-pod-name 명령어를 사용해 명령어와 애플리케이션을 실행
- kubectl get pods
- pod의 실행 여부
- 포드의 단계별 상태를 대기 중, 실행 중, 성공, 실패 또는 알 수 없음으로 표시
- 포드나 컨테이너의 종합적인 세부정보가 아닌 포드 수명 주기에 대한 대략적인 요약을 제공
- Pod phases:
- Pending
- Running
- Succeeded
- Failed
- Unkown
- CrashLoopBackOff
- 대기 중은 포드가 Kubernetes에서 수락되었지만 아직 일정을 조정 중임을 의미. 컨테이너 이미지가 아직 컨테이너 런타임에 의해 생성되지 않았음
- 실행 중 단계는 포드가 노드에 성공적으로 연결되고 모든 컨테이너가 생성된 상태
- 성공은 모든 컨테이너의 실행이 제대로 완료되었음
- 실패는 컨테이너가 실패 상태로 종료되었으며 다시 시작되지 않음
- 알 수 없음은 포드의 상태를 검색할 수 없는 경우로 제어 영역과 kubelet 간 통신 오류 등이 원인일 수 있음
- CrashLoopBackOff는 포드의 컨테이너 중 하나가 한 번 이상 재시작된 이후에도 예기치 않게 종료되었음을 의미. 일반적으로 발생하는 오류.
- get describe pod [POD_NAME]
- pod를 더 자세히 조사하려면 kubectl describe pod 명령어 사용
- 포드 및 컨테이너 정보에는 라벨, 리소스 요구사항, 볼륨 등이 있음
- 세부적으로 확인할 수 있는 컨테이너 및 포드 관련 상태 정보에는 상태, 준비, 재시작 횟수, 이벤트 등이 있습니다 컨테이너 상태는 대기 중, 실행 중 또는 종료됨 중 하나이다.
- 재시작 횟수와 더불어 재시작 정책 등의 구성 옵션을 볼 수 있음
- kubectl exec [POD_NAME] -- [command]
- kubectl exec -it [POD_NAME] -- [command]
- 네트워크 모니터링 도구나 텍스트 편집기 같은 패키지를 설치
- 셸을 컨테이너에 연결하여 컨테이너 내에서 작업 가능
- -i 인수는 kubectl에 터미널의 표준 입력을 컨테이너에 전달하도록 지시하고 -t 인수는 kubectl에 입력이 'TTY'임을 알림
- kubectl exec -it [POD_NAME] -- [command]
- kubectl logs [POD_NAME]
- 포드에 컨테이너가 여러 개 있는 경우 -c 인수를 사용해 포드 내의 특정 컨테이너에 대한 로그를 표시할 수 있음
- 로그에는 컨테이너 내의 애플리케이션이 생성한 표준 출력 및 표준 오류 메시지가 포함
Q. 점검
1. 포드가 CrashLoopBackOff를 상태로 보고하는 가장 일반적인 이유는 무엇인가요?
=> 포드의 구성이 올바르지 않기 때문입니다.
2. 포드 내에서 명령어를 실행할 수 있도록 하는 명령어는 무엇인가요?
=> kubectl exec
Cloud Shell에서 Google Kubernetes Engine 클러스터 배포하기
1. GKE 클러스터 배포하기
2. GKE 클러스터 수정하기
3. GKE 클러스터에 연결하기
4. kubectl을 사용하여 GKE 클러스터 검사하기
5. GKE 클러스터에 포드 배포하기
6. GKE 포드 검사하기
Cloud Shell에서 Google Kubernetes Engine 클러스터 업그레이드하기
1. GKE 클러스터 배포하기
2. GKE 클러스터 업그레이드하기
3. GKE 클러스터에 연결하기
4. kubectl을 사용하여 GKE 클러스터 검사하기
5. GKE 클러스터에 포드 배포하기
Summary
- kubectl is a utility used by administrators to control Kubernetes clusters
- kubectl syntax is composed of several parts
- kubectl has many uses
- Use kubectl to gather info about your app
Q. Kubernetes 작업
1. 다음 중 성공적으로 실행 중인 포드의 컨테이너와, 실패하거나 문제가 있는 컨테이너를 식별하는 데 사용할 수 있는 명령어는 무엇인가요?
=> kubectl describe pod
2. 여러분은 컨테이너 이미지를 새 버전으로 업데이트하려고 했지만 성공하지 못했습니다. 'kubectl describe pod' 명령어를 실행했더니, 명령어 출력으로 포드 상태가 대기중으로 변경되었다고 표시됩니다. 상태는 대기중으로 표시되며 그 이유는 ImagePullBackOff라고 나옵니다. 이 오류가 발생한 가장 가능성이 높은 원인은 무엇인가요?
=> 컨테이너 이미지를 다운로드하는 데 실패했기 때문입니다.
3. 여러분은 kubectl get 명령어를 사용하여 각 포드가 실행 중인 노드를 식별하려고 합니다. 어떤 명령어를 실행해야 하나요?
=> kubectl get pods -o=wide
4. 여러분은 kubectl을 사용해서 클러스터를 구성하려고 하며, 이를 위해서는 먼저 구성부터 해야 합니다. kubectl 명령어를 사용하면 이 구성 파일은 어디에 저장되나요?
=> 구성 정보는 $HOME/.kube/config 파일에 저장됩니다.
5. 다음 중 성공적으로 실행되지 않는 포드의 컨테이너에서 오류 메시지를 확인하는 데 사용할 수 있는 명령어는 무엇인가요?
=> kubectl logs
6. 여러분은 네트워크 문제를 해결하고 있습니다. 하지만 문제를 해결하기 전에 네트워크 모니터링 도구를 설치하려면 기존 포드 내에서 대화형 셸을 시작해야 합니다. 이를 위해 어떤 kubectl 명령어를 실행해야 하나요?
=> kubectl exec -it -- /bin/bash
'🍀 Cloud Architect > GCP' 카테고리의 다른 글
[GCP GKE 스터디] Workloads - 배포, 작업, 확장 (0) | 2023.08.07 |
---|---|
[GCP] Foundations - Kubernetes 아키텍처 (0) | 2023.08.06 |
[GCP] Foundations - 컨테이너 및 Kubernetes 소개 (0) | 2023.08.06 |
[GCP] Foundations - Google Cloud (0) | 2023.08.05 |