devops/쿠버네티스

kubernetes 소개, kubectl

노루동산 2025. 3. 5. 22:46
반응형

 

 

💡 쿠버네티스란 컨테이너 화 된 애플리케이션의 자동 배포, 스케일링 등을 제공하는 이식성, 확장성 있는 관리 시스템이다.

 

https://youtube.com/playlist?list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c&si=CZiAKT_tpZYp79WD

 

[따배쿠] 쿠버네티스 시리즈

 

www.youtube.com

 

쿠버네티스 공부를 하면서 위 강의를 많이 참고했다.

 

 

배포 환경의 변화

 

전통적 배포

  • 하나의 물리 서버 안에서 여러 애플리케이션을 실행
  • 애플리케이션의 리소스 한계를 정의할 수 없어 특정 애플리케이션의 성능 저하가 생길 수 있음

 

가상화 된 배포

  • 리소스 간섭이 발생하지 않음
  • 하이퍼바이저 위에서 가상머신을 올림
  • 각각의 가상머신에 게스트 운영체제가 들어감
  • 하드웨어를 적정량 배분하고 수평적으로 늘린다.

 

컨테이너 배포

  • 호스트 운영체제에 도커를 올리고 컨테이너를 올림
  • 가상머신은 운영체제가 각각 들어가기 때문에 비교적 무거우나 도커는 호스트 운영체제 하나만 필요
  • 컨테이너의 주 목적은 배포이다.

 

쿠버네티스의 등장

멀티호스트 도커 플랫폼

  • 시스템 하나에 컨테이너를 전부 운영할 경우 시스템이 다운됐을 때 서비스 불가
  • 도커 플랫폼을 여러 개 운영해 서비스 환경 분산
  • 그러나, 하나의 웹 서비스를 관리한다고 해도 컨테이너 수 천 개가 들어갈 수 있음

 

컨테이너 오케스트레이션

 

컨테이너 오케스트레이션이란? - 컨테이너 오케스트레이션 설명 - AWS

Amazon ECS는 조직이 AWS에서 대규모 컨테이너식 애플리케이션을 구축, 배포 및 관리할 수 있는 완전 관리형 컨테이너 오케스트레이션 서비스입니다. 버전이 없으며 클러스터 프로비저닝을 자동으

aws.amazon.com

 

 

쿠버네티스(k8s)

  • k와 s사이 8 글자라 k8s
  • 그리스어로 조타수라는 뜻
  • 컨테이너 화 된 애플리케이션을 자동으로 배포, 스케일링 및 관리해주는 오픈소스 시스템이다.
  • CNCF(Cloud native computing foundation): 혼돈스러운 컨테이너와 관련된 다양한 기술적인 문제들을 오픈소스로 해결하는 것을 목표로 하고 있다.

 

k8s 특징

  1. 워크로드 분리
  2. 어디서나 실행가능 - 온프레미스, 퍼블릭 클라우드(AKS, EKS, GKE 등)
  3. 선언적 API
    • 요청을 하면 쿠버네티스가 알아서 관리 해준다. 하드웨어에서 잘 동작할 수 있도록 오퍼레이팅 해주기 때문에 OS라고 부르기도 한다.

 

kubectl

kubectl이란?

쿠버네티스에 요청할 때 쓰는 명령어
  • kubectl [command] [TYPE] [NAME] [flags]
    • command: 자원에 실행할 명령 (create, get, delete, edit)
    • TYPE: 자원의 타입 (node, pod, service)
    • NAME: 자원의 이름
    • flag: 부가적으로 설정할 옵션 (—help, -o options)
  • ex) kubectl get pod webserver -o wide
  • 대 괄호는 생략 가능하다는 뜻이다.

 

명령어 배우는 법

  • kubectl —help
  • 특정 명령어에 대해 배우고 싶을 때: kubectl 명령어 —help

자세한 정보 보기

  • kubectl describe node

 

kubectl 명령어 자동완성

  • BASH
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashr

source <(kubeadm completion bash)
echo "source <(kubeadm completion bash)" >> ~/.bashr

 

 

pod 명령어

  • 예시) nginx pod 생성
    • kubectl run webserver(pod이름) --image=nginx:1.14 --port 80
  • create deployment: 여러 개를 만들고 싶을 때
  • get pods: pods들 상태 확인
  • flag
    • -o wide: 자세히 확인
    • -o yaml, -o json: 야믈, json 형태로 확인
  • exec pod이름 -it -- /bin/bash: 컨테이너 안으로 접근
  • exit: 컨테이너 밖으로 나가기
  • edit: 동작 중인 pods 수정
  • kubectl run webserver --image=nginx:1.14 --port 80 --dry-run -o yaml > webserver-pod.yaml
    • 실행 중인 pod yaml로 확인 후 토대로 yaml 파일 생성
  • delete: pod 삭제
  • kubectl create -f webserver-pod.yaml: yaml 파일 바탕으로 pod 생성
반응형