Be Expert

[Kubernetes] 쿠버네티스 환경 구축하기 (vm) 본문

Kubernetes

[Kubernetes] 쿠버네티스 환경 구축하기 (vm)

psswrd 2020. 11. 25. 14:39

VM 3 대 (최소 2대)  

  • Master node로 사용할 VM 1대 : control plane으로 쿠버네티스 클러스터를 관리할 컨트롤 타워라고 생각하면 된다.

  • Worker node로 사용할 VM 2대 : container로 이루어진 POD가 올라갈 노드.

  • OS: CentOS 7 ( Ubuntu, RHEL등등 도 가능합니다)

 

1 . Docker 설치 ( docs.docker.com/engine/install/centos/ )

 

( 마스터와 모든 노드에서 ) 

 

  $ sudo yum install -y yum-utils

  $ sudo yum-config-manager \

   --add-repo \

  https://download.docker.com/linux/centos/docker-ce.repo



  $ sudo yum install -y docker-ce docker-ce-cli containerd.io 



  $ sudo systemctl start docker

 


2 . kubeadm, kubectl, kubelet 설치
      

( http://kubernetes.iokubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ )

( http://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/ )

( 마스터와 모든 노드에서 ) 

  1. SWAP disabled    

 $ sudo swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab

   2.

$ cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
$ sudo sysctl -system

 

   3. 방화벽 disable

$ sudo systemctl stop firewalld
$ sudo systemctl disable firewalld

   4. Set SELinux in permissive mode (effectively disabling it)

$ sudo setenforce 0
$ sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

 

   5. kubeadm, kubelet, kubectl 설치

$ cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF

$ sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

$ systemctl start kubelet && systemctl enable kubelet

 

3 . kubeadm - master, worker node 구성

 

(※ 앞에 M# 표시는 Master Node로 사용할 VM에만 입력하는 명령어, N1,2 # 표시는 Worker Node로 사용할 VM에만 입력하는 명령어 입니다.)

M# kubeadm init


마지막 라인에 아래와 같은 명령어와 함께 토큰이 출력되면 메모장에 복사하기

 

kubeadm join 10.100.0.104:6443 --token fablrz.d4hy4g8sfdxk4q1r \

    --discovery-token-ca-cert-hash sha256:d5b13625d8e089883acd5c39b4ec738a8753c59f07a7f92ee863fed83cce432e

 

kubeadm init 명령실행시 master에 kubernetes 컴포넌트들이 생성된다. init 명령 이후에 output을 살펴보면 위와 같은 토큰뿐만 아니라 아래와 같은 명령어를 알려준다.

M# mkdir -p $HOME/.kube
M# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
M# sudo chown $(id -u):$(id -g) $HOME/.kube/config

Installing Container Network Interface(CNI) based Pod network add-on ( Pod간에 통신하기 위한 설치)

- 이 실습에서는 Weave Net을 설치합니다. (Calico, GCE 등이 있습니다)

M# kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
M# kubectl get nodes

// 결과는 master node로 지정했던 VM만 확인될 것입니다.

워커노드로 지정한 VM에서 메모장에 복사해놨던 토큰이 포함된 명령어를 입력합니다. (아래 명령어는 예시입니다)

N1,2 # kubeadm join 10.100.0.104:6443 --token fablrz.d4hy4g8sfdxk4q1r
    --discovery-token-ca-cert-hash sha256:d5b13625d8e089883acd5c39b4ec738a8753c59f07a7f92ee863fed83cce432e​
M# kubectl get nodes

//아래 그림은 워커 노드가 3개입니다. 실습에서는 2개. ​

 

 

Comments