Creazione di cluster utente

In Google Distributed Cloud, i cluster utente eseguono i carichi di lavoro e, in un' architettura multi-cluster, i cluster utente vengono creati e gestiti da un cluster di amministrazione.

Una volta creato un cluster di amministrazione, l'esecuzione del comando bmctl create config crea un file YAML che puoi modificare per definire il cluster utente. Per applicare la configurazione e creare il cluster utente, utilizza il comando bmctl create cluster. I controlli preliminari sono applicabili ai cluster utente creati con il comando bmctl create cluster.

Mantenere i carichi di lavoro al di fuori del cluster di amministrazione protegge i dati amministrativi sensibili, come le chiavi SSH archiviate nel cluster di amministrazione, da chi non ha bisogno di accedere a queste informazioni. Inoltre, mantenere separati i cluster utente fornisce una buona sicurezza generale per i carichi di lavoro.

Prerequisiti

  • L'ultima versione di bmctl viene scaricata (gs://anthos-baremetal-release/bmctl/1.35.100/linux-amd64/bmctl) da Cloud Storage.
  • Cluster di amministrazione funzionante con accesso al server API del cluster (controlPlaneVIP).
  • I nodi del cluster di amministrazione hanno la connettività di rete a tutti i nodi del cluster utente di destinazione.
  • La workstation che esegue bmctl ha la connettività di rete a tutti i nodi dei cluster utente di destinazione.
  • La workstation di amministrazione può stabilire una connessione SSH a ciascuno dei nodi del cluster utente.
  • Il account di servizio di Connect-Register è configurato nel cluster di amministrazione per l'utilizzo con Connect.

Abilitare SELinux

Se vuoi abilitare SELinux per proteggere i container, devi assicurarti che SELinux sia abilitato in modalità Enforced su tutte le macchine host. A partire dalla release 1.9.0 di Google Distributed Cloud o versioni successive, puoi abilitare o disabilitare SELinux prima o dopo la creazione o gli upgrade del cluster. SELinux è abilitato per impostazione predefinita su Red Hat Enterprise Linux (RHEL). Se SELinux è disabilitato sulle macchine host o non ne hai la certezza, consulta Protezione dei container mediante SELinux per istruzioni su come abilitarlo.

Google Distributed Cloud supporta SELinux solo nei sistemi RHEL.

Creare un file di configurazione del cluster utente

Il file di configurazione per la creazione di un cluster utente è quasi identico a quello utilizzato per la creazione di un cluster di amministrazione. L'unica differenza è che devi rimuovere la sezione di configurazione delle credenziali locali per rendere la configurazione una raccolta valida di risorse Kubernetes. La sezione di configurazione si trova nella parte superiore del file, nella sezione bmctl configuration variables. Per esempi di configurazioni di cluster utente, consulta Cluster utente in Esempi di configurazione dei cluster.

Per impostazione predefinita, i cluster utente ereditano le credenziali dal cluster di amministrazione che li gestisce. Puoi sostituire in modo selettivo alcune o tutte queste credenziali.

  1. Crea un file di configurazione del cluster utente con il comando bmctl create config:

    bmctl create config -c USER_CLUSTER_NAME
    

    Ad esempio, esegui il comando seguente per creare un file di configurazione per un cluster utente denominato user1:

    bmctl create config -c user1
    

    Il file viene scritto in bmctl-workspace/user1/user1.yaml. Il percorso generico del file è bmctl-workspace/CLUSTER NAME/CLUSTER_NAME.yaml.

  2. Modifica il file di configurazione con le seguenti modifiche:

    • Rimuovi i percorsi dei file delle credenziali locali dalla configurazione:

      ...
        gcrKeyPath: (path to Artifact Registry service account key)
        sshPrivateKeyPath: (path to SSH private key, used for node access)
        gkeConnectAgentServiceAccountKeyPath: (path to Connect agent service account key)
        gkeConnectRegisterServiceAccountKeyPath: (path to Hub registration service account key)
        cloudOperationsServiceAccountKeyPath: (path to Cloud Operations service account key)
      ...
      
    • Modifica la configurazione in modo da specificare un tipo di cluster user anziché admin:

      ...
      spec:
        # Cluster type. This can be:
        #   1) admin:  to create an admin cluster. This can later be used to create
        #   user clusters.
        #   2) user:   to create a user cluster. Requires an existing admin cluster.
        #   3) hybrid: to create a hybrid cluster that runs admin cluster
        #   components and user workloads.
        #   4) standalone: to create a cluster that manages itself, runs user
        #   workloads, but does not manage other clusters.
        type: user
      ...
      
    • Registra i cluster in un parco risorse specificando l'ID progetto nel campo gkeConnect.projectID. Questo progetto è denominato come il progetto host del parco risorse.

      ...
      gkeConnect:
         projectID: my-project-123
      ...
      
      • (Facoltativo) Puoi aggiungere gkeConnect.location alla specifica del cluster per specificare la Google Cloud regione in cui vengono eseguiti i servizi Fleet e Connect. Questa appartenenza regionale limita il traffico dei servizi del parco risorse alla tua regione. Se includi gkeConnect.location nella specifica del cluster, la regione specificata deve essere la stessa configurata in clusterOperations.location. Se le regioni non sono le stesse, la creazione del cluster non riesce.
    • Se l'API GKE On-Prem è abilitata nel tuo Google Cloud progetto, tutti i cluster del progetto vengono registrati automaticamente nell'API GKE On-Prem nella regione configurata in clusterOperations.location.

      • Se vuoi registrare tutti i cluster del progetto nell'API GKE On-Prem, assicurati di eseguire i passaggi descritti in Prima di iniziare per attivare e utilizzare l'API GKE On-Prem nel progetto.

      • Se non vuoi registrare il cluster nell'API GKE On-Prem, includi questa sezione e imposta gkeOnPremAPI.enabled su false. Se non vuoi registrare alcun cluster nel progetto, disabilita gkeonprem.googleapis.com (il nome del servizio per l'API GKE On-Prem) nel progetto. Per le istruzioni, vedi Disabilitare i servizi.

    • Specifica l'indirizzo IP del nodo del piano di controllo.

      ...
      # Sample control plane config
      controlPlane:
       nodePoolSpec:
         nodes:
         - address: 10.200.0.20
      ...
      
    • Assicurati che le specifiche del cluster di amministrazione e del cluster utente per i VIP del bilanciatore del carico e i pool di indirizzi siano complementari e non si sovrappongano ai cluster esistenti. L'esempio seguente mostra una coppia di configurazioni di cluster di amministrazione e di cluster utente di esempio, che specificano il bilanciamento del carico e i pool di indirizzi:

      ...
      # Sample admin cluster config for load balancer and address pools
        loadBalancer:
          vips:
            controlPlaneVIP: 10.200.0.49
            ingressVIP: 10.200.0.50
          addressPools:
          - name: pool1
            addresses:
            - 10.200.0.50-10.200.0.70
      ...
      ...
      # Sample user cluster config for load balancer and address pools
      loadBalancer:
          vips:
            controlPlaneVIP: 10.200.0.71
            ingressVIP: 10.200.0.72
          addressPools:
          - name: pool1
            addresses:
            - 10.200.0.72-10.200.0.90
      ...
      

      Il resto dei file di configurazione del cluster utente è uguale alla configurazione del cluster di amministrazione.

    • Specifica la densità dei pod dei nodi del cluster:

      ...
      # NodeConfig specifies the configuration that applies to all nodes in the cluster.
      nodeConfig:
        # podDensity specifies the pod density configuration.
        podDensity:
          # maxPodsPerNode specifies at most how many pods can be run on a single node.
          maxPodsPerNode: 110
      ...
      

      Per i cluster utente, i valori consentiti per maxPodsPerNode sono 32-250. Il valore predefinito, se non specificato, è 110. Una volta creato il cluster, questo valore non può essere aggiornato.

      La densità dei pod è limitata anche dalle risorse IP disponibili del cluster. Per maggiori dettagli, vedi Networking dei pod.

Creare il cluster utente

Esegui il comando bmctl per applicare la configurazione del cluster utente e creare il cluster:

bmctl create cluster -c USER_CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIG

Sostituisci quanto segue:

  • USER_CLUSTER_NAME: il nome del cluster creato nella sezione precedente.
  • ADMIN_KUBECONFIG: il percorso del file kubeconfig del cluster di amministrazione.

Ad esempio, per un cluster utente denominato user1 e un file kubeconfig del cluster di amministrazione con il percorso kubeconfig bmctl-workspace/admin/admin-kubeconfig, il comando sarebbe:

bmctl create cluster -c user1 --kubeconfig bmctl-workspace/admin/admin-kubeconfig

Esempi di configurazioni di cluster utente

Per esempi di configurazioni di cluster utente, consulta Cluster utente in Esempi di configurazione dei cluster.