관리 메뉴

진취적 삶

04 쿠버네티스 첫 만남 본문

개발 도서/핵심만 콕 쿠버네티스

04 쿠버네티스 첫 만남

hp0724 2023. 11. 17. 10:20

쿠버네티스 클러스터를 컨트롤하기 위해 kubectl 명령 툴을 사용한다.

사용자가 직접 HTTP 프로토콜로 API 서버와 통신할수도 있지만 쿠버네티스에서는 쉽게 마스터와 통신 할수 있게 해주는 클라이언트 툴인 kubectl 을 제공한다.

4.1 기본명령

4.1.1 컨테이너 실행

kubectl run <NAME> --image <IMAGE>

4.1.2 컨테이너 조회

kubectl get pod 

STATUS 상태

  1. Pending : 쿠버네티스 마스터에 생성 명령은 전달되었지만 아직 실행되지 않은 상태
  2. ContainerCreating : 특정 노드에 스케줄링되어 컨테이너를 생성 중인 단계
  3. Running : Pod 가 정상적으로 실행되고 있는 상태
  4. Completed: 계속 실행되고 있는 프로세스가 아닌 한번 실행하고 완료되는 배치 작업 pod 에서 작업이 완료된 상태
  5. Error : Pod에 문제가 생겨 에러가 발생한 상태
  6. CrashLoopBackOff: 지속적으로 에러가 발생하는 상태

Pod IP 확인

kubectl get pod -o wide 

pod 상세정보

kubectl describe pod myniginx 

4.1.6 컨테이너 /호스트간 파일 복사

sudo kubectl cp <TARGET> <SOURCE> 

확인

sudo kubectl exec mynginx -- ls /tmp/passwd 

4.1.7 컨테이너 정보 수정

sudo kubectl edit pod <NAME> 

4.1.8 컨테이너 삭제

sudo kubectl delete pod <NAME> 

4.1.9 YAML 선언형 명령 정의서

#mynginx.yaml

apiVersion:v1
kind:Pod
metadata:
  name:mynginx
spec:
  containers:
  - name:mynginx
    image:nginx

사용자가 가장 기본이 되는 정보만 입력하면,쿠버네티스가 알아서 나머지 값들을 채운다.

명령형 스타일

kubectl run

선언형 스타일

kubectl apply

apply 의 경우 로컬파일 시스템 YAML 뿐만 아니라 인터넷 상에 위치한 YAML 정의서도 손쉽게 가져갈수 있다.

apply 의 경우 멱득성 보장

멱득성 : 동일한 연산을 여러번 적용하다라도 최종 결과가 달라지지 않는 성질 .

4.2 고급 명령

4.2.1 리소스별 명령

k8s 모든 것이 리소스로 표현된다. k8s 는 pod 리소스 외에 service, replicaSet, Deployment 등 다양한 리소스를 포함

4.2.2 네임스페이스

네임 스페이스는 쿠버네티스 클러스터를 논리적으로 나누는 역할을 한다.

  • default : 기본 네임스페이스
  • kube-system : k8s 의 핵심 컴포넌트들이 들어있는 네임스페이스 해당 네임스페이스에 네트워크 설정, DNS 서버 등 중요한 역할을 담당하는 컨테이너가 존재
  • kube-public : 외부로 공개 가능한 리소스를 담고 있는 네임스페이스
  • kube-node-lease: 노드가 살아있는지 마스터에 알리는 용도로 존재하는 네임 스페이스

4.2.3 자동완성 기능

echo 'source <(kubectl completion bash)' >> ~/.bashrc
source ~/.baschrc

4.2.4 즉석 리소스 생성

cat << EOF | kubectl apply -f - 
apiVersion: v1
kind:Pod
metadata:
	name: cat-nginx 
spec:
	containers:
	- image:nginx
	  name: cat-nginx 
EOF 

4.2.6 모든 리소스 조회

Pod 리소스 외에 쿠버네티스에는 다양한 리소스들이 존재한다.

kubectl api-resources 

쿠버네티스 리소스는 크게 네임스페이스 레벨의 리소스와 클러스터 레벨의 리소스로 구분

  • 네임 스페이스 : 해당 리소스가 반드시 특정 네임스페이스에 속해야 하는 리소스 (Pod)
  • 클러스터 레벨의 리소스 : 네임스페이스 와 상관없이 클러스터 레벨에 존재하는 리소스(Node)

4.2.8 클러스터 상태 확인

health check

# 쿠버네티스 API 서버 작동 여부 확인 
kubectl cluster-info 

# 전체 노드 상태 확인 
kubectl get node 

# 쿠버네티스 핵심 컴포넌트의 pod 상태확인 
kubectl get pod -n kube-system 

4.2.9 상태 확인

kubectl config view
  • clusters: kubectl 툴이 바라보는 클러스 정보를 입력
  • users: 쿠버네티스 클러스테 접속하는 사용자를 정의
  • contexts :cluster 와 user를 연결해주는 것을 context

4.3 마치며

삭제

sudo kubectl delete pod --all

'개발 도서 > 핵심만 콕 쿠버네티스' 카테고리의 다른 글

06 쿠버네티스 네트워킹  (0) 2023.11.17
05 Pod  (0) 2023.11.17
03 쿠버네티스 설치  (0) 2023.11.17
02 쿠버네티스 소개  (0) 2023.11.17
01 도커 기초  (0) 2023.11.17