2. kubernetes 설치하기 – kubernetes + calico over virtualbox ubuntu 16


2018/11/10일 기준으로 kubernetes를 설치하는 방법을 정리합니다.
kubernetes는 버전에 따라 여러가지 의존성이 많이 존재하는 솔루션입니다.
어느 정도 시간이 지나면 설치 방법이 달라질 수 있습니다.

설치 환경

VirtualBox – ubuntu 16 vm 3개 구성 (Master 1대 + node 2대)

VirtualBox 네트워크 – 172.16.0.0/16 (NAT 네트워크)

calico network를 설치하면 10.X.X.X와 192.168.X.X 대역을 사용하도록 구성된다.

kubernetes version : v1.12.2

Docker-ce verson : v18.06.1

 

설치 가이드

kubernetes는 버전별로 설치 방법이 다를 가능성이 높다. 그래서 설치하려고 할때는 꼭 kubernetes에서
제공하는 Document를 읽어보는 것을 추천한다.

https://kubernetes.io/docs/setup/

 

Master와 Node에 docker 및 kubernetes 설치

1. swap 제거

kubernetes는 swap을 사용하는 시스템에는 설치가 되지 않도록 되어 있다.
아래와 같은 명령어로 swap을 제거하고 “/etc/fstab”에서도 swap을 제거한다.

 

2. ntp 설치

master와 node 서버가 시간이 맞지 않으면 kubernetes가 비정상 동작을 한다.
이를 막기 위해서 아래와 같이 ntp를 설치한다.

 

 

3. Docker 설치

kubernetes가 최신 버전의 Docker를 지원하지 않습니다.
그래서 아래와 같이 버전을 낮춥니다.

마지막에 docker가 업데이트하지 못하도록 “hold” 걸어 놓습니다.

 

4. Kubernetes 설치

아래와 같이 설치를 진행합니다.

kubernetes도 마찬가지로 업데이트되지 않도록 hold 걸어 놓습니다.

 

이제 구성할 준비가 완료되었습니다.
master를 구성 후, node를 master와 연결 작업을 해주면 됩니다.

 

kubernetes Master 구성

kubernetes의 Master node 설치 가이드를 보면 아래와 같은 내용있어 이를 활용한다.
https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/

특히나 calico 네트워크 설치는 아래와 같은 주의점이 있다..

위의 가이드를 참조해서 pod가 사용할 네트워크를 “192.168.0.0/16″으로 해서 초기화를 진행합니다.

아래와 같이 로그가 나오면서 진행된다.

이중 중요한 내용이 node를 연결하기 위한 명령어가 나오는데 이건 따로 저장해 놓아야한다.

“kubeadm join 172.16.0.201:6443 –token …”

 

kubectl 명령어를 사용하기 위한 인증 파일 복사도 한다.

 

주의
kubectl로 아래 pods 상태를 보면 coredns는 절대로 “READY” 상태가 되지 않는다.
이유는 네트워크를 구성하지 않았기 때문이다.

 

아래와 같이 calico를 설치한다. 이는 calico의 설치 가이드 대로 설치했다.

 

최종 구성 현황

pod를 확인했을 때 모든 pod가 “READY”라고 되어 있어야 정상이다.

그리고 node 상태도 확인해서 문제 없는지 확인을 해본다.

 

만약 구성 시, 이상이 있다면 아래 명령어를 사용해서 kubernetes를 초기화한다.

 

kubernetes Node 연결

위에서 설명했듯이, kebernetes와 docker가 설치되어 있다면 master에서 초기화 시 생성된 node 연결 명령어를 실행해서
master에 연결 시킨다.

 

master 서버에서 node 상태를 보면 연결하기를 원한 시스템이 올바로 연결된 것을 확인할 수 있다.