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 설치를 진행한다.
<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