IBM Cloud Docs
Aggiunta di instradamenti statici ai nodi di lavoro

Aggiunta di instradamenti statici ai nodi di lavoro

Crea instradamenti statici sui tuoi nodi di lavoro abilitando il componente aggiuntivo degli instradamenti statici per i cluster IBM Cloud® Kubernetes Service.

Informazioni sugli instradamenti statici

Quando configuri la rete del tuo cluster per comunicare con altre reti sulla rete privata, potresti aver bisogno di aggiungere instradamenti statici personalizzati sui tuoi nodi di lavoro. Gli instradamenti statici consentono ai nodi di lavoro di reindirizzare correttamente i pacchetti di risposta dal tuo cluster a un indirizzo IP nel data center in loco tramite una VPN o un'applicazione gateway.

Ad esempio, potresti utilizzare una VPN per connettere il tuo cluster a un data center in loco sulla rete privata. Inoltre, la tua connessione VPN privata conserva l'indirizzo IP di origine nelle richieste tra il cluster e il data center.

Quando un servizio in loco invia una richiesta a un'applicazione nel tuo cluster, il nodo di lavoro su cui si trova il tuo pod dell'applicazione elimina la risposta a causa dell'RPF (reverse path filter). RPF è una funzione del kernel Linux che elimina tutte le risposte sugli indirizzi IP che non sono elencati nelle tabelle di instradamento del nodo di lavoro. La risposta viene eliminata perché l'indirizzo IP in loco che era stato conservato nella richiesta non è instradabile dal nodo di lavoro.

In questo caso, puoi creare una rotta statica in modo che, quando un indirizzo IP di origine da una richiesta proviene da una delle tue sottoreti in loco, la risposta venga invece inviata all'indirizzo IP del gateway VPN. Aggiungendo questo instradamento statico alle tabelle di instradamento dei nodi di lavoro, garantisci quanto segue:

  • I pacchetti di risposta non vengono eliminati a causa dell'RPF, poiché esiste una regola di instradamento che punta all'indirizzo IP in loco.
  • I pacchetti di risposta vengono prima instradati correttamente attraverso l'indirizzo IP del gateway VPN e quindi vengono reinstradati al tuo indirizzo IP in loco.

Il componente aggiuntivo del cluster per l'instradamento statico può essere utilizzato per applicare e gestire solo gli instradamenti statici. Sei responsabile della configurazione e della gestione della tua VPN, dell'applicazione gateway o della connessione IBM Cloud® Direct Link.

Abilitazione del componente aggiuntivo di instradamento statico

Per iniziare a lavorare con gli instradamenti statici in IBM Cloud Kubernetes Service, abilita il componente aggiuntivo di instradamento statico.

Prima di iniziare

Abilitazione del componente aggiuntivo di instradamento statico dalla console

Per utilizzare la console IBM Cloud, attieniti alla seguente procedura.

  1. Nel tuo dashboard del cluster, fai clic sul nome del cluster in cui vuoi installare il componente aggiuntivo della rotta statica.
  2. Nella scheda Static Route, fai clic su Install.
  3. Fai di nuovo clic su Install.
  4. Nella scheda Static Route, verifica che il componente aggiuntivo sia elencato.

Abilitazione del componente aggiuntivo di instradamento statico con la CLI

Per utilizzare la CLI, attieniti alla seguente procedura.

  1. Abilita il componente aggiuntivo static-route.

    ibmcloud ks cluster addon enable static-route --cluster <cluster_name_or_ID>
    
  2. Verifica che il componente aggiuntivo di instradamento statico abbia lo stato Addon Ready.

    ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
    

    Output di esempio

    Name              Version     Health State   Health Status
    static-route      1.0.0       normal         Addon Ready
    

Creazione di instradamenti statici

Dopo aver abilitato il componente aggiuntivo di instradamento statico, puoi creare e applicare le risorse per gli instradamenti statici.

  1. Crea un file YAML per una risorsa dell'instradamento statico.

    apiVersion: static-route.ibm.com/v1
    kind: StaticRoute
    metadata:
      name: <route_name>
    spec:
      subnet: "<subnet_CIDR>"
      gateway: "<gateway_IP>"
      selectors:
        - key: "<label_key>"
          values:
            - "<label_value>"
          operator: In
    

    Esempio

    apiVersion: static-route.ibm.com/v1
    kind: StaticRoute
    metadata:
      name: mystaticroute
    spec:
      subnet: "192.168.0.0/24"
      gateway: "10.0.0.1"
      selectors:
        - key: "kubernetes.io/arch"
          values:
            - "amd64"
          operator: In
    
    subnet
    Specifica il CIDR della rete secondaria esterna da cui vengono inviate le richieste ai nodi di lavoro, ad esempio una sottorete in una rete in loco. La sottorete esterna non può essere nei seguenti intervalli riservati. L'intervallo di interconnessione dispositivo, 198.18.0.0/15, è consentito.
    • 10.0.0.0/8
    • 172.16.0.0/16
    • 172.18.0.0/16
    • 172.19.0.0/16
    • 172.20.0.0/16
    gateway
    Se il tuo indirizzo IP del gateway esiste sulla stessa sottorete dei tuoi nodi di lavoro, specifica l'indirizzo IP del gateway. Se il tuo indirizzo IP del gateway esiste su un'altra sottorete nella tua rete privata IBM Cloud, non includere questo campo. In questo caso, i nodi di lavoro inviano le risposte al router di backend della rete privata e il router invia la risposta al gateway sull'altra sottorete. Quando viene creato l'instradamento statico, l'indirizzo IP del router di backend nell'intervallo 10.0.0.0/8 viene assegnato automaticamente come gateway predefinito.
    selectors
    Per creare l'instradamento statico solo su determinati nodi di lavoro in base alle loro etichette, includi la key e i values per l'etichetta.
  2. Crea gli instradamenti statici applicando il file YAML al tuo cluster.

    kubectl apply -f <route_name>.yaml
    
  3. Verifica che l'instradamento statico sia stato creato. Nell'output, controlla il node_status per ogni nodo di lavoro in cui crei la rotta statica.

    kubectl get staticroute <route_name> -o yaml
    

    Output di esempio

    apiVersion: static-route.ibm.com/v1
    kind: StaticRoute
    metadata:
        annotations:
          kubectl.kubernetes.io/last-applied-configuration: |
        {"apiVersion":"static-route.ibm.com/v1","kind":"StaticRoute","metadata":{"annotations":{},"name":"mystaticroute"},"spec":{"selectors":[{"key":"kubernetes.io/arch","operator":"In","values":["amd64"]}],"subnet":"10.94.227.46/24"}}
    creationTimestamp: "2020-05-20T16:43:12Z"
    finalizers:
    - finalizer.static-route.ibm.com
    generation: 1
    name: mystaticroute
    resourceVersion: "3753886"
    selfLink: /apis/static-route.ibm.com/v1/staticroutes/mystaticroute
    uid: f284359f-9d13-4e27-9d3a-8fb38cbc7a5c
      spec:
        selectors:
        - key: kubernetes.io/arch
          operator: In
          values:
          - amd64
        subnet: 10.94.227.46/24
      status:
        nodeStatus:
        - error: ""
          hostname: 10.94.227.19
          state:
            gateway: 10.94.227.1
            selectors:
            - key: kubernetes.io/arch
              operator: In
              values:
              - amd64
            subnet: 10.94.227.46/24
        - error: ""
          hostname: 10.94.227.22
          state:
            gateway: 10.94.227.1
            selectors:
            - key: kubernetes.io/arch
              operator: In
              values:
              - amd64
            subnet: 10.94.227.46/24