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.
Objetivos
- Saiba como ativar o GKE Sandbox no seu cluster do Knative serving.
- Implante um serviço especificado para ser executado em nós em sandbox.
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na sua projeção de uso, utilize a calculadora de preços.
Antes de começar
- Neste tutorial, presumimos que você tenha o Knative serving instalado e configurado no cluster.
- Verifique se o ambiente da linha de comando está configurado e se as ferramentas estão atualizadas.
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-featurespara edição:kubectl edit configmap config-features -n knative-servingAdicione a flag de recurso
kubernetes.podspec-runtimeclassname: enabledao 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-servingSe quiser verificar suas edições, execute o seguinte comando para ver o ConfigMap:
kubectl get configmap config-features -n knative-serving -o yamlO 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" EOFSe 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
A seguir
Depois de verificar se é possível implantar apps não confiáveis no pool de nós do GKE Sandbox recém-criado, adicione runtimeClassName: gvisor às especificações do Kubernetes para outros serviços não confiáveis que você quer executar no nó do GKE Sandbox. piscinas.
Mais informações:
- Documentação do GKE Sandbox para entender as limitações que podem interromper a compatibilidade com alguns serviços.
- Documentação do gVisor sobre como implantar serviços do Knative para um guia mais detalhado sobre como implantar aplicativos do Knative no gVisor (também chamado GKE Sandbox).