K8S(Kubernetes)

시스템 2020. 6. 26. 19:31

 

K8S

Docker같은 컨테이너들을 편리하게 운영할 수 있게 해주는 오케스트레이션 도구

관리자가 이 컨테이너 서비스는 웹이야 라고 정의하면 K8S가 적당한 서버를 골라 배포하고 부하 상황을 모니터링 하면서 컨테이너를 scale out/up/in 할 수 있다. CPU, Memory 외에 현재 접속자 수 같은 값을 이용해 Auto Scaling도 된다.

다양한 방식의 배포를 제공해서 canary, Rollingupdate 등 우리가 생각할 수 있는 대부분의 방법들이 이미 준비되어 있다.

Google에서 발표한 IDC에서 사용하는 기술이지만 Google 포함 모든 클라우드 벤더들이 K8S를 지원한다.

 

배포한 서비스들은 논리적으로 Namespace나 Label 단위로 관리가 가능. 예를들어 label이 Frontend인 컨테이너를 버전1->버전2로 업그레이드 하게 명령할 수 있다.

 

Desired State라는 방식으로 컨테이너를 관리한다.

예를들어 "web app 1개를 유지해" 라고 요청하면 컨테이너가 없으면 적절한 pod에 web app 컨테이너를 1개 띄우고, 이미 컨테이너가 떠 있다면 더이상 생성하지 않는다. 모니터링을 하다 web app 컨테이너가 사라지면 다시 1개를 띄운다.

이런 방식으로 관리자는 직접 컨테이너를 생성하고 제거하는 등의 명령을 내리지 않아도 된다.

 

Ingress 기능을 제공하는데 Proxy 같은 녀석이다. 특정 웹서비스를 제공하는 컨테이너의 IP가 변경 되더라도 어떤 IP 를 찾아가면 되는지 알려준다.

여러개의 Ingress를 설정할 수 있어 보통 관리자용과 일반 유저용을 분리해서 관리한다.

 

 

 

Pod

K8S 배포 최소단위 : 컨테이너, 스토리지, 네트워크.

Pod에 속한 컨테이너는 스토리지와 네트워크를 공유하고 서로 localhost로 접근 가능.

컨테이너를 하나만 사용하더라도 Pod으로 감싸서 관리한다.

 

Deferation, Multi Cluster

클라우드와 IDC를 묶어서 관리할 수 있다.

구글에서 발표한 Anthos를 이용하면 여러 클라우드의 여러 클러스터를 한곳에서 관리할 수 있다.

 

CRD (Custom Resource Definitaion)

K8S가 제공하지 않는 기능이 있는 경우 plug-in같은 느낌으로 추가 리소스를 설치해서 사용할 수 있는 기능이다.

 

Cloud Code

구글에서 제공하는 K8S용 개발환경. IntelliJ, VS Code에서 사용 가능하다.

https://cloud.google.com/code

 

 

 

== 참고

CNCF CNCF Cloud Native Interactive Landscape : https://landscape.cncf.io/

https://medium.com/@tkdgy0801/amazon-eks-%EB%A1%9C-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-kubernetes-intro-83fd3ef2f10e

https://subicura.com/2019/05/19/kubernetes-basic-1.html

 

 

 

AND