10장. 포드 레벨 본딩 사용


Pod 수준의 본딩은 고가용성과 처리량이 필요한 Pod 내부의 워크로드를 활성화하는 데 중요합니다. 포드 수준 본딩을 사용하면 커널 모드 인터페이스에서 여러 개의 단일 루트 I/O 가상화(SR-IOV) 가상 함수 인터페이스에서 본드 인터페이스를 생성할 수 있습니다. SR-IOV 가상 기능은 Pod에 전달되고 커널 드라이버에 연결됩니다.

포드 수준 본딩이 필요한 한 가지 시나리오는 서로 다른 물리적 기능의 여러 SR-IOV 가상 기능에서 본딩 인터페이스를 만드는 것입니다. 호스트에서 서로 다른 두 개의 물리적 기능으로부터 본드 인터페이스를 생성하면 포드 수준에서 높은 가용성과 처리량을 달성할 수 있습니다.

다음 문서의 작업을 수행하기 전에 SR-IOV 네트워크 운영자가 설치되어 있는지 확인하세요.

SR-IOV 네트워크, 네트워크 정책, 네트워크 연결 정의 및 Pod 생성과 같은 작업에 대한 지침은 SR-IOV 네트워크 장치 구성을 참조하세요.

10.1. 두 개의 SR-IOV 인터페이스에서 본드 인터페이스 구성

본딩을 사용하면 여러 네트워크 인터페이스를 하나의 논리적인 "본딩된" 인터페이스로 집계할 수 있습니다. Bond Container Network Interface(Bond-CNI)는 컨테이너에 Bond 기능을 제공합니다.

Bond-CNI는 SR-IOV(Single Root I/O Virtualization) 가상 함수를 사용하여 생성하고 이를 컨테이너 네트워크 네임스페이스에 배치할 수 있습니다.

OpenShift Container Platform은 SR-IOV 가상 함수를 사용하는 Bond-CNI만 지원합니다. SR-IOV 네트워크 운영자는 가상 기능을 관리하는 데 필요한 SR-IOV CNI 플러그인을 제공합니다. 다른 CNI 또는 인터페이스 유형은 지원되지 않습니다.

사전 요구 사항

  • 컨테이너에서 가상 기능을 얻으려면 SR-IOV 네트워크 운영자를 설치하고 구성해야 합니다.
  • SR-IOV 인터페이스를 구성하려면 각 인터페이스에 대한 SR-IOV 네트워크와 정책을 만들어야 합니다.
  • SR-IOV 네트워크 운영자는 SR-IOV 네트워크 및 정의된 정책을 기반으로 각 SR-IOV 인터페이스에 대한 네트워크 연결 정의를 만듭니다.
  • SR-IOV 가상 함수의 경우 linkState가 기본값인 auto 로 설정됩니다.

10.1.1. 본드 네트워크 첨부 정의 생성

이제 SR-IOV 가상 함수를 사용할 수 있으므로 본드 네트워크 연결 정의를 만들 수 있습니다.

apiVersion: "k8s.cni.cncf.io/v1"
    kind: NetworkAttachmentDefinition
    metadata:
      name: bond-net1
      namespace: demo
    spec:
      config: '{
      "type": "bond", 
1

      "cniVersion": "0.3.1",
      "name": "bond-net1",
      "mode": "active-backup", 
2

      "failOverMac": 1, 
3

      "linksInContainer": true, 
4

      "miimon": "100",
      "mtu": 1500,
      "links": [ 
5

            {"name": "net1"},
            {"name": "net2"}
        ],
      "ipam": {
            "type": "host-local",
            "subnet": "10.56.217.0/24",
            "routes": [{
            "dst": "0.0.0.0/0"
            }],
            "gateway": "10.56.217.1"
        }
      }'
Copy to Clipboard Toggle word wrap
1
cni-type은 항상 bond 로 설정됩니다.
2
모드 속성은 본딩 모드를 지정합니다.
참고

지원되는 본딩 모드는 다음과 같습니다.

  • 균형-rr - 0
  • 활성 백업 - 1
  • 밸런스-xor -2

balance-rr 또는 balance-xor 모드의 경우 SR-IOV 가상 함수에 대한 신뢰 모드를 켜짐 으로 설정해야 합니다.

3
장애 조치(failover) 속성은 액티브 백업 모드에 필수이며 1로 설정해야 합니다.
4
linksInContainer=true 플래그는 필요한 인터페이스가 컨테이너 내부에서 발견된다는 것을 Bond CNI에 알립니다. 기본적으로 Bond CNI는 SRIOV 및 Multus와의 통합에 적합하지 않은 호스트에서 이러한 인터페이스를 찾습니다.
5
링크 섹션은 본드를 생성하는 데 사용될 인터페이스를 정의합니다. 기본적으로 Multus는 연결된 인터페이스의 이름을 "net"과 1부터 시작하는 연속된 숫자로 지정합니다.

10.1.2. 본드 인터페이스를 사용하여 포드 생성

  1. 예를 들어 podbonding.yaml 이라는 이름의 YAML 파일로 포드를 만들어 설정을 테스트합니다. 파일의 내용은 다음과 같습니다.

    apiVersion: v1
        kind: Pod
        metadata:
          name: bondpod1
          namespace: demo
          annotations:
            k8s.v1.cni.cncf.io/networks: demo/sriovnet1, demo/sriovnet2, demo/bond-net1 
    1
    
        spec:
          containers:
          - name: podexample
            image: quay.io/openshift/origin-network-interface-bond-cni:4.11.0
            command: ["/bin/bash", "-c", "sleep INF"]
    Copy to Clipboard Toggle word wrap
    1
    네트워크 주석에 주목하세요. 여기에는 SR-IOV 네트워크 연결 2개와 본드 네트워크 연결 1개가 포함되어 있습니다. 본드 부착은 두 개의 SR-IOV 인터페이스를 본드 포트 인터페이스로 사용합니다.
  2. 다음 명령을 실행하여 yaml을 적용합니다.

    $ oc apply -f podbonding.yaml
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 사용하여 Pod 인터페이스를 검사하세요.

    $ oc rsh -n demo bondpod1
    sh-4.4#
    sh-4.4# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    3: eth0@if150: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1450 qdisc noqueue state UP
    link/ether 62:b1:b5:c8:fb:7a brd ff:ff:ff:ff:ff:ff
    inet 10.244.1.122/24 brd 10.244.1.255 scope global eth0
    valid_lft forever preferred_lft forever
    4: net3: <BROADCAST,MULTICAST,UP,LOWER_UP400> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether 9e:23:69:42:fb:8a brd ff:ff:ff:ff:ff:ff 
    1
    
    inet 10.56.217.66/24 scope global bond0
    valid_lft forever preferred_lft forever
    43: net1: <BROADCAST,MULTICAST,UP,LOWER_UP800> mtu 1500 qdisc mq master bond0 state UP qlen 1000
    link/ether 9e:23:69:42:fb:8a brd ff:ff:ff:ff:ff:ff 
    2
    
    44: net2: <BROADCAST,MULTICAST,UP,LOWER_UP800> mtu 1500 qdisc mq master bond0 state UP qlen 1000
    link/ether 9e:23:69:42:fb:8a brd ff:ff:ff:ff:ff:ff 
    3
    Copy to Clipboard Toggle word wrap
    1
    본드 인터페이스는 자동으로 net3 으로 명명됩니다. 특정 인터페이스 이름을 설정하려면 포드의 k8s.v1.cni.cncf.io/networks 주석에 @name 접미사를 추가합니다.
    2
    net1 인터페이스는 SR-IOV 가상 함수를 기반으로 합니다.
    3
    net2 인터페이스는 SR-IOV 가상 함수를 기반으로 합니다.
    참고

    Pod 주석에 인터페이스 이름이 구성되지 않은 경우 인터페이스 이름은 자동으로 net<n> 으로 지정되며 <n>1 부터 시작합니다.

  4. 선택 사항: 예를 들어 bond0 과 같은 특정 인터페이스 이름을 설정하려면 k8s.v1.cni.cncf.io/networks 주석을 편집하고 다음과 같이 bond0을 인터페이스 이름으로 설정합니다.

    annotations:
            k8s.v1.cni.cncf.io/networks: demo/sriovnet1, demo/sriovnet2, demo/bond-net1@bond0
    Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat