devops/쿠버네티스
kubernetes 소개, kubectl
노루동산
2025. 3. 5. 22:46
반응형
💡 쿠버네티스란 컨테이너 화 된 애플리케이션의 자동 배포, 스케일링 등을 제공하는 이식성, 확장성 있는 관리 시스템이다.
https://youtube.com/playlist?list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c&si=CZiAKT_tpZYp79WD
[따배쿠] 쿠버네티스 시리즈
www.youtube.com
쿠버네티스 공부를 하면서 위 강의를 많이 참고했다.
배포 환경의 변화
전통적 배포
- 하나의 물리 서버 안에서 여러 애플리케이션을 실행
- 애플리케이션의 리소스 한계를 정의할 수 없어 특정 애플리케이션의 성능 저하가 생길 수 있음
가상화 된 배포
- 리소스 간섭이 발생하지 않음
- 하이퍼바이저 위에서 가상머신을 올림
- 각각의 가상머신에 게스트 운영체제가 들어감
- 하드웨어를 적정량 배분하고 수평적으로 늘린다.
컨테이너 배포
- 호스트 운영체제에 도커를 올리고 컨테이너를 올림
- 가상머신은 운영체제가 각각 들어가기 때문에 비교적 무거우나 도커는 호스트 운영체제 하나만 필요
- 컨테이너의 주 목적은 배포이다.
쿠버네티스의 등장
멀티호스트 도커 플랫폼
- 시스템 하나에 컨테이너를 전부 운영할 경우 시스템이 다운됐을 때 서비스 불가
- 도커 플랫폼을 여러 개 운영해 서비스 환경 분산
- 그러나, 하나의 웹 서비스를 관리한다고 해도 컨테이너 수 천 개가 들어갈 수 있음
컨테이너 오케스트레이션
- control plane 도커 플랫폼이 worker node들을 관리한다.
- 대규모 애플리케이션을 배포할 수 있도록 컨테이너의 네트워킹 및 관리를 자동화하는 프로세스
- 컨테이너 오케스트레이션 도구는 프로비저닝과 스케줄링에서 배포 및 삭제에 이르는 전체 수명 주기를 자동화하여 컨테이너 인프라 관리를 간소화하는 것을 목표로 함 • [컨테이너 오케스트레이션이란? - 컨테이너 오케스트레이션 설명 - AWS](https://aws.amazon.com/ko/what-is/container-orchestration/#:~:text=컨테이너 오케스트레이션은 대규모 애플리케이션,함께 번들로 제공합니다.)
컨테이너 오케스트레이션이란? - 컨테이너 오케스트레이션 설명 - AWS
Amazon ECS는 조직이 AWS에서 대규모 컨테이너식 애플리케이션을 구축, 배포 및 관리할 수 있는 완전 관리형 컨테이너 오케스트레이션 서비스입니다. 버전이 없으며 클러스터 프로비저닝을 자동으
aws.amazon.com
쿠버네티스(k8s)
- k와 s사이 8 글자라 k8s
- 그리스어로 조타수라는 뜻
- 컨테이너 화 된 애플리케이션을 자동으로 배포, 스케일링 및 관리해주는 오픈소스 시스템이다.
- CNCF(Cloud native computing foundation): 혼돈스러운 컨테이너와 관련된 다양한 기술적인 문제들을 오픈소스로 해결하는 것을 목표로 하고 있다.
k8s 특징
- 워크로드 분리
- 어디서나 실행가능 - 온프레미스, 퍼블릭 클라우드(AKS, EKS, GKE 등)
- 선언적 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 생성
반응형