Kubespray

snooby·2022년 8월 30일
2

🐳 Docker & K8S

목록 보기
37/51
post-thumbnail

Kubespray는 쿠버네티스를 쉽게 설치하는 자동화 도구입니다.

Ansible Playbook, Inventory, Provisioning Tool과 일반적인 운영체제, 쿠버네티스 클러스터의 설정 관리 작업을 Ansible을 통해 쉽고 효과적으로 kubernetes 클러스터를 설정합니다.

✔ Kubespray 사전 환경

서버 구성

kubespray 서버 : kubespray를 실행할 서버
kubernetes master 서버 : kubernetes 마스터 서버
kubernetes worker 서버 : kuberentes 워커 서버

🔨 설치사항

  • Jinja 2.9 이상 필요
  • 서버가 인터넷에 액세스 가능
  • 서보 상호간의 ssh 키 복사
  • 방화벽 비활성화
  • Python3 설치(kubespray 서버
  • ssh key 생성(kubespray 서버)
  • ssh key 복사(master, worker 서버)

🔨 master, worker 서버 기본 셋팅

kubernetes master 서버를 포함한 worker 서버에 패킷 포워딩이 가능하도록 설정하고, 방화벽 및 selinux를 해제하며, 메모리 swapping을 비활성화합니다.

  • ip_forward 활성화
$ echo 1 > /proc/sys/net/ipv4/ip_forward
  • firewalld 비활성화
$ systemctl stop firewalld & systemctl disable firewalld
  • selinux 해제
$ sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux && cat /etc/sysconfig/selinux
$ setenforce 0
  • swap memory 중지
$ swapoff -a 

✔ kubespray 실행

kubespray를 사용하기 위해서는 공식 깃헙의 내용을 클론하여 내용 변경 후 사용합니다.

# kubespray 서버 에서
git clone https://github.com/kubernetes-sigs/kubespray.git
sudo pip3 install -r requirements.txt

# sample 파일을 custom cluster 폴더에 복사
cp -rfp inventory/sample inventory/{custom cluster}
# Inventory.ini 파일을 수정
vi inventory/{custom cluster}/inventory.ini

inventory.ini 수정

# inventory/mycluster/inventory.ini 
[all]
master ansible_host=192.168.122.10 ip=192.168.122.10 etcd_member_name=etcd1
node1 ansible_host=192.168.122.21  ip=192.168.122.21
node2 ansible_host=192.168.122.22  ip=192.168.122.22
node3 ansible_host=192.168.122.23  ip=192.168.122.23
# node4 ansible_host=95.54.0.15  # ip=10.3.0.4 etcd_member_name=etcd4
# node5 ansible_host=95.54.0.16  # ip=10.3.0.5 etcd_member_name=etcd5
# node6 ansible_host=95.54.0.17  # ip=10.3.0.6 etcd_member_name=etcd6
 
# ## configure a bastion host if your nodes are not directly reachable
# bastion ansible_host=x.x.x.x ansible_user=some_user
 
[kube-master]
master
 
[etcd]
master
 
[kube-node]
node1
node2
node3
 
[calico-rr]
 
[k8s-cluster:children]
kube-master
kube-node
calico-rr

Ping 모듈을 통해서 노드간 통신이 이루어지는지 확인합니다.

ansible kube-node -i ./{custom cluster}/inventory.ini -m ping -u irteamsu -vvv

cluster.yaml 파일을 통해서 배포

ansible-playbook --flush-cache -u irteamsu -b -i inventory/{custom cluster}/inventory.ini cluster.yml -vvv

✔ 클러스터 생성 확인

kubespray 서버를 통해서 스프레이하면 master, worker간에 클러스터 구축이 완료되고, 마스터 서버를 통해서 클러스터가 정상적으로 생성이 되었는지 확인할 수 있습니다.

kubectl get nodes

결국, Ansible을 사용하여 kubernetes를 여러 서버에 효율적으로 설치하는 방법을 제공해주는 오픈소스인 것 같습니다.

profile
데이터를 가치있게 다루고 싶은 개발자 🐥

0개의 댓글