728x90
반응형
Kubespray는 Kubernetes 클러스터를 배포하고 관리하기 위한 오픈 소스 도구입니다. 이는 Ansible을 기반으로 하며, 여러 대의 머신에 걸쳐 Kubernetes를 설치하고 구성하는 프로세스를 자동화하는 데 사용됩니다. Kubespray를 사용하면 간편하게 다양한 환경에서 Kubernetes 클러스터를 설정할 수 있습니다.
다음은 Kubespray의 주요 특징 및 사용 방법에 대한 간단한 설명입니다:
- Ansible 기반: Kubespray는 Ansible 플레이북을 사용하여 Kubernetes를 설치하고 구성합니다. Ansible은 간단하면서도 강력한 오픈 소스 자동화 도구로, YAML을 사용하여 간단한 구성 파일을 작성하여 인프라스트럭처를 정의할 수 있습니다.
- 다양한 인프라스트럭처 지원: Kubespray는 여러 가지 인프라스트럭처 환경에서 동작할 수 있습니다. 가상 머신, 온프레미스 하드웨어, 클라우드 제공 업체(예: AWS, GCP, Azure) 등 다양한 플랫폼을 지원합니다.
- 다양한 Kubernetes 버전 지원: Kubespray는 여러 버전의 Kubernetes를 지원합니다. 새로운 Kubernetes 릴리스가 나올 때마다 Kubespray는 해당 버전에 대한 지원을 업데이트할 수 있습니다.
- 유연한 구성 옵션: Kubespray는 다양한 구성 옵션을 제공하여 사용자가 클러스터를 정밀하게 조정할 수 있습니다. 네트워크 구성, Pod 네트워킹, 인증 및 권한 부여 등에 대한 많은 설정이 가능합니다.
- 커스터마이징 가능: Ansible 플레이북을 통해 Kubespray를 실행하기 전에 사용자는 구성 파일을 편집하여 클러스터 설정을 자유롭게 조정할 수 있습니다.
Kubespray를 사용하려면 다음 단계를 따릅니다:
- 의존성 설치: Kubespray를 사용하려면 Ansible 및 관련 의존성을 설치해야 합니다.
- 인벤토리 파일 작성: 클러스터를 구성할 머신들의 목록과 그에 대한 구성을 담은 Ansible 인벤토리 파일을 작성합니다.
- 구성 파일 수정: 클러스터의 특정 구성을 변경하려면 Kubespray의 구성 파일을 수정합니다.
- Kubespray 실행: Ansible을 사용하여 Kubespray를 실행하여 클러스터를 배포합니다.
- 검증 및 관리: 클러스터가 정상적으로 배포되면 Kubernetes 명령어 및 대시보드를 사용하여 클러스터를 관리하고 검증합니다.
1. VM 구성 Master 1대, NodeWorker 3대
m-k8s : ubuntu 22.04 / 16GB / 192.168.0.90
n1-k8s : ubuntu 22.04 / 16GB / 192.168.0.91
n2-k8s : ubuntu 22.04 / 16GB / 192.168.0.92
n3-k8s : ubuntu 22.04 / 16GB / 192.168.0.93
2. Netplan 으로 각각의 Master, Node VM IP 설정
$ vim /etc/netplan/00-installer-config.yaml
=======================================================
network:
version: 2
renderer: networkd
ethernets:
ens33: # 여기서 ens33은 실제 사용 중인 인터페이스 이름입니다. 본인 시스템에 맞게 변경하세요.
addresses: # 변경 후 IP 주소:
- 192.168.0.90/24
routes:
- to: 0.0.0.0/0 # 모든 트래픽에 대한 기본 경로
via: 192.168.0.1 # 게이트웨이 IP 주소
nameservers:
addresses: [192.168.0.1, 8.8.8.8, 8.8.4.4]
=======================================================
$ sudo netplan apply
$ ip address show
3. ssh key 등록
# 아래 명령어는 Master 에서 실행
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub
# 아래 명령어는 모두 Master, WorkerNode 에 적용
$ vi ~/.ssh/authorized_keys
$ chmod 664 ~/.ssh/authorized_keys
4. Kubespray Git clone
git clone https://github.com/kubernetes-sigs/kubespray.git
5. Python 설치
sudo apt install -y python3-pip
6. Kubespray 에 필수 패키지 설치 with Python
cd kubespray/
sudo pip3 install -r requirements.txt
===============================
ansible==8.5.0
cryptography==41.0.4
jinja2==3.1.2
jmespath==1.0.1
MarkupSafe==2.1.3
netaddr==0.9.0
pbr==5.11.1
ruamel.yaml==0.17.35
ruamel.yaml.clib==0.2.8
===============================
7. master, node Inventory 설정
$ cp -r inventory/sample inventory/mycluster
$ vi inventory/mycluster/inventory.ini
==============================================================================
# ## Configure 'ip' variable to bind kubernetes services on a
# ## different ip than the default iface
# ## We should set etcd_member_name for etcd cluster. The node that is not a etcd member do not need to set the value, or can set the empty string value.
[all]
m-k8s ansible_host=192.168.0.90 ip=192.168.0.90 etcd_member_name=etcd1
n1-k8s ansible_host=192.168.0.91 ip=192.168.0.91
n2-k8s ansible_host=192.168.0.92 ip=192.168.0.92
n3-k8s ansible_host=192.168.0.93 ip=192.168.0.93
# ## configure a bastion host if your nodes are not directly reachable
# [bastion]
# bastion ansible_host=x.x.x.x ansible_user=some_user
[kube_control_plane]
m-k8s
[etcd]
m-k8s
[kube_node]
n1-k8s
n2-k8s
n3-k8s
[calico_rr]
[k8s_cluster:children]
kube_control_plane
kube_node
calico_rr
==============================================================================
8. kubespray 로 kubernetes cluster(master,node) 설치 전 셋팅 및 설치
ansible all -i inventory/mycluster/inventory.ini -m ping
ansible all -i inventory/mycluster/inventory.ini -m apt -a 'update_cache=yes' --become
ansible all -i inventory/mycluster/inventory.ini -a 'sudo timedatectl set-timezone Asia/Seoul' --become
ansible all -i inventory/mycluster/inventory.ini -a 'date'
ansible all -i inventory/mycluster/inventory.ini -a 'timedatectl'
ansible-playbook -i inventory/mycluster/inventory.ini -become --become-user=root cluster.yml
9. Kubernetes 설치 확인
kubectl get nodes
root@m-k8s:~# kubectl get node
NAME STATUS ROLES AGE VERSION
m-k8s Ready control-plane 1d10h v1.28.4
n1-k8s Ready <none> 1d10h v1.28.4
n2-k8s Ready <none> 1d10h v1.28.4
n3-k8s Ready <none> 1d10h v1.28.4
10. kubectl 자동 완성
# bash-completion 패키지를 먼저 설치한 후, bash의 자동 완성을 현재 셸에 설정한다
# 자동 완성을 bash 셸에 영구적으로 추가한다
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
alias k=kubectl
complete -F __start_kubectl k
관련 사이트
kubernetes-sigs/kubespray: Deploy a Production Ready Kubernetes Cluster (github.com)
728x90
반응형
LIST
'Kubernetes' 카테고리의 다른 글
[Kubernetes] probe 에 대한 비교 및 설명 (1) | 2024.01.10 |
---|---|
[Kubernetes] K8S에서 MetalLB 설치하기 (1) | 2023.12.18 |
[IT잡지식] k8s와 ocp 를 명령어 비교표 (2) | 2023.10.10 |
[Kubernetes] run, create, apply 의 정의와 차이점 (1) | 2023.09.18 |
[Kubernetes] Kubernetes + Kubesphere 구축하기 - On Linux 설치편 (1) | 2023.07.23 |