Provisioning degli indirizzi IP per i workload

Questa pagina descrive come creare subnet aggiuntive nel VPC interno o nel VPC predefinito della tua organizzazione per supportare i requisiti di networking interni. Devi creare una subnet VPC per assicurarti che i tuoi carichi di lavoro interni, come macchine virtuali (VM) e container, abbiano un numero sufficiente di indirizzi IP per supportare i requisiti di rete all'interno della tua organizzazione.

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.

Questa pagina è rivolta agli amministratori di rete all'interno del gruppo di amministratori della piattaforma e agli sviluppatori di applicazioni all'interno del gruppo di operatori delle applicazioni, che sono responsabili della gestione del traffico di rete per la propria organizzazione. Per saperne di più, consulta la documentazione sulle audience per GDC air-gapped.

Prima di iniziare

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

Crea una subnet di filiale zonale per i carichi di lavoro

Puoi creare una subnet interna zonale dalla subnet root zonale esistente della zona per suddividere ulteriormente gli indirizzi IP nel VPC predefinito zonale. Devi creare questo tipo di subnet nello spazio dei nomi platform. Se la subnet radice zonale principale non dispone di indirizzi IP sufficienti, devi allocare 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 ulteriori informazioni, vedi Risorse del server API di gestione a livello di zona.

    • SUBNET_NAME: il nome della nuova subnet di rete.

    • 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 e poi imposta il blocco CIDR, ad esempio 10.0.10.0/27.

    • PARENT_SUBNET_NAME: il nome della subnet principale, ad esempio default-vpc-zone0-cidr. La subnet principale è in genere una subnet radice zonale nella rete VPC predefinita.

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

    Puoi continuare a suddividere le subnet di zona o creare una subnet foglia per allocare un singolo indirizzo IP direttamente a un carico di lavoro interno.

Crea una subnet foglia per un singolo workload

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

La subnet foglia deve essere configurata con un valore prefixLength pari a 32, in quanto è destinata ad allocare un singolo indirizzo IP. Il valore parentReference fa riferimento a una subnet allocata in precedenza, ad esempio la subnet di zona principale che hai creato in Crea una subnet di ramo zonale per i carichi di lavoro.

  • 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/allocation-preference: default
        ipam.gdc.goog/vpc: default-vpc
      name: SUBNET_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      ipv4Request:
        prefixLength: 32
      parentReference:
        name: PARENT_SUBNET
        namespace: platform
      type: Leaf
    EOF
    

    Sostituisci quanto segue:

    • MANAGEMENT_API_SERVER_KUBECONFIG: il percorso del file kubeconfig del server API di gestione. Per ulteriori informazioni, vedi Risorse del server API di gestione a livello di zona.
    • SUBNET_NAME: il nome della subnet leaf.
    • PROJECT_NAMESPACE: lo spazio dei nomi del progetto corrispondente al progetto in cui si trovano i tuoi carichi di lavoro.
    • PARENT_SUBNET: il nome della subnet principale da cui questa subnet foglia recupererà l'indirizzo IP.

Il tuo indirizzo IP individuale è ora disponibile per essere utilizzato dai tuoi workload interni, come VM e container. Per ulteriori informazioni su come configurare l'indirizzo IP per i tuoi carichi di lavoro, consulta Eseguire il deployment dei carichi di lavoro delle macchine virtuali o Eseguire il deployment dei carichi di lavoro dei container.

Alloca una subnet zonale dall'intervallo di indirizzi IP globali

Se la tua zona non fornisce indirizzi IP sufficienti per i tuoi workload dall'intervallo di indirizzi IP della subnet radice zonale esistente, puoi allocare indirizzi IP aggiuntivi dall'intervallo radice 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 radice del VPC predefinito e controlla i CIDR disponibili:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \
        --label 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 come CIDR disponibili, a cui verrà fatto riferimento nel passaggio successivo. Nell'output precedente, sono disponibili gli intervalli CIDR 10.254.0.0/15 e 10.253.0.0/16. Nell'output possono essere presenti più subnet a seconda del numero di subnet radice disponibili, quindi annota tutti i CIDR disponibili e la subnet da cui proviene il CIDR disponibile.

  2. Confronta il CIDR più grande disponibile che hai annotato nel passaggio precedente con le dimensioni del CIDR che devi allocare alla tua zona. Se il CIDR più grande disponibile non è sufficiente per 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 CIDR per la nuova subnet.

    Ad esempio, se richiedi un CIDR /13, ma i CIDR disponibili includono solo /15 e /16, devi aggiungere una nuova subnet globale dell'intervallo radice di rete. Se hai bisogno di una subnet /15, puoi allocare una nuova subnet di zona dal 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ù, vedi 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 e poi 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 radice 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
    
  5. Verifica che la subnet zonale sia creata nel server API di gestione zonale e che il relativo 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 ulteriori informazioni, vedi Risorse del server API di gestione a livello di zona.

    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 di zona, puoi creare altre subnet secondarie di zona o allocare un indirizzo IP individuale direttamente a un carico di lavoro interno.

Dividi la subnet globale radice senza allocazione di zona

Per dividere ulteriormente una subnet globale senza allocarla a una zona da utilizzare per i tuoi carichi di lavoro, crea una subnet globale e non definire una strategia di propagazione nella risorsa personalizzata Subnet. Questo approccio è utile se vuoi continuare a organizzare l'intervallo di indirizzi IP accessibili a livello globale dalla subnet root globale senza allocare gli indirizzi IP a una zona.

Completa i seguenti passaggi nello spazio dei nomi platform per dividere la subnet radice globale solo nell'ambito globale:

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

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \
        --label 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 come CIDR disponibili, a cui verrà fatto riferimento nel passaggio successivo. Nell'output precedente, sono disponibili gli intervalli CIDR 10.254.0.0/15 e 10.253.0.0/16. Nell'output possono essere presenti più subnet a seconda del numero di subnet radice disponibili, quindi annota tutti i CIDR disponibili e la subnet da cui proviene il CIDR disponibile.

  2. Confronta il CIDR più grande disponibile che hai annotato nel passaggio precedente con le dimensioni del CIDR che devi allocare alla nuova subnet globale. Se il CIDR disponibile più grande non è sufficiente per allocare la nuova subnet, aggiungi una nuova subnet globale dell'intervallo radice di rete prima di continuare. Prendi nota della subnet principale da cui decidi di ottenere il CIDR per la nuova subnet.

    Ad esempio, se hai bisogno di un 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 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ù, vedi 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 e poi 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 radice 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. Da questa nuova subnet principale globale puoi creare una subnet per una zona specifica.

Aggiungi una nuova subnet globale dell'intervallo radice 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 di intervallo root di rete nel server API globale. Se necessario, puoi creare più subnet globali radice.

Per creare una nuova subnet di intervallo principale di rete, completa i seguenti passaggi:

  • 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ù, vedi 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 assegnata a una zona specifica.

Passaggi successivi