반응형
- 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
- 설치 문서
https://github.com/kubernetes-sigs/kubespray/blob/release-2.24/docs/getting-started.md
- 환경
- Ubuntu or Centos
- Ubuntu 제한 사항 없음
- Centos 아래 내용 참고
- Ubuntu or Centos
- Centos 7 사전 설정( 마스터, 워커 모두)
- 파일 생성하기(원하는 이름 선택 가능): centos-ansible.yaml
- 패키지 업데이트(네트워크, ntp 구성)
- 방화벽 비활성화
- 스왑비활성화
https://github.com/lvthillo/ansible-centos7-kubespray/blob/master/playbook.yml
---
- 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" 입력해야 초기화가 진행된다.
- 초기화 확인
반응형
'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 |
댓글