Este documento descreve como configurar a veiculação do Knative em execução no Google Kubernetes Engine (GKE) para usar o GKE Sandbox e melhorar o isolamento de cargas de trabalho do kernel do host.
Adicionar um pool de nós do GKE Sandbox a um cluster atual do Knative serving
Siga as etapas para adicionar um pool de nós ativado para uso GKE Sandbox ao cluster atual do Knative serving. É aqui que as cargas de trabalho que você aceitou para usar o GKE Sandbox são executadas.
Implantar uma carga de trabalho no pool de nós do GKE Sandbox
Quando você tiver um cluster do GKE com um nó ativado para o GKE Sandbox pool, atualize a configuração do Knative serving. Além disso, atualize cada especificação de serviço para usar os novos nós. Essas atualizações são necessárias apenas uma vez.
Ativar a sinalização de recurso da classe de tempo de execução
Nesta seção, você ativa a classe de ambiente de execução do Kubernetes usando sinalizações de extensão e o recurso Knative
no ConfigMap config-features
no namespace knative-serving
. Para ativar a classe de ambiente de execução, defina a sinalização ConfigMap kubernetes.podspec-runtimeclassname
como enabled
. Para mais informações, consulteClasse de ambiente de execução do Kubernetes
eComo configurar sinalizações
no KnativeRecursos e
extensões documentação.
Abra o ConfigMap
config-features
para edição:kubectl edit configmap config-features -n knative-serving
Adicione a flag de recurso
kubernetes.podspec-runtimeclassname: enabled
ao campodata
.Como alternativa às etapas anteriores, execute o seguinte comando para corrigir essa sinalização nos recursos do Knative:
kubectl patch configmap config-features \ --type='json' \ -p="[{'op': 'replace', 'path': '/data/kubernetes.podspec-runtimeclassname', 'value': 'enabled'}]" \ -n knative-serving
Se quiser verificar suas edições, execute o seguinte comando para ver o ConfigMap:
kubectl get configmap config-features -n knative-serving -o yaml
O ConfigMap vai ser semelhante a este:
apiVersion: v1 kind: ConfigMap metadata: name: config-features namespace: knative-serving labels: serving.knative.dev/release: v0.22.0 data: kubernetes.podspec-runtimeclassname: enabled
Implantar um serviço configurado para ser executado no GKE Sandbox
Depois de ativar a sinalização de recurso da classe de execução, crie serviços
que especifiquem um runtimeClassName
na especificação. Defina runtimeClassName
como gvisor
para indicar que um serviço precisa ser executado no pool de nós do GKE Sandbox.
Implante um aplicativo Knative "Hello World" executando o seguinte 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 o recurso de nome de classe de ambiente de execução do Kubernetes estiver ativado, o comando terminará sem erros.
Execute os pods do serviço em execução e da classe de ambiente de execução configurada:
kubectl get pods \ -o=custom-columns='NAME:.metadata.name,RUNTIME CLASS:.spec.runtimeClassName,STATUS:.status.phase'
A saída será semelhante a esta:
NAME RUNTIME CLASS STATUS helloworld-go-00001-deployment-55f58477f-fxm6m gvisor Running