Kubernetes 노드 구성

신민창·2021년 4월 22일
0

kubernetes

목록 보기
1/13

Kubernetes

kube-master1 노드와 kube-node1, kube-node2, kube-node3 으로 kubernetes 구성하기

참고 페이지

https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

구성

가상환경 ubuntu/focal64
cpu : 2개
memory : 2GB
kube-master1 : 192.168.200.11
kube-node1 : 192.168.200.21
kube-node2 : 192.168.200.22
kube-node3 : 192.168.200.23

kubernetes는 docker가 설치되어 있어야 설치/실행할 수 있다. 따라서 Docker를 먼저 설치 후 kubernetes 설치를 진행한다.

각 노드 별 실행 명령어

kube-master1

    <docker 설치 과정>
    sudo apt-get update  
    sudo apt-get remove docker docker-engine docker.io  --> 설치된 docker가 있을 시 삭제
    sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y  --> docker를 설치하기 위한 라이브러리 설치
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository "deb [arch=amd64] 	-->curl 명령어를 통해 gpg key 내려받기
    https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    sudo apt-get update  --> 다시 update
    sudo apt-get install docker-ce -y  --> docker 설치
    sudo apt-get update
    sudo apt-get upgrade
    
    < kubernetes 설치 과정>
    sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg  
    echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
    sudo apt-get update
    sudo apt-get install -y kubelet=1.19.10-00 kubeadm=1.19.10-00 kubectl=1.19.10-00
    sudo apt-mark hold kubelet kubeadm kubectl  -> 설치한 패키지가 자동으로 업데이트, 수정 되지 않도록 고정
    sudo kubeadm reset -y 
    sudo kubeadm init --apiserver-advertise-address=192.168.200.10 --pod-network-cidr=192.168.0.0/16  --> 마스터 노드로 사용할 호스트 클러스터 초기화

이렇게 입력하면

이런 화면이 나타난다.

나와 있는 명령어를 복사하여 입력한다.

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

그리고 캡처한 화면 하단부인

해당 부분은 복사하여 보관한다. 해당 부분은 작업 노드에서 마스터 노드에 연결하기 위해 필요한 명령어이다.

sudo kubeadm join 192.168.200.11:6443 --token f84qtt.ah32s8qjedvfleof --discovery-token-ca-cert-hash sha256:7c3c67922558440811a8d90166442ebad1c97d12281a022d3125ba8ab3bcdd3e

작업 노드

작업 노드는 마스터 노드와 마지막 부분만 제외하면 동일하다.

sudo apt-get update
      sudo apt-get remove docker docker-engine docker.io
      sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y
      curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
      sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
      sudo apt-get update
      sudo apt-get install docker-ce -y
      sudo apt-get update
      sudo apt-get upgrade
      sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
      echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
      sudo apt-get update
      sudo apt-get install -y kubelet=1.19.10-00 kubeadm=1.19.10-00 kubectl=1.19.10-00
      sudo apt-mark hold kubelet kubeadm kubectl  ---> 여기까지 동일

여기까지 구성 후 위에서 복사해둔 명령어를 입력한다.

sudo kubeadm join 192.168.200.11:6443 --token f84qtt.ah32s8qjedvfleof --discovery-token-ca-cert-hash sha256:7c3c67922558440811a8d90166442ebad1c97d12281a022d3125ba8ab3bcdd3e

이렇게 노드를 추가하고 마스터 노드에서

$ kubectl get nodes

를 입력하면

이렇게 노드들이 추가되는 것을 확인할 수 있다.

이를 하나하나 입력하기엔 매우 귀찮으므로 vagrantfile로 대부분의 명령어를 작성하였다.

# -*- mode: ruby -*-

# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.define "kube-master1" do |ubuntu|
    ubuntu.vm.box = "ubuntu/focal64"
    ubuntu.vm.hostname = "kube-master1"
    ubuntu.vm.network "private_network", ip: "192.168.200.11"
    ubuntu.vm.provider "virtualbox" do |vb|
      vb.name   = "kube-master1"
      vb.cpus   = 2
      vb.memory = 2048
    end
    ubuntu.vm.provision "shell", inline: <<-SHELL
    sudo apt-get update
    sudo apt-get remove docker docker-engine docker.io
    sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    sudo apt-get update
    sudo apt-get install docker-ce -y
    sudo apt-get update
    sudo apt-get upgrade
    sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
    echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
    sudo apt-get update
    sudo apt-get install -y kubelet=1.19.10-00 kubeadm=1.19.10-00 kubectl=1.19.10-00
    sudo apt-mark hold kubelet kubeadm kubectl
    sudo kubeadm reset -y
    sudo kubeadm init --apiserver-advertise-address=192.168.200.11 --pod-network-cidr=192.168.0.0/16
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config


  SHELL
  end

  config.vm.define "kube-node1" do |ubuntu|
    ubuntu.vm.box = "ubuntu/focal64"
    ubuntu.vm.hostname = "kube-node1"
    ubuntu.vm.network "private_network", ip: "192.168.200.21"
    ubuntu.vm.provider "virtualbox" do |vb|
      vb.name   = "kube-node1"
      vb.cpus   = 2
      vb.memory = 2048
    end

    ubuntu.vm.provision "shell", inline: <<-SHELL
      sudo apt-get update
      sudo apt-get remove docker docker-engine docker.io
      sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y
      curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
      sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
      sudo apt-get update
      sudo apt-get install docker-ce -y
      sudo apt-get update
      sudo apt-get upgrade
      sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
      echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
      sudo apt-get update
      sudo apt-get install -y kubelet=1.19.10-00 kubeadm=1.19.10-00 kubectl=1.19.10-00
      sudo apt-mark hold kubelet kubeadm kubectl
    SHELL
  end

  config.vm.define "kube-node2" do |ubuntu|
    ubuntu.vm.box = "ubuntu/focal64"
    ubuntu.vm.hostname = "kube-node2"
    ubuntu.vm.network "private_network", ip: "192.168.200.22"
    ubuntu.vm.provider "virtualbox" do |vb|
      vb.name   = "kube-node2"
      vb.cpus   = 2
      vb.memory = 2048
    end

    ubuntu.vm.provision "shell", inline: <<-SHELL
      sudo apt-get update
      sudo apt-get remove docker docker-engine docker.io
      sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y
      curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
      sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
      sudo apt-get update
      sudo apt-get install docker-ce -y
      sudo apt-get update
      sudo apt-get upgrade
      sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
      echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
      sudo apt-get update
      sudo apt-get install -y kubelet=1.19.10-00 kubeadm=1.19.10-00 kubectl=1.19.10-00
      sudo apt-mark hold kubelet kubeadm kubectl
    SHELL
  end
  config.vm.define "kube-node3" do |ubuntu|
    ubuntu.vm.box = "ubuntu/focal64"
    ubuntu.vm.hostname = "kube-node3"
    ubuntu.vm.network "private_network", ip: "192.168.200.23"
    ubuntu.vm.provider "virtualbox" do |vb|
      vb.name   = "kube-node3"
      vb.cpus   = 2
      vb.memory = 2048
    end

    ubuntu.vm.provision "shell", inline: <<-SHELL
      sudo apt-get update
      sudo apt-get remove docker docker-engine docker.io
      sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y
      curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
      sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
      sudo apt-get update
      sudo apt-get install docker-ce -y
      sudo apt-get update
      sudo apt-get upgrade
      sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
      echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
      sudo apt-get update
      sudo apt-get install -y kubelet=1.19.10-00 kubeadm=1.19.10-00 kubectl=1.19.10-00
      sudo apt-mark hold kubelet kubeadm kubectl
    SHELL
end
end

0개의 댓글

관련 채용 정보