kubernetes 설치
설치 원문 링크
https://kubernetes.io/docs/setup/independent/install-kubeadm/#before-you-begin |
환경
VirtualBox VM – 1CORE / 1G RAM Ubuntu 16.04 LTS 64BIT |
hostname 설정
서버1 : kubernates-master 서버2 : kubernates-node1 |
설치
# 스왑오프 swapoff -a
# 도커 설치 apt-get update apt-get install -y docker.io
# 쿠버네티스 설치 apt-get update && apt-get install -y apt-transport-https curl 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
apt-get update apt-get install -y kubelet kubeadm kubectl |
데몬 재시작
systemctl daemon-reload systemctl restart kubelet |
kubelet에서 사용하는 cgroup 드라이버 구성
# 도커 cgroup drive 확인 docker info | grep -i cgroup
# /etc/systemd/system/kubelet.service.d/10-kubeadm.conf 라인추가 Environment=”KUBELET_CGROUP_ARGS=–cgroup-driver=cgroupfs” or Environment=”KUBELET_CGROUP_ARGS=–cgroup-driver=systemd”
# cgroup driver 변경 sed -i “s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g” /etc/systemd/system/kubelet.service.d/10-kubeadm.conf |
도커와 쿠버네티스의 cgroup 의 드라이버 구성이 맞지 않으면 아래와 같은 에러 발생
failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: “cgroupfs” is different from docker cgroup driver: “systemd” |
: 설치 및 데몬 재시작에서 별다른 에러 발생이나 로그가 없다면 cgroup 드라이버 설정은 SKIP 해도 될듯 하다.
마스터로 사용할 서버와 노드로 사용할 서버 위와 같이 동일하게 설치해준다.
마스터 초기화 하기
kubeadm init |
output
# 쿠버네티스 설치 완료 Your Kubernetes master has initialized successfully!
# 클러스터를 사용하려면 일반 사용자에서 아래 명령어 실행이 필요하다 To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 클러스터에 네트워크 배포가 필요하다 You should now deploy a pod network to the cluster. Run “kubectl apply -f [podnetwork].yaml” with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/
# 아래 명령어로 노드에서 조인이 가능하다 You can now join any number of machines by running the following on each node as root: kubeadm join 마스터아이피:6443 –token pq00mz.q5fsi336qn5cpuyx –discovery-token-ca-cert-hash sha256:1045412e3139d5cb1b559909fa7d0d5e90eca06465ab8c9eb335eedc3e6417d9 |
네트워크 배포 예제
kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubeadm/1.7/calico.yaml |
: 위는 calico 라는 네트워크를 배포하는 명령어
[노드]
클러스터 조인
kubeadm join 마스터아이피:6443 –token pq00mz.q5fsi336qn5cpuyx –discovery-token-ca-cert-hash sha256:1045412e3139d5cb1b559909fa7d0d5e90eca06465ab8c9eb335eedc3e6417d9 |
: 클러스터 조인 명령어는 마스터 초기화 (kubeadm init) 시 출력되는 화면에서 볼수 있다.
output
# 노드가 클러스터에 조인되었다. This node has joined the cluster: * Certificate signing request was sent to master and a response was received. * The Kubelet was informed of the new secure connection details. Run ‘kubectl get nodes’ on the master to see this node join the cluster. |
[마스터]
노드들이 제대로 조인되었는지 확인
kubectl get nodes |
output
NAME STATUS ROLES AGE VERSION kubernates-master NotReady master 19m v1.10.3 kubernetes-node1 NotReady <none> 6m v1.10.3 |
: 쿠버네티스 설치된 서버 사양에 따라 시간이 좀 걸리기도 한다
: NotReady 상태로 계속 머물러 있다면 마스터에서 네트워크 배포가 되지 않아서인 경우가 많다.
모든게 문제 없이 설치가 진행 되었다면 아래와 같은 메세지가 출력되어야 한다
NAME STATUS ROLES AGE VERSION kubernates-master Ready master 29m v1.10.3 kubernetes-node1 Ready <none> 16m v1.10.3 |
: STATUS 에 상태가 모두 Ready 라고 출력되어야 한다.
STATUS 가 모두 Ready 라고 출력되면 설치가 정상적으로 이뤄어 진것이다.