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 바이너리가 설치되어 있어야 합니다.
  • 워커 노드가 준비되지 않았거나 기타 파드 스케줄링 문제가 발생하는 경우 로그를 확인하고 필요한 경우 구성 파일을 조정해야 합니다.

유용한 링크