NCP(NSX Container Plug-in)는 Docker 이미지로 제공됩니다. NCP는 인프라 서비스용 노드에서 실행되어야 합니다. 마스터 노드에서 NCP를 실행하는 것은 권장되지 않습니다.

프로시저

  1. NCP Docker 이미지를 다운로드합니다.
    파일 이름은 nsx-ncp-xxxxxxx.tar입니다. 여기서 xxxxxxx는 빌드 번호입니다.
  2. NCP ReplicationController yaml 템플릿을 다운로드합니다.
    파일 이름은 ncp-rc.yml입니다. 이 파일을 편집하거나 템플릿 파일의 예제로 사용할 수 있습니다.
  3. NCP Docker 이미지를 이미지 레지스트리에 로드합니다.
        docker load -i <tar file>
  4. (선택 사항) NSXError 개체의 사용자 지정 리소스 정의에 대한 yaml 템플릿을 다운로드합니다.
    파일 이름은 nsx-error-crd.yaml입니다.
  5. (선택 사항) 사용자 지정 리소스를 생성합니다.
        kubectl create -f nsx-error-crd.yaml
  6. ncp-rc.yml을 편집합니다.
    이미지 이름을 로드된 이미지로 변경합니다.

    nsx_api_managers 매개 변수를 지정합니다. 단일 NSX Manager의 IP 주소 또는 NSX Manager 클러스터의 3개 NSX Manager의 IP 주소(쉼표로 구분됨) 또는 NSX Manager 클러스터의 가상 IP 주소를 지정할 수 있습니다. 예:

        nsx_api_managers = 192.168.1.180
    or
        nsx_api_managers = 192.168.1.181,192.168.1.182,192.168.1.183

    (선택 사항) [nsx_v3] 섹션에 매개 변수 ca_file을 지정합니다. 이 값은 NSX Manager 서버 인증서를 확인하는 데 사용할 CA 번들 파일이어야 합니다. 설정하지 않으면 시스템 루트 CA가 사용됩니다. nsx_api_managers에 대해 하나의 IP 주소를 지정하면 하나의 CA 파일을 지정합니다. nsx_api_managers에 대해 3개의 IP 주소를 지정하면 하나 또는 3개의 CA 파일을 지정할 수 있습니다. 하나의 CA 파일을 지정하면 해당 파일이 모든 3개 관리자에 대해 사용됩니다. 3개의 CA 파일을 지정하면 각각 nsx_api_managers의 해당 IP 주소에 대해 사용됩니다. 예를 들면 다음과 같습니다.

        ca_file = ca_file_for_all_mgrs
    or
        ca_file = ca_file_for_mgr1,ca_file_for_mgr2,ca_file_for_mgr3

    NSX-T Data Center에 대한 인증을 위해 매개 변수 nsx_api_cert_filensx_api_private_key_file을 지정합니다.

    nsx_api_cert_file은 PEM 형식의 클라이언트 인증서 파일에 대한 전체 경로입니다. 이 파일의 내용은 다음과 같아야 합니다.

        -----BEGIN CERTIFICATE-----
        <certificate_data_base64_encoded>
        -----END CERTIFICATE-----

    nsx_api_private_key_file은 PEM 형식의 클라이언트 개인 키 파일에 대한 전체 경로입니다. 이 파일의 내용은 다음과 같아야 합니다.

        -----BEGIN PRIVATE KEY-----
        <private_key_data_base64_encoded>
        -----END PRIVATE KEY-----

    수신 컨트롤러가 NAT 모드에서 실행되도록 구성되어 있는 경우 매개 변수 ingress_mode = nat를 지정합니다.

    기본적으로 서브넷 접두사 24는 포드 논리적 스위치의 IP 블록에서 할당된 모든 서브넷에 사용됩니다. 다른 서브넷 크기를 사용하려면 [nsx_v3] 섹션에서 subnet_prefix 옵션을 업데이트합니다.

    HA(고가용성)가 기본적으로 사용되도록 설정됩니다. 다음과 같은 규격으로 HA를 사용하지 않도록 설정할 수 있습니다.
    [ha]
    enable = False
    (선택 사항) ncp.ini에서 NSXError를 사용하여 오류 보고를 사용하도록 설정합니다. 이 설정은 기본적으로 사용되지 않도록 설정되어 있습니다.
    [nsx_v3]
    enable_nsx_err_crd = True
    참고: yaml 파일에서 ncp.ini에 대해 생성된 ConfigMap이 ReadOnly 볼륨으로 마운트되도록 지정해야 합니다. 다운로드한 yaml 파일은 이미 이 사양을 가지며 변경해서는 안 됩니다.
  7. NCP ReplicationController를 생성합니다.
        kubectl create -f ncp-rc.yml

결과

참고: NCP가 Kubernetes API 서버에 대한 영구 HTTP 연결을 열어 Kubernetes 리소스의 수명주기 이벤트를 모니터링합니다. API 서버 장애 또는 네트워크 장애로 인해 NCP의 TCP 연결 문제가 발생하는 경우 NCP를 다시 시작하여 API 서버에 대한 연결을 다시 설정해야 합니다. 그러지 않으면 NCP가 새 이벤트를 확인하지 못합니다.
NCP ReplicationController의 롤링 업데이트 중 다음과 같은 상황에서 롤링 업데이트를 수행했을 때 두 개의 NCP 포드가 실행 중일 수 있습니다.
  • 롤링 업데이트 중에 컨테이너 호스트를 재부팅했습니다.
  • 처음에는 Kubernetes 노드에 새 이미지가 없어서 롤링 업데이트가 실패했지만 이미지 다운로드 후 롤링 업데이트를 다시 실행하여 업데이트가 성공했습니다.
두 개의 NCP 포드가 실행 중이라면 다음을 수행합니다.
  • NCP 포드 중 하나를 삭제합니다. 어느 것을 삭제하든 관계없습니다. 예를 들면 다음과 같습니다.
    kubectl delete pods <NCP pod name> -n nsx-system
  • NCP ReplicationController를 삭제합니다. 예를 들면 다음과 같습니다.
    kubectl delete -f ncp-rc.yml -n nsx-system