Esta página descreve como ativar e ver registos de frotas. Com o registo da frota, vários registos são agregados e definidos em conjunto, o que lhe permite analisar o estado das suas aplicações numa vista consolidada. Esta página destina-se a:
- Administradores da plataforma que querem ativar o registo de frotas e ver registos em todos os espaços de nomes.
- Operadores de serviços que querem ver registos nos espaços de nomes específicos aos quais têm acesso.
Vista geral
Os registos da frota permitem-lhe ver registos ao nível de toda a frota ou para âmbitos de equipa específicos. Os âmbitos são uma funcionalidade de gestão de equipas que lhe permite definir subconjuntos de registos da frota e outros recursos por equipa, com cada âmbito associado a um ou mais clusters de membros da frota. Para mais informações sobre âmbitos, consulte o artigo Faça a gestão de equipas para a sua frota.
Pode ver dois tipos de registos de frota:
Registos predefinidos: todos os registos do Kubernetes (exceto registos de auditoria) que não pertencem a nenhum âmbito específico da frota com os seguintes tipos de recursos:
k8s_container
k8s_pod
k8s_node
k8s_cluster
k8s_control_plane_components
Registos do âmbito da frota: registos de contentores e pods para aplicações pertencentes a uma equipa implementada num âmbito da frota específico com vários espaços de nomes ao nível da frota.
A visualização dos registos do âmbito da frota é opcional. Se não quiser configurar a gestão de equipas, pode continuar a usar o registo de frotas para ver os registos predefinidos.
Os registos podem ser encaminhados para diferentes contentores de registos no projeto do anfitrião da frota com diferentes visualizações para o controlo de acesso. O período de retenção predefinido de um contentor de registos é de 30 dias. Se necessário, pode configurar este período.
Existem dois modos suportados para o encaminhamento de registos em que as frotas contêm clusters de vários projetos (registo entre projetos):
MOVE
: todos os registos são movidos para o projeto anfitrião da frota. Se um cluster na frota pertencer a um projeto diferente, os respetivos registos não são retidos no projeto Google Cloud original.COPY
: todos os registos são enviados para o projeto anfitrião da frota. Se um cluster na frota pertencer a um projeto diferente, os respetivos registos também são retidos no projeto Google Cloud original.
Antes de começar
Se já tiver criado manualmente contentores, destinos e definido filtros de exclusão do Cloud Logging, certifique-se de que os nomes que atribuiu a estes objetos não entram em conflito com as restrições de nomenclatura do registo de frotas. Se existir um conflito de nomenclatura, contacte o apoio técnico antes de continuar.
Certifique-se de que os clusters cujos registos quer ver foram registados na frota escolhida.
Se ainda não a tiver instalada, instale a Google Cloud CLI seguindo as instruções de instalação. Precisa da versão 424.0.0 ou superior para ver os registos da sua frota.
Certifique-se de que o projeto anfitrião da frota tem todas as APIs necessárias ativadas, incluindo a API Anthos:
gcloud services enable --project=FLEET_HOST_PROJECT_ID \ gkehub.googleapis.com \ container.googleapis.com \ connectgateway.googleapis.com \ cloudresourcemanager.googleapis.com \ iam.googleapis.com \ anthos.googleapis.com
where:
- FLEET_HOST_PROJECT_ID é o ID do projeto anfitrião da sua frota. Saiba como encontrar este valor.
Prepare âmbitos, espaços de nomes e cargas de trabalho
Se quiser ver os registos do âmbito da frota, tem de criar um âmbito da frota e um espaço de nomes da frota, além de preparar as cargas de trabalho para a recolha de registos.
Antes de continuar, defina o projeto predefinido para a CLI gcloud executando o seguinte comando:
gcloud config set project FLEET_HOST_PROJECT_ID
Crie âmbitos e espaços de nomes
Se quiser ver registos ao nível do âmbito e ainda não tiver configurado âmbitos, siga as instruções em Gerir equipas para a sua frota para criar âmbitos, adicionar clusters a âmbitos e configurar espaços de nomes da frota.
Prepare cargas de trabalho
Para ver os dados de registo das suas aplicações, tem de implementar as suas cargas de trabalho num cluster no espaço de nomes da frota configurado no passo anterior. Este passo aplica-se quer opte por ver os registos predefinidos, os registos do âmbito da frota ou ambos. Segue-se um exemplo para configurar a sua carga de trabalho:
apiVersion: v1
kind: Pod
metadata:
name: fleet-example-pod
namespace: NAMESPACE_NAME
spec:
containers:
- name: count
image: ubuntu:14.04
args: [bash, -c,
'for ((i = 0; ; i++)); do echo "$i: $(date)"; sleep 1; done']
Após implementar o recurso, pode ver um erro se o espaço de nomes da frota não tiver sido criado por algum motivo. Neste caso, execute o seguinte comando para criar novamente o espaço de nomes e execute novamente o comando de implementação da carga de trabalho:
kubectl create namespace NAMESPACE_NAME
Ative o registo da frota
Esta secção descreve como ativar a funcionalidade de registo da frota e conceder acesso à equipa para ver os registos.
gcloud
Pode ativar o registo de frotas através da CLI do Google Cloud, especificando os campos de configuração da funcionalidade num ficheiro JSON ou YAML. Segue-se um exemplo de uma configuração para o registo de frotas no formato JSON:
{ "loggingConfig": { "defaultConfig": { "mode": "COPY" }, "fleetScopeLogsConfig": { "mode": "MOVE" } } }
Para ver todos os campos que pode configurar para esta funcionalidade, consulte a referência da API.
Quando os campos defaultConfig
ou fleetScopeLogsConfig
estão ativados com os modos COPY
ou MOVE
, conforme mostrado no exemplo anterior, é criado um destino de registo com o prefixo fleet-o11y-
. Este sink de registo é criado no projeto Google Cloud para encaminhar os registos de destino do projeto do cluster para o projeto anfitrião da frota.
Quando a opção fleetScopeLogsConfig
está ativada, também é criado um contentor de registos com o nome fleet-o11y-scope-$SCOPE_NAME
na global
região no projeto anfitrião da frota, se ainda não existir. Tenha em atenção que não pode alterar a região do contentor.
Neste exemplo, os registos predefinidos são enviados para o projeto anfitrião da frota e retidos no projeto Google Cloud original, enquanto os registos do âmbito da frota são enviados para o projeto anfitrião da frota e não são retidos no projeto Google Cloud .
Adicione a configuração escolhida a um ficheiro JSON e atualize a frota:
gcloud container fleet fleetobservability update \ --logging-config=JSON_FILE
Substitua JSON_FILE pelo nome do seu nome de ficheiro.
Terraform
- A funcionalidade de observabilidade da frota está ativada por predefinição. Se for a primeira vez que usa o Terraform para gerir a funcionalidade de observabilidade da frota, importe a funcionalidade para o Terraform executando o seguinte comando:
terraform import google_gke_hub_feature.feature projects/FLEET_HOST_PROJECT_ID/locations/global/features/fleetobservability
- Pode ativar o registo de frotas com o Terraform através de um módulo Terraform.
Por exemplo, pode adicionar o seguinte bloco à sua configuração do Terraform:
resource "google_gke_hub_feature" "feature" {
name = "fleetobservability"
location = "global"
spec {
fleetobservability {
logging_config {
default_config {
mode = "COPY"
}
fleet_scope_logs_config {
mode = "MOVE"
}
}
}
}
}
Quando os campos default_config
ou fleet_scope_logs_config
estão ativados com os modos COPY
ou MOVE
, conforme mostrado no exemplo anterior, é criado um destino de registo com o prefixo fleet-o11y-
. Este sink de registo é criado no projeto Google Cloud para encaminhar os registos de destino do projeto do cluster para o projeto anfitrião da frota.
Quando a opção fleet_scope_logs_config
está ativada, também é criado um contentor de registos com o nome fleet-o11y-scope-$SCOPE_NAME
no projeto anfitrião da frota, se ainda não existir.
Neste exemplo, os registos predefinidos são enviados para o projeto anfitrião da frota e retidos no projeto Google Cloud original, enquanto os registos do âmbito da frota são enviados para o projeto anfitrião da frota e não são retidos no projeto Google Cloud .
Confirme se a especificação da funcionalidade está atualizada:
gcloud container fleet fleetobservability describe
A saída mostra a especificação fleetobservability
atualizada com a configuração, como no exemplo seguinte:
createTime: '2022-09-30T16:05:02.222568564Z' membershipStates: projects/123456/locations/us-central1/memberships/cluster-1: state: code: OK description: Fleet monitoring enabled. updateTime: '2023-04-03T20:22:51.436047872Z' name: projects/123456/locations/global/features/fleetobservability resourceState: state: ACTIVE spec: fleetobservability: loggingConfig: defaultConfig: mode: COPY fleetScopeLogsConfig: mode: MOVE state: state: {} updateTime: '2023-04-03T20:38:17.719596966Z'
As alterações feitas à especificação fleetobservability
podem demorar alguns minutos a serem aplicadas.
Configure autorizações de registo em vários projetos
Esta secção só é necessária se estiver a registar um cluster numa frota num projeto diferente (também conhecido como registo entre projetos). Para encaminhar registos de projetos de clusters para o projeto anfitrião da frota, tem de conceder a função roles/logging.bucketWriter
à conta de serviço de registo de cada projeto de cluster.
Para obter as credenciais da conta de serviço a partir de destinos em projetos de cluster, execute o seguinte comando:
FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID FLEET_HOST_PROJECT_NUMBER=$(gcloud projects describe "${FLEET_HOST_PROJECT_ID}" --format "value(projectNumber)") gcloud logging sinks --project=GKE_PROJECT_ID describe fleet-o11y-${FLEET_HOST_PROJECT_NUMBER}-default
Se o comando devolver um erro a indicar que não é possível encontrar o destino do registo, tente executar novamente o comando após um ou dois minutos. Pode ver a conta de serviço no campo
writerIdentity
da descrição do destino, conforme mostrado no exemplo seguinte:createTime: '2023-04-06T02:26:54.716195307Z' destination: logging.googleapis.com/projects/123456/locations/global/buckets/_Default filter: xxx name: fleet-o11y-default updateTime: '2023-04-06T19:03:51.598668462Z' writerIdentity: serviceAccount:service-123456@gcp-sa-logging.iam.gserviceaccount.com
Conceda a função de
roles/logging.bucketWriter
à conta de serviço obtida:gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "SERVICE_ACCOUNT" \ --role "roles/logging.bucketWriter"
where:
- SERVICE_ACCOUNT é o nome da conta de serviço obtido no passo anterior. Por exemplo:
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:service-123456@gcp-sa-logging.iam.gserviceaccount.com" \ --role "roles/logging.bucketWriter"
Conceda acesso da equipa aos registos
Esta secção descreve como conceder acesso aos utilizadores para verem os registos de contentores e os registos de pods.
Obtenha a Política IAM para o projeto da frota e escreva-a num ficheiro local no formato JSON:
gcloud projects get-iam-policy FLEET_HOST_PROJECT_ID --format json > output.json
Adicione uma condição da IAM que permita à conta de utilizador ver dados do contentor de registos que criou. Segue-se um exemplo para ver os registos do contentor e os registos do pod:
{ "bindings": [ { "members": [ "user:USER_ACCOUNT_EMAIL" ], "role": "roles/logging.viewAccessor", "condition": { "title": "Bucket reader condition example", "description": "Grants logging.viewAccessor role to user USER_ACCOUNT_EMAIL for the fleet-o11y-scope-SCOPE_NAME-k8s_container and fleet-o11y-scope-SCOPE_NAME-k8s_pod log view.", "expression": "resource.name == \"projects/FLEET_HOST_PROJECT_ID/locations/global/buckets/fleet-o11y-scope-SCOPE_NAME/views/fleet-o11y-scope-SCOPE_NAME-k8s_container\" || resource.name == \"projects/FLEET_HOST_PROJECT_ID/locations/global/buckets/fleet-o11y-scope-SCOPE_NAME/views/fleet-o11y-scope-SCOPE_NAME-k8s_pod\"" } } ], }
Atualize a política de IAM:
gcloud projects set-iam-policy FLEET_HOST_PROJECT_ID output.json
Para mais opções sobre a concessão de acesso, consulte o artigo Controle o acesso a uma vista de registo.
Veja os registos da frota
Os administradores da plataforma têm acesso à visualização de todos os registos em todos os espaços de nomes.
Registos predefinidos
Para ver todos os registos predefinidos no contentor _Default
no projeto de anfitrião da frota, preencha as variáveis no seguinte URL, copie-o e cole-o no navegador:
https://console.cloud.google.com/logs/query;query=;storageScope=storage,projects%2FFLEET_HOST_PROJECT_ID%2Flocations%2Fglobal%2Fbuckets%2F_Default%2Fviews%2F_Default?jsmode=O&mods=pan_ng2&project=FLEET_HOST_PROJECT_ID
Registos de contentores de âmbito da frota e registos de pods
Os operadores de serviços podem ver registos nos espaços de nomes aos quais têm acesso. Para ver os registos de todos os espaços de nomes num âmbito da frota específico, conclua os passos seguintes:
Com o projeto anfitrião da frota selecionado, aceda à secção Equipas na Google Cloud consola.
Clique no âmbito da equipa cujos registos quer ver e clique no separador Registos.
Selecione Registos do contentor ou Registos do pod para filtrar a vista de registos.
Para ver os registos de um espaço de nomes específico no seu âmbito:
- Na página Equipas, com o âmbito da equipa selecionado, clique no separador Espaços de nomes.
- Clique no espaço de nomes cujos registos quer ver e clique no separador Registos.
- Selecione Registos do contentor ou Registos do pod para filtrar a vista de registos.
Em alternativa, para ver os registos do contentor, preencha as variáveis no seguinte URL, copie-o e cole-o no navegador:
https://console.cloud.google.com/logs/query;query=;storageScope=storage,projects%2FFLEET_HOST_PROJECT_ID%2Flocations%2Fglobal%2Fbuckets%2Ffleet-o11y-scope-SCOPE_NAME%2Fviews%2Ffleet-o11y-scope-SCOPE_NAME-k8s_container?jsmode=O&mods=pan_ng2&project=FLEET_HOST_PROJECT_ID
Para ver os registos de pods num âmbito de frota específico, preencha as variáveis no seguinte URL, copie-o e cole-o no navegador:
https://console.cloud.google.com/logs/query;query=;storageScope=storage,projects%2FFLEET_HOST_PROJECT_ID%2Flocations%2Fglobal%2Fbuckets%2Ffleet-o11y-scope-SCOPE_NAME%2Fviews%2Ffleet-o11y-scope-SCOPE_NAME-k8s_pod?jsmode=O&mods=pan_ng2&project=FLEET_HOST_PROJECT_ID
Consulte a interface do Explorador de registos para ver mais informações sobre como analisar dados de registo.
Desative o registo de frotas
Para desativar a funcionalidade de registo da frota, conclua os seguintes passos:
gcloud
Guarde a seguinte configuração num ficheiro denominado
disable_logging_config.json
:{ "loggingConfig": {} }
Atualize a especificação da funcionalidade
fleetobservability
:gcloud container fleet fleetobservability update \ --logging-config=disable_logging_config.json
Terraform
Na configuração do Terraform, atualize todos os modos de encaminhamento de registos para MODE_UNSPECIFIED
. Vejamos um exemplo:
resource "google_gke_hub_feature" "feature" {
name = "fleetobservability"
location = "global"
spec {
fleetobservability {
logging_config {
default_config {
mode = "MODE_UNSPECIFIED"
}
fleet_scope_logs_config {
mode = "MODE_UNSPECIFIED"
}
}
}
}
}
Confirme se a especificação da funcionalidade está atualizada:
gcloud container fleet fleetobservability describe
A saída mostra a especificação fleetobservability
atualizada com a sua configuração:
createTime: '2022-09-30T16:05:02.222568564Z' membershipStates: projects/123456/locations/global/memberships/cluster-1: state: code: OK description: Fleet monitoring enabled. updateTime: '2023-04-03T20:22:51.436047872Z' name: projects/123456/locations/global/features/fleetobservability resourceState: state: ACTIVE spec: fleetobservability: loggingConfig: {} state: state: {} updateTime: '2023-04-03T20:38:17.719596966Z'
As alterações feitas à especificação fleetobservability
podem demorar alguns minutos a serem aplicadas.
Depois de desativar o registo de frotas, os destinos de registo e os filtros de exclusão são removidos dos seus projetos. No entanto, todos os contentores de registos criados para o âmbito e as vistas de registos criadas no contentor de registos são preservados. Para eliminar o contentor de registos no projeto anfitrião da frota, consulte o artigo Elimine um contentor.
Atualize o período de retenção para contentores de registos
O período de retenção predefinido de um contentor de registos é de 30 dias. Para atualizar este período, execute o seguinte comando:
gcloud logging buckets update fleet-o11y-scope-SCOPE_NAME --location=global --retention-days=RETENTION_DAYS
where:
SCOPE_NAME é o nome do âmbito da frota.
RETENTION_DAYS é o número de dias do novo período de retenção. Para mais opções sobre a configuração de contentores de registos, consulte o artigo Faça a gestão dos contentores.
Se prolongar o período de retenção de um contentor, as regras de retenção aplicam-se a partir desse momento e não retroativamente. Não é possível recuperar os registos após o fim do período de retenção aplicável.
Referência da API
Esta secção fornece informações sobre os possíveis campos que pode adicionar ao seu objeto fleetobservability
.
fleetobservability
fleetobservability
define a configuração de observabilidade da frota.
Campo | Descrição | Esquema | Opcional |
---|---|---|---|
loggingConfig | Especificado se a funcionalidade de registo da frota está ativada para toda a frota. Se não for especificado, a funcionalidade de registo da frota é desativada para toda a frota. |
loggingConfig | True |
loggingConfig
loggingConfig
define a configuração das funcionalidades de registo da frota na observabilidade da frota.
Campo | Descrição | Esquema | Opcional |
---|---|---|---|
defaultConfig | Define o comportamento de encaminhamento de registos para os registos predefinidos na frota. | routingConfig | True |
fleetScopeLogsConfig | Define o comportamento de encaminhamento de registos para registos de âmbito da frota. | routingConfig | True |
routingConfig
routingConfig
define a configuração do modo de encaminhamento de registos na funcionalidade de registo de frota.
Campo | Descrição | Esquema | Opcional |
---|---|---|---|
modo | Especificado para ativar o encaminhamento de registos e não especificado ou MODE_UNSPECIFIED para desativar o encaminhamento de registos. Se estiver definido como COPY, os registos são copiados para o projeto de destino. Se estiver definido como MOVE, os registos são movidos para o projeto de destino. |
String; um dos seguintes: MOVE, COPY e MODE_UNSPECIFIED | True |
Restrições de nomenclatura
Quando a observabilidade da frota está ativada, o controlador de observabilidade da frota reserva os seguintes nomes para os objetos de registos que cria. Para evitar um comportamento indesejável ou inesperado, deve evitar usar estes nomes quando criar os seus próprios contentores de registos, sinks e definir filtros de exclusão.
Funcionalidade ativada | Objeto criado | Nome usado pela observabilidade da frota |
---|---|---|
defaultConfig |
Lava-louça | fleet-o11y-FLEET_PROJECT_NUMBER-default |
Filtro de exclusão. | fleet-o11y-FLEET_PROJECT_NUMBER-default-exclusion . Este nome está reservado no receptor _Default do projeto do cluster. |
|
fleetScopeLogsConfig |
Contentor de registo | fleet-o11y-scope-SCOPE_NAME |
fleet-o11y-scope-SCOPE_NAME-k8s_container |
||
fleet-o11y-scope-SCOPE_NAME-k8s_pod |
||
Lava-louça | fleet-o11y-FLEET_PROJECT_NUMBER-scope-SCOPE_NAME |
|
Filtro de exclusão | fleet-o11y-FLEET_PROJECT_NUMBER-scope-exclusion |
Resolução de problemas
Esta secção descreve como resolver problemas relacionados com o registo de frotas.
Notificação por email sobre o erro de configuração do destino
Se recebeu um email com o título [ACTION REQUIRED] Cloud Logging sink configuration error in <Your GCP Project>
, significa que a conta de serviço do seu coletor de registos não tem autorização para escrever registos no destino do coletor. Para resolver este problema, siga os passos descritos no artigo Autorizações de registo em vários projetos.
Mensagem de erro desconhecida da IU do Cloud Logging
Se vir o seguinte erro na IU do Cloud Logging, verifique novamente se as variáveis project_id
e scope
introduzidas no URL estão corretas.
Error: There is an unknown error while executing this operation.
Erro de subscrição não encontrada
Pode ver o seguinte erro:
ERROR: (gcloud.alpha.container.fleet.memberships.bindings.create) NOT_FOUND: Resource 'parent resource not found for projects/...' was not found
Certifique-se de que registou o cluster numa frota.