Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-11-28 GMT+08:00

NetworkAttachmentDefinition

Cenário

Em um cluster do CCE Turbo, você pode definir a sub-rede e o grupo de segurança de um contêiner por namespace usando NetworkAttachmentDefinition, um recurso de CRD no cluster. Depois que NetworkAttachmentDefinition é configurado para um namespace, os pods no namespace suportam as seguintes funções:
  • Vincular um contêiner com uma sub-rede: o endereço IP do pod é restrito em um bloco CIDR específico. Namespaces diferentes podem ser isolados uns dos outros.
  • Vincular um contêiner a um grupo de segurança: as regras de grupo de segurança podem ser definidas para pods no mesmo namespace para personalizar as políticas de acesso.

Restrições

  • NetworkAttachmentDefinition está disponível somente em clusters do CCE Turbo de v1.23.8-r0, v1.25.3-r0 e posterior.
  • Somente default-network oferece suporte ao pré-aquecimento da ENI. As sub-redes de contêiner definidas pelo usuário não oferecem suporte ao pré-aquecimento da ENI. Se o pré-aquecimento da ENI não estiver habilitado, a criação da instância de carga de trabalho ficará mais lenta. Portanto, essa função não é aplicável a cenários de criação de pods de alto desempenho.
  • Para excluir um NetworkAttachmentDefinition exclua pods (com a anotação chamada cni.yangtse.io/network-status) criados usando a configuração no namespace correspondente primeiro. Para mais detalhes, consulte Excluir uma configuração de rede.

Usar o console do CCE

  1. Efetue logon no console do CCE.
  2. Clique no nome do cluster para acessar o console do cluster. Escolha System Configuration no painel de navegação e clique na guia Network Configuration.

    Figura 1 Configurações da rede

    Cada cluster tem uma default-network para namespaces sem sub-redes de contêiner. A sub-rede de contêiner padrão exibida nas informações de rede na área de configuração de rede é a sub-rede de contêiner em default-network. A default-network não pode ser excluída.

  3. Clique em Create Network Configurations no canto superior direito. Configure os parâmetros básicos na caixa de diálogo exibida.

    • Name: insira um nome que contenha no máximo 253 caracteres. Não use default-network, default, mgnt0 e mgnt1.
    • Namespace: selecione um namespace. Os namespaces de diferentes configurações devem ser exclusivos. Se nenhum namespace estiver disponível, clique em Create Namespace para criar um.
    • Pod Subnet: selecione uma sub-rede. Se nenhuma sub-rede estiver disponível, clique em Create Subnet para criar uma sub-rede. Depois que a sub-rede for criada, clique no botão de atualizar. Um máximo de 20 sub-redes podem ser selecionadas.
    • Associate Security Group: o valor padrão é o grupo de segurança da ENI do contêiner. Você também pode clicar em Create Security Group para criar um. Depois que o grupo de segurança for criado, clique no botão de atualizar. Um máximo de cinco grupos de segurança podem ser selecionados.
    Figura 2 Criar uma configuração de rede

  4. Clique em Create. Após a conclusão da criação, você será redirecionado para a lista de configuração de rede. Você pode ver que a sub-rede recém-adicionada está na lista.

Usar o kubectl

Esta seção descreve como criar um NAD usando kubectl.

  1. Use o kubectl para se conectar ao cluster. Para mais detalhes, consulte Conexão a um cluster usando o kubectl.
  2. Modifique o arquivo networkattachment-test.yaml.

    vi networkattachment-test.yaml

    apiVersion: k8s.cni.cncf.io/v1
    kind: NetworkAttachmentDefinition
    metadata:
      annotations:
        yangtse.io/project-id: 05e38**
      name: example
      namespace: kube-system
    spec:
      config: 
      '{
        "type":"eni-neutron",
        "args":{
          "securityGroups":"41891**",
          "subnets":[
            {
              "subnetID":"27d95**"
            }
          ]
        },
        "selector":{
          "namespaceSelector":{
            "matchLabels":{
              "kubernetes.io/metadata.name":"default"
            }
          }
        }
      }'
    Tabela 1 Parâmetros principais

    Parâmetro

    Obrigatório

    Tipo

    Descrição

    apiVersion

    Sim

    String

    Versão da API. O valor é fixado em k8s.cni.cncf.io/v1.

    kind

    Sim

    String

    Tipo do objeto a ser criado. O valor é fixado em NetworkAttachmentDefinition.

    yangtse.io/project-id

    Sim

    String

    ID do projeto.

    name

    Sim

    String

    Nome do item de configuração.

    namespace

    Sim

    String

    Namespace do recurso de configuração. O valor é fixado para kube-system.

    config

    Sim

    Objeto de Tabela 2

    Conteúdo de configuração, que é uma cadeia no formato JSON.

    Tabela 2 Parâmetros de config

    Parâmetro

    Obrigatório

    Tipo

    Descrição

    type

    Sim

    String

    O valor é fixado em eni-neutron.

    args

    Não

    Tabela 3

    object

    Parâmetros de configuração.

    selector

    Não

    Tabela 4 object

    Namespace no qual a configuração entra em vigor.

    Tabela 3 Parâmetros de args

    Parâmetro

    Obrigatório

    Tipo

    Descrição

    securityGroups

    Não

    String

    ID do grupo de segurança. Se nenhum grupo de segurança estiver planejado, selecione o mesmo grupo de segurança que está em default-network.

    Obter o valor:

    Efetue logon no console da VPC. No painel de navegação à esquerda, escolha Access Control > Security Groups. Clique no nome do grupo de segurança de destino e copie o ID na página da guia Summary.

    subnets

    Sim

    Array of subnetID Objects

    Lista de IDs de sub-rede de contêiner. Pelo menos um ID de sub-rede deve ser inserido. O formato é o seguinte:

    [{"subnetID":"27d95**"},{"subnetID":"827bb**"},{"subnetID":"bdd6b**"}]

    ID de sub-rede não usado pelo cluster na mesma VPC.

    Obter o valor:

    Efetue logon no console da VPC. No painel de navegação, escolha Virtual Private Cloud > Subnets. Clique no nome da sub-rede de destino e copie o Subnet ID na página de guia Summary.

    Tabela 4 Parâmetros de selector

    Parâmetro

    Obrigatório

    Tipo

    Descrição

    namespaceSelector

    Não

    matchLabels Object

    Um seletor padrão do Kubernetes. Insira o rótulo do namespace no seguinte formato:

    "matchLabels":{
              "kubernetes.io/metadata.name":"default"
            }

    Os namespaces de diferentes configurações não podem se sobrepor.

  3. Crie um NetworkAttachmentDefinition.

    kubectl create -f networkattachment-test.yaml

    Se informações semelhantes às seguintes forem exibidas, o NetworkAttachmentDefinition foi criado.

    networkattachmentdefinition.k8s.cni.cncf.io/example created

Excluir uma configuração de rede

Você pode deletar a nova configuração de rede ou exibir seu arquivo YAML.

Antes de excluir uma configuração de rede, exclua o contêiner correspondente à configuração. Caso contrário, a exclusão falha.

  1. Execute o comando a seguir para filtrar o pod que usa a configuração no cluster (example é um nome de configuração de exemplo e você deve substituí-lo):
    kubectl get po -A -o=jsonpath="{.items[?(@.metadata.annotations.cni\.yangtse\.io/network-status=='[{\"name\":\"example\"}]')]['metadata.namespace', 'metadata.name']}"

    A saída do comando contém o nome do pod e o namespace associados à configuração.

  2. Exclua o proprietário do pod. O proprietário pode ser uma Implementação, um StatefulSet ou uma Tarefa.
Figura 3 Gerenciar a configuração da rede