일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Backend
- Python
- Industry Week 2023
- Amazon DynamoDB
- Terraform
- SSL 인증서
- Amazon RDS
- Heartbleed
- DaemonSet
- Amazon VPC
- deployment
- AWS Security Hub
- AWS EC2
- Cognito
- CI CD
- mariaDB
- Terraform state
- Kubernetis
- classmethod
- AWS
- staticmethod
- Amazon GuardDuty
- Amazon Route 53
- ReplicaSet
- docker
- DevOps
- taint
- k8s
- ConfigMap
- ansible
- Today
- Total
Nubes et Stella
Kubernetis #01 본문
01. Kubernetis 란?
구글 내부에서 사용하던 배포시스템 borg를 기반으로 재작성하여 2014년에 오픈소스로 공개되었으며, 현재는 가장 대표적인 컨테이너 오케스트레이션 시스템이다. (흔히 k8s로 약식 표기한다.)
쿠버네티스 공식 : https://kubernetes.io/ko/docs/home/
쿠버네티스 문서
쿠버네티스는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하기 위한 오픈소스 컨테이너 오케스트레이션 엔진이다. 오픈소스 프로젝트는 Cloud Native Computing Foundation에서 주관한다.
kubernetes.io
- 그렇다면 컨테이너 오케스트레이션 시스템이란?
컨테이너의 배포, 관리, 확장, 네트워킹을 자동화하는 기술이다. 한마디로 여러대의 컨테이너를 효율적으로 통합 관리하기 위한 시스템이다. 크게 컨테이너에 대한 아래의 기능을 제공한다.
• 컨테이너 자동 배치 및 복제
• 컨테이너 그룹에 대한 로드 밸런싱
• 컨테이너 장애 복구
• 클러스터 외부에 서비스 노출
• 컨테이너 추가 또는 제거로 확장 및 축소
• 컨테이너 서비스간의 인터페이스를 통한 연결 및 네트워크 포트 노출 제어
** 많은 오케스트레이션 중에서 쿠버네티스를 사용하는 이유?
- Planet Scale
- 구글에서 수 십억 개의 컨테이너를 운영할 수 있도록 한 원칙 유지
- 행성 규모로 확장할 수 있는 스케일
- Never Outgrow
- 다양한 요구사항을 만족할 수 있는 유연함
- 테스트용 로컬 규모부터 글로벌 서비스 규모까지 유연하게 크기 조정 가능
- Run Anywhere
- 온프레미스 / 퍼블릭 클라우드 / 하이브리드 환경 어디서나 동작
- 대부분의 리눅스 환경에서 동작하기 때문에 환경 이동에 제약이 없음
02. Kubernetis 배포판
쿠버네티스 배포판이란 쿠버네티스를 구현하고 운영하기 위한 도구 및 서비스의 패키지이다. 이러한 배포판은 기존 쿠버네티스의 기능과 부족한 점을 확장, 추가 및 보완하여 다양한 환경이나 요구사항에 대응하도록 구성된다.
쿠버네티스 배포판은 Local 환경에서 운영되어 간단한 학습이나 개발 환경을 구성할 수 있는 "minikube"부터 클라우드 환경에서 사용되는 EKS(by AWS), AKS(by Azure), GKE(by GCP) 등이 있다. 또한 여러 재단에서 만든 다양한 형태의 배포판이 존재한다.
03. Kubernetis 클러스터
쿠버네티스 클러스터란 쿠버네티스로 관리되는 컨테이너들을 운영 및 관리하기 위한 환경이며 아래와 같은 요소들로 구성되어 있다. 그림에서 보여지듯 쿠버네티스 클러스터 내에서 다음과 같은 계층 구조를 가진다.
"클러스터 > 노드 > Pod > 컨테이너"
Control Plane
- API Server
쿠버네티스 리소스와 클러스터 관리를 위한 API 제공하며, etcd를 데이터 저장소로 사용한다.
- Scheduler
노드의 자원 사용 상태를 관리하며, 새로운 워크로드를 어디에 배포할지 관리한다.
- Controller Manager
각 컨트롤러는 클러스터로부터 특정 리소스 상태의 변화를 감지하여 클러스터에 반영하는 과정을 반복 수행한다.
- etcd
Key - Value 형태의 저장소로 클러스터의 상태를 저장한다.
Node
- kubelet
컨테이너 런타임(Container Runtime)과 통신하며 컨테이너 라이프사이클 관리한다.
- CRI (Container Runtime Interface)
kubelet이 컨테이너 런타임과 통신할 때 사용되는 인터페이스이며 Docker, containerd, cri-o 컨테이너 런타임을 지원한다.
- kube-proxy
네트워크 프록시 및 내부의 로드밸런서 역할을 수행한다.
04. API 리소스
API 리소스
- 쿠버네티스가 관리할 수 있는 오브젝트의 종류
Ex.) Pod, Service, ConfigMap, Secret, Node, ServiceAccount, Role
오브젝트
- API 리소스를 인스턴스화 한 것
- END -
'DevOps > Kubernetis' 카테고리의 다른 글
Kubernetis #06 (Namespace/(Cron)Job) (0) | 2023.10.24 |
---|---|
Kubernetis #05 (ConfigMap/Secret) (0) | 2023.10.19 |
Kubernetis #04 (Deployment/Service) (0) | 2023.10.15 |
Kubernetis #03 (Pod/ReplicaSet) (0) | 2023.10.14 |
Kubernetis #02 (Install) (0) | 2023.10.14 |