25.2. 프로젝트의 송신 IP 구성


클러스터 관리자는 OpenShift SDN CNI(Container Network Interface) 네트워크 플러그인을 구성하여 하나 이상의 송신 IP 주소를 프로젝트에 할당할 수 있습니다.

25.2.1. 송신 IP 주소 아키텍처 설계 및 구현

OpenShift Container Platform 송신 IP 주소 기능을 사용하면 하나 이상의 네임스페이스에 있는 하나 이상의 Pod에서 발생하는 트래픽의 소스 IP 주소가 클러스터 네트워크 외부 서비스에 일관되게 표시되도록 할 수 있습니다.

예를 들어 클러스터 외부 서버에서 호스팅되는 데이터베이스를 주기적으로 쿼리하는 Pod가 있을 수 있습니다. 서버에 대한 액세스 요구 사항을 적용하기 위해 패킷 필터링 장치는 특정 IP 주소의 트래픽만 허용하도록 구성됩니다. 특정 Pod에서만 서버에 안정적으로 액세스할 수 있도록 허용하려면 서버에 요청하는 Pod에 대해 특정 송신 IP 주소를 구성하면 됩니다.

네임스페이스에 할당된 송신 IP 주소는 특정 대상으로 트래픽을 보내는 데 사용되는 송신 라우터와 다릅니다.

일부 클러스터 구성에서 애플리케이션 Pod 및 인그레스 라우터 Pod는 동일한 노드에서 실행됩니다. 이 시나리오에서 애플리케이션 프로젝트에 대한 송신 IP 주소를 구성하는 경우 애플리케이션 프로젝트에서 경로로 요청을 보낼 때 IP 주소가 사용되지 않습니다.

송신 IP 주소는 노드의 기본 네트워크 인터페이스에서 추가 IP 주소로 구현되며 노드의 기본 IP 주소와 동일한 서브넷에 있어야 합니다. 추가 IP 주소를 클러스터의 다른 노드에 할당해서는 안 됩니다.

중요

송신 IP 주소는 ifcfg-eth0 과 같은 Linux 네트워크 구성 파일에서 구성해서는 안 됩니다.

25.2.1.1. 플랫폼 지원

다음 표에는 다양한 플랫폼의 송신 IP 주소 기능에 대한 지원이 요약되어 있습니다.

플랫폼지원됨

베어 메탈

있음

VMware vSphere

있음

Red Hat OpenStack Platform (RHOSP)

있음

AWS(Amazon Web Services)

있음

GCP(Google Cloud Platform)

있음

Microsoft Azure

있음

중요

EgressIP 기능이 있는 컨트롤 플레인 노드에 송신 IP 주소 할당은 AWS(Amazon Web Services)에서 프로비저닝된 클러스터에서 지원되지 않습니다. (BZ#2039656)

25.2.1.2. 퍼블릭 클라우드 플랫폼 고려 사항

퍼블릭 클라우드 인프라에서 프로비저닝된 클러스터의 경우 노드당 할당 가능한 IP 주소의 절대 수에 제약 조건이 있습니다. 노드당 할당 가능한 최대 IP 주소 수 또는 IP 용량 을 다음 공식으로 설명할 수 있습니다.

IP capacity = public cloud default capacity - sum(current IP assignments)

Egress IP 기능은 노드당 IP 주소 용량을 관리하는 반면 배포에서 이 제약 조건을 계획하는 것이 중요합니다. 예를 들어, 8개의 노드가 있는 베어 메탈 인프라에 클러스터의 경우 150개의 송신 IP 주소를 구성할 수 있습니다. 그러나 퍼블릭 클라우드 공급자가 IP 주소 용량을 노드당 IP 주소 10개로 제한하는 경우 할당 가능한 총 IP 주소 수는 80개뿐입니다. 이 예제 클라우드 공급자에서 동일한 IP 주소 용량을 달성하려면 7 개의 추가 노드를 할당해야 합니다.

퍼블릭 클라우드 환경에서 모든 노드의 IP 용량 및 서브넷을 확인하려면 oc get node <node_name> -o yaml 명령을 입력합니다. cloud.network.openshift.io/egress-ipconfig 주석에는 노드의 용량 및 서브넷 정보가 포함됩니다.

주석 값은 기본 네트워크 인터페이스에 다음 정보를 제공하는 필드가 있는 단일 오브젝트가 있는 배열입니다.

  • Interface: AWS 및 Azure의 인터페이스 ID와 GCP의 인터페이스 이름을 지정합니다.
  • ifaddr: 하나 또는 두 IP 주소 제품군에 대한 서브넷 마스크를 지정합니다.
  • capacity: 노드의 IP 주소 용량을 지정합니다. AWS에서는 IP 주소 제품군별로 IP 주소 용량이 제공됩니다. Azure 및 GCP에서 IP 주소 용량에는 IPv4 및 IPv6 주소가 모두 포함됩니다.

노드 간 트래픽에 대한 송신 IP 주소 자동 연결 및 분리를 사용할 수 있습니다. 이렇게 하면 네임스페이스의 많은 Pod에서 트래픽이 클러스터 외부의 위치와 일관된 소스 IP 주소를 가질 수 있습니다. 이는 OpenShift Container Platform 4.12의 Red Hat OpenShift Networking의 기본 네트워킹 플러그인인 OpenShift SDN 및 OVN-Kubernetes도 지원합니다.

참고

RHOSP 송신 IP 주소 기능은 egressip-<IP address>라는 Neutron 예약 포트를 생성합니다. OpenShift Container Platform 클러스터 설치에 사용된 RHOSP 사용자와 동일한 RHOSP 사용자를 사용하면 이 예약 포트에 유동 IP 주소를 할당하여 송신 트래픽에 대해 예측 가능한 SNAT 주소를 보유할 수 있습니다. RHOSP 네트워크의 송신 IP 주소가 한 노드에서 다른 노드로 이동되면 노드 장애 조치로 인해 Neutron 예약 포트가 제거되고 다시 생성됩니다. 즉, 유동 IP 연결이 손실되고 유동 IP 주소를 새 예약 포트에 수동으로 다시 할당해야 합니다.

다음 예제에서는 여러 퍼블릭 클라우드 공급자의 노드의 주석을 보여줍니다. 가독성을 위해 주석은 들여쓰기됩니다.

AWS의 cloud.network.openshift.io/egress-ipconfig 주석 예

cloud.network.openshift.io/egress-ipconfig: [
  {
    "interface":"eni-078d267045138e436",
    "ifaddr":{"ipv4":"10.0.128.0/18"},
    "capacity":{"ipv4":14,"ipv6":15}
  }
]

GCP의 cloud.network.openshift.io/egress-ipconfig 주석 예

cloud.network.openshift.io/egress-ipconfig: [
  {
    "interface":"nic0",
    "ifaddr":{"ipv4":"10.0.128.0/18"},
    "capacity":{"ip":14}
  }
]

다음 섹션에서는 용량 계산에 사용할 지원되는 퍼블릭 클라우드 환경에 대한 IP 주소 용량을 설명합니다.

25.2.1.2.1. AWS(Amazon Web Services) IP 주소 용량 제한

AWS에서 IP 주소 할당에 대한 제약 조건은 구성된 인스턴스 유형에 따라 다릅니다. 자세한 내용은 인스턴스 유형별 네트워크 인터페이스당 IP 주소를참조하십시오.

25.2.1.2.2. GCP(Google Cloud Platform) IP 주소 용량 제한

GCP에서 네트워킹 모델은 IP 주소 할당 대신 IP 주소 별칭을 통해 추가 노드 IP 주소를 구현합니다. 그러나 IP 주소 용량은 IP 별칭 용량에 직접 매핑됩니다.

IP 별칭 할당에는 다음과 같은 용량 제한이 있습니다.

  • 노드당 최대 IP 별칭 수이며 IPv4 및 IPv6은 모두 10입니다.
  • VPC당 최대 IP 별칭 수는 지정되지 않지만 OpenShift Container Platform 확장성 테스트는 최대 15,000개입니다.

자세한 내용은 인스턴스 할당량 및 별칭 IP 범위 개요 를 참조하십시오.

25.2.1.2.3. Microsoft Azure IP 주소 용량 제한

Azure에서는 IP 주소 할당에 대해 다음과 같은 용량 제한이 있습니다.

  • NIC당 IPv4 및 IPv6 둘 다에 대해 할당 가능한 최대 IP 주소 수는 256입니다.
  • 가상 네트워크당 할당된 IP 주소의 최대 수는 65,536을 초과할 수 없습니다.

자세한 내용은 네트워킹 제한을 참조하십시오.

25.2.1.3. 제한 사항

다음 제한 사항은 OpenShift SDN 네트워크 플러그인과 함께 송신 IP 주소를 사용하는 경우 적용됩니다.

  • 동일한 노드에서 수동 할당 및 자동 할당 송신 IP 주소를 사용할 수 없습니다.
  • IP 주소 범위에서 송신 IP 주소를 수동으로 할당하는 경우 해당 범위를 자동 IP 할당에 사용할 수 있도록 설정해서는 안 됩니다.
  • OpenShift SDN 송신 IP 주소 구현을 사용하여 여러 네임스페이스에서 송신 IP 주소를 공유할 수 없습니다.

네임스페이스 간에 IP 주소를 공유해야 하는 경우 OVN-Kubernetes 네트워크 플러그인 송신 IP 주소 구현을 통해 여러 네임스페이스에서 IP 주소를 확장할 수 있습니다.

참고

다중 테넌트 모드에서 OpenShift SDN을 사용하는 경우 연결된 프로젝트에 의해 다른 네임스페이스에 조인된 네임스페이스와 함께 송신 IP 주소를 사용할 수 없습니다. 예를 들어 oc adm pod-network join-projects --to= project1 project2 명령을 실행하여 project1 및 project2 를 조인하면 두 프로젝트 모두 송신 IP 주소를 사용할 수 없습니다. 자세한 내용은 BZ#1645577를 참조하십시오.

25.2.1.4. IP 주소 할당 접근 방식

NetNamespace 오브젝트의 egressIPs 매개변수를 설정하여 네임스페이스에 송신 IP 주소를 할당할 수 있습니다. 송신 IP 주소가 프로젝트와 연결된 후 OpenShift SDN을 사용하면 다음 두 가지 방법으로 송신 IP 주소를 호스트에 할당할 수 있습니다.

  • 자동 할당 방식에서는 송신 IP 주소 범위가 노드에 할당됩니다.
  • 수동 할당 방식에서는 하나 이상의 송신 IP 주소 목록이 노드에 할당됩니다.

송신 IP 주소를 요청하는 네임스페이스는 해당 송신 IP 주소를 호스트할 수 있는 노드와 일치되며 송신 IP 주소가 해당 노드에 할당됩니다. egressIPs 매개변수가 NetNamespace 오브젝트에 설정되었지만 IP 주소를 송신하는 노드 호스트가 없는 경우 네임스페이스에서 송신하는 트래픽이 삭제됩니다.

노드의 고가용성은 자동입니다. 송신 IP 주소를 호스팅하는 노드에 도달할 수 없고 해당 송신 IP 주소를 호스트할 수 있는 노드가 있으면 송신 IP 주소가 새 노드로 이동합니다. 연결할 수 없는 노드가 다시 온라인 상태가 되면 송신 IP 주소가 자동으로 이동하여 노드 간에 송신 IP 주소의 균형을 조정합니다.

25.2.1.4.1. 자동 할당된 송신 IP 주소 사용 시 고려사항

송신 IP 주소에 자동 할당 방식을 사용할 때는 다음 사항을 고려해야 합니다.

  • 각 노드의 HostSubnet 리소스의 egressCIDRs 매개변수를 설정하여 노드에서 호스팅할 수 있는 송신 IP 주소 범위를 나타냅니다. OpenShift Container Platform은 지정한 IP 주소 범위에 따라 HostSubnet 리소스의 egressIPs 매개변수를 설정합니다.

네임스페이스의 송신 IP 주소를 호스팅하는 노드에 도달할 수 없는 경우 OpenShift Container Platform은 호환되는 송신 IP 주소 범위를 가진 다른 노드에 송신 IP 주소를 다시 할당합니다. 자동 할당 방식은 추가 IP 주소를 노드와 연결할 수 있는 유연성이 있는 환경에 설치된 클러스터에 가장 적합합니다.

25.2.1.4.2. 수동으로 할당된 송신 IP 주소 사용 시 고려사항

이 방법을 사용하면 송신 IP 주소를 호스팅할 수 있는 노드를 제어할 수 있습니다.

참고

클러스터가 퍼블릭 클라우드 인프라에 설치된 경우 송신 IP 주소를 할당하는 각 노드에 IP 주소를 호스팅할 수 있는 충분한 예비 용량이 있는지 확인해야 합니다. 자세한 내용은 이전 섹션의 "플랫폼 고려 사항"을 참조하십시오.

송신 IP 주소에 수동 할당 방식을 사용할 때는 다음 사항을 고려해야 합니다.

  • 각 노드의 HostSubnet 리소스의 egressIPs 매개변수를 설정하여 노드에서 호스팅할 수 있는 IP 주소를 나타냅니다.
  • 네임스페이스당 여러 개의 송신 IP 주소가 지원됩니다.

네임스페이스에 여러 송신 IP 주소가 있고 해당 주소가 여러 노드에서 호스팅되는 경우 다음과 같은 추가 고려 사항이 적용됩니다.

  • Pod가 송신 IP 주소를 호스팅하는 노드에 있는 경우 해당 pod는 항상 노드에서 송신 IP 주소를 사용합니다.
  • Pod가 송신 IP 주소를 호스팅하는 노드에 없는 경우 해당 Pod는 송신 IP 주소를 임의로 사용합니다.

25.2.2. 네임스페이스에 자동으로 할당된 송신 IP 주소 구성

OpenShift Container Platform에서는 하나 이상의 노드에서 특정 네임스페이스에 대한 송신 IP 주소를 자동으로 할당할 수 있습니다.

사전 요구 사항

  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • OpenShift CLI(oc)를 설치했습니다.

프로세스

  1. 다음 JSON을 사용하여 송신 IP 주소로 NetNamespace 오브젝트를 업데이트합니다.

     $ oc patch netnamespace <project_name> --type=merge -p \
      '{
        "egressIPs": [
          "<ip_address>"
        ]
      }'

    다음과 같습니다.

    <project_name>
    프로젝트 이름을 지정합니다.
    <ip_address>
    egressIPs 배열에 대해 하나 이상의 송신 IP 주소를 지정합니다.

    예를 들어 project1 을 IP 주소 192.168.1.100 및 project2 에 192.168.1.101의 IP 주소에 할당하려면 다음을 수행합니다.

    $ oc patch netnamespace project1 --type=merge -p \
      '{"egressIPs": ["192.168.1.100"]}'
    $ oc patch netnamespace project2 --type=merge -p \
      '{"egressIPs": ["192.168.1.101"]}'
    참고

    OpenShift SDN은 NetNamespace 오브젝트를 관리하므로 기존 NetNamespace 오브젝트를 수정하는 경우에만 변경할 수 있습니다. 새 NetNamespace 개체를 생성하지 마십시오.

  2. 다음 JSON을 사용하여 각 호스트에 대해 egressCIDRs 매개변수를 설정하여 송신 IP 주소를 호스팅할 수 있는 노드를 나타냅니다.

    $ oc patch hostsubnet <node_name> --type=merge -p \
      '{
        "egressCIDRs": [
          "<ip_address_range>", "<ip_address_range>"
        ]
      }'

    다음과 같습니다.

    <node_name>
    노드 이름을 지정합니다.
    <ip_address_range>
    CIDR 형식의 IP 주소 범위를 지정합니다. egressCIDRs 배열에 대해 두 개 이상의 주소 범위를 지정할 수 있습니다.

    예를 들어, node1node2 를 192.168.1.0에서 192.168.1.255 범위의 송신 IP 주소를 호스팅하도록 설정하려면 다음을 수행합니다.

    $ oc patch hostsubnet node1 --type=merge -p \
      '{"egressCIDRs": ["192.168.1.0/24"]}'
    $ oc patch hostsubnet node2 --type=merge -p \
      '{"egressCIDRs": ["192.168.1.0/24"]}'

    OpenShift Container Platform은 특정 송신 IP 주소를 균형 잡힌 방식으로 사용 가능한 노드에 자동으로 할당합니다. 이 경우 송신 IP 주소 192.168.1.100을 node1 에 할당하고 송신 IP 주소 192.168.1.101을 node2 에 할당하거나 그 반대의 경우도 마찬가지입니다.

25.2.3. 네임스페이스에 수동으로 할당된 송신 IP 주소 구성

OpenShift Container Platform에서 하나 이상의 송신 IP 주소를 네임스페이스와 연결할 수 있습니다.

사전 요구 사항

  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • OpenShift CLI(oc)를 설치했습니다.

프로세스

  1. 원하는 IP 주소로 다음 JSON 오브젝트를 지정하여 NetNamespace 오브젝트를 업데이트합니다.

     $ oc patch netnamespace <project_name> --type=merge -p \
      '{
        "egressIPs": [
          "<ip_address>"
        ]
      }'

    다음과 같습니다.

    <project_name>
    프로젝트 이름을 지정합니다.
    <ip_address>
    egressIPs 배열에 대해 하나 이상의 송신 IP 주소를 지정합니다.

    예를 들어, project1 프로젝트를 IP 주소 192.168.1.100192.168.1.101 에 할당하려면 다음을 수행합니다.

    $ oc patch netnamespace project1 --type=merge \
      -p '{"egressIPs": ["192.168.1.100","192.168.1.101"]}'

    고가용성을 제공하려면 egressIPs 값을 서로 다른 노드에서 둘 이상의 IP 주소로 설정합니다. 여러 송신 IP 주소가 설정되면 Pod는 모든 송신 IP 주소를 거의 동일하게 사용합니다.

    참고

    OpenShift SDN은 NetNamespace 오브젝트를 관리하므로 기존 NetNamespace 오브젝트를 수정하는 경우에만 변경할 수 있습니다. 새 NetNamespace 개체를 생성하지 마십시오.

  2. 송신 IP 주소를 노드 호스트에 수동으로 할당합니다.

    클러스터가 퍼블릭 클라우드 인프라에 설치된 경우 노드에 사용 가능한 IP 주소 용량이 있는지 확인해야 합니다.

    노드 호스트의 HostSubnet 오브젝트에 egressIPs 매개변수를 설정합니다. 다음 JSON을 사용하여 해당 노드 호스트에 할당하려는 만큼의 IP 주소를 포함합니다.

    $ oc patch hostsubnet <node_name> --type=merge -p \
      '{
        "egressIPs": [
          "<ip_address>",
          "<ip_address>"
          ]
      }'

    다음과 같습니다.

    <node_name>
    노드 이름을 지정합니다.
    <ip_address>
    IP 주소를 지정합니다. egressIPs 배열에 대해 두 개 이상의 IP 주소를 지정할 수 있습니다.

    예를 들어 node1 에 송신 IP 192.168.1.100,192.168.1.101, 192.168.1.102 가 있도록 지정하려면 다음을 수행합니다.

    $ oc patch hostsubnet node1 --type=merge -p \
      '{"egressIPs": ["192.168.1.100", "192.168.1.101", "192.168.1.102"]}'

    이전 예에서 project1 의 모든 송신 트래픽은 지정된 송신 IP를 호스팅하는 노드로 라우팅된 다음 NAT(Network Address Translation)를 통해 해당 IP 주소에 연결됩니다.

25.2.4. 추가 리소스

  • 수동 송신 IP 주소 할당을 구성하는 경우 IP 용량 계획에 대한 자세한 내용은 플랫폼 고려 사항을 참조하십시오.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.