본문 바로가기
기타/도커&쿠버네티스

[Kubernetes] 쿠버네티스 설치하기

by 책 읽는 개발자_테드 2022. 2. 21.
반응형

쿠버네티스 입문을 보고 정리한 글입니다.

 

목차

· 설치 없이 쿠버네티스 사용하기

· 도커 데스크톱을 이용한 쿠버네티스 설치

· 클라우드 서비스에서 제공하는 쿠버네티스 도구

· 쿠버네티스 클러스터를 직접 구성하는 도구


설치 없이 쿠버네티스 사용하기


1. 카타코다 - 마스터와 노드가 이미 설정되었고 플레이그라운드에서 제공하는 커맨드라인 툴을 이용할 수 있다. 쿠버네티스 커맨드라인 인터페이스인 kubectl 관련 명령을 실행할 수 있다.

 

2. Play with Kubernetes - 도커에서 제공하는 쿠버네티스 실습용 웹 환경이다. 카타코다와 다르게 <ADD NEW INSTANCE>로 직접 노드를 여러 대 추가할 수 있다. 개인이 여러 대 서버를 이용한 쿠버네티스 환경을 구성해 실습하기 어렵다는 현실적인 문제를 해결할 수 있다.

 

도커 데스크톱을 이용한 쿠버네티스 설치


macOS에 도커와 쿠버네티스 설치하기

1. 도커허브의 macOS용 도커 데스크톱 다운로드 사이트에 접속한 후 macOS용 설치 파일을 다운로드 한다.

https://hub.docker.com/editions/community/docker-ce-desktop-mac

2. 다운로드한 Docker.dmg 파일을 실행한다. 

3. 쿠버네티스를 활성화한다. Preference -> Kubernetes -> Enable Kubernetes -> Apply & Restart

 

4. 쿠버네티스 설치를 완료하면, 터미널에 kubectl version 명령을 실행해서 쿠버네티스 버전이 나타나는지 확인한다.

 

TODO: 클라우드 서비스에서 제공하는 쿠버네티스 도구


구글 쿠버네티스 엔진

아마존 쿠버네티스 일래스틱 컨테이너 서비스

애저 쿠버네티스 서비스

 

쿠버네티스 클러스터를 직접 구성하는 도구


· 클라우드 서비스에서 제공하는 도구를 이용하더라도 직접 쿠버네티스를 구성해야 할 때도 있다.  서버 자원에 쿠버네티스 클러스를 직접 구성하거나, 규칙 준수 이슈를 해결할 때 활용하는 대표적인 도구인 Kubeadm, Kubespray를 알아보자.

 

Kubeadm

· 쿠버 네티스에서 공식 제공하는 클러스터 생성/관리 도구다.

· 여러 대 서버를 고가용성을 제공하는 쿠버네티스 클러스터로 손쉽게 구성할 수 있다.

Kubeadm에서 제공하는 클러스터 고가용성 구조

· 여러 대의 마스터 노드를 구성하고 그 앞에 로드밸런서를 두었다. 워커 노드들이 마스터 노드에 접글할 때는 로드밸런서를 거쳐 접근한다. 마스터 노드 1대에 장애가 발생하더라도 로드밸런서에서 다른 마스터 노드로 접근할 수 있게 해서 클러스터의 신뢰성을 유지한다.

 

· 위 그림은 쿠버네티스 클러스터의 데이터 저장소 역할을 하는 etcd 클러스터를 마스터 노드에 함께 설치해서 운용하는 방법이다. 스택 etcd라고 하며, 필요에 따라 etcd 클러스터를 마스터 노드가 아닌 다른 곳에 구성해두고 사용할 수 있다.

 

· 지원 명령어: init, join, upgrade, config, reset, token, version

 

Kubespray

· 상용 서비스에 적합한 보안성과 고가용성이 있는 쿠버네티스 클러스터를 배포하는 오픈 소스 프로젝트다.

· 서버 환경 설정 자동화 도구인 앤서블 기반으로 개발되었다.

· 설정에 따라 사용자에게 맞는 다양한 형식으로 쿠버네티스 클러스터를 구성할 수 있으므로, 온프레미스 환경에서 상용 서비스의 쿠버네티스 클러스를 구성할 때 유용하다.

- 온프레미스(on-premise):소프트웨어 등 솔루션을 클라우드 같이 원격 환경이 아닌 자체적으로 보유한 전산실 서버에 직접 설치해 운영하는 방식을 말한다.

 

· 설치 이후에 ingress-nginx 컨트롤러, 헬름, 볼륨 플러그인 cephfs를 프로비저닝하는 cephfs-provisioner, SSL 인증서를 관리하는 cert-manager 등의 추가 구성 요소를 클러스터에 실행하는 역할도 한다.

 

· Kubespray에서 제공하는 클러스터 고가용성 구조는 Kubeadm과 다르다.

 

· Kubeadm처럼 별도의 로드밸런서를 사용하지 않고 노드 각각의 nginx가 리버스 프록시로 실행된다. 이 nginx-proxy가 전체 마스터 노드를 바라보드 구조다. 그래서 쿠버네티스의 컴포넌트들은 직접 마스터 노드와 통신하지 않고 자신의 서버 안 nginx와 통신한다. 

· 마스터 노드의 장애 감지는 헬스 체크를 이용해 nginx가 알아서 처리한다.

 

· 쿠버네티스는 CNI(Container Network Interface)를 만족하는 다양한 네트워크 플러그인을 지원한다. 따라서 Kubespray를 이용하면 간단한 설정으로 클러스터 네트워크를 자동 구성할 수 있다.

 

Kubespray가 지원하는 네트워크 플러그인

플러그인 이름 설명
플라넬(flannel · GRE/VXLAN(layer 2)기반 오버레이 네트워킹을 지원한다.
· 가장 오래되어 안정성이 높은 플러그인이다.
· 기능과 구조가 간단하므로 네트워크 정책 기능을 지원하지 않는다. 네트워크 주소가 제한되었거나 네이티브 라우팅이 불가능한 환경에서 좋은 옵션으로 고려할 수 있다.
칼리고(caligo) · BGP(layer3)기반 네트워킹을 지원하고, IPinIP 터널링 기능을 옵션으로 사용할 수 있다.
· AWS, 구글 클라우드 플랫폼 등 관리형 쿠버네티스 서비스를 제공하는 회사 대부분에서 칼리코를 기본 네트워크 플러그인으로 사용한다.
· Kubespray의 기본 설정이다.
· 클러스터 당 최대 5,000개 노드까지 사용할 수 있으며 클러스터 규모가 크다면 성능과 안정성을 보장하도록 라우팅 정보 공유를 매개하는 라우트 리플렉터 노드를 둘 것을 권장한다.
· 온프레미스 환경에서 네이티브 라우팅을 지원하는 좋은 옵션으로 고려할 수 있다.
캐널(canal) · 칼리고와 플라넷을 혼합한 플러그인이다.
실리엄(cilium) · BPF(Layer 3/4)기반 네트워킹을 이용하여 iptables 규칙보다 훨씬 복잡하고 다양한 네트워크 정책 기능을 실행할 수 있다.
· 가장 다양한 기능과 높은 보안성이 있다.
· 다소 높은 커널 버전(cilium v1.4 기준, 리눅스 커널 v4.9.17 이상)을 요구한다는 단점이 있다.
컨티브(contiv) · VLAN, VXLAN, BGP, CISCO, SDN 네트워킹을 지원한다. 
· 온프레미스 환경의 시스코 ACI와 통합할 수 있는 기능을 제공한다.
위브넷(weavenet) · 외부 키/값  데이터베이스 클러스터(etcd)가 필요 없는 경량 컨테이너 오너레이네트워킹을 지원한다.
· 최대 500개 노드까지 지원하므로 작거나 중규모의 클러스터 운영에 적합하다.
kubo-router · IPVS(layer 3) 기반의 네트워킹을 지원한다.
· IPVS/LVS 커널 기능을 이용하여 쿠버네티스의 서비스 로드밸런싱 성능을 향상시키고, DSR(Direct Server Return) 기능으로 응답 시간을 향상시킨다.
멀터스(multus) · 메타 CNI 플러그인으로 칼리코, 플라넬 등과 함께 사용할 수 있다. 파드에 2개 이상의 네트워크 인터페이스(multi NIC)를 부여할 수 있다. 
· 멀터스가 사용하는 데이터는 쿠버네티스의 CRDs(Custom Resource Define)으로 저장/관리한다.  

 

TODO: Kubespray를 사용해서 분산 서버 환경에 쿠버네티스 클러스터 구성하기

반응형

댓글