Provisioning degli indirizzi IP per i workload

Crea subnet aggiuntive nel Virtual Private Cloud (VPC) interno della tua organizzazione o nel VPC predefinito per supportare i requisiti di networking interni. Ad esempio, aggiungi subnet VPC per assicurarti che i tuoi workload interni, come macchine virtuali (VM) e container, abbiano indirizzi IP sufficienti.

In questa pagina sono descritte diverse attività, che non devono essere completate in ordine:

Per una panoramica delle subnet e dei relativi concetti prima di completare le attività in questa pagina, consulta Subnet e indirizzi IP.

Questo documento è destinato agli amministratori di piattaforma e agli operatori di applicazioni responsabili della gestione del traffico di rete per la propria organizzazione. Per saperne di più, consulta Pubblico per la documentazione di GDC con air gap.

Prima di iniziare

Per ottenere l'autorizzazione necessaria per creare subnet, chiedi all'amministratore IAM dell'organizzazione di concederti il ruolo IAM Subnet Org Admin (subnet-org-admin). Questo ruolo non è vincolato a uno spazio dei nomi.

Crea una subnet di ramo zonale per i workload

Per suddividere ulteriormente gli indirizzi IP nel VPC predefinito zonale, puoi creare una subnet interna zonale dalla subnet root zonale esistente della zona. Devi creare questo tipo di subnet nello spazio dei nomi platform.

Se la subnet root zonale principale non ha indirizzi IP disponibili sufficienti, alloca un'altra subnet zonale dall'intervallo di indirizzi IP globali prima di continuare.

  • In una finestra del terminale, crea la nuova subnet zonale nel server API di gestione:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f - <<EOF
    apiVersion: ipam.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/vpc: default-vpc
      name: SUBNET_NAME
      namespace: platform
    spec:
      ipv4Request:
        prefixLength: CIDR_PREFIX_LENGTH
      networkSpec:
        enableGateway: true
        enableVLANID: false
      parentReference:
        name: PARENT_SUBNET_NAME
        namespace: platform
      type: Branch
    EOF
    

    Sostituisci quanto segue:

    • MANAGEMENT_API_SERVER_KUBECONFIG: il percorso del file kubeconfig del server API di gestione. Per saperne di più, consulta Risorse del server API di gestione zonale.

    • SUBNET_NAME: il nome della nuova subnet di rete.

    • CIDR_PREFIX_LENGTH: la lunghezza del prefisso per la nuova subnet, ad esempio 27. Questo campo alloca dinamicamente il successivo intervallo di indirizzi IP disponibile di queste dimensioni dalla subnet principale. Utilizza il campo prefixLength quando ti interessa solo la dimensione della subnet, non il suo intervallo di indirizzi IP specifico.

      Per assegnare un intervallo di indirizzi IP specifico, segui questi passaggi:

      1. Rimuovi la riga prefixLength: CIDR_PREFIX_LENGTH.
      2. Aggiungi una riga cidr: "YOUR_CIDR_BLOCK" al suo posto, ad esempio cidr: "10.0.10.0/27".

      Utilizza il campo cidr quando segui un piano IP rigoroso e devi assegnare un intervallo di indirizzi IP preciso e prevedibile. Questo intervallo deve essere una subnet valida e disponibile all'interno della subnet principale.

    • PARENT_SUBNET_NAME: il nome della subnet principale, ad esempio default-vpc-zone0-cidr. La subnet principale è in genere una subnet root zonale nel VPC predefinito.

    Per saperne di più, consulta la documentazione di riferimento dell'API per la Subnet risorsa.

    Puoi continuare a suddividere le subnet zonali o creare una subnet foglia per allocare un singolo indirizzo IP direttamente a un workload interno.

Crea una subnet foglia per un singolo workload

Per allocare un singolo indirizzo IP per il tuo workload, devi creare una subnet foglia. Questa subnet foglia deve avere il valore del campo type: Leaf e deve risiedere nello stesso spazio dei nomi del progetto della risorsa del workload, ad esempio una VM o un container.

La subnet foglia deve essere configurata con un valore prefixLength di 32, perché è progettata per allocare un singolo indirizzo IP. Il parentReference valore fa riferimento a una subnet allocata in precedenza, ad esempio la subnet zonale principale creata in Crea una subnet di ramo zonale per i workload.

  • In una finestra del terminale, crea la subnet foglia nel server API di gestione:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f - <<EOF
    apiVersion: ipam.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/vpc: default-vpc
      name: SUBNET_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      ipv4Request:
        prefixLength: 32
      parentReference:
        name: PARENT_SUBNET
        namespace: PARENT_NAMESPACE
      type: Leaf
    EOF
    

    Sostituisci quanto segue:

    • MANAGEMENT_API_SERVER_KUBECONFIG: il percorso del file kubeconfig del server API di gestione. Per saperne di più, consulta Risorse del server API di gestione zonale.
    • SUBNET_NAME: il nome della subnet foglia.
    • PROJECT_NAMESPACE: lo spazio dei nomi del progetto corrispondente al progetto in cui si trovano i workload.
    • PARENT_SUBNET: il nome della subnet principale da cui questa subnet foglia recupererà l'indirizzo IP.
    • PARENT_NAMESPACE: lo spazio dei nomi PROJECT_NAMESPACE o platform.

Il tuo indirizzo IP individuale è ora disponibile per l'utilizzo da parte dei workload interni, come VM e container. Per saperne di più su come configurare l'indirizzo IP per i workload, consulta Creare una VM con un indirizzo IP statico o dinamico o Configurare un bilanciatore del carico interno per i workload dei container.

Alloca una subnet zonale dall'intervallo di indirizzi IP globali

Se la zona non fornisce indirizzi IP sufficienti per i workload dall'intervallo di indirizzi IP della subnet root zonale esistente, puoi allocare indirizzi IP aggiuntivi dall'intervallo root di indirizzi IP globali.

Per allocare una subnet zonale dall'intervallo di indirizzi IP globali, completa i seguenti passaggi per la rete VPC predefinita nello spazio dei nomi platform:

  1. In una finestra del terminale, descrivi tutte le subnet root del VPC predefinito e controlla i blocchi CIDR disponibili:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \
        -l ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage=network-root-range
    

    Sostituisci GLOBAL_API_SERVER_KUBECONFIG con il percorso del file kubeconfig del server API globale. Per saperne di più, consulta Risorse del server API globale. Le etichette sono costanti e devono rimanere invariate.

    L'output è simile al seguente:

    Name:         default-vpc-root-cidr
    Namespace:    platform
    Labels:       ipam.gdc.goog/allocation-preference=default
                  ipam.gdc.goog/subnet-group=default-vpc-root-group
                  ipam.gdc.goog/usage=network-root-range
                  ipam.gdc.goog/vpc=default-vpc
    Annotations:  <none>
    API Version:  ipam.global.gdc.goog/v1
    Kind:         Subnet
    Metadata:
      Creation Timestamp:  2025-06-18T23:05:38Z
      Finalizers:
        global-subnet-finalizer
      Generation:        1
      Resource Version:  439434
      UID:               5ed1c51a-b5ee-473e-a185-8e065a87ae8f
    Spec:
      ipv4Request:
        Cidr:                10.252.0.0/14
      Propagation Strategy:  None
      Type:                  Root
    Status:
      Children Refs:
        Name:       default-vpc-zone1-root-cidr
        Namespace:  platform
        Type:       SingleSubnet
      Conditions:
        Last Transition Time:  2025-06-18T23:05:38Z
        Message:               IP allocation finished successfully
        Observed Generation:   1
        Reason:                AllocationSucceeded
        Status:                True
        Type:                  Ready
      ipv4Allocation:
        Available CIDRs:
          10.254.0.0/15
          10.253.0.0/16
        Cidr:  10.252.0.0/14
    Events:    <none>
    

    Prendi nota dei valori Status.ipv4Allocation.Available CIDRs. Questi valori sono i blocchi CIDR disponibili a cui fa riferimento il passaggio successivo. Nell'output precedente, gli intervalli CIDR 10.254.0.0/15 e 10.253.0.0/16 sono disponibili. L'output potrebbe mostrare più subnet. Prendi nota di tutti i blocchi CIDR disponibili e delle relative subnet di origine.

  2. Confronta il blocco CIDR disponibile più grande del passaggio precedente con le dimensioni del blocco CIDR necessario per la tua zona. Se il blocco CIDR disponibile più grande non è abbastanza grande da allocare la nuova subnet, aggiungi una nuova subnet globale dell'intervallo root di rete prima di continuare. Prendi nota della subnet principale da cui decidi di ottenere il blocco CIDR per la nuova subnet.

    Ad esempio, se hai bisogno di un blocco CIDR /13, ma i CIDR disponibili includono solo /15 e /16, devi aggiungere una nuova subnet globale dell'intervallo root di rete. Se hai bisogno di una subnet /15, puoi allocare una nuova subnet zonale dal blocco CIDR /15 esistente.

  3. Crea la nuova subnet nel server API globale:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF
    apiVersion: ipam.global.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/vpc: default-vpc
        ipam.gdc.goog/usage: zone-network-root-range
      name: SUBNET_NAME
      namespace: platform
    spec:
      ipv4Request:
        prefixLength: CIDR_PREFIX_LENGTH
      zone: ZONE_NAME
      propagationStrategy: SingleZone
      type: Branch
      parentReference:
        name: PARENT_SUBNET_NAME
        namespace: ORG_NAME
    EOF
    

    Sostituisci quanto segue:

    • GLOBAL_API_SERVER_KUBECONFIG: il percorso del file kubeconfig del server API globale. Per saperne di più, consulta Risorse del server API globale.
    • SUBNET_NAME: il nome della nuova subnet.
    • CIDR_PREFIX_LENGTH: la lunghezza del prefisso CIDR della nuova subnet allocata dinamicamente, ad esempio 20. Per impostare staticamente il CIDR, sostituisci il campo prefixLength con il campo cidr, quindi imposta il blocco CIDR, ad esempio 10.0.10.0/27.
    • ZONE_NAME: la zona per cui allocare la subnet, ad esempio zone1.
    • PARENT_SUBNET_NAME: il nome della subnet principale, ad esempio default-vpc-root-cidr, o la nuova subnet globale dell'intervallo root di rete che hai creato.
    • ORG_NAME: il nome dell'organizzazione.

    Per saperne di più, consulta la documentazione di riferimento dell'API per la Subnet risorsa.

  4. Verifica che la subnet sia pronta e disponibile nel server API globale controllando che il tipo di stato Ready sia true:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG get subnet --namespace platform \
        SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
    

    L'output è simile al seguente:

    status:
      conditions:
      - lastTransitionTime: "2025-06-06T07:28:48Z"
        message: IP allocation finished successfully
        observedGeneration: 1
        reason: AllocationSucceeded
        status: "True"
        type: Ready
    
  5. Verifica che la subnet zonale sia stata creata nel server API di gestione zonale e che il tipo di stato Ready sia true:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get subnet --namespace platform \
        SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
    

    Sostituisci MANAGEMENT_API_SERVER_KUBECONFIG con il percorso del file kubeconfig del server API di gestione. Per saperne di più, consulta Risorse del server API di gestione zonale.

    L'output è simile al seguente:

    status:
      conditions:
      - lastTransitionTime: "2025-06-06T07:29:34Z"
        message: IP allocation finished successfully
        observedGeneration: 1
        reason: AllocationSucceeded
        status: "True"
        type: Ready
    

    Da questa nuova subnet zonale, puoi creare altre subnet figlio zonali o allocare un singolo indirizzo IP direttamente a un workload interno.

Dividi la subnet globale root senza allocazione di zona

Per dividere ulteriormente una subnet globale senza allocarla a una zona, crea una subnet globale e ometti la strategia di propagazione nella risorsa personalizzata Subnet. Questo approccio è utile se vuoi continuare a organizzare l'intervallo di indirizzi IP accessibile a livello globale dalla subnet root globale senza allocare gli indirizzi IP a una zona.

Per dividere la subnet root globale nell'ambito globale, completa i seguenti passaggi nello spazio dei nomi platform:

  1. In una finestra del terminale, descrivi tutte le subnet root del VPC predefinito e controlla i blocchi CIDR disponibili:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \
        -l ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage=network-root-range
    

    Sostituisci GLOBAL_API_SERVER_KUBECONFIG con il percorso del file kubeconfig del server API globale. Per saperne di più, consulta Risorse del server API globale. Le etichette sono costanti e devono rimanere invariate.

    L'output è simile al seguente:

    Name:         default-vpc-root-cidr
    Namespace:    platform
    Labels:       ipam.gdc.goog/allocation-preference=default
                  ipam.gdc.goog/subnet-group=default-vpc-root-group
                  ipam.gdc.goog/usage=network-root-range
                  ipam.gdc.goog/vpc=default-vpc
    Annotations:  <none>
    API Version:  ipam.global.gdc.goog/v1
    Kind:         Subnet
    Metadata:
      Creation Timestamp:  2025-06-18T23:05:38Z
      Finalizers:
        global-subnet-finalizer
      Generation:        1
      Resource Version:  439434
      UID:               5ed1c51a-b5ee-473e-a185-8e065a87ae8f
    Spec:
      ipv4Request:
        Cidr:                10.252.0.0/14
      Propagation Strategy:  None
      Type:                  Root
    Status:
      Children Refs:
        Name:       default-vpc-zone1-root-cidr
        Namespace:  platform
        Type:       SingleSubnet
      Conditions:
        Last Transition Time:  2025-06-18T23:05:38Z
        Message:               IP allocation finished successfully
        Observed Generation:   1
        Reason:                AllocationSucceeded
        Status:                True
        Type:                  Ready
      ipv4Allocation:
        Available CIDRs:
          10.254.0.0/15
          10.253.0.0/16
        Cidr:  10.252.0.0/14
    Events:    <none>
    

    Prendi nota dei valori Status.ipv4Allocation.Available CIDRs. Questi valori sono i blocchi CIDR disponibili a cui fa riferimento il passaggio successivo. Nell'output precedente, gli intervalli CIDR 10.254.0.0/15 e 10.253.0.0/16 sono disponibili. Nell'output possono essere presenti più subnet a seconda del numero di subnet root che hai, quindi prendi nota di tutti i blocchi CIDR disponibili e della subnet da cui proviene il blocco CIDR disponibile.

  2. Confronta il blocco CIDR disponibile più grande del passaggio precedente con le dimensioni del blocco CIDR necessario per la nuova subnet globale. Se il blocco CIDR disponibile più grande non è abbastanza grande da allocare la nuova subnet, aggiungi una nuova subnet globale dell'intervallo root di rete prima di continuare. Prendi nota della subnet principale da cui decidi di ottenere il blocco CIDR per la nuova subnet.

    Ad esempio, se hai bisogno di un blocco CIDR /13, ma i CIDR disponibili includono solo /15 e /16, devi creare una nuova subnet globale dell'intervallo root di rete. Se hai bisogno di una subnet /15, puoi allocare la nuova subnet globale dal blocco CIDR /15 esistente.

  3. Crea la nuova subnet nel server API globale:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF
    apiVersion: ipam.global.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/vpc: default-vpc
        ipam.gdc.goog/usage: zone-network-root-range
      name: SUBNET_NAME
      namespace: platform
    spec:
      ipv4Request:
        prefixLength: CIDR_PREFIX_LENGTH
      propagationStrategy: None
      type: Branch
      parentReference:
        name: PARENT_SUBNET_NAME
        namespace: ORG_NAME
    EOF
    

    Sostituisci quanto segue:

    • GLOBAL_API_SERVER_KUBECONFIG: il percorso del file kubeconfig del server API globale. Per saperne di più, consulta Risorse del server API globale.
    • SUBNET_NAME: il nome della nuova subnet.
    • CIDR_PREFIX_LENGTH: la lunghezza del prefisso CIDR della nuova subnet allocata dinamicamente, ad esempio 20. Per impostare staticamente il CIDR, sostituisci il campo prefixLength con il campo cidr, quindi imposta il blocco CIDR, ad esempio 10.0.10.0/27.
    • PARENT_SUBNET_NAME: il nome della subnet principale, ad esempio default-vpc-root-cidr, o la nuova subnet globale dell'intervallo root di rete che hai creato.
    • ORG_NAME: il nome dell'organizzazione.

    Per saperne di più, consulta la documentazione di riferimento dell'API per la risorsa globale Subnet.

  4. Verifica che la subnet sia pronta e disponibile nel server API globale controllando che il tipo di stato Ready sia true:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG get subnet --namespace platform \
        SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
    

    L'output è simile al seguente:

    status:
      conditions:
      - lastTransitionTime: "2025-06-06T07:28:48Z"
        message: IP allocation finished successfully
        observedGeneration: 1
        reason: AllocationSucceeded
        status: "True"
        type: Ready
    

La nuova subnet globale per la tua organizzazione nel VPC predefinito è disponibile. Puoi creare una subnet per una zona specifica da questa nuova subnet principale globale.

Aggiungi una nuova subnet globale dell'intervallo root di rete

Le subnet globali con l'etichetta ipam.gdc.goog/usage: network-root-range ospitano il CIDR per tutte le zone della rete. Se il CIDR è esaurito, devi creare una nuova subnet dell'intervallo root di rete nel server API globale. Se necessario, puoi creare più subnet globali root.

Per creare una nuova subnet dell'intervallo root di rete:

  • In una finestra del terminale, crea la nuova subnet globale dell'intervallo root di rete per il VPC predefinito nello spazio dei nomi platform:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF
    apiVersion: ipam.global.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/vpc: default-vpc
        ipam.gdc.goog/usage: network-root-range
      name: SUBNET_NAME
      namespace: platform
    spec:
      ipv4Request:
        cidr: NEW_CIDR
      type: Root
    EOF
    

    Sostituisci quanto segue:

    • GLOBAL_API_SERVER_KUBECONFIG: il percorso del file kubeconfig del server API globale. Per saperne di più, consulta Risorse del server API globale.
    • SUBNET_NAME: il nome della nuova subnet.
    • NEW_CIDR: il nuovo CIDR per la subnet. Questo CIDR non può sovrapporsi a nessun CIDR in tutte le subnet esistenti con l'etichetta ipam.gdc.goog/usage: network-root-range nello stesso server API globale.

Questa nuova subnet dell'intervallo root globale può essere suddivisa all'interno del server API globale o allocata a una zona specifica.

Passaggi successivi