본문 바로가기
Kubernetes

kubespray 로 kubernetes 설치 (ubuntu)

by 정윤재 2023. 3. 31.

0. 설치 환경

 

  • kubspray 서버

       Ubuntu , CPU 2, Memory 2G

       Hostname : k8sbootstrap

       ip : 192.168.101.143

 

  • Control plane 1대

       Ubuntu , CPU 2, Memory 2G

       Hostname : k8smaster

       ip : 192.168.101.144

 

  • Worker node 3대

       Ubuntu cpu 2, memory 2G

 

       1번 worker node

       Hostname : k8sslave1

       Ip : 192.168.101.145

 

 

      2번 worker node

      Hostname : k8sslave2

      Ip : 192.168.101.146

 

     3번 worker node

     Hostname : k8sslave3

     Ip : 192.168.101.147

 

내가 설치할 사양은  kubespray 2.16 버전으로

Kubernetes 1.20 버전을 지원한다.

 

OS 는 ubuntu 20.04.6 LTS server 로 통일 했다. (우분투 사용시 버전에 유의)

 

쿠버네티스 설치 구조
설치할 kubernetes 예상도

 

kubernetes-sigs/kubespray at release-2.16 (github.com) 페이지의 하단을

잘 읽어보고 지원하는 os 나 기타 의존성 있을만한 버전이 원하는 버전인지

확인해봐야 한다.

 

1. 모든 서버에 swap 을 off 시킨다.

 

swapoff -a

 

sed -i 's/.*swap.*/#&/' /etc/fstab

 

(k8s 에서는 swap 을 지원하지 않는다.

사유는 컨테이너 속도가 node 마다 천차 만별이 되는등 제어가 힘들기 때문이다)

 

2. SSH 키 생성 및 복사 (kubespray 서버에서 작업)

 

kubespray 서버에서

Shell> ssh-keygen -t rsa -b 2048

 

 

shell> ssh-copy-id root@192.168.101.144

shell> ssh-copy-id root@192.168.101.145
shell> ssh-copy-id root@192.168.101.146
shell> ssh-copy-id root@192.168.101.147

 

 

(Root 로 로그인이 안될 경우

https://shonm.tistory.com/749 내용을 참고)

 

 

 

 

 

3. kubespray 소스를 git clone 받기 (kubespray 서버 에서 작업)

 

shell> git clone -b v2.16.0 https://github.com/kubernetes-sigs/kubespray.git

 

 

 

4. 설치에 필요한 패키지 설치 (kubespray 서버 에서 작업)

 

shell> cd kubespray

 

shell> sudo apt update ( 명령어는 서버에 실행시켜줌)

 

 

shell> sudo apt install python3-pip -y

 

 

shell> pip3 install -r requirements.txt

(kubespray 다운받은 폴더의 requirements.txt 필요한 패키지가 기술되어 있다)

 

 

shell> cp -rpf inventory/sample/ inventory/testcluster

 

 

 

5. 설치할 서버들의 ansible inventory 구성

 

shell> vi inventory/testcluster/inventory.ini

 

[all]

k8smaster ansible_host=192.168.101.144 ip=192.168.101.144

k8sslave1 ansible_host=192.168.101.145 ip=192.168.101.145

k8sslave2 ansible_host=192.168.101.146 ip=192.168.101.146

k8sslave3 ansible_host=192.168.101.147 ip=192.168.101.147



[kube_control_plane]

k8smaster



[etcd]

k8smaster



[kube_node]

k8sslave1

k8sslave2

k8sslave3



[calico_rr]



[k8s_cluster:children]

kube_control_plane

kube_node

calico_rr

 

 

6. Ansible 플레이북 실행 (~/kubespray 폴더에서 실행, kubespray 서버에서 실행)

 

  • Ping 체크로 서버들 연결 되는지 확인

shell> ansible all -m ping -i inventory/testcluster/inventory.ini

 

 

  • Ansible 로 클러스터 설치

Shell> ansible-playbook -i inventory/testcluster/inventory.ini cluster.yml -b --become-user root -e ansible_ssh_timeout=50 -vvv

 


잘 설치 되었는지 확인 하기 위해 k8smaster 서버에 가서

 

shell> kubectl get node

 

명령어로 설치를 확인 해본다.

 

 

 

  • Kubespray 2.16 은 아래와 같이 kubernetes 1.20.7 버전이 default 라서 위와 같이 버전이 설치 된 것이므로 쿠버네티스 정상 설치가 완료 되었다.

 

 

 


댓글