A partir da versão 3, o New Relic Kubernetes integração recurso e arquitetura torna o AI Monitoring mais modular e configurável, dando mais poder de escolha como será implantado e tornando-o compatível com mais ambientes.
Os dados relatados pela versão 3 da integração do Kubernetes não mudaram desde a versão 2. Para a versão 3, nos concentramos na configurabilidade, estabilidade e experiência do usuário. Veja as últimas notas de versão da integração aqui.
Importante
A versão 3 da integração do Kubernetes (appVersion
) está incluída no nri-bundle
gráfico version
4.
Guia de migração
Para facilitar ao máximo a migração de versões anteriores, desenvolvemos uma camada de compatibilidade que traduz a maioria das opções configuráveis do antigo gráfico newrelic-infrastructure
para suas novas contrapartes. Esta camada de compatibilidade é temporária e será removida no futuro. Recomendamos que você leia este guia com atenção e migre a configuração com supervisão humana. Você pode ler mais sobre o gráfico newrelic-infrastructure
atualizado aqui.
Configuração da métrica do estado Kube (KSM)
Dica
O monitoramento KSM funciona imediatamente para a maioria das configurações; a maioria dos usuários não precisará alterar esta configuração.
disableKubeStateMetrics
foi substituído porksm.enabled
. O padrão ainda é o mesmo (raspagem KSM habilitada).kubeStateMetricsScheme
,kubeStateMetricsPort
,kubeStateMetricsUrl
,kubeStateMetricsPodLabel
ekubeStateMetricsNamespace
foram substituídos pelo mais abrangente e flexívelksm.config
.- Observe que o KSM v2+ desativa os rótulos métricos por padrão. Você pode ativar o monitoramento da métrica dos rótulos de destino usando as
metric-labels-allowlist
opções descritas aqui em seu cluster do Kubernetes.
O objeto ksm.config
tem a seguinte estrutura:
ksm: config: # When autodiscovering KSM, force the following scheme. By default, `http` is used. scheme: "http" # Label selector to find kube-state-metrics endpoints. Defaults to `app.kubernetes.io/name=kube-state-metrics`. selector: "app.kubernetes.io/name=kube-state-metrics" # Restrict KSM discovery to this particular namespace. Defaults to all namespaces. namespace: "" # When autodiscovering, only consider endpoints that use this port. By default, all ports from the discovered `endpoint` are probed. # port: 8080 # Override autodiscovery mechanism completely and specify the KSM url directly instead # staticUrl: "http://test.io:8080/metrics"
Configuração do plano de controle
A configuração do plano de controle mudou substancialmente. Se você ativou anteriormente o monitoramento do plano de controle, recomendamos que você dê uma olhada em nossa documentação Configurar monitoramento do plano de controle .
As seguintes opções foram substituídas por uma configuração mais abrangente, abordada na seção vinculada acima:
apiServerSecurePort
etcdTlsSecretName
etcdTlsSecretNamespace
controllerManagerEndpointUrl
,etcdEndpointUrl
,apiServerEndpointUrl
eschedulerEndpointUrl
Configuração do agente
O arquivo de configuração do agente, especificado anteriormente em config
, foi movido para common.agentConfig
. O formato do arquivo não mudou e toda a gama de opções que podem ser configuradas pode ser encontrada aqui.
As seguintes opções de agente foram previamente "aliadas" na raiz do arquivo values.yml
e são no longer available:
logFile
foi substituído porcommon.agentConfig.log_file
.eventQueueDepth
foi substituído porcommon.agentConfig.event_queue_depth
.customAttributes
mudou de formato para um objeto yaml. O formato anterior, uma string codificada manualmente em JSON, por exemplo{"team": "devops"}
, está obsoleto.- Anteriormente,
customAttributes
tinha uma entradaclusterName
padrão que poderia ter consequências indesejadas se fosse removida. Este não é mais o caso; o usuário agora pode substituircustomAttributes
por completo com segurança. discoveryCacheTTL
foi completamente removido, pois a descoberta agora é realizada usando informantes Kubernetes, que possuem um cache integrado.
Integração configuração
Integração foram previamente configuradas em integrations_config
, utilizando um formato de matriz:
integrations_config: - name: nri-redis.yaml data: discovery: # ... integrations: # ...
O mecanismo permanece o mesmo, mas alteramos o formato para ser mais amigável ao usuário:
integrations: nri-redis-sampleapp: discovery: # ... integrations: # ...
Além disso, os sinalizadores --port
e --tls
agora são obrigatórios no comando de descoberta. No passado, o seguinte funcionaria:
integrations: nri-redis-sampleapp: discovery: command: exec: /var/db/newrelic-infra/nri-discovery-kubernetes
Da v3 em diante, você deve especificar --port
e --tls
:
integrations: nri-redis-sampleapp: discovery: command: exec: /var/db/newrelic-infra/nri-discovery-kubernetes --tls --port 10250
Essa alteração é necessária porque na v2 e abaixo, o componente nrk8s-kubelet
(ou seu equivalente) era executado com hostNetwork: true
, então nri-discovery-kubernetes
poderia se conectar ao kubelet usando localhost
e http simples. Por razões de segurança, este não é mais o caso; daí a necessidade de especificar ambos os sinalizadores de agora em diante.
Para mais detalhes sobre como configurar integração no host no Kubernetes, consulte nossos serviçosmonitor na documentação Kubernetes .
Valores diversos do gráfico
Embora não estejam relacionadas à configuração de integração, as seguintes opções diversas para o gráfico do Helm também foram alteradas:
runAsUser
foi substituído porsecurityContext
, que é modelado diretamente no pod e mais configurável.resources
foi removido, pois agora implantamos três cargas de trabalho diferentes. Os recursos de cada um podem ser configurados individualmente em:ksm.resources
kubelet.resources
controlPlane.resources
tolerations
foi dividido em três e o anterior não é mais válido. Todos os três são padronizados para tolerar qualquer valor paraNoSchedule
eNoExecute
:ksm.tolerations
kubelet.tolerations
controlPlane.tolerations
image
e todas as suas subchaves foram substituídas por seções individuais para cada uma das três imagens que agora estão implantadas:images.forwarder.*
para configurar o encaminhador do agente de infraestrutura.images.agent.*
para configurar o pacote de imagens do agente de infraestrutura e integração no host.images.integration.*
para configurar a imagem responsável pela coleta de dados do k8s.