Kubespray로 Kubernetes 설치

2022. 5. 17. 20:51kubernetes

Control Plane 1

Work Node 3(1 Control plane + 2 Worker Node)

CPU: 2, Memory 3GB

새로운 환경에서 구축하기 위한 ~/vagrant/k8s 에서 Vagrantfile 구성

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
	  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 키 생성

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'으로 다운 'git'이 없으면 'git'을 설치하고 다운

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

다운로드 후 생성된 kubespray 디렉토리로 이동

cd kubespray

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

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

4. 인벤토리 구성

샘플파일을 새로 생성한 mycluster 디렉토리에 복사

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-playbook 실행

인벤토리 구성이 잘 되었나 아래 명령어로 확인

ansible all -m ping -i inventory/mycluster/inventory.ini

플레이북 실행

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

7. 검증

sudo kubectl get nodes

위 명령어 실행으로 아래에 결과가 나오면 설치 완료!

kubectl get nodes

NAME     STATUS   ROLES                  AGE   VERSION
docker   **Ready**    control-plane,master   30m   v1.22.8

'kubernetes' 카테고리의 다른 글

Label과 LabelSelector, Annotations  (0) 2022.05.29
Namespace  (0) 2022.05.29
Workload - Pod  (0) 2022.05.29
Kubernetes Objects  (0) 2022.05.19
K8s(kubernetes) 설치  (0) 2022.05.17