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ê usará os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use 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-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
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).