쿠버네티스 설치


이 포스트는 하나의 마스터와 하나의 노드로 하는 쿠버네티스 클러스터 설치하는 방법에 대해서 정리한 것입니다. 포스트에서는 masternode 로 정의하여 설명하겠습니다.

NOTE!
- 버네티스는 2core 이상을 필요합니다. 인스턴스를 만들 때에 유의하시기 바랍니다.
- 16.04 을 기준으로 작성되었습니다.
- 다른 언급이 없다면, root 계정으로 진행하는 것으로 가정합니다.

Hostname 설정

/etc/hostname 변경

master는 kubernates-master 로 node 는 kubernates-node1 로 변경합니다.

# master
echo "kubernates-master" > /etc/hostname
echo "127.0.0.1 kubernates-master" >> /etc/hosts
# node
echo "kubernates-node1"  > /etc/hostname
echo "127.0.0.1 kubernates-node1" >> /etc/hosts	
#호스트 변경 후  reboot

설치

마스터 인스턴스와 노드 인스턴스 모두 아래와 같이 쿠버네티스를 설치 합니다.

스왚오프

kubeadm을 사용하려면 Swap을 비활성화해야 한다.

swapoff -a

도커 설치

  • Docker(/var/run/docker.sock)
  • containerd(/run/containerd/containerd.sock)
  • CRI-O(/var/run/crio/crio.sock)
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 -
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list
apt-get update
apt-get install -y kubelet kubeadm kubectl
  • kubeadm: 클러스터 구성 도구
  • kubelet: 파즈(pods)나 컨테이너를 관리
  • kubectl: 쿠버네티스 컨트롤러, 사용자-쿠버네티스의 명령 도구

재시작

reboot
systemctl daemon-reload
systemctl restart kubelet

마스터 초기화

kubeadm init

마스터를 초기화 하는데 생각보다 오래 걸립니다. 그리고 완료 후에는 다음과 같은 안내문구가 출력 됩니다.

... 설치 관련 출력 ... 생략 ... 
Your Kubernetes control-plane 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/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 172.16.0.20:6443 --token abc.abc.abc \
    --discovery-token-ca-cert-hash sha256:abc

해석을 하면 다음과 같습니다.

Your Kubernetes control-plane has initialized successfully!
> 당신의 쿠버네티스 control-plane 가 성공적으로 초기화되었습니다.
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:
> 아래에 있는 옵션 리스트 중에 하나를 가지고 "kubectl apply -f [podnetwork].yaml" 실행 시키세요.
  https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
> 아래의 스크립트를 루트 유저로 실행하면 워크노드를 추가할 수 있습니다.

kubeadm join 172.16.0.20:6443 --token abc.abc.abc \
    --discovery-token-ca-cert-hash sha256:abc

포트 네트워크는 링크에서 확인할 수 있습니다.

링크

#https://docs.projectcalico.org/v3.11/getting-started/kubernetes/ 에서 확인 가능함
kubectl apply -f https://docs.projectcalico.org/v3.11/manifests/calico.yaml

위의 스크립트는 링크에서 두번째에 있는 calico 네트워크를 적용하는 스크립트 입니다.