Questa pagina mostra come personalizzare la configurazione del runtime del container containerd sui nodi Google Kubernetes Engine (GKE). Prima di leggere questo documento, assicurati di sapere cos'è un runtime del container e perché potresti volerlo personalizzare.
Informazioni sulla configurazione di containerd in GKE
Puoi configurare manualmente un insieme di opzioni nel runtime containerd sui nodi GKE che eseguono un sistema operativo come Container-Optimized OS. La personalizzazione del runtime ti consente di configurare requisiti speciali come l'accesso ai registri delle immagini privati. Per impostare queste opzioni, devi creare un file YAML chiamato file di configurazione di runtime e passarlo a GKE quando crei o aggiorni un cluster.
Questo metodo di personalizzazione di containerd ti consente di evitare il deployment di DaemonSet privilegiati, che rappresentano un rischio per la sicurezza. Quando fornisci a GKE un file di configurazione del runtime, GKE ricrea i nodi e aggiorna il file config.toml containerd su ogni nodo con la tua configurazione.
La configurazione persiste durante la terminazione, gli upgrade e le ricreazioni dei nodi.
Il file di configurazione del runtime consente solo di configurare le opzioni in containerd. GKE supporta anche la configurazione di opzioni kubelet specifiche e opzioni del kernel Linux di basso livello utilizzando un file separato denominato file di configurazione del sistema dei nodi. Per maggiori dettagli, vedi Personalizzare la configurazione del sistema dei nodi.
Limitazioni
Non puoi utilizzare un file di configurazione del runtime per modificare le impostazioni di containerd nelle immagini dei nodi Windows.
Opzioni di configurazione di containerd disponibili
Le sezioni seguenti descrivono le opzioni che puoi configurare utilizzando un file di configurazione runtime.
privateRegistryAccessConfig
Accedi ai registri di immagini privati con credenziali private che memorizzi in Secret Manager.
Questa opzione è disponibile con le versioni di GKE 1.27.3-gke.1700 o successive per le immagini dei nodi Container-Optimized OS e 1.33 o successive per le immagini dei nodi Ubuntu.
Per istruzioni, vedi Accedere ai registri privati con certificati CA privati.
privateRegistryAccessConfig: enabled: true certificateAuthorityDomainConfig: - gcpSecretManagerCertificateConfig: secretURI: "SECRET_LOCATION" fqdns: - "FQDN1" - "FQDN2"
Questa configurazione ha i seguenti campi:
enabled: un valore booleano per attivare la configurazione del registro privato. Se impostienabled: false, elimina tutti gli altri campi nell'elementoprivateRegistryAccessConfig.certificateAuthorityDomainConfig: contiene fino a cinque definizioni di certificati e FQDN.gcpSecretManagerCertificateConfig: contiene un certificato archiviato in Secret Manager e un array di FQDN.secretURI: la posizione del certificato in Secret Manager.privateRegistryAccessConfigsupporta i secret globali solo insecretURI.fqdns: un elenco di nomi di dominio completi dei registri privati. Puoi utilizzare anche indirizzi IPv4, ma ti consigliamo di utilizzare l'FQDN.
registryHosts
Configura le impostazioni avanzate per i registri containerd, come funzionalità, intestazioni personalizzate e certificati. Corrisponde a hosts.toml di containerd.
Questa opzione è disponibile per GKE 1.34.1-gke.2980000 o versioni successive.
registryHosts: - server: "REGISTRY_SERVER_FQDN" hosts: - host: "MIRROR_FQDN" capabilities: - "HOST_CAPABILITY_PULL" - "HOST_CAPABILITY_RESOLVE" - "HOST_CAPABILITY_PUSH" overridePath: false dialTimeout: "30s" header: - key: "HEADER_KEY" value: - "HEADER_VALUE_1" - "HEADER_VALUE_2" ca: - gcpSecretManagerSecretUri: "projects/PROJECT_ID_OR_NUMBER/secrets/CA_SECRET/versions/VERSION" client: - cert: gcpSecretManagerSecretUri: "projects/PROJECT_ID_OR_NUMBER/secrets/CLIENT_CERT_SECRET/versions/VERSION" key: gcpSecretManagerSecretUri: "projects/PROJECT_ID_OR_NUMBER/secrets/CLIENT_KEY_SECRET/versions/VERSION"
Questa configurazione ha i seguenti campi:
server: il nome host del server di registro (ad esempioexample.com). Viene utilizzato per denominare il file di configurazione sul nodo. Deve essere un nome di dominio completo o un indirizzo IPv4.hosts: un elenco di configurazioni specifiche dell'host perserver.host: il nome host di un mirror del registro (ad esempiomirror.example.com). Devono essere nomi di dominio completi o indirizzi IPv4.capabilities: un elenco di funzionalità che specificano le operazioni che un host è in grado di eseguire. I valori supportati sono uno qualsiasi dei seguenti:HOST_CAPABILITY_PULL: rappresenta la funzionalità di recupero di manifest e blob tramite digest.HOST_CAPABILITY_RESOLVE: rappresenta la funzionalità di recupero dei manifest per nome.HOST_CAPABILITY_PUSH: rappresenta la funzionalità di push di blob e manifest.
overridePath: un valore booleano. Setrue, indica che l'endpoint radice dell'API dell'host è definito nel percorso URL anziché dalla specifica API. Può essere utilizzato con i registri OCI non conformi a cui manca il prefisso/v2. Il valore predefinito èfalse.dialTimeout: una stringa di durata (ad esempio,"30s") che specifica la durata massima consentita per il completamento di un tentativo di connessione. Il valore massimo consentito è"180s". Se non viene impostato, containerd imposta un valore predefinito di"30s". Il valore deve essere un numero decimale di secondi con un suffissos.header: un elenco di intestazioni HTTP personalizzate da inviare all'host del registro.key: la chiave dell'intestazione.value: un elenco di valori di intestazione.
ca: un elenco delle configurazioni dei certificati per l'autorità di certificazione (CA) dell'host del registro. Per creare il secret per i certificati e configurare le autorizzazioni richieste, consulta le istruzioni riportate in Archivia le chiavi pubbliche della CA in Secret Manager.gcpSecretManagerSecretUri: l'URI di un secret in Secret Manager contenente il certificato CA. Supporta sia i secret globali che quelli regionali. I formati sono i seguenti, per i rispettivi tipi di secret:- Formato del secret globale:
projects/PROJECT_ID_OR_NUMBER/secrets/SECRET_NAME/versions/VERSION. - Formato del secret regionale:
projects/PROJECT_ID_OR_NUMBER/locations/REGION/secrets/SECRET_NAME/versions/VERSION.
- Formato del secret globale:
client: un elenco di coppie di chiavi e certificati client per l'autenticazione all'host del registro. Per creare il secret per i certificati e configurare le autorizzazioni richieste, consulta le istruzioni riportate in Archivia le chiavi pubbliche della CA in Secret Manager.cert: la configurazione del certificato client.gcpSecretManagerSecretUri: l'URI di un secret in Secret Manager contenente il certificato client. Supporta sia i secret globali che quelli regionali.key: La configurazione della chiave privata del client.gcpSecretManagerSecretUri: l'URI di un secret in Secret Manager contenente la chiave client. Supporta sia i secret globali che quelli regionali.
writableCgroups
Monta il file system /sys/fs/cgroup in modalità di lettura/scrittura in modo che
i carichi di lavoro possano gestire le risorse dei processi secondari.
Questa opzione è disponibile per le versioni di GKE 1.34.1-gke.2541000 o successive.
Per saperne di più, consulta Configura i cgroup scrivibili per i container.
writableCgroups: enabled: true
Applica la configurazione di containerd ai nuovi cluster
Questa sezione mostra come applicare un file di configurazione containerd quando crei un nuovo cluster GKE.
Esegui questo comando per creare cluster Autopilot:
gcloud container clusters create-autoCLUSTER_NAME\ --location=LOCATION\ --scopes="cloud-platform" \ --containerd-config-from-file="PATH_TO_CONFIG_FILE"
Sostituisci quanto segue:
CLUSTER_NAME: il nome del nuovo cluster.LOCATION: la località Compute Engine del nuovo cluster.PATH_TO_CONFIG_FILE: il percorso del file di configurazione che hai creato, ad esempio~/containerd-configuration.yaml.
Puoi attivare la configurazione di containerd sui nuovi cluster standard eseguendo il comando
gcloud container clusters create con le stesse opzioni.
Applica la configurazione di containerd ai nuovi node pool
Puoi applicare la configurazione di containerd a un nuovo pool di nodi GKE con il seguente comando:
gcloud container node-pools createNODE_POOL_NAME\ --cluster=CLUSTER_NAME\ --location=LOCATION\ --scopes="cloud-platform" \ --containerd-config-from-file="PATH_TO_CONFIG_FILE"
Sostituisci quanto segue:
NODE_POOL_NAME: il nome del nuovo pool di nodi.CLUSTER_NAME: il nome del cluster esistente.LOCATION: la località Compute Engine del nuovo pool di nodi.PATH_TO_CONFIG_FILE: il percorso del file di configurazione che hai creato, ad esempio~/containerd-configuration.yaml.
Applica la configurazione di containerd ai cluster esistenti
Questa sezione mostra come applicare una configurazione di containerd a cluster e nodi esistenti.
Controllare gli ambiti di accesso
Per utilizzare questa funzionalità, i cluster esistenti devono disporre dell'ambito di accesso cloud-platform. Questa sezione mostra come controllare gli ambiti di accesso e aggiornare un cluster esistente con un file di configurazione del registro privato nuovo o modificato.
Per informazioni dettagliate sugli ambiti di accesso predefiniti nei nuovi cluster, consulta Ambiti di accesso in GKE.
Controllare gli ambiti di accesso di Autopilot
Esegui questo comando:
gcloud container clusters describeCLUSTER_NAME\ --location=LOCATION\ --flatten=nodeConfig \ --format='csv[delimiter="\\n",no-heading](oauthScopes)'
Se il tuo cluster non ha l'https://www.googleapis.com/auth/cloud-platform
ambito di accesso, crea un nuovo cluster con questo ambito di accesso.
Controllare gli ambiti di accesso standard
Per controllare gli ambiti di accesso del cluster Standard, controlla un pool di nodi:
gcloud container node-pools describeNODE_POOL_NAME\ --cluster=CLUSTER_NAME\ --location=LOCATION\ --format='value[delimiter="\\n"](config.oauthScopes)'
Sostituisci NODE_POOL_NAME con il nome del pool di nodi.
Se il tuo cluster non ha l'ambito di accesso
https://www.googleapis.com/auth/cloud-platform, crea un nuovo pool di nodi
con l'ambito di accesso cloud-platform ed elimina il pool di nodi esistente.
Aggiorna il cluster in modo che utilizzi il file di configurazione
Esegui questo comando:
gcloud container clusters updateCLUSTER_NAME\ --location=LOCATION\ --containerd-config-from-file="PATH_TO_CONFIG_FILE"
Ricrea i nodi nei cluster standard
Se il cluster Standard non utilizza gli upgrade automatici, devi ricreare manualmente i pool di nodi per applicare la nuova configurazione. Per attivare una ricreazione manuale dei nodi, esegui l'upgrade del cluster alla stessa versione GKE già in uso.
gcloud container clusters upgradeCLUSTER_NAME\ --location=LOCATION\ --cluster-version=VERSION
Sostituisci VERSION con la stessa versione patch di GKE già utilizzata dal cluster.
Disattiva le opzioni di configurazione di containerd
Disabilita privateRegistryAccessConfig
-
Aggiorna il file di configurazione per specificare
enabled: falseinprivateRegistryAccessConfiged elimina tutti gli altri campi nell'elemento, come nell'esempio seguente:privateRegistryAccessConfig: enabled: false
- Applica il file di configurazione aggiornato al tuo cluster. Per istruzioni, vedi Applicare la configurazione di containerd ai cluster esistenti.
Disabilita registryHosts
-
Aggiorna il file di configurazione per specificare un array vuoto nell'elemento
registryHosts, come nell'esempio seguente:registryHosts: []
- Applica il file di configurazione aggiornato al tuo cluster. Per istruzioni, vedi Applicare la configurazione di containerd ai cluster esistenti.