다중 CNI 플러그인을 사용하여 OKE에 SR-IOV 사용 네트워크 인터페이스 컨테이너 앱 배치

소개

이 사용지침서에서는 고급 네트워킹 기능을 활용하여 Oracle Cloud Infrastructure Kubernetes Engine(OKE) 내의 가상 인스턴스 작업자 노드에 컨테이너화된 애플리케이션을 배포하는 방법을 살펴봅니다. 특히 컨테이너 네트워크 인터페이스에 대해 단일 루트 I/O 가상화(SR-IOV)를 사용으로 설정하고 컨테이너에 대해 다중 홈 네트워킹을 사용으로 설정하도록 다중 CNI 플러그인을 구성합니다.

SR-IOV와 Multus를 결합하면 AI, 머신 러닝 및 실시간 데이터 처리와 같은 특수 워크로드에 대한 대기 시간이 짧은 고성능 네트워킹을 달성할 수 있습니다. 이 자습서에서는 OKE 환경을 구성하고, SR-IOV가 사용으로 설정된 인터페이스로 작업자 노드를 배치하고, 다중 CNI를 사용하여 POD의 다중 네트워크 인터페이스를 관리하는 단계별 지침을 제공합니다. 고속 패킷 처리를 목표로 하거나 Kubernetes 네트워킹을 미세 조정해야 하는 경우 이 자습서에서는 시작할 도구와 지식을 제공합니다.

참고:

이미지

목표

작업 1: 배스천, 운영자, 3개의 VM 워커 노드 및 Flannel CNI 플러그인을 사용하여 OKE 배치

OKE가 다음 설정으로 배치되었는지 확인합니다.

이 설정은 자습서에 자세히 설명되어 있습니다. Oracle Cloud Infrastructure Kubernetes Engine을 사용하여 Terraform으로 Kubernetes 클러스터 배포하기.

다음 이미지는 이 자습서 전체에서 작업할 구성요소에 대한 시각적 개요를 보여줍니다.

이미지

작업 2: 각 워커 노드에서 SR-IOV(하드웨어 지원) 네트워킹 사용

주: OKE 클러스터의 일부인 모든 작업자 노드에서 다음 단계를 수행해야 합니다.

다음 이미지는 이 자습서 전체에서 작업할 OKE 클러스터 내의 작업자 노드에 대한 시각적 개요를 보여줍니다.

이미지

인스턴스에서 SR-IOV 사용

작업 3: SR-IOV 사용 VNIC에 대한 새 서브넷 만들기

SR-IOV 사용 인터페이스에서 사용할 전용 서브넷을 생성합니다.

작업 3.1: 보안 목록 생성

다른 서브넷에 대한 보안 목록을 이미 사용하고 있지만 새로 생성된 SR-IOV 서브넷에 대한 전용 보안 목록도 필요합니다.

작업 3.2: 서브넷 생성

작업 4: 두번째 VNIC 연결 추가

다음 이미지는 작업자 노드에 두번째 VNIC를 추가하기 전에 작업자 노드 서브넷에 연결된 단일 VNIC가 있는 방법에 대한 시각적 개요를 보여줍니다.

이미지

작업자 노드에 두번째 VNIC 연결을 추가하기 전에 네트워크 보안 그룹을 만듭니다.

작업 4.1: NSG(네트워크 보안 그룹) 만들기

이미 다른 VNIC에 NSG를 사용하고 있지만 새로 생성된 VNIC에는 OKE 클러스터의 일부인 기존 가상 인스턴스에 추가하여 해당 부분을 Kubernetes 작업자 노드로 재생할 전용 NSG도 필요합니다. 이 인터페이스는 SR-IOV가 사용으로 설정된 VNIC입니다.

작업 4.2: VNIC 추가

작업 5: 기본 게이트웨이를 사용하여 새 두번째 VNIC에 IP 주소 지정

이제 두번째 VNIC가 작업 4에서 만들어졌으므로 IP 주소를 지정해야 합니다. 인스턴스에 두번째 인터페이스를 추가하는 경우 첫번째 인터페이스와 동일한 서브넷에 지정하거나 새 서브넷을 선택할 수 있습니다.

두번째 인터페이스에 대해 DHCP가 사용으로 설정되지 않았으므로 IP 주소를 수동으로 지정해야 합니다.

두번째 인터페이스에 대한 IP 주소를 지정하는 방법에는 여러 가지가 있습니다.

모든 작업자 노드에 대해 보조 vNIC(ens5)에 IP 주소를 지정했습니다. 메소드 3을 사용하여 보조 vNIC(ens5)에 IP 주소를 지정했습니다. 두번째 VNIC에 IP 주소를 지정하는 방법에 대한 자세한 내용은 Assign an IP Address to a Second Interface on an Oracle Linux Instance을 참조하십시오.

IP 주소가 VNIC에 지정되면 두번째 VNIC의 IP 주소가 올바르게 구성되었는지 확인해야 합니다. 또한 모든 노드 풀 작업자 노드에서 SR-IOV를 사용으로 설정했는지 확인할 수 있습니다.

OKE 클러스터는 다음으로 구성됩니다.

노드 풀  
NP1 1 x 워커 노드
NP2 3 x 작업자 노드

모든 노드 풀의 모든 워커 노드를 확인합니다.

작업 5.1: 노드 풀 1의 모든 노드 확인(np1)

작업 5.2: 노드 풀 2의 모든 노드 확인(np2)

작업 6: 워커 노드에 메타 플러그인 CNI(다중 CNI) 설치

멀티스 CNI는 여러 네트워크 인터페이스를 하나의 포드에 연결할 수 있는 Kubernetes 컨테이너 네트워크 인터페이스(CNI) 플러그인입니다.

Multus CNI 작동 방식

왜 Multus CNI가 필요한가

작업 6.1: 씬 설치 방법을 사용하여 멀티스 CNI 설치

다중 데몬 세트에서 수행하는 작업

작업 6.2: Multus 설치 검증

작업 7: Pod에 네트워크 인터페이스 연결

이 작업에서는 컨테이너 인터페이스를 이 VNIC에 매핑하거나 연결합니다.

POD에 추가 인터페이스를 연결하려면 인터페이스를 연결하기 위한 구성이 필요합니다.

이 작업을 수행하기 위해 Multus와 함께 사용할 수있는 몇 가지 CNI 플러그인이 있습니다. 자세한 내용은 플러그인 개요를 참조하십시오.

다음 예에서는 노드에 추가된 보조 ens5 인터페이스를 구성하는 NetworkAttachmentDefinition 객체를 보여줍니다.

작업 7.1: 네트워크 연결 정의 생성

NetworkAttachmentDefinition는 네트워크 연결(예: 포드의 보조 인터페이스)을 설정하는 데 사용됩니다.

NetworkAttachmentDefinition를 구성하는 다음 두 가지 방법이 있습니다.

주: 이 자습서에서는 CNI 구성 파일을 사용하는 메소드를 사용하려고 합니다.

작업자 노드가 4개 있으며 각 작업자 노드에는 컨테이너(pod)의 인터페이스에 매핑할 두번째 VNIC가 있습니다.

작업 7.2: NetworkDefinitionAttachment가 연결된 상태로 Pod 생성

이 작업에서는 NetworkAttachmentDefinitions를 실제 컨테이너 또는 POD에 연결합니다.

다음 표에서는 워커 노드에서 호스트할 Pod에 대한 매핑을 생성했습니다.

근로자(기본) 노드 IP ens5 name POD명 완료됨
10.0.112.134 10.0.3.30/27 스리오브-vnic-1 testpod1
10.0.66.97 10.0.3.15/27 스리오브-vnic-2 testpod2
10.0.73.242 10.0.3.14/27 스리오브-vnic-3 testpod3
10.0.89.50 10.0.3.16/27 스리오브-vnic-4 testpod4

작업 7.3: 노드 유사성이 있는 Pod 생성

기본적으로 Kubernetes는 포드를 배치할 위치(작업자 노드)를 결정합니다. 이 예에서는 NetworkAttachmentDefinition가 IP 주소에 바인드되고 이 IP 주소가 VNIC에 바인드되고 이 VNIC가 특정 워커 노드에 바인드되기 때문에 이 작업을 수행할 수 없습니다. 따라서 NetworkAttachmentDefinition를 Pod에 연결할 때 생성하려는 Pod가 원하는 워커 노드에서 작동하는지 확인해야 합니다.

이 작업을 수행하지 않으면 Pod에 대해 IP 주소를 사용할 수 있는 다른 위치에서 Pod가 종료될 수 있습니다. 따라서 Pod가 SR-IOV 사용 인터페이스를 사용하여 통신할 수 없습니다.

작업 7.4: 테스트 포드의 IP 주소 확인

작업 7.5: 작업자 노드의 IP 주소 확인

작업 8: 여러 Pod 간 핑 테스트 수행

모든 Pod에는 SR-IOV 사용 VNIC가 연결된 OCI 서브넷의 IP 주소가 있습니다. 일부 핑 테스트를 수행하여 네트워크 접속이 제대로 작동하는지 확인할 수 있습니다.

주: 이 예에서는 testpod1를 사용하여 다른 모든 테스트 POD net1 IP 주소를 ping합니다.

작업 9: (선택 사항) 다중 인터페이스로 Pod 배치

지금까지는 하나의 VNIC(SR-IOV 지원)만 준비하고 이 VNIC를 Pod로 이동했습니다. 우리는 네 가지 다른 테스트 포드를 위해 이것을했습니다.

이제 특정 포드에 더 많은 VNIC를 추가하거나 이동하려면 어떻게 해야 할까요? 다음 단계를 반복해야 합니다.

이 작업에서는 추가 서브넷인 VNIC를 만들고, IP 주소와 NetworkAttachmentDefinition를 지정하고, testpod1에 대한 Pod 생성 YAML 파일에 추가하는 예제를 찾을 수 있습니다.

작업 10: 모든 Pod 배치 제거 및 NetworkAttachmentDefinitions

처음부터 다시 시작하거나 NetworkAttachmentDefinitions로 컨테이너를 정리하려면 다음 단계를 수행합니다.

승인

추가 학습 자원

docs.oracle.com/learn에서 다른 랩을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.