Kubespray로 Kubernetes 설치
2022. 5. 17. 20:51ㆍkubernetes
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 |