본문 바로가기
kubernetes

kubespray 구축

by aws-evan 2024. 4. 18.
728x90

 

 

  • kubespray
    • 오픈소스로 구성되어 있으며, 쉽게 k8s 설치를 도와주는 도구이다.
    • 공식 깃허브를 가게 되면 자세히 나와있으며, 브랜치별로 k8s버전이 다르니 체크가 필요하다
    • CNI 는 calico가 기본이고, 변경도 가능 한 것으로 보입니다.

 

  • 공식 깃허브
    • 브랜치별로 k8s 버전이 다르기에 체크해서 확인 필요
    • 버전 확인 경로 : inventory/sample/group_vars/k8s_cluster/k8s-cluster.yml

https://github.com/kubernetes-sigs/kubespray/tree/release-2.24

 

GitHub - kubernetes-sigs/kubespray: Deploy a Production Ready Kubernetes Cluster

Deploy a Production Ready Kubernetes Cluster. Contribute to kubernetes-sigs/kubespray development by creating an account on GitHub.

github.com

 

  • 설치 문서

https://github.com/kubernetes-sigs/kubespray/blob/release-2.24/docs/getting-started.md

 

kubespray/docs/getting-started.md at release-2.24 · kubernetes-sigs/kubespray

Deploy a Production Ready Kubernetes Cluster. Contribute to kubernetes-sigs/kubespray development by creating an account on GitHub.

github.com

 

 

  • 환경
    • Ubuntu or Centos 
      • Ubuntu 제한 사항 없음
      • Centos 아래 내용 참고
  • Centos 7 사전 설정( 마스터, 워커 모두) 
    • 파일 생성하기(원하는 이름 선택 가능): centos-ansible.yaml
    • 패키지 업데이트(네트워크, ntp 구성)
    • 방화벽 비활성화
    • 스왑비활성화

https://github.com/lvthillo/ansible-centos7-kubespray/blob/master/playbook.yml

 

ansible-centos7-kubespray/playbook.yml at master · lvthillo/ansible-centos7-kubespray

Local setup of Kubernetes using VMware Fusion, ansible and Kubespray - lvthillo/ansible-centos7-kubespray

github.com

---
- name: setup node
  hosts: all
  tasks:

  - name: update all packages
    yum:
      name: '*'
      state: latest
    become: yes

  - name: install network tools
    yum:
      name: net-tools
    become: yes

  - name: install ntp
    yum:
      name: ntp
    become: yes

  - name: check ntpd service is running
    command: systemctl status ntpd
    register: result
    ignore_errors: True
    become: yes
    
  - name: configure and sync ntp
    command: "{{item}}"
    with_items:
      - chkconfig ntpd on
      - ntpdate pool.ntp.org
    when: result is failed
    become: yes

  - name: start service ntp, if not running
    service:
      name: ntpd
      state: started
    become: yes

  - name: turn off firewall for install
    command: systemctl disable firewalld
    become: yes

  - replace:
      path: /etc/fstab
      regexp: '^/dev/mapper/centos-swap\s*swap\s*swap\s*defaults\s*[0-9]\s*[0-9]$'
      replace: '# /dev/mapper/centos-swap swap                    swap    defaults        0 0'
    become: yes

 

ansible-playbook -i inventory/mycluster/inventory.ini centos-ansible.yaml

 

  • ssh Keygen 생성
    • 원격 접속을 하기 위한 필요 조건
    • 기본 생성으로 진행 별도의 keygen 이름 생성하여 진행해도 무방합니다.
ssh-keygen
  • Keygen 복사
    • 복사 안 할 경우 
ssh-copy-id -i /root/.ssh/id_rsa.pub root@"대상호스트 IP"

 

 

  • kubespray 설치 하기 위한 패키지 설치(ansible서버)
sudo apt install python3-pip -y

 

  • 파이썬 라이브러리 설치
    • 자동 설치를 하기 위해서
pip3 install -r requirements.txt

 

 

  • 나만의 인벤토리 생성
    • Master ,Worker 호스트 정보 입력하는 곳
cp -rfp inventory/sample inventory/mycluster

 

 

  • 인벤토리 적용 파일 열기
    • control_plane, etcd, node 호스트 정의 하는 공간
    • all :  모든 대상 적용할 부분
    • control_plan : 마스터 서버(멀티 마스터 적용시 개수만큼 호스트 정의하면 될 거 같습니다)
    • etcd : k8s database를 의미하며, 기본적으로 마스터 서버에 지정한다
    • node : 워커 서버 정의
    •  
vi inventory/mycluster/inventory.ini

 

 

  • Ping Test
ansible all -m ping -i inventory/mycluster/inventory.ini

 

 

  • k8s Cluster 구성
    • 소요시간이 13분(가상머신이 너무 스펙이 낮아서 오래걸리네요)
ansible-playbook -i inventory/mycluster/inventory.ini cluster.yml -b -v

 

  • 마스터서버에서 상태 확인
    • inventory/mycluster/inventory.ini 참고하여 설치하면서 해당 호스트명으로 변경(특이사항)

 

 

  • k8s Cluster 구성 후 노드 추가
    • 인벤토리에 추가 노드 항목 등록하기 
ansible-playbook -i inventory/mycluster/inventory.ini cluster.yml -b -v

 

 

  • 특정 노드 삭제
ansible-playbook -i inventory/mycluster/inventory.ini remove-node.yml --extra-vars='node=node5' -b

 

노드 상태(제거 전)

노드 상태(제거 후)

 

  • 전체 초기화
    • 소요시간 : 3분
ansible-playbook -i inventory/mycluster/inventory.ini reset.yml -b -v
  • 작업 중간에 Cluster Reset 단계 -> "yes" 입력해야 초기화가 진행된다.

  • 초기화 확인

 

728x90

'kubernetes' 카테고리의 다른 글

Kubernetes LoadBalancer(MetalLB)  (0) 2024.04.23
CNI Flannel 설치 가이드  (0) 2024.04.22
손쉬운 Kubernetes 설치 가이드  (0) 2024.04.16
Pod 배포시 단일파드?, 여러개 파드? 선택  (0) 2024.04.16
Kubernetes Pod  (0) 2023.06.28

댓글