Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

쿠버네티스 클러스터 생성

이 예제 절차를 사용하여 업스트림 Kubernetes 클러스터를 만듭니다.

이 예제 절차는 순전히 정보 제공의 목적으로 제공됩니다. 클러스터를 생성할 수 있는 방법은 kubeadm, kOps 또는 kubespray와 같은 여러 가지가 있습니다.

이 예시에서는 kubespray와 Ansible을 사용하여 클러스터를 생성한다. Kubespray는 앤서블(Ansible) 플레이북을 사용하는데, 이는 클러스터 생성을 상당히 간단하게 만든다. 단계를 더 쉽게 수행할 수 있도록 별도의 설치 관리자 머신을 사용하여 설치를 수행하고 kubectl 및 기타 도구를 실행합니다.

클러스터 만들기에 대한 자세한 내용은 공식 Kubernetes 설명서(https://kubernetes.io/docs/home/)를 참조하세요.

참고:

아래 명령줄 예제가 항상 절대 디렉터리 경로를 표시하는 것은 아닙니다. 디렉터리 구조 내에서 이러한 명령을 적용하는 것은 사용자에게 맡깁니다.

  1. 설치 관리자 컴퓨터에 새 OS를 설치하고 다음에 대해 OS를 최소한으로 구성합니다.
    • 고정 IP 주소 및 마스크(예: 단일 클러스터의 경우 172.16.0.10/24) 및 게이트웨이
    • 하나 이상의 DNS 서버에 대한 액세스
    • 루트 SSH 액세스를 포함한 SSH 연결
    • Ntp
    예제에 사용된 설치 관리자 컴퓨터는 클러스터 네트워크에 연결된 Ubuntu 호스트입니다.
  2. 로컬 컴퓨터에서 sudo 사용자로 설치 관리자 시스템에 SSH를 수행합니다.
  3. ansible을 설치합니다.
  4. kubectl을 설치합니다. 이 예제에서는 설치 관리자 머신에서 kubectl을 실행합니다. 다른 머신(예: 로컬 머신)에서 kubectl을 실행하려면 대신 해당 머신에 kubectl을 다운로드하여 설치합니다.
    • Kubernetes 리포지토리를 설정하고 업데이트합니다.
    • kubectl을 설치합니다.
  5. Contrail Analytics를 설치하려면 Helm 3.0 이상을 설치하십시오.
    • Helm 리포지토리를 설정하고 업데이트합니다.

    • Helm을 설치합니다.

  6. 설치 프로그램 시스템에서 컨트롤 플레인 및 작업자 노드로의 SSH 암호 없는 루트 액세스를 구성합니다. 이렇게 하면 나중에 플레이북을 실행할 때 ansible이 이러한 노드에 로그인할 수 있습니다.
    1. SSH 키를 만듭니다.

      이 예제에서는 SSH 키를 기본 위치 ~/. ssh/id_rsa.pub에 저장합니다.

    2. 컨트롤 플레인 및 작업자 노드의 루트 사용자에게 키를 복사합니다. 예를 들어:
  7. kubespray 디렉토리를 복제한다.
    예를 들어:

    이렇게 하면 현재 위치(이 예제의 ~/contrail )에 kubespray 디렉토리의 복제본이 생성된다.

  8. 필요한 경우 포드 및 서비스 서브넷을 구성합니다.
    kubespray가 사용하는 기본 서브넷은 kubespray/roles/ kubespray-defaults/defaults/main.yaml 파일에 정의되어 있다. 해당 파일에서 다음 매개 변수를 찾아 그에 따라 변경합니다.
    참고:

    다중 클러스터 Contrail 설정을 생성하는 경우 각 클러스터에서 서로 다른 Pod 및 서비스 서브넷을 구성해야 합니다. 이러한 서브넷은 전체 다중 클러스터 내에서 고유해야 합니다.

    이 문서의 다중 클러스터 예제를 따르는 경우 중앙 클러스터의 서브넷을 기본값으로 두고 다음과 같이 워크로드 클러스터에서 서브넷을 구성합니다.

  9. 노드 로컬 DNS를 비활성화합니다.
    kubespray/ roles/kubespray-defaults/defaults/main.yaml 파일에서 enable_nodelocaldns: false.
  10. 클러스터에서 DPDK를 실행하는 경우 multus를 구성합니다.
    DPDK를 실행할 때 Multus가 필요합니다.
    1. multus를 활성화합니다.
      kubespray/ roles/kubespray-defaults/defaults/main.yaml 에서, multus를 활성화한다.
    2. multus 버전을 DPDK를 실행하는 데 필요한 버전인 0.3.1로 설정합니다. 두 파일에서 버전을 설정합니다.
      kubespray/roles/network_plugin/multus/defaults/main.yml 에서 multus 버전을 구성한다.
      kubespray/extra_playbooks/roles/network_plugin/multus/defaults/main.yml 에서 multus 버전을 구성한다.
  11. ansible에서 사용할 인벤토리 파일을 생성합니다. 예를 들어:

    파일에서 지정하는 호스트 이름(k8s-cp0, , k8s-worker0k8s-worker1)은 매개변수가 로 true설정될 때 override_system_hostname 노드에서 자동으로 구성됩니다.

    참고:

    다중 클러스터 Contrail 설정을 생성하는 경우 다중 클러스터의 각 노드에 대해 서로 다른 노드 이름을 구성해야 합니다. 노드 이름은 전체 다중 클러스터에서 고유해야 합니다.

    참고:

    DPDK kube_network_plugin_multus: true를 실행 중인 경우 .

    다른 컨테이너 런타임으로 실행하려면 위의 값을 변경합니다 container_manager .

    확인이 로 설정되어 있는지 false확인합니다enable_nodelocaldns.

    다른 수의 컨트롤 플레인 및 작업자 노드로 실행하려면 그에 따라 인벤토리를 조정합니다.

  12. ansible이 inventory.yaml 파일의 내용을 기반으로 컨트롤 플레인 및 작업자 노드에 SSH를 사용할 수 있는지 확인합니다. 이 예제에서 inventory.yaml 파일은 ~/contrail 디렉터리에 있습니다.
  13. 클러스터를 생성하려면, kubespray 디렉터리에서 플레이북을 실행한다. 아래 명령을 조정하여 디렉터리 구조 내에서 inventory.yaml을 참조합니다.
    이 단계는 클러스터의 크기에 따라 완료하는 데 한 시간 이상 걸릴 수 있습니다.
    참고:

    아직 CNI를 구성하지 않았으므로 네트워크 및 CNI 경고와 오류를 무시해도 됩니다. 치명적인 오류가 발생하면 ansible은 플레이북을 중지합니다.

  14. 클러스터의 보안 토큰을 기본 ~/.kube/config 위치에 복사합니다. kubeconfig는 Contrail 툴이 작동하기 위한 기본 위치에 있어야 합니다.
    inventory.yaml 파일에서 보안 토큰 위치를 찾을 수 있습니다. 이 예에서 인벤토리 파일을 사용하는 경우 토큰은 / tmp/mycluster에 있습니다.
    참고:

    기존 클러스터에 대한 토큰을 이미 보유하고 있는 kubeconfig가 있는 경우 ~/. kube/config 파일을 덮어쓰는 대신 병합해야 합니다.

  15. 표준 kubectl 명령을 사용하여 클러스터의 상태를 확인합니다.
    1. 노드의 상태를 표시합니다.
      CNI 플러그인이 없기 때문에 노드가 준비되지 않은 것을 볼 수 있습니다. 이는 Contrail을 아직 설치하지 않았기 때문에 예상됩니다.
    2. 포드의 상태를 표시합니다.
      DNS Pod를 제외한 모든 Pod의 상태는 Running이어야 합니다. 네트워킹이 없기 때문에 DNS Pod가 나타나지 않습니다. 이것이 우리가 기대하는 것입니다.
새 클러스터를 성공적으로 설치했습니다. 이제 이 클러스터에 Contrail을 설치할 수 있습니다.