지난 글 “Kubernetes Overview

이번 글에서는 ubuntu 14.04, kubernetes 1.5.1 버전을 기준으로 kube-up을 통해 설치 및 구성하는 방법을 알아보겠습니다. (https://kubernetes.io/docs/getting-started-guides/ubuntu/manual/)


예시) 제가 구성할 클러스터는 아래와 같습니다.

IP Address Role
192.168.56.101 both master and node
192.168.56.102 node1
192.168.56.103 node2

설치 전 필수조건 (Prerequisites)

1. 각 노드(서버)는 docker 버전 1.2 이상, bridge-utils이 설치가 되어 있어야 합니다. (apt-get install bridge-utils)
2. 각 노드는 서로 통신 할 수 있어야 합니다. 마스터 노드는 인터넷에 연결되어 있어야 합니다.
3. 이 가이드는 Ubuntu 14.04 LTS 64bit 서버기준이며, upstart 대신 systemd를 사용하는 Ubuntu 15에서는 작동하지 않습니다.
4. etcd, flannel, k8s는 최신버전 설치를 권장합니다. (이 글에서는 k8s 1.5.1 버전을 설치합니다.)
5. 각 노드 간 패스워드 없이 ssh 통신이 되어야 합니다. (Ubuntu : RSA 비대칭키를 이용하여 패스워드 없이 ssh 접속방법 참고)
6. 모든 컴퓨터의 원격 사용자는 /bin/bash를 로그인 쉘로 사용가능해야하고 sudo 액세스 권한을 갖고 있어야 합니다.

kubernetes 구성 및 실행 (master로 설정할 서버에서 진행)

1. kubernetes.git clone

(설치를 원하는 디렉토리에서 실행)
$ git clone –depth 1 -b v1.5.1 –single-branch https://github.com/kubernetes/kubernetes.git

(최신버전의 경우는 git clone을 통해 가져올 수 있으나 kubeadm을 통해 설치가 가능합니다.) $ git clone --depth 1 https://github.com/kubernetes/kubernetes.git

2. flannel, etcd, kubernetes export (flannel, etcd은 최신버전 권장)

해당 변수를 변경하여 etcd 버전, flannel 버전, K8S 버전를 정의 할 수 있습니다. (확인은 $ env로 가능)

$ export KUBE_VERSION=1.5.1
$ export FLANNEL_VERSION=0.8.0
$ export ETCD_VERSION=3.2.5

3. 클러스터 config 설정

$ vi {kubernetes}/cluster/ubuntu/config-default.sh

export nodes="root@192.168.56.101 root@192.168.56.102 root@192.168.56.103"
export roles="ai i i"
export NUM_NODES=${NUM_NODES:-3}
export SERVICE_CLUSTER_IP_RANGE=192.168.3.0/24
export FLANNEL_NET=172.16.0.0/16
- nodes는 각 노드에 원격으로 접속가능한 계정과 IP를 의미합니다.
- role에서 a는 마스터, i는 노드, ai는 마스터/노드를 의미합니다.
- NUM_NODES는 전체 노드의 수를 정의합니다. (master 포함)
- SERVICE_CLUSTER_IP_RANGE변수는 Kubernetes 서비스 IP 범위를 정의합니다.
- FLANNEL_NET변수는 아래 IP와 충돌하지 않아야 flannel 오버레이 네트워크에 사용되는 IP 범위를 정의할 수 있습니다.
10.0.0.0 - 10.255.255.255 (10/8 prefix)
172.16.0.0 - 172.31.255.255 (172.16/12 prefix)
192.168.0.0 - 192.168.255.255 (192.168/16 prefix)
※ 프록시 설정이 필요한 경우 PROXY_SETTING을 {kubernetes}/cluster/ubuntu/config-default.sh에서 설정할 수 있습니다 . $ PROXY_SETTING=”http_proxy=http://{server}:{port} https_proxy=https://{server}:{port}”

4. 클러스터 실행

위의 모든 변수가 올바르게 설정되면 다음 명령을 사용 하여 전체 클러스터를 구성합니다.

{kubernetes}/cluster/ 에서 싱행 $ KUBERNETES_PROVIDER=ubuntu ./kube-up.sh

... Starting cluster using provider: ubuntu
... calling verify-prereqs
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
... calling kube-up
.
.
.
Cluster validation succeeded
Done, listing cluster services:

Kubernetes master is running at http://192.168.56.101:8080

5. 어디서든 kubectl 명령어 사용할 수 있도록 복사

{kubernetes}/cluster 에서 아래 커맨드 실행
$ cp ubuntu/binaries/kubectl /opt/bin/.

6. 노드 구성 확인

$ kubectl get nodes

NAME             STATUS    AGE
192.168.56.101   Ready     1m
192.168.56.102   Ready     56s
192.168.56.103   Ready     37s

참고 사이트
release-notes : https://cloud.google.com/container-engine/release-notes
kubernetes docs: https://kubernetes.io/docs/getting-started-guides/ubuntu/manual/