NSX 노드 에이전트는 각 포드가 두 개의 컨테이너를 실행하는 DaemonSet입니다. 하나의 컨테이너는 주로 컨테이너 네트워크 인터페이스를 관리하는 NSX 노드 에이전트를 실행합니다. 이 에이전트는 CNI 플러그인 및 Kubernetes API 서버와 상호 작용합니다. 다른 컨테이너는 클러스터 IP를 포드 IP로 변환하여 Kubernetes 서비스 추상화를 구현하는 작업만 담당하는 NSX kube-proxy를 실행합니다. 이는 업스트림 kube-proxy와 동일한 기능을 구현합니다.

프로시저

  1. NCP Docker 이미지를 다운로드합니다.
    파일 이름은 nsx-ncp-xxxxxxx.tar입니다. 여기서 xxxxxxx는 빌드 번호입니다.
  2. NSX 노드 에이전트 DaemonSet yaml 템플릿을 다운로드합니다.
    파일 이름은 nsx-node-agent-ds.yml입니다. 이 파일을 편집하거나 템플릿 파일의 예제로 사용할 수 있습니다.
  3. NCP Docker 이미지를 이미지 레지스트리에 로드합니다.
        docker load -i <tar file>
  4. nsx-node-agent-ds.yml을 편집합니다.
    이미지 이름을 로드된 이미지로 변경합니다.

    Ubuntu의 경우 yaml 파일은 AppArmor가 사용되도록 설정되었다고 가정합니다. AppArmor가 사용되도록 설정되어 있는지 여부를 확인하려면 파일 /sys/module/apparmor/parameters/enabled를 확인합니다. AppArmor가 사용되도록 설정되어 있지 않으면 다음과 같이 변경하십시오.

    • 다음 줄을 삭제하거나 주석 처리합니다.
      container.apparmor.security.beta.kubernetes.io/nsx-node-agent: localhost/node-agent-apparmor
    • nsx-node-agent 컨테이너 및 nsx-kube-proxy 컨테이너에 대해 privileged:true 아래에 securityContext 줄을 추가합니다. 예:
      securityContext:
          privileged:true
    참고: kubelet이 hyperkube 이미지를 사용하는 컨테이너 내에서 실행되는 경우, kubelet이 실제 상태에 관계없이 항상 AppArmor가 사용되지 않도록 설정된 것으로 보고하는 알려진 문제가 있습니다. yaml 파일을 위에서 언급한 것과 동일한 방식으로 변경해야 합니다.
    참고: yaml 파일에서 ncp.ini에 대해 생성된 ConfigMap이 ReadOnly 볼륨으로 마운트되도록 지정해야 합니다. 다운로드한 yaml 파일은 이미 이 사양을 가지며 변경해서는 안 됩니다.
  5. 다음 명령을 사용하여 NSX 노드 에이전트 DaemonSet을 생성합니다.
        kubectl apply -f nsx-node-agent-ds.yml