kubespray를 사용하여 Kubernetes 설치
단계별 지침
Page content
Howto: Kubespray를 사용하여 Kubernetes 설치, 환경 설정, 인벤토리 구성, Ansible 플레이북 실행을 포함합니다.
사전 조건
하드웨어 및 소프트웨어 요구 사항
- 다음 사양을 갖춘 여러 대의 머신(최소 3개 노드: 1개 마스터, 2개 워커)을 확보해야 합니다:
- Ubuntu 16.04/18.04 또는 CentOS 7이 설치되어 있어야 합니다.
- 각 머신당 최소 2GB의 RAM이 필요하며, 더 큰 클러스터의 경우 더 많은 RAM이 권장됩니다.
- Kubespray 컨트롤 머신에서 각 노드로의 네트워크 연결 및 SSH 접근이 가능해야 합니다.
- 고가용성 환경을 고려할 경우, 16GB RAM, 100GB 디스크, 6개 CPU 코어를 갖춘 노드를 사용하는 것이 좋습니다.
컨트롤 머신 설정
-
Git이 이미 설치되어 있지 않다면 설치해야 합니다:
sudo apt install git-all
-
Python(2.7 또는 3.5+)과 pip을 설치합니다:
sudo apt update sudo apt install python3 python3-pip
-
Ansible과 기타 의존성을 설치합니다. Kubespray는 이를 처리하는 스크립트를 제공합니다:
git clone https://github.com/kubernetes-sigs/kubespray.git cd kubespray git checkout release-2.20 # 선택사항: 안정적인 릴리스를 확인 python3 -m venv venv # Python 가상 환경 생성 source venv/bin/activate # 가상 환경 활성화 pip install -r requirements.txt # Ansible과 기타 의존성 설치
인벤토리 구성
-
예제 인벤토리를 복사합니다:
cp -r inventory/sample inventory/mycluster
-
inventory/mycluster/hosts.ini
파일을 편집하여 노드를 추가합니다:[all] node1 ansible_host=10.10.1.3 ansible_user=ubuntu node2 ansible_host=10.10.1.4 ansible_user=ubuntu node3 ansible_host=10.10.1.5 ansible_user=ubuntu [kube-master] node1 [kube-node] node2 node3
-
사용자가 다르다면
ubuntu
를 사용자 이름으로 변경해야 합니다. -
또한
inventory_builder
스크립트를 사용하여 인벤토리 파일을 생성할 수 있습니다:declare -a IPS=(10.10.1.3 10.10.1.4 10.10.1.5) HOST_PREFIX=dcm-cp- KUBE_CONTROL_HOSTS=3 CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
구성 파일 맞춤 설정
-
inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml
파일에서 Kubernetes 클러스터 설정을 맞춤화합니다. 예를 들어:kube_network_plugin: flannel kubeconfig_localhost: true
-
고가용성을 위해 VIP와 로드 밸런서를 구성합니다:
# inventory/mycluster/group_vars/all/all.yml kube_vip_arp_enabled: true kube_vip_enabled: true kube_vip_controlplane_enabled: true kube_vip_address: 10.7.12.250 # 올바른 VIP로 업데이트 kube_vip_interface: eno1 # 올바른 인터페이스로 업데이트
클러스터 배포
- Kubernetes를 배포하기 위해 Ansible 플레이북을 실행합니다:
ansible-playbook -i inventory/mycluster/hosts.yaml cluster.yml -b -v --become --become-user=root --private-key=~/.ssh/private_key
배포 후
- 배포가 완료되면
inventory/mycluster/artifacts
디렉토리에kubeconfig
파일을 찾을 수 있습니다. 이 파일은kubectl
을 사용하여 Kubernetes 클러스터와 상호 작용하는 데 필요합니다.export KUBECONFIG=inventory/mycluster/artifacts/admin.conf kubectl get nodes
문제 해결 및 접근
- 클러스터를 문제 해결하거나 접근하려면 컨트롤 머신 또는 클러스터를 관리할 예정인 머신에
kubectl
바이너리가 설치되어 있어야 합니다. - 워커 노드가 준비되지 않았거나 기타 파드 스케줄링 문제가 발생하는 경우 로그를 확인하고 필요한 경우 구성 파일을 조정해야 합니다.