쿠버네티스 입문을 보고 정리한 글입니다.
목차
· 설치 없이 쿠버네티스 사용하기
· 도커 데스크톱을 이용한 쿠버네티스 설치
· 클라우드 서비스에서 제공하는 쿠버네티스 도구
· 쿠버네티스 클러스터를 직접 구성하는 도구
설치 없이 쿠버네티스 사용하기
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
· 쿠버 네티스에서 공식 제공하는 클러스터 생성/관리 도구다.
· 여러 대 서버를 고가용성을 제공하는 쿠버네티스 클러스터로 손쉽게 구성할 수 있다.
· 여러 대의 마스터 노드를 구성하고 그 앞에 로드밸런서를 두었다. 워커 노드들이 마스터 노드에 접글할 때는 로드밸런서를 거쳐 접근한다. 마스터 노드 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를 사용해서 분산 서버 환경에 쿠버네티스 클러스터 구성하기
'기타 > 도커&쿠버네티스' 카테고리의 다른 글
[Docker] 도커 엔진이란? 도커 엔진 사용하기 (0) | 2022.10.09 |
---|---|
컨테이너, 도커, 쿠버네티스란? (0) | 2022.10.02 |
댓글