Infra/Kubernetes

[Kubernetes 입문] 3. 쿠버네티스로 컨테이너 실행하기

에드박 2023. 1. 4. 21:48

2장은 쿠버네티스 설치 관련 내용으로 다른 자료들도 많아 건너 뜁니다.

  • 쿠버네티스 관리를 위한 기본 커맨드라인 인터페이스  kubectl 
  • 파드로 컨테이너 실행
  • 상태 살펴보기
  • 컨테이너 삭제등의 기본 사용법과 주요 활용법 소개

 

kubectl 에서 지원하는 명령

  • 쿠버네티스 자원들의 생성, 업데이트 삭제 (create, update, delete)
  • 디버그, 모니터링, 트러블 슈팅 (log, exec, cp, top, attach, 등등..)
  • 클러스터 관리 (cordon, top, drain, taint, 등등...)

쿠버네티스 kubectl 공식 문서 : kubectl Cheat Sheet

kubectl short name : https://kubernetes.io/docs/reference/kubectl/#resource-types


kubectl 설치

공식 사이트 - https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/

# 리눅스

$ curl -LO https://dl.k8s.io/release/v클러스터버전번호/bin/linux/amd64/kubectl
$ chmod +x ./kubectl
$ sudo mv ./kubectl /usr/local/bin/kubectl

# macOS - Intel
$ curl -LO https://dl.k8s.io/release/v클러스터버전번호/bin/darwin/amd64/kubectl

# macOS - Apple M1
$ curl -LO https://dl.k8s.io/release/v클러스터버전번호/bin/linux/amd64/kubectl
$ chmod +x ./kubectl
$ sudo mv ./kubectl /usr/local/bin/kubectl

# macOS - homebrew 사용
$ brew install kubectl
or 
$ brew install kubernetes-cli

# 윈도우
> curl -LO https://dl.k8s.io/release/v클러스터버전번호/bin/linux/amd64/kubectl.exe

 

Amazon EKS 용 kubectl 설치 방법

- https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html

- https://catalog.us-east-1.prod.workshops.aws/workshops/9c0aa9ab-90a9-44a6-abe1-8dff360ae428/ko-KR/10-intro/200-eks

- AWS EKS로 간단한 웹 애플리케이션 구축하기 강의 : https://www.youtube.com/watch?v=kb6s0Tmp2CA&t=673s


kubectl 기본 사용법

kubectl [ command ] [ TYPE ] [ NAME ] [ flags ]
  • command : 자원에 실행하려는 동작. create, get, delete 등을 사용할 수 있음
  • TYPE: 쿠버네티스 자원 타입. pod, service, ingress 등을 사용
  • NAME: 자원 이름
  • FLAG: 부가적으로 설정할 옵션 입력

kubectl get 은 쿠버네티스에 있는 자원 상태를 확인할 때 가장 많이 사용하는 명령어

- ex) kubectl get pods 로 모든 파드의 상태를 확인할 수 있음


간단한 kubectl 자원 생성 명령어

쿠버네티스 파드 생성

$ kubectl run {자원이름} --image="{이미지}" --port={포트번호}

# example
$ kubectl run echoserver --image="k8s.gcr.io/echoserver:1.10" --port=8080

쿠버네티스의 파드들에 접근할 때 필요한 서비스 생성

$ kubectl expose po {접근할 자원이름} --type={타입}

# example
$ kubectl expose po echoserver --type=NodePort

쿠버네티스 내 자원 확인

# 컨텍스트 내 모든 자원 확인
$ kubectl get all

# 컨텍스트 내 파드 확인
$ kubectl get pods

# 컨텍스트 내 서비스 확인
$ kubectl get services

  • NAME : 파드 이름
  • READY : 숫자/숫자 형태로 파드의 준비 상태를 표시합니다. 0/1 이면 파드는 생성됐지만, 준비는 안된 상태라는 뜻
  • STATUS : 파드의 현재 상태
  • RESTART : 해당 파드가 몇 번 재시작 했는지 표시 (에러가 나서 pod 시작에 실패 등의 사유로 재시작을 시도함)
  • AGE : 파드를 생성한 후 지난 시간

  • NAME : 서비스 이름
  • TYPE : 서비스 타입
  • CLUSTER-IP : 현재 클러스터 안에서 사용되는 IP
  • EXTERNA-IP : 클러스터 외부에서 접속할 때 사용하는 IP
  • PORT(S) : 해당 서비스에 접속하는 포트를 표시
  • AGE : 자원을 생성한 후 지난 시간

쿠버네티스 포트포워딩 명령어

$ kubectl port-forward {자원} {host port}:{pod port}

# example
$ kubectl port-forward svc/echoserver 8080:8080

# svc/echoserver 의 svc 는 service 를 의미한다.
# 따라서 service/echoserver 로 입력해도 동일하게 동작한다.

쿠버네티스 자원 내부 로그 확인

$ kubectl logs {자원이름}

# example
$ kubectl logs echoserver

쿠버네티스 자원 삭제

$ kubectl delete {자원 타입} {자원 이름}

# example
$ kubectl delete pod echoserver

pod 과 service 자원을 삭제


POSIX/GNU 스타일의 명령 작성 규칙

kubectl 은 기본적으로 POSIX/GNU 스타일의 명령 작성 규칙을 따름

  • - 과 함께 사용하는 옵션은 단일 알파벳/숫자 문자 인자는 짧은 옵션(short option) 입니다.
  • 일부 옵션은 인자를 필요로 함
  • -- 과 함께 사용하는 옵션은 알파벳 두 글자 이상으로 구성한 긴 옵션(long option)
  • -- 이후에 작성하는 인자가 있다면 쿠버네티스 관련 옵션들은 종료한다는 뜻입니다.

Program Argument Syntax Conventions

 

# example
$ kubectl -n default exec my-pod -c my-container -- ls /
  • -n default : -n 은 네임스페이스를 지정하는 옵션
  • exec my-pod : my-pod 라는 이름의 파드에 해당 명령을 실행하다는 뜻 (필수 인자)
  • -c my-container : 컨테이너를 지정하는 옵션
  • -- ls / : 쿠버네티스 관련 옵션들을 모두 종료한다는 뜻. -- 이후에 컨테이너에서 실행할 명령을 설정할 수 있습니다.

kubeconfig 환경 변수

kubectl은 기본적으로 $HOME/.kube/config 파일에서 클러스터, 인증, 컨텍스트 정보를 읽어들임

이런 클러스터 구성 정보를 kubeconfig 라고 칭함

클러스터에서 사용할 수 있는 자원들은 kubectl api-resource 명령으로 확인이 가능

만약 도커 데스크톱으로 쿠버네티스를 사용한다면 자동으로 kubeconfig 가 설정됨

다음 명령을 실행해 사용이 가능

$ kubectl config use-context docker-desktop

--kubeconfig 옵션으로 다른 설정 파일을 지정 가능

# example
$ kubectl -kubeconfig=AWSconfig get pods
$ kubectl -kubeconfig=GCPconfig get pods

다중 클러스터, 다중 네임스페이스 전환 툴

kubectx : 다중클러스터 사용시 클러스터 전환을 쉽게 해주는 툴

kubens : k8s cluster 내에 namespace를 쉽게 전환해주는 툴

 

https://kim-dragon.tistory.com/72


참고자료

- 쿠버네티스 입문 / 동양북스 http://www.yes24.com/Product/Goods/85578606