Gerenciamento de interfaces de rede virtual para a virtualização OpenShift

Nuvem Privada Virtual 4.20 e posteriormente Somente nós de trabalho bare metal Somente RHCOS OVN- Kubernetes CNI necessário

Você pode usar as interfaces de rede virtual (VNIs) para ativar a conectividade de rede avançada para máquinas virtuais (VMs) em execução em clusters Red Hat OpenShift on IBM Cloud com a virtualização OpenShift.

Entendendo as interfaces de rede virtual

Uma interface de rede virtual (VNI) é uma abstração de VPC IBM Cloud que representa conexões de rede individuais. Os VNIs incorporam propriedades de uma conexão de rede, como endereços IP, endereços MAC e a sub-rede VPC à qual pertencem.

As VNIs estão disponíveis somente em clusters com nós de trabalho bare metal.

Red Hat OpenShift on IBM Cloud usa anexos de rede baseados em VNI para permitir conectividade flexível entre cargas de trabalho em execução no cluster e fora dele. As VNIs permitem a exposição direta da rede de máquinas virtuais (VMs) baseadas na virtualização OpenShift à rede VPC usando redes definidas pelo usuário (UDN) OVN com a topologia Localnet. Com VNIs conectados a nós de trabalho bare metal, as migrações em tempo real de VMs podem preservar as conexões de rede, pois o VNI pode flutuar implicitamente e seguir a carga de trabalho VM entre instâncias de trabalho bare metal na mesma zona.

Recursos-chave

VNIs estáticos por nó de trabalho
Quando você cria um cluster Red Hat OpenShift on IBM Cloud baseado em bare metal ou um novo pool de trabalho em IBM Cloud VPC, dois VNIs são automaticamente criados e anexados estaticamente a cada nó de trabalho bare metal. Uma VNI lida com o tráfego regular de trabalhadores (rede de pods, UDNs de sobreposição e comunicação principal). O segundo VNI atua como um portador para anexos dinâmicos de VNI que você gerencia.
Anexos dinâmicos do VNI
Você pode criar e gerenciar VNIs sob demanda após a criação do cluster. As VNIs dinâmicas podem ser anexadas a trabalhadores específicos ou configuradas para flutuar entre trabalhadores na mesma zona, seguindo as cargas de trabalho do VM durante a migração em tempo real.
Suporte à migração em tempo real
Com VNIs conectados a nós de trabalho bare metal, as migrações em tempo real de VMs baseadas em virtualização OpenShift podem preservar as conexões de rede. O VNI flutua implicitamente e segue a carga de trabalho entre as instâncias de trabalho bare metal dentro da mesma zona.

Para obter limitações e considerações importantes sobre VNIs, consulte Limitações e considerações.

Anexo entre contas

Em Red Hat OpenShift on IBM Cloud, os nós de trabalho não são provisionados em sua conta, o que significa que o gerenciamento do ciclo de vida das VNIs é ligeiramente diferente das instâncias bare metal de VPCs autônomas. O administrador do cluster Red Hat OpenShift on IBM Cloud tem visibilidade diferente dos anexos dos VNIs porque eles são anexados a cargas de trabalho que não são visíveis na conta. As diferenças no gerenciamento do VNI são abordadas nesta documentação.

Para obter mais informações sobre VNIs em instâncias bare metal de VPC autônomas, consulte Sobre interfaces de rede virtual.

Limitações e considerações

Modificações estáticas do VNI
Não modifique os VNIs estáticos que são criados automaticamente para cada nó de trabalho. Embora essas VNIs estejam visíveis em sua conta VPC, não há suporte para alterações em suas configurações. Isso inclui anexar IPs flutuantes, alterar grupos de segurança ou modificar quaisquer outras propriedades do VNI. A modificação de VNIs estáticos pode causar problemas de conectividade do cluster.
Restrições de modificação do VNI para anexos flutuantes
Você não pode modificar as propriedades do VNI para anexos dinâmicos flutuantes (com escopo de cluster). Isso inclui alterações no nome da VNI, nos endereços IP flutuantes, nas configurações de NAT da infraestrutura e nas atribuições de grupos de segurança. Para atualizar essas configurações, você deve primeiro desconectar o VNI, fazer as alterações e, em seguida, reconectá-lo ao cluster. Essa limitação é temporária.
Restrições de zona
Os VNIs são anexados a uma sub-rede VPC específica e não podem flutuar entre zonas. Em clusters Red Hat OpenShift on IBM Cloud de várias zonas, os VNIs podem lidar com o tráfego somente para cargas de trabalho executadas em trabalhadores de cluster na mesma zona em que o VNI é provisionado. Isso também significa que você deve evitar a OpenShift Virtualization VM migração ao vivo entre zonas quando o VM específico estiver usando um VNI em uma UDN Localnet.
Requisito de bare metal
Os VNIs são compatíveis apenas com nós de trabalho bare metal. Os nós de trabalho da instância de servidor virtual (VSI) não são compatíveis com VNIs.
Requisito RHCOS
Os nós de trabalho devem executar o sistema operacional Red Hat CoreOS (RHCOS).
OVN- Kubernetes CNI
Os clusters devem usar o plug-in OVN- Kubernetes Container Network Interface (CNI).
Requisito de versão
O suporte a VNI requer o endereço OpenShift 4.20 ou posterior.
Restrições de UDN da rede local
As UDNs de rede local têm o gerenciamento de endereços IP (IPAM) desativado no lado da OVN, o que significa que a atribuição de endereços IP estáticos a pods não ocorre na OVN. Essa configuração foi projetada para cargas de trabalho do VM que usam DHCP ou definem IPs estáticos dentro do sistema operacional convidado. Pods regulares não podem ser anexados a UDNs de rede local.

Pré-requisitos

Antes de começar, certifique-se de que dispõe dos seguintes recursos e permissões.

  • Um cluster Red Hat OpenShift on IBM Cloud na versão 4.20 ou posterior com nós de trabalho bare metal
  • Infraestrutura VPC com VNIs criadas
  • Sistema operacional RHCOS em nós de trabalho
  • OpenShift Operador de virtualização instalado
  • Armazenamento configurado para OpenShift Virtualização
  • A função de acesso à plataforma Operator para Kubernetes Service em IBM Cloud IAM
  • A função de acesso à plataforma Editor ou Administrator para os serviços de infraestrutura de VPC em IBM Cloud IAM
  • Permitir acesso a contas listadas para recursos VNI
  • OVN- Kubernetes CNI (necessário para suporte a VNI em 4.20 +)

Para obter informações gerais sobre configurações de várias redes, consulte a documentação Red Hat OpenShift multiple networks.

Criação de UDNs de sobreposição para pods e VMs

Você pode criar redes definidas pelo usuário sobrepostas para uso com pods ou cargas de trabalho do VM. A experiência da interface do usuário do console OpenShift para redes definidas pelo usuário está sujeita a alterações nas versões recentes. Os exemplos nesta documentação usam definições YAML para reutilização.

Criação de uma UDN primária

Para usar uma rede primária definida pelo usuário para pods ou carga de trabalho VM, primeiro crie a própria UDN.

Exemplo de uma rede definida pelo usuário do cluster que pode ser usada em todos os namespaces:

apiVersion: k8s.ovn.org/v1
kind: ClusterUserDefinedNetwork
metadata:
  name: primary
spec:
  namespaceSelector:
    matchLabels:
      kubernetes.io/metadata.name: green
  network:
    layer2:
      ipam:
        lifecycle: Persistent
      role: Primary
      subnets:
        - 10.0.0.0/24
    topology: Layer2

Em seguida, crie o(s) namespace(s) que o(s) utilizará(ão). O espaço de nome deve conter um rótulo específico (chamado k8s.ovn.org/primary-user-defined-network) na criação para uso da UDN primária.

Exemplo:

kind: Namespace
apiVersion: v1
metadata:
  name: green
  labels:
    k8s.ovn.org/primary-user-defined-network: ''

Quando a (C)UDN e os namespaces estiverem em vigor, qualquer carga de trabalho criada nesse namespace acessará a UDN com a rota padrão.

Criação de uma UDN secundária

A configuração da UDN secundária é semelhante à da UDN primária, mas com a função definida como Secondary. Para obter informações detalhadas, consulte a documentação sobre Red Hat OpenShift multiple networks.

Exposição de VMs com balanceadores de carga VPC

Você pode expor VMs sem usar UDN ou VNI de rede local usando balanceadores de carga de aplicativos VPC. Para obter mais informações sobre a configuração de balanceadores de carga, consulte Sobre balanceadores de carga VPC.

Configuração de redes definidas pelo usuário localnet

As UDNs de rede local exigem a preparação da rede OVN do cluster Red Hat OpenShift on IBM Cloud. Em nós de cluster bare metal, as duas interfaces de rede estáticas têm nomes previsíveis no sistema operacional do host. A interface de rede dedicada a transportar o tráfego de VNIs com conexão dinâmica é chamada de eth1. O aproveitamento da Localnet requer a criação de uma ponte OVS dedicada nos nós do cluster bare metal, além do site eth1. Prepare uma VLAN ID que você usará para anexar as VNIs. Ele também será mencionado no recurso CUDN.

Instalação do operador NMState

OpenShift Serviço de virtualização Os clusters têm o operador NMState pré-instalado e são gerenciados pelo complemento openshift-virtualization. Pule esta etapa se estiver usando o Serviço de Virtualização.

  1. Implante o NMState Operator a partir do site OperatorHub no console Red Hat OpenShift on IBM Cloud ou usando a CLI.

  2. Crie uma instância do NMState com a configuração padrão.

    apiVersion: nmstate.io/v1
    kind: NMState
    metadata:
      name: nmstate
    spec:
      probeConfiguration:
        dns:
          host: root-servers.net
    

Criação da ponte OVS

OpenShift Serviço de virtualização Os clusters têm os recursos NNCP necessários pré-configurados. Você só precisa criar esses recursos manualmente para clusters padrão do OpenShift com instalação manual do OpenShift Virtualization.

  1. Crie uma ponte OVS dedicada com eth1 anexado a ela implantando o seguinte recurso personalizado NMState.

    apiVersion: nmstate.io/v1
    kind: NodeNetworkConfigurationPolicy
    metadata:
      name: "br-eth1"
    spec:
      desiredState:
        interfaces:
        - name: "br-eth1"
          description: A dedicated OVS bridge with a NIC as a port
          type: ovs-bridge
          state: up
          bridge:
            allow-extra-patch-ports: true
            options:
              stp: false
            port:
            - name: "eth1"
    
  2. Verifique o status do recurso personalizado e aguarde até que todos os nós do cluster aplicáveis reconciliem a solicitação de criação da ponte.

  3. Faça o patch da nova ponte OVS para a ponte padrão criando o seguinte recurso personalizado NMState. Substitua vpc-vlans pelo nome de rede desejado.

    apiVersion: nmstate.io/v1
    kind: NodeNetworkConfigurationPolicy
    metadata:
      name: "vpc-vlans"
    spec:
      desiredState:
        ovn:
          bridge-mappings:
          - localnet: "vpc-vlans"
            bridge: "br-eth1"
            state: present
    
  4. Verifique o status do recurso personalizado e aguarde até que todos os nós do cluster aplicáveis reconciliem a solicitação de mapeamento de ponte.

Criação de uma rede definida pelo usuário localnet

Crie uma UDN ou ClusterUserDefinedNetwork (CUDN) que disponibilize o tráfego de VNIs usando a VLAN selecionada.

apiVersion: k8s.ovn.org/v1
kind: ClusterUserDefinedNetwork
metadata:
  name: "vlan250"
spec:
  namespaceSelector:
    matchExpressions:
    - key: kubernetes.io/metadata.name
      operator: In
      values:
      - "default"
  network:
    topology: Localnet
    localnet:
      role: "Secondary"
      physicalNetworkName: "vpc-vlans"
      ipam:
        mode: Disabled
      vlan:
        mode: Access
        access:
          id: 250

Substitua os seguintes valores:

  • vlan250: O nome de seu CUDN
  • default: O namespace em que você deseja usar o CUDN
  • vpc-vlans: O nome da rede física que você definiu no mapeamento da ponte
  • 250: Sua VLAN ID desejada (intervalo: 1-500)

Isso conclui o encanamento de rede de uma VLAN específica. Você pode definir vários CUDNs usando VLAN IDs diferentes e reutilizando os mapeamentos de ponte.

Após concluir a configuração da UDN localnet, é possível anexar VNIs ao cluster usando o console IBM Cloud ou o comando IBM Cloud CLI ks vni. Veja os exemplos nas seções a seguir.

Anexar VNIs ao seu cluster

Depois de configurar a UDN da rede local, é possível anexar VNIs ao cluster usando o console IBM Cloud ou a CLI.

Antes de Iniciar

  1. Crie VNIs em sua VPC com a configuração apropriada de sub-rede e endereço IP.

  2. Certifique-se de que você tenha as permissões necessárias para gerenciar o cluster e as VNIs.

Anexar um VNI a partir do console

Você pode anexar um VNI a um nó de trabalho específico (não flutuante) ou ao cluster (flutuante). Os VNIs flutuantes podem acompanhar as cargas de trabalho entre os trabalhadores na mesma zona.

VNIs, sub-redes e nós de trabalho são recursos zonais. A zona de computação do VNI deve corresponder à zona de trabalho selecionada. Para acessórios flutuantes, a zona do VNI é assumida, e o acessório flutuante também tem a restrição de zona. Os VNIs podem ser conectados a partir de sub-redes arbitrárias, mas somente a partir da mesma VPC do cluster.

  1. No console Red Hat OpenShift on IBM Cloud clusters, selecione o cluster.

  2. No menu de navegação, clique em Rede > Anexos VNI.

  3. Clique em Anexar VNIs.

  4. No painel Attach VNIs (Anexar VNIs ), defina as seguintes configurações:

    • Sub-rede: Selecione a sub-rede em que seu VNI está localizado. Somente sub-redes na mesma zona que seus nós de trabalho estão disponíveis.
    • Nó de trabalho: Selecione um nó de trabalho específico ao qual anexar o VNI ou selecione Todos os nós de trabalho para criar um anexo de VNI flutuante que possa acompanhar as cargas de trabalho entre os trabalhadores na mesma zona.
    • VNI: Selecione a VNI a ser anexada dentre as VNIs disponíveis na sub-rede selecionada.
    • VLAN ID: Digite a VLAN ID (intervalo: 1-500) que corresponda à sua configuração de UDN da rede local.
    • Exclusão automática: Opcional. Selecione essa opção para excluir automaticamente o VNI quando ele for removido do cluster.
  5. Clique em Anexar.

Como anexar um VNI a partir da CLI

Você pode anexar um VNI a um nó de trabalho específico (não flutuante) ou ao cluster (flutuante). Os VNIs flutuantes podem acompanhar as cargas de trabalho entre os trabalhadores na mesma zona.

VNIs, sub-redes e nós de trabalho são recursos zonais. A zona de computação do VNI deve corresponder à zona de trabalho selecionada. Para acessórios flutuantes, a zona do VNI é assumida, e o acessório flutuante também tem a restrição de zona. Os VNIs podem ser conectados a partir de sub-redes arbitrárias, mas somente a partir da mesma VPC do cluster.

Para anexar uma VNI a um nó de trabalho específico, execute o seguinte comando.

ibmcloud ks vni attach baremetal --worker WORKER_ID --vni VNI_ID --vlan VLAN_ID [--auto-delete]

Para anexar uma VNI flutuante ao cluster, execute o seguinte comando.

ibmcloud ks vni attach baremetal --cluster-id CLUSTER_ID --vni VNI_ID --vlan VLAN_ID [--auto-delete]
--worker WORKER_ID
O ID do nó de trabalho. Para listar os IDs dos trabalhadores, execute o comando ibmcloud ks workers --cluster CLUSTER``.
--cluster-id CLUSTER_ID
O ID do cluster. Para listar IDs de cluster, execute ibmcloud ks clusters.
--vni VNI_ID
A ID do VNI a ser anexado.
--vlan VLAN_ID
A VLAN ID do anexo (intervalo: 1-500). Isso deve corresponder à VLAN ID em sua configuração de CUDN.
--auto-delete
Opcional: Excluir automaticamente o VNI quando ele for removido do cluster.

Exemplo

ibmcloud ks vni attach baremetal --vni 0716-aac49630-f3b4-4ef6-9a3a-5145481697ba --worker kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000123 --vlan 251

Exemplo de saída

OK
Successfully attached VNI 0716-aac49630-f3b4-4ef6-9a3a-5145481697ba to worker node kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000123.
Worker Node ID                                         VNI ID                                      VLAN ID
kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000123   0716-aac49630-f3b4-4ef6-9a3a-5145481697ba   251

Visualização de anexos do VNI

É possível visualizar os anexos do VNI no console IBM Cloud ou usando a CLI.

Visualização de anexos de VNI no console

  1. No console Red Hat OpenShift on IBM Cloud clusters, selecione o cluster.

  2. No menu de navegação, clique em Rede > Anexos VNI.

  3. A página Anexos da interface de rede virtual exibe uma tabela com as seguintes informações para cada VNI anexada:

    • Nome da VNI: o nome da interface de rede virtual
    • Nome do nó de trabalho: O nó de trabalho ao qual o VNI está anexado ou indica se é um anexo flutuante
    • Sub-rede: A sub-rede VPC associada à VNI
    • VLAN ID: A VLAN ID usada para o anexo
    • IP primário: O endereço IP primário da VNI
  4. Opcional: Use os filtros na parte superior da página para filtrar VNIs por sub-rede ou nó de trabalho.

Visualização de anexos de VNI na CLI

Para listar todos os VNIs anexados a um cluster, execute o seguinte comando.

ibmcloud ks vni ls --cluster-id CLUSTER_ID

Para listar os VNIs anexados a um trabalhador específico, execute o seguinte comando.

ibmcloud ks vni ls --worker WORKER_ID

Exemplo de saída

ibmcloud ks vni ls --cluster-id c9pqfcmw0tq431jdnrrg
OK
VNI ID                                      Worker Node                                            IP Address   MAC Address         VLAN   Floating   Auto-delete
0716-d97d3626-acb2-476b-8b12-bcafa1dec5bb   kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000456   10.240.1.5   02:00:02:00:73:A5   250    -          false
0716-aac49630-f3b4-4ef6-9a3a-5145481697ba   kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000123   10.240.1.4   02:00:01:00:73:A5   251    -          false

Desvinculação de VNIs

É possível desconectar VNIs no console IBM Cloud ou usando a CLI.

Desvinculação de VNIs do console

  1. No console Red Hat OpenShift on IBM Cloud clusters, selecione o cluster.

  2. No menu de navegação, clique em Rede > Anexos VNI.

  3. Na tabela de anexos da interface de rede virtual, localize a VNI que você deseja desanexar.

  4. Clique no ícone do menu de ações (⋯) do VNI e selecione Detach (Desanexar ).

  5. Na caixa de diálogo de confirmação, clique em Detach (Desanexar ) para confirmar a ação.

Desvinculação de VNIs da CLI

Para desanexar um VNI de um nó de trabalho, você deve especificar o ID do VNI e o ID do trabalhador.

ibmcloud ks vni detach --worker WORKER_ID --vni VNI_ID

Para VNIs flutuantes, primeiro liste os VNIs para encontrar o ID de trabalhador atual e, em seguida, desconecte usando esse ID de trabalhador.

Exemplo

ibmcloud ks vni detach --vni 0716-aac49630-f3b4-4ef6-9a3a-5145481697ba --worker kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000123
Detach VNI 0716-aac49630-f3b4-4ef6-9a3a-5145481697ba from worker node kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000123? This action cannot be undone. [y/N]> y
OK
Successfully detached VNI 0716-aac49630-f3b4-4ef6-9a3a-5145481697ba from worker node kube-c9pqfcmw0tq431jdnrrg-mycluster-default-00000123.

Uso de VNIs com a virtualização OpenShift

Depois de anexar VNIs e configurar UDNs de rede local, você poderá usá-las com VMs de virtualização OpenShift.

  1. Crie VMs com a virtualização OpenShift e adicione o CUDN como uma rede secundária. Os anexos de rede local não podem ser usados como redes primárias. Você pode usar o Console OpenShift para adicionar o anexo.

  2. Especifique o endereço MAC do anexo para permitir que o sistema operacional VM obtenha seu endereço IP usando o DHCP. Como alternativa, você pode atribuir o endereço IP do VNI de forma estática à respectiva interface de rede no site VM.

Para obter mais informações sobre como criar e gerenciar VMs, consulte a seguinte documentação Red Hat:

Solução de problemas de VNIs

Por que não posso anexar pods regulares a UDNs de rede local?

As UDNs de rede local têm o gerenciamento de endereços IP (IPAM) desativado no lado da OVN, o que significa que a atribuição de endereços IP estáticos a pods não ocorre na OVN. Essa configuração foi projetada para cargas de trabalho do VM que usam DHCP ou definem IPs estáticos dentro do sistema operacional convidado. Essas opções não estão disponíveis para cargas de trabalho de pod.

Por que a migração em tempo real está pendente nos pools de trabalhadores?

Diferentes pools de trabalho podem ter diferentes tipos de trabalho com CPUs de diferentes gerações e recursos. Se o conjunto completo de recursos da CPU estiver visível de forma transparente para a carga de trabalho do VM, você não poderá migrar o VM para outro trabalhador que não ofereça suporte a todos os recursos da CPU. Você pode limitar os recursos visíveis da CPU do sistema operacional convidado no início para obter mais compatibilidade entre os tipos de trabalho.

Por que os VNIs com conexão dinâmica não estão funcionando?

Verifique os seguintes itens:

  • Verifique se a ID da VLAN na CUDN corresponde à ID da VLAN no anexo da VNI. O DHCP da VPC ainda poderá funcionar sem tráfego adicional se a VLAN for incompatível.
  • Se a flutuação não estiver ativada, verifique se a carga de trabalho está programada no trabalhador ao qual a VNI está conectada.
  • Verifique se a ponte OVS dedicada e o mapeamento estão presentes nos trabalhadores. Verifique o status do recurso NodeNetworkConfigurationPolicy.