쿠버네티스(k8s)는 컨테이너화된 어플리케이션을 배포, 관리, 확장할 때 수반되는 다수의 수동 프로세스를 자동화하는 오픈소스 컨테이너 오케스트레이션
플랫폼이다.
쿠버네티스 클러스터는 Linux온프레미스, 퍼블릭, 프라이빗 또는 하이브리드 클라우드 전체로 호스트를 확장할 수 있다.
Container는 웹 서버를 많이 다루지만 실제로는 웹 서버 뿐 아니라 굉장히 많은 어플리케이션이 존재한다.
쿠버네티스는 Deployment
Statefulsets
DaemonSet
Job
CronJob
등 배포방식이 다양하다.
배포방식의 특징은 아래와 같다.
Deployment
: 새로운 버전의 어플리케이션의 무중단 배포가 가능하다.
StatefulSets
: 실행 순서를 보장하고 호스트 이름과 볼륨을 일정하게 사용할 수 있어 순서나 데이터가 중요한 경우에 사용할 수 있다.
DaemonSet
: 로그나 모니터링 등 모든 노드에 설치가 필요한 경우에 사용할 수 있다.
Job
,CronJob
: 배치성 작업을 할 때 사용
서버를 배포할 때 WAS서버를 내부망에 설치하고 외부에서 접근이 가능한 Nginx
나 Apache2
를 프록시 서버로 사용했다. 프록시 서버는 도메인과 경로 조건에 따라 설정을 변경해 줘야했다.
쿠버네티스의 Ingress
는 이를 자동화 하면서 기존 프록시 서버에서 사용하는 설정을 거의 그대로 사용할 수 있다.
쿠버네티스는 부하에 따라 자동으로 서버를 늘리는 기능(Auto Scailing)이 있고 IP를 할당받아 로드벨런서로 사용할 수 있다.
외부 스토리지를 컨테이너 내부 디렉토리에 마운드하여 사용하는 것도 일반직인데 이를 위해 클라우드마다 사용하는 API가 다른데 쿠버네티스를 사용하면 Cloud Controller를 이용하여 클라우드 연동을 비교적 쉽게 확장할 수 있다.
하나의 클러스터를 논리적으로 구분해 사용할 수 있다.
하나의 클러스터에 다양한 프레임워크와 어플리케이션을 사용하기 때문에 기본(system
, default
)외에 여러개의 namespace를 사용하는게 일반적이다.
각각의 리소스에 대해 유저별로 CRUD권한을 쉽게 지정할 수 있다.
AWS의 경우 IAM을 연동해 사용할 수 있다.
쿠버네티스가 제공하지 않는 기능을 기본 기능과 동일한 방식으로 적용하고 사용할 수 있다. (EX. SSL인증서 적용)
CPU, 메모리 사용량에 따른 확장과 접속자 수와 같은 값을 사용할 수 있다. 컨테이너의 개수를 조정하는 HPA(Horizontal Pod Autoscaler)
, 컨테이너의 리소스 할당량을 조정하는 VPA(Vertical Pod Autoscaler)
, 서버 개수를 조정하는 CA(Cluster Autoscaler)
방식이 있다.
클라우드에 설치한 쿠버네티스 클러스터와 자체 서버에 설치한 쿠버네티스를 묶어 하나로 사용할 수 있다.
해당 사이트를 보고 공부했습니다.
https://subicura.com/2019/05/19/kubernetes-basic-1.html