본문 바로가기
IT/Kubernetes

[Kubernetes] Kubespray로 쿠버네티스 설치하기

by 깅지수 2022. 5. 17.

* 참고 : https://kubernetes.io/ko/docs/setup/production-environment/tools/kubespray/

* 참고 : https://kubespray.io/#/
* 참고 : https://github.com/kubernetes-sigs/kubespray

 

Kubespray로 쿠버네티스 설치하기

이 가이드는 Kubespray를 이용하여 GCE, Azure, OpenStack, AWS, vSphere, Packet(베어메탈), Oracle Cloud infrastructure(실험적) 또는 베어메탈 등에서 운영되는 쿠버네티스 클러스터를 설치하는 과정을 보여준다. Kub

kubernetes.io

 

Kuberspray

: Ansible 플레이북, 인벤토리, 프로비저닝 도구와 일반적인 운영체제, 쿠버네티스 클러스터의 설정 관리 작업

 



Control Plane 1
Work Node 3 (1 Control Plan + 2 Woker Node)
CPU: 2, Memory 3GB

~/vagrant/k8s

Vagrant.configure("2") do |config|
	# Define VM
	config.vm.define "k8s-node1" do |ubuntu|
		ubuntu.vm.box = "ubuntu/focal64"
		ubuntu.vm.hostname = "k8s-node1"
		ubuntu.vm.network "private_network", ip: "192.168.100.100"
		ubuntu.vm.provider "virtualbox" do |vb|
			vb.name = "k8s-node1"
			vb.cpus = 2
			vb.memory = 3000
		end
	end
	config.vm.define "k8s-node2" do |ubuntu|
		ubuntu.vm.box = "ubuntu/focal64"
		ubuntu.vm.hostname = "k8s-node2"
		ubuntu.vm.network "private_network", ip: "192.168.100.101"
		ubuntu.vm.provider "virtualbox" do |vb|
			vb.name = "k8s-node2"
			vb.cpus = 2
			vb.memory = 3000
		end
	end
	config.vm.define "k8s-node3" do |ubuntu|
		ubuntu.vm.box = "ubuntu/focal64"
		ubuntu.vm.hostname = "k8s-node3"
		ubuntu.vm.network "private_network", ip: "192.168.100.102"
		ubuntu.vm.provider "virtualbox" do |vb|
			vb.name = "k8s-node3"
			vb.cpus = 2
			vb.memory = 3000
		end
	end

	config.vm.provision "shell", inline: <<-SHELL
      #Ansible을 사용하기 위해서는 ssh key를 만들어서 key를 배포해야하기 때문
	  sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
      sed -i 's/archive.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list
	  sed -i 's/security.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list
	  systemctl restart ssh
	SHELL
end



 1. SSH 키 생성 및 복사

 

ssh-keygen
ssh-copy-id vagrant@192.168.100.100
ssh-copy-id vagrant@192.168.100.101
ssh-copy-id vagrant@192.168.100.102

 


2. kubespray 소스 다운로드

 

cd ~
git clone -b v2.18.1 https://github.com/kubernetes-sigs/kubespray.git
cd kubespray

 


3. ansible, netaddr, jinja 등 패키지 설치

 

sudo apt update
sudo apt install python3-pip -y
sudo pip3 install -r requirements.txt




4. 인벤토리 구성

 

cp -rpf inventory/sample/ inventory/mycluster


inventory/mycluster/inventory.ini

[all]
node1 ansible_host=192.168.100.100 ip=192.168.100.100
node2 ansible_host=192.168.100.101 ip=192.168.100.101
node3 ansible_host=192.168.100.102 ip=192.168.100.102

[kube_control_plane]
node1

[etcd]
node1

[kube_node]
node1
node2
node3

[calico_rr]

[k8s_cluster:children]
kube_control_plane
kube_node
calico_rr



5. 변수 설정


`inventory/mycluster/group_vars`

 


6. 플레이북 실행



ansible all -m ping -i inventory/mycluster/inventory.ini
ansible-playbook -i inventory/mycluster/inventory.ini cluster.yml -b



7. 검증



mkdir ~/.kube
sudo cp /etc/kubernetes/admin.conf ~/.kube/config
sudo chown vagrant:vagrant ~/.kube/config
kubectl get nodes
kubectl get pods -A