* 참고 : 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
'IT > Kubernetes' 카테고리의 다른 글
[Kubernetes] Namespace, Label & LabelSelector, Annotations (0) | 2022.05.17 |
---|---|
[Kubernetes] Workload - Pods (0) | 2022.05.17 |
[Kubernetes] Kubernetes Objects (0) | 2022.05.17 |
[Kubernetes] Work node 추가 및 Version Upgrade (0) | 2022.05.16 |
[Kubernetes] Kubernetes Architecture 및 설치 & Tips (0) | 2022.05.16 |