Kubespray로 Kubernetes설치

강재민·2022년 5월 16일
0

Kubernetes

목록 보기
4/29
post-thumbnail

Vagrant

Vagrant.configure("2") do |config|
	# Define VM
	config.vm.define "knode1" do |ubuntu|
		ubuntu.vm.box = "ubuntu/focal64"
		ubuntu.vm.hostname = "knode1"
		ubuntu.vm.network "private_network", ip: "192.168.100.100"
		ubuntu.vm.provider "virtualbox" do |vb|
			vb.name = "knode1"
			vb.cpus = 2
			vb.memory = 3000
		end
	end
	config.vm.define "knode2" do |ubuntu|
		ubuntu.vm.box = "ubuntu/focal64"
		ubuntu.vm.hostname = "knode2"
		ubuntu.vm.network "private_network", ip: "192.168.100.101"
		ubuntu.vm.provider "virtualbox" do |vb|
			vb.name = "knode2"
			vb.cpus = 2
			vb.memory = 3000
		end
	end
	config.vm.define "knode3" do |ubuntu|
		ubuntu.vm.box = "ubuntu/focal64"
		ubuntu.vm.hostname = "knode3"
		ubuntu.vm.network "private_network", ip: "192.168.100.102"
		ubuntu.vm.provider "virtualbox" do |vb|
			vb.name = "knode3"
			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
코드의미
config.vm.provision프로비전중에 실행할 스크립트
<<-SHELL ... 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우분투는 기본값으로 영국에 있는 서버에서 업데이트 목록을 가져오기 때문에 mirror서버를 사용해서 업데이트시에 더욱 빠르게 업데이트 목록을 받아올 수 있게 된다.

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

### 아까 설정한 패스워드인증을 기반으로 ssh키를 복사붙여넣기 해준다.
### password는 기본적으로 "vagrant"임
ssh 192.168.100.100
ssh 192.168.100.101
ssh 192.168.100.102

### 키인증으로 잘 접속이 되는지 확인

kubespray 소스 다운로드

cd ~
git clone -b v2.18.1 https://github.com/kubernetes-sigs/kubespray.git
cd kubespray
ls
cat ~/kubespray/requirements.txt			#이 내용으로 필요한 패키지를 설치

ansible, netaddr, jinja 등 패키지 설치

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

인벤토리 구성

cp -rpf ~/kubespray/inventory/sample/ ~/kubespray/inventory/mycluster
vi ~/kubespray/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

### ip는 ectd가 접속하는  환경변수임

[kube_contorl_plane]
node1

[etcd]
node1

[kube_node]
node1
node2
node3

[calico_rr]

[k8s_cluster:children]
kube_control_plane
kube_node
calico_rr

변수 설정

cd ~/kubespray/inventory/mycluster/group_vars

## 이곳에서 변수를 설정할 수 있지만 이번 시간에는 사용하지 않았다.

플레이북 실행

ansible all -m ping -i ~/kubespray/inventory/mycluster/inventory.ini		#플레이북이 잘 불러와지는지 확인
ansible-playbook -i ~/kubespray/inventory/mycluster/inventory.ini cluster.yml -b

인증정보 복사

mkdir ~/.kube
sudo cp /etc/kubernetes/admin.conf ~/.kube/config
sudo chown vagrant:vagrant ~/.kube/config

검증

sudo kubectl get nodes
kubectl get pods -A -o wide			#상세보기

컨테이너역할
calico-node-xxxxx네트워크를 담당하는 컨테이너
coredns-847..dns를 담당하는 컨테이너
kube-scheduler프로세스 스케쥴을 담당하는 컨테이너
kube-apiserver프로세스들을 연결하는 중앙 컨테이너
kube-controller-manager컨테이너들을 관리하는 컨테이너

0개의 댓글