Virtualbox에서 Kubernetes 설치하기

Jan 11, 2018

Virtualbox에 두 개의 가상서버로 Kubernetes 설치하는 방법이다.

  • vm 1 : 호스트
  • vm 2 : 노드

두 서버에 Kubernetes와 docker와 같은 기본 패키지를 설치한다.

# repository 추가
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF

# docker, kubeadm 설치
apt-get update
apt-get install docker.io apt-transport-https kubelet kubeadm kubectl

# swap off
swapoff -a

호스트 설정:

# vi /etc/hosts
192.168.0.101   k8s1
192.168.0.102   k8s2

호스트 서버 설치

init이 정상적으로 실행되면, 다른 노드에서 join을 할 수 있는 명령어가 출력되고, 노드 서버에 그대로 입력하면 된다.

kubeadm init \
  --apiserver-advertise-address=192.168.0.101 \
  --pod-network-cidr=10.244.0.0/16

mkdir -p $HOME/.kube
rm -f $HOME/.kube/config
rm -f /home/ubuntu/config

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo cp -i /etc/kubernetes/admin.conf /home/ubuntu/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
sudo chmod 755 /home/ubuntu/config

# 네트워크 카드 설정에 따라 적절히 변경 필요 - 이 글 마지막 참조
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml

노드 서버 설치

kubeadm join --token 037b45.73668ffc35fda768 192.168.0.101:6443 --discovery-token-ca-cert-hash sha256:126e83fa2c0b660e745d1eb225efaba55ebad93d3e0445c4065fc6637e652087

mkdir -p $HOME/.kube
scp ubuntu@192.168.0.101:/home/ubuntu/config $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Flannel 설정

Virtualbox에서 NAT, Local 두 개의 네트워크 인터페이스를 사용하는데, NAT 네트워크가 첫 번째라서 Flannel이 비정상적으로 동작했다. Local 네트워크 enp0s8을 사용하도록, 다음 파일을 내려받고 수정해야 한다.

https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml

command: [ "/opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr", "--iface=enp0s8" ]
See Also