본문으로 바로가기

이번 글 목차


0. 설치 없이 쿠버네티스 사용해보기

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

2. 쿠버네티스 설치 (with Public Cloud Provider)

 

 

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


1. 관련 사이트

1) www.katacoda.com/courses/kubernetes/playground

- 카타코다의 경우 마스터와 워커 노드가 이미 설정이 완료되어 있고, kubectl을 통한 명령어 실행이 가능하다.

- www.katacoda.com/learn

 

Interactive Browser Based Labs, Courses & Playgrounds | Katacoda

Learn the latest technologies with our hands-on labs

www.katacoda.com

카타코다 코스

카타코다 사이트를 들어가시면 docker, kubernetes를 비롯한 다양한 최신 기술에 대해서 시나리오별로 학습이 가능합니다.

처음 기술을 접하는 경우 해당 사이트를 통해서 다양한 시나리오를 수행하다보면 어려움은 없을 거예요~

 

 

2) labs.play-with-k8s.com/

위 사이트의 play with kubernetes도커에서 제공하는 쿠버네티스 실습용 웹 환경입니다.

github, dockerhub의 계정으로 로그인 하시면 사용이 가능하며, 아래 사진 왼쪽에 ADD NEW INSTANCE 를 클릭하여 노드를 여러대 추가할 수 있습니다. 이는 카타코다와 큰 차이점으로 클러스터를 자동으로 구성해주지 않아 명령어를 통해 사용자가 직접 클러스터를 구성하는 경험을 할 수 있습니다.

 

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


1. macOS에서의 설치

저는 macbook을 사용 중이라 mac용 도커 데스크톱을 설치해서 진행하고자 하는데 windows의 경우도 크게 다르지 않으니 참고하시면 금방 따라하실 수 있습니다.

 

1) 도커 데스크톱(Docker Desktop for Mac) 다운로드

www.docker.com/products/docker-desktop

 

Docker Desktop for Mac and Windows | Docker

Learn why Docker Desktop is the preferred choice for millions of developers building containerized applications. Download for Mac or Windows.

www.docker.com

위는 도커 데스크톱을 다운받을 수 있는 사이트로 Windows/MacOS 중에 자신의 운영체제에 맞게 설치하시면 됩니다.

저 같은 경우 stable, edge 버전 중에 stable 버전으로 설치했습니다. edge의 경우 실험 버전으로 간단히 사용하기에 충분한 것으로 알고 있어 무엇을 다운받던지 큰 차이가 없을 겁니다~

 

처음 도커 접근 권한 설정 허가 및 로그인을 해주시고 터미널에 접속하셔서 정상적으로 설치가 되었는지 확인해보세요~

$ docker version

위 사진처럼 Client, Server 부분이 모두 보이면 정상 설치가 된 것입니다~

 

2) Kubernetes 활성화

 

상단 메뉴바에서 'Docker 아이콘 선택 - Preferences' 클릭

docker desktop preferences

상단 부분 'Kubernetes 아이콘 클릭 - Enable Kubernetes, Deploy Docker Stack~  부분 체크 - Apply 버튼 클릭' 하면 자동으로 쿠버네티스가 설치됩니다.

설치를 하시면 기본적으로 어느정도 시간이 걸리니 background로 실행하시고 다른 일 하다보시면 설치가 완료 되어 있을 겁니다.

 

 

3. 쿠버네티스 클러스터 직접 구성하기


0. 기본 상식

 

쿠버네티스 클러스터를 직접 구성하는 방법으로는 대표적으로 Kubeadm, Kubespray가 있습니다.

 

- Kubeadm : 쿠버네티스에서 공식 제공하는 클러스터 생성/관리 도구로, 테스트용 클러스터 구성에 주로 사용했으나 요즘은 HA을 제공하는 클러스터까지 구성이 가능합니다.

이미지 출처 : https://larrydevops.com/kubernetes/creating-highly-available-clusters-with-kubeadm-with-external-etcd-nodes/

위와 같이 3대의 Master Node는 LB(로드밸런서)를 두고, worker Node는 해당 LB를 통해서 접근하게 됩니다.

이는 Master Node 1대가 장애나도 3중화가 되어 있고, LB가 자동으로 정상 동작 Master Node로 접근할 수 있게 해주어 신뢰성을 유지합니다. 보통 Master Node와 함께 etcd(k8s cluster data 저장소)와 함께 설치해서 운용됩니다. 이는 stacted etcd라고도 하며, 필요해 따라 위 그림처럼 external etcd cluster 구성하는 방법도 있습니다.

 

 

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

ansible 기반으로 개발되어 있고 사용자 맞춤으로 다양하게 클러스터를 구성할 수 있어 유용하게 사용이 가능합니다.

이미지 출처 : https://www.bookstack.cn/read/kubespray/ha-mode.md

이번 포스팅에서 설치할 방법은 바로 이 Kubespray를 기반으로 할 겁니다~

우선 kubeadm과 클러스터 고가용성 구조가 다른 걸 확인하실 수 있습니다.

 

kubespray의 경우 별도의 LB가 없으며(localhost 로드밸런싱으로 외부 LB 또는 가상 IP 관리가 불편한 시나리오에서는 더 실용적),

각 node별로 nginx proxy가 전체 마스터 노드를 바라보는 구조입니다.

그래서 쿠버네티스의 컴포넌트들은 직접 master node와 통신하는 것이 아닌 자신의 노드 안에 nginx와 통신하며, 내부 nginx가 알아서 장애 감지 등을 처리하게 됩니다.

 

※ 다만, 진짜 kubernetes의 각각의 컴포넌트들에 대해 직접 하나하나 설치하고 싶다라고 하시면, 아래 링크 추천드립니다.

저도 직접해보진 않았지만 정말... hard way인것을 참고해주세요...

(개인적으로 해당 kubespray를 통한 bootstrap 도 쉽지 않으실 수 있습니다...)

 

github.com/kelseyhightower/kubernetes-the-hard-way

 

 

1. 설치 해보기

 

마스터 노드 3대워커 노드 2대로 구성 예정입니다.

OS, SPEC, Hostname은 아래와 같이 세팅하였습니다.

 

[Master Node]

  • hostname : master01, master02, master03
  • OS : CentOS 7.6
  • CPU/MEM : 2Core/4GB

[Worker Node]

  • hostname : worker01, worker02
  • OS : CentOS 7.6
  • CPU/MEM : 2Core/8GB

 

master01번 노드에 SSH 비밀키, kubespray가 제공하는 앤서블 플레이북을 실행시킬 수 있도록 세팅할 것이며,

나머지 노드들에는 SSH공개키를 복사하는 순서로 진행될 겁니다~

 

1) SSH 키 생성 및 배포

 

- 우선 master01번 노드에 접속해줍니다~

$ keygen -t rsa

- RSA 방식의 암호화 키를 만들겠다라는 명령어로 계속 ENTER를 누르시면 기본값으로 생성됩니다.

$ls -al .ssh/

$cat .ssh/id_rsa.pub

- 정상적으로 비밀키(id_rsa)와 공개키(id_rsa.pub) 파일이 생성되었나 보고 id_rsa.pub을 클립보드에 복사합니다~

(이후 앤서블 돌릴 때 다른 노드에도 접속이 가능해야되므로 ssh공개키를 복사할 겁니다~)

$ssh-id-copy [리눅스계정명]@[서버 IP]

- 위 명령어를 통해서 master01~03, worker01~02번 노드에 공개키를 복사해주세요!

 

2) Kubespray 세팅

 

1. 기본적으로 kubespray에 필요한 패키지를 다운받기 위해 pip를 설치합니다.

$ yum -y install python-pip
$ pip --version

# pip 설치가 안될 경우 repo 추가하시면 되실 겁니다~
sudo yum install -y epel-release
yum repolist

위와 같이 되시면 정상적으로 파이썬 패키지 매니저가 설치 완료되었습니다~

 

2. Kubespray의 github에서 코드 clone 한뒤 설치할 v2.11버전을 checkout 해주고 결과 확인합니다.

# Kubespray 클론
$ git clone https://github.com/kubernetes-sigs/kubespray.git

# v2.11버전 checkout
cd kubespray/
git checkout -b v2.11.0
git status

3. 아래와 같이 들어가보면 ansible을 포함한 필요 설치 패키지가 명시되어 있습니다.

$ cat requirements.txt

$ ansible --version

4. 참고할 템플릿을 복사해 cluster 설정을 위한 파일을 명시합니다

(inventory.ini파일에 설치 대상 서버들의 정보를 기입)

$ cp -rfp inventory/sample/ inventory/mycluster
$ vi inventory/mycluster/inventory.ini

위와 같이 node의 hostname과 IP를 알맞게 작성해줍니다.

오타 진짜 조심하고 두 번 조심하세요!!!

 

5. ansible playbook을 실행시켜줍니다. 아래 명령어를 통해서 cluster.yml 스크립트 파일을 실행합니다.

$ ansible-playbook -i inventory/mycluster/inventory.ini -v --become --become-user=root cluster.yml

설치시 10~20분 정도 시간이 걸립니다~

 

6. 아래 명령어를 통해서 정상적으로 설치되었나 확인하면 됩니다. 아래 사진과 같이 뜨면 정상 설치된 것입니다

$ docker version
$ kubectl version
$ kubectl get nodes


댓글을 달아 주세요