Crea cluster utente in una configurazione multi-cluster

Nei cluster Anthos su Bare Metal, 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.

Dopo aver creato un cluster di amministrazione, chiamando il comando bmctl create config viene creato 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 fuori dal cluster di amministrazione protegge i dati amministrativi sensibili, come le chiavi SSH archiviate nel cluster di amministrazione, da coloro che non hanno bisogno di accedere a tali informazioni. Inoltre, mantenere i cluster utente separati l'uno dall'altro offre una buona sicurezza generale per i tuoi carichi di lavoro.

Prerequisiti

  • L'ultimo bmctl è scaricato (gs://anthos-baremetal-release/bmctl/1.10.8/linux-amd64/bmctl) da Cloud Storage.
  • Cluster di amministrazione funzionante con accesso al server API del cluster (controlPlaneVIP).
  • I nodi dei cluster di amministrazione hanno una connettività di rete a tutti i nodi sul cluster utente di destinazione.
  • La workstation che esegue bmctl ha una connettività di rete a tutti i nodi nei cluster utente di destinazione.
  • Chiave SSH utilizzata per creare il cluster utente disponibile per l'utente root o SUDO in tutti i nodi del cluster utente.
  • L'account di servizio Connect-register è configurato sul cluster di amministrazione per essere utilizzato con Connect.

Abilita SELinux

Se vuoi attivare SELinux per proteggere i tuoi container, devi assicurarti che SELinux sia abilitato in modalità Enforced su tutte le tue macchine host. A partire dai cluster Anthos su Bare Metal versione 1.9.0 o successive, puoi abilitare o disabilitare SELinux prima o dopo la creazione del cluster o gli upgrade del cluster. SELinux è abilitato per impostazione predefinita su Red Hat Enterprise Linux (RHEL) e CentOS. Se SELinux è disabilitato sulle macchine host o non ne hai la certezza, consulta Sicurezza dei container tramite SELinux per le istruzioni su come abilitarlo.

I cluster Anthos su Bare Metal supportano SELinux solo in sistemi RHEL e CentOS.

Crea un file di configurazione del cluster utente

Il file di configurazione per la creazione di un cluster utente è quasi esattamente lo stesso di quello utilizzato per la creazione di un cluster di amministrazione. L'unica differenza è che rimuovi la sezione delle credenziali locali per rendere la configurazione una raccolta valida di risorse Kubernetes. La sezione di configurazione si trova nella parte superiore del file all'interno della sezione bmctl configuration variables. Per esempi di configurazioni dei cluster utente, consulta Cluster utente negli esempi di configurazione dei cluster.

Per impostazione predefinita, i cluster utente ereditano le credenziali dal cluster di amministrazione che li gestisce. Puoi sostituire selettivamente 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 chiamato user1:

    bmctl create config -c utente1

    Il file è 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 il percorso dei file delle credenziali locali dalla configurazione:

      ....
        gcrKeyPath: (path to GCR 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 per 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
      ....
      
    • Assicurati che le specifiche dei cluster di amministrazione e degli utenti per i VIP e i pool di indirizzi del bilanciatore del carico siano complementari e non si sovrappongano ai cluster esistenti. Di seguito è riportato un esempio di configurazioni di amministratori e cluster utente, che specifica 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
      ....
      

      I file di configurazione del cluster utente sono gli stessi della configurazione del cluster di amministrazione.

    • Specifica la densità dei pod dei nodi del cluster e il runtime del container:

      ....
      # 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
        # containerRuntime specifies which container runtime to use for scheduling containers on nodes.
        # containerd and docker are supported.
        containerRuntime: containerd
      ....
      

      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.

      Il runtime del container predefinito è containerd. In alternativa, puoi usare Docker. Per ulteriori informazioni sulla modifica del runtime, consulta la nostra guida per la modifica del runtime del container.

      La densità dei pod è limitata anche dalle risorse IP disponibili del tuo cluster. Per i dettagli, consulta Networking dei pod.

Crea 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

Ad esempio, puoi configurare i cluster utente negli esempi di configurazione dei cluster.