티스토리 뷰

container

kubernetes 설치

초보의 CHOMAN 2018.04.17 11:53


kubernetes 설치




설치 참고 원문 사이트



http://iamartin-gh.herokuapp.com/kubernetes-install 


https://kubernetes.io/docs/setup/independent/install-kubeadm/#before-you-begin 


https://gist.github.com/ruanbekker/38a38aea5f325f7fa4a19e795ef4f0d0


https://www.popit.kr/kubernetes-introduction


https://blog.alexellis.io/kubernetes-in-10-minutes

 




설치전 체크


 

iptables port


네트워크 확인


hostname 확인


swapoff -a 명령어



: 쿠바네티스 운영에서는 스왑이 오프되어 있어야고 하는데 그 이유는 아직 모르겠다.




환경



VirtualBox VM - 2CORE / 2G RAM

Ubuntu 16.04 LTS 64BIT

 


: 테스트 결과로는 1CORE / 1G RAM 에서도 동작하는듯 한데 너무 느리면 사양을 올려주면 된다.




혹시나 헷갈릴수도 있으니 OS 설치후 아래와 같이 호스트 네임을 설정해줬다



서버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

 


example) : 초기화 할때 여러가지 옵션이 적용 가능함


kubeadm init --pod-network-cidr 192.168.0.0/16 --service-cidr 10.96.0.0/12 --service-dns-domain "k8s" --apiserver-advertise-address $(ifconfig eth0 | grep 'inet addr'| cut -d':' -f2 | awk '{print $1}')




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 라고 출력되어야 한다.



여기까지 진행하였으면 이제 부터 쿠바네티스를 사용 할 수 있도록 준비를 완료했다 라고 보면 될것 같다.



'container' 카테고리의 다른 글

docker ssh 설치  (0) 2018.05.12
docker network (mac_vlan)  (0) 2018.05.10
docker 이미지 만들기  (0) 2018.05.10
docker command  (0) 2018.04.30
kubernetes 설치  (0) 2018.04.17
docker  (0) 2018.04.04
댓글
댓글쓰기 폼