Nesta página, mostramos como resolver problemas com cargas de trabalho privilegiadas que você implanta em clusters do Autopilot do Google Kubernetes Engine (GKE).
Problemas de sincronização da lista de permissões
Ao implantar um AllowlistSynchronizer
, o GKE tenta
instalar e sincronizar os arquivos de lista de permissões especificados. Se essa
sincronização falhar, o campo status
do AllowlistSynchronizer
vai informar o erro.
Acesse o status do objeto AllowlistSynchronizer
:
kubectl get allowlistsynchronizer ALLOWLIST_SYNCHRONIZER_NAME -o yaml
O resultado será assim:
...
status:
conditions:
- type: Ready
status: "False"
reason: "SyncError"
message: "some allowlists failed to sync: example-allowlist-1.yaml"
lastTransitionTime: "2024-10-12T10:00:00Z"
observedGeneration: 2
managedAllowlistStatus:
- filePath: "gs://path/to/allowlist1.yaml"
generation: 1
phase: Installed
lastSuccessfulSync: "2024-10-10T10:00:00Z"
- filePath: "gs://path/to/allowlist2.yaml"
phase: Failed
lastError: "Initial install failed: invalid contents"
lastSuccessfulSync: "2024-10-08T10:00:00Z"
Os campos conditions.message
e managedAllowlistStatus.lastError
fornecem informações detalhadas sobre o erro. Use essas informações para resolver o problema.
Problemas de implantação de carga de trabalho privilegiada
Depois de instalar uma lista de permissões, implante a carga de trabalho privilegiada correspondente no cluster. Em alguns casos, o GKE pode rejeitar a carga de trabalho.
Tente as seguintes opções de resolução:
- Verifique se a versão do GKE do cluster atende ao requisito de versão da carga de trabalho.
- Verifique se a carga de trabalho que você está implantando é aquela a que o arquivo de lista de permissões se aplica.
Para saber por que uma carga de trabalho privilegiada foi rejeitada, solicite informações detalhadas do GKE sobre violações da lista de permissões:
Confira uma lista das allowlists instaladas no cluster:
kubectl get workloadallowlist
Encontre o nome da lista de permissões que deve ser aplicada à carga de trabalho privilegiada.
Abra o manifesto YAML da carga de trabalho privilegiada em um editor de texto. Se você não conseguir acessar os manifestos YAML, por exemplo, se o processo de implantação da carga de trabalho usar outras ferramentas, entre em contato com o provedor da carga de trabalho para abrir um problema. Ignore as demais etapas.
Adicione o seguinte rótulo à seção
spec.metadata.labels
da especificação do pod de carga de trabalho privilegiada:labels: cloud.google.com/matching-allowlist: ALLOWLIST_NAME
Substitua
ALLOWLIST_NAME
pelo nome da lista de permissões que você recebeu na etapa anterior. Use o nome da saída do comandokubectl get workloadallowlist
, não o caminho para o arquivo de lista de permissões.Salve o manifesto e aplique a carga de trabalho ao cluster:
kubectl apply -f WORKLOAD_MANIFEST_FILE
Substitua
WORKLOAD_MANIFEST_FILE
pelo caminho para o arquivo de manifesto.A saída fornece informações detalhadas sobre quais campos na carga de trabalho não corresponderam à lista de permissões especificada, como no exemplo a seguir:
Error from server (GKE Warden constraints violations): error when creating "STDIN": admission webhook "warden-validating.common-webhooks.networking.gke.io" denied the request: =========================================================================== Workload Mismatches Found for Allowlist (example-allowlist-1): =========================================================================== HostNetwork Mismatch: Workload=true, Allowlist=false HostPID Mismatch: Workload=true, Allowlist=false Volume[0]: data - data not found in allowlist. Verify volume with matching name exists in allowlist. Container[0]: - Envs Mismatch: - env[0]: 'ENV_VAR1' has no matching string or regex pattern in allowlist. - env[1]: 'ENV_VAR2' has no matching string or regex pattern in allowlist. - Image Mismatch: Workload=k8s.gcr.io/diff/image, Allowlist=k8s.gcr.io/pause2. Verify that image string or regex match. - SecurityContext: - Capabilities.Add Mismatch: the following added capabilities are not permitted by the allowlist: [SYS_ADMIN SYS_PTRACE] - VolumeMount[0]: data - data not found in allowlist. Verify volumeMount with matching name exists in allowlist.
Neste exemplo, ocorrem as seguintes violações:
- A carga de trabalho especifica
hostNetwork: true
, mas a lista de permissões não especificahostNetwork: true
. - A carga de trabalho especifica
hostPID: true
, mas a lista de permissões não especificahostPID: true
. - A carga de trabalho especifica um volume chamado
data
, mas a lista de permissões não especifica um volume chamadodata
. - O contêiner especifica variáveis de ambiente chamadas
ENV_VAR1
eENV_VAR2
, mas a lista de permissões não especifica essas variáveis. - O contêiner especifica a imagem
k8s.gcr.io/diff/image
, mas a lista de permissões especificak8s.gcr.io/pause2
. - O contêiner adiciona os recursos
SYS_ADMIN
eSYS_PTRACE
, mas a lista de permissões não permite a adição deles. - O contêiner especifica uma montagem de volume chamada
data
, mas a lista de permissões não especifica uma montagem de volume chamadadata
.
- A carga de trabalho especifica
Se você estiver implantando uma carga de trabalho fornecida por um provedor terceirizado, abra um problema com esse provedor para resolver as violações. Forneça a saída da etapa anterior no problema.
Bugs e solicitações de recursos para cargas de trabalho privilegiadas e listas de permissões
Os parceiros são responsáveis por criar, desenvolver e manter as cargas de trabalho privilegiadas e as listas de permissões. Se você encontrar um bug ou tiver um pedido de recurso para uma carga de trabalho privilegiada ou uma lista de permissões, entre em contato com o parceiro correspondente.
A seguir
Se você não encontrar uma solução para seu problema na documentação, consulte Receber suporte para mais ajuda, incluindo conselhos sobre os seguintes tópicos:
- Abrir um caso de suporte entrando em contato com o Cloud Customer Care.
- Receber suporte da comunidade fazendo perguntas no StackOverflow e usando a tag
google-kubernetes-engine
para pesquisar problemas semelhantes. Você também pode participar do canal do Slack#kubernetes-engine
para receber mais suporte da comunidade. - Abrir bugs ou solicitações de recursos usando o Issue Tracker público.