Proteggi con GKE Sandbox

Questo documento descrive come configurare Knative Serving in esecuzione su Google Kubernetes Engine (GKE) per utilizzare GKE Sandbox per un migliore isolamento dei carichi di lavoro dal kernel host.

Aggiungi un pool di nodi GKE Sandbox a un cluster Knative Serving esistente

Segui i passaggi per aggiungere un pool di nodi abilitato all'utilizzo di GKE Sandbox al tuo cluster Knative Serving esistente. È qui che vengono eseguiti i carichi di lavoro per cui scegli di utilizzare GKE Sandbox.

Esegui il deployment di un carico di lavoro sul pool di nodi GKE Sandbox

Una volta creato un cluster GKE con un node pool abilitato per GKE Sandbox, aggiorna la configurazione di Knative Serving. Inoltre, aggiorna ogni specifica del servizio per utilizzare i nuovi nodi. Questi aggiornamenti sono necessari solo una volta.

Attiva il flag funzionalità della classe runtime

In questa sezione, abiliti la classe di runtime Kubernetes utilizzando i flag di funzionalità ed estensione di Knative nel ConfigMap config-features nello spazio dei nomi knative-serving. Per attivare la classe di runtime, imposta il flag ConfigMap kubernetes.podspec-runtimeclassname su enabled. Per ulteriori informazioni, consulta Classe di runtime Kubernetes e Configurazione dei flag nella documentazione relativa a Funzionalità ed estensioni di Knative.

  1. Apri ConfigMap config-features per la modifica:

    kubectl edit configmap config-features -n knative-serving
    
  2. Aggiungi il flag funzionalità kubernetes.podspec-runtimeclassname: enabled al campo data.

  3. In alternativa ai passaggi precedenti, puoi eseguire il seguente comando per applicare la patch a questo flag nelle funzionalità di Knative:

    kubectl patch configmap config-features \
        --type='json' \
        -p="[{'op': 'replace', 'path': '/data/kubernetes.podspec-runtimeclassname', 'value': 'enabled'}]" \
        -n knative-serving
    
  4. Per verificare le modifiche, esegui il comando seguente per visualizzare ConfigMap:

    kubectl get configmap config-features -n knative-serving -o yaml
    

    ConfigMap dovrebbe essere simile a questo:

    apiVersion: v1
    kind: ConfigMap
    metadata:
        name: config-features
        namespace: knative-serving
        labels:
            serving.knative.dev/release: v0.22.0
    data:
        kubernetes.podspec-runtimeclassname: enabled
    

Esegui il deployment di un servizio configurato per l'esecuzione in GKE Sandbox

Dopo aver abilitato il flag funzionalità della classe di runtime, puoi creare servizi che specificano un runtimeClassName nella specifica. Imposta runtimeClassName su gvisor per indicare che un servizio deve essere eseguito nel pool di nodi GKE Sandbox.

  1. Esegui il deployment di un'applicazione Knative "Hello World" eseguendo il seguente comando:

    cat <<EOF | kubectl apply -f -
    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
        name: helloworld-go
    spec:
        template:
            spec:
                runtimeClassName: gvisor
                containers:
                    -   image: gcr.io/knative-samples/helloworld-go
                        env:
                        -   name: TARGET
                            value: "gVisor User"
    EOF
    

    Se la funzionalità del nome della classe di runtime Kubernetes è abilitata, il comando dovrebbe terminare senza errori.

  2. Per ottenere i pod per il tuo servizio in esecuzione e la relativa classe di runtime configurata, esegui:

    kubectl get pods \
        -o=custom-columns='NAME:.metadata.name,RUNTIME CLASS:.spec.runtimeClassName,STATUS:.status.phase'
    

    L'output dovrebbe essere simile al seguente:

    NAME                                              RUNTIME CLASS   STATUS
    helloworld-go-00001-deployment-55f58477f-fxm6m    gvisor          Running