워크로드 클러스터 네트워킹 사용자 지정

이 항목에서는 기본 Antrea 이외의 CNI(클러스터 네트워크 인터페이스) 사용 및 VMware NSX 네트워킹이 포함된 vSphere의 워크로드 클러스터에 대해 공개적으로 라우팅 가능한 비-NAT IP 주소 지원 등 워크로드 클러스터의 네트워킹을 사용자 지정하는 방법을 설명합니다.

(권장) 제어부에 대한 DHCP 예약 구성

여러 제어부 노드의 전원이 꺼지거나 장기간 오프라인 상태가 될 수 있는 환경에서 안전 예방 조치로 주소가 정적으로 유지되고 임대가 만료되지 않도록 새로 생성된 클러스터의 컨트롤 플레인 노드 및 컨트롤 플레인 끝점의 IP 주소에 대한 DHCP 예약을 조정합니다. vSphere 제어부 끝점은 클러스터를 배포할 때 Kube-Vip 또는 선택적으로 NSX Advanced Load Balancer에 할당하는 주소입니다.

DHCP 예약을 구성하는 방법에 대한 지침은 DHCP 서버 설명서를 참조하십시오.

제어부 끝점에 NSX Advanced Load Balancer를 사용하고 vSphere 제어부 끝점을 숫자 IP 주소가 아닌 FQDN으로 설정하는 경우 다음과 같이 주소를 예약합니다.

  1. NSX ALB가 클러스터에 할당된 제어부 IP 주소를 검색합니다.

    kubectl get cluster CLUSTER-NAME -o=jsonpath='{.spec.controlPlaneEndpoint} {"\n"}'
    
  2. 출력에 "host"로 표시된 IP 주소를 기록합니다(예: 192.168.104.107).

  3. FQDN을 기록한 IP 주소에 연결하는 DNS A 레코드를 생성합니다.

  4. FQDN을 테스트하려면 NSX ALB의 IP 주소 대신 FQDN을 사용하는 새 kubeconfig를 생성합니다.

    1. kubeconfig를 생성합니다.

      tanzu cluster kubeconfig get CLUSTER-NAME --admin --export-file ./KUBECONFIG-TEST
      
    2. kubeconfig 파일 KUBECONFIG-TEST를 편집하여 IP 주소를 FQDN으로 변경합니다. 예를 들어 다음

      server: https://192.168.104.107:443
      

      다음으로 대체합니다.

      server: https://CONTROLPLANE-FQDN:443
      
    3. 수정된 kubeconfig를 사용하여 클러스터의 포드를 검색합니다.

      kubectl get pods -A --kubeconfig=./KUBECONFIG-TEST
      

      출력에 포드가 나열되면 DNS가 FQDN에 대해 작동합니다.

기본값이 아닌 CNI를 사용하여 클러스터 생성

Tanzu CLI를 사용하여 워크로드 클러스터를 배포하면 클러스터에서 Antrea CNI(클러스터 네트워크 인터페이스)가 자동으로 사용되도록 설정되어 있습니다. Tanzu Kubernetes 릴리스(TKr)에는 Antrea 버전 및 호환 가능한 Kubernetes 버전이 포함되어 있습니다. TKr에서 Antrea 버전을 관리하는 방법에 대한 자세한 내용은 Tanzu Kubernetes 릴리스 및 구성 요소 버전을 참조하십시오. 또는 Calico CNI 또는 자체 CNI 제공자를 사용하도록 설정할 수 있습니다.

자동 관리 패키지는 Tanzu Kubernetes Grid에서 관리되기 때문에 일반적으로 구성을 업데이트할 필요가 없습니다. 그러나 Calico를 CNI로 사용하는 워크로드 클러스터를 생성할 경우 아래 단계에 따라 생성할 수 있습니다.

클래스 기반 워크로드 클러스터

클래스 기반 클러스터에 antrea 대신 calico를 설치하려면 다음 단계를 수행합니다.

  1. 다음 Kubernetes 개체를 포함하는 YAML 파일을 생성합니다.

    apiVersion: cni.tanzu.vmware.com/v1alpha1
    kind: CalicoConfig
    metadata:
    name: CLUSTER-NAME
    namespace: CLUSTER-NAMESPACE
    spec:
    calico:
      config:
        vethMTU: 0
    ---
    apiVersion: run.tanzu.vmware.com/v1alpha3
    kind: ClusterBootstrap
    metadata:
    annotations:
      tkg.tanzu.vmware.com/add-missing-fields-from-tkr: TKR-VERSION
    name: CLUSTER-NAME
    namespace: CLUSTER-NAMESPACE
    spec:
    additionalPackages: # Customize additional packages
    - refName: metrics-server*
    - refName: secretgen-controller*
    - refName: pinniped*
    cni:
      refName: calico*
      valuesFrom:
        providerRef:
          apiGroup: cni.tanzu.vmware.com
          kind: CalicoConfig
          name: CLUSTER-NAME
    

    형식 설명:

    • CLUSTER-NAME은 생성하려는 워크로드 클러스터의 이름입니다.
    • CLUSTER-NAMESPACE는 워크로드 클러스터의 네임스페이스입니다.
    • TKR-VERSION은 워크로드 클러스터에 사용하려는 TKr(Tanzu Kubernetes 릴리스)의 버전입니다. 예: v1.23.5+vmware.1-tkg.1.
  2. Supervisor 클러스터에 kubectl apply -f 명령을 실행하여 파일을 적용합니다.

  3. 다음 구성을 포함하는 YAML 파일을 생성합니다.

    apiVersion: cluster.x-k8s.io/v1beta1
    kind: Cluster
    metadata:
    name: CLUSTER-NAME
    namespace: CLUSTER-NAMESPACE
    spec:
    clusterNetwork:
      services:
        cidrBlocks: ["SERVICES-CIDR"]
      pods:
        cidrBlocks: ["PODS-CIDR"]
      serviceDomain: "SERVICE-DOMAIN"
    topology:
      class: tanzukubernetescluster
      version: TKR-VERSION
      controlPlane:
        replicas: 1
      workers:
        machineDeployments:
          - class: node-pool
            name: NODE-POOL-NAME
            replicas: 1
      variables:
        - name: vmClass
          value: VM-CLASS
        # Default storageClass for control plane and node pool
        - name: storageClass
          value: STORAGE-CLASS-NAME
    

    형식 설명:

    • CLUSTER-NAME은 생성하려는 워크로드 클러스터의 이름입니다.
    • CLUSTER-NAMESPACE는 워크로드 클러스터의 네임스페이스입니다.
    • SERVICES-CIDR은 서비스의 CIDR 블록입니다. 예: 198.51.100.0/12.
    • PODS-CIDR은 포드의 CIDR 블록입니다. 예: 192.0.2.0/16.
    • SERVICE-DOMAIN은 서비스 도메인 이름입니다. 예: cluster.local.
    • TKR-VERSION은 워크로드 클러스터에 사용하려는 TKr의 버전입니다. 예: v1.23.5+vmware.1-tkg.1.
    • NODE-POOL-NAMEmachineDeployments의 노드 풀 이름입니다.
    • VM-CLASS는 클러스터에 사용할 VM 클래스의 이름입니다. 예: best-effort-small.
    • STORAGE-CLASS-NAME은 클러스터에 사용할 스토리지 클래스의 이름입니다. 예: wcpglobal-storage-profile.

    예:

    apiVersion: cluster.x-k8s.io/v1beta1
    kind: Cluster
    metadata:
    name: my-workload-cluster
    namespace: my-workload-cluster-namespace
    spec:
    clusterNetwork:
     services:
       cidrBlocks: ["198.51.100.0/12"]
     pods:
       cidrBlocks: ["192.0.2.0/16"]
     serviceDomain: "cluster.local"
    topology:
     class: tanzukubernetescluster
     version: v1.23.5+vmware.1-tkg.1
     controlPlane:
       replicas: 1
     workers:
       machineDeployments:
         - class: node-pool
           name: my-node-pool
           replicas: 1
     variables:
       - name: vmClass
         value: best-effort-small
       # Default storageClass for control plane and node pool
       - name: storageClass
         value: wcpglobal-storage-profile
    
  4. 위 단계에서 생성한 YAML 파일을 -f 명령의 tanzu cluster create 옵션으로 전달하여 워크로드 클러스터를 생성합니다.

TKC 기반 클러스터

calico 유형의 워크로드 클러스터에 antrea 대신 TanzuKubernetesCluster를 설치하려면 워크로드 클러스터를 생성하는 데 사용할 클러스터 구성 파일에서 CNI 구성 변수를 설정한 다음, -f 명령의 tanzu cluster create 옵션에 파일을 전달합니다. 예: CNI: calico.

여러 CNI 제공자 사용

macvlan, ipvlan, SR-IOV 또는 DPDK과 같이 워크로드 클러스터에서 여러 CNI 제공자를 사용하도록 설정하려면 Multus 패키지를 설치하고, Antrea 또는 Calico CNI를 이미 실행 중인 클러스터에 Multus 패키지를 설치하고, CNI에 대한 추가 NetworkAttachmentDefinition 리소스를 생성합니다. 그런 다음, 여러 주소 범위에 대해 서로 다른 네트워크 인터페이스를 사용하는 클러스터에 새 포드를 생성할 수 있습니다.

자세한 내용은 워크로드 클러스터에 Multus 배포를 참조하십시오.

라우팅 가능한 비-NAT IP 주소(NSX)를 사용하여 포드 배포

NSX 네트워킹 및 Antrea 컨테이너 네트워크 인터페이스(CNI)가 있는 vSphere에서 Worker 포드의 라우팅 가능한 IP 주소를 TKC 기반 워크로드 클러스터를 구성할 수 있으며, 포드에서 들어오고 나가는 외부 요청에 대해 NAT(네트워크 주소 변환)를 우회합니다.

포드의 라우팅 가능 IP 주소를 사용하면 다음을 수행할 수 있습니다.

  • 소스 IP 주소가 NAT 주소가 아니라 라우팅 가능한 포드 IP 주소이기 때문에 공통 공유 서비스에 대한 발신 요청을 추적합니다.
  • NAT를 우회하여 외부 인터넷에서 포드로 직접 인증된 수신 요청을 지원합니다.

라우팅 가능한 비 NAT IP 주소를 사용하여 포드를 배포하는 방법에 대한 자세한 내용은 라우팅 가능한 포드 네트워크가 있는TKC를 참조하십시오.

check-circle-line exclamation-circle-line close-line
Scroll to top icon