visualização
Ainda estamos trabalhando nesse recurso, mas adoraríamos que você experimentasse!
Atualmente, esse recurso é fornecido como parte de um programa de visualização de acordo com nossas políticas de pré-lançamento.
Use esta opção quando você tiver um sistema Kubernetes baseado em Windows. Observe que a integração do Windows tem diversas limitações.
Compatibilidade e requisitos
Antes de instalar a integração do Kubernetes, revise a compatibilidade e os requisitos.
Importante
Ao utilizar contêiner no Windows, a versão do host do contêiner e a versão da imagem do contêiner devem ser iguais. Nossa integração com Kubernetes pode ser executada nas versões Windows LTSC 2019 (1809), 20H2 e LTSC 2022.
Para verificar sua versão do Windows, abra uma janela de comando e execute este comando:
$Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v$ReleaseIdcmd.exe
Instale o Kubernetes no Windows
Você pode instalar a integração do Kubernetes para Windows usando Helm. Veja um exemplo de como instalar a integração em um cluster com nós com diferentes versões de build do Windows (1809 e 2004):
Adicione o repositório New Relic Helm
Caso ainda não tenha feito isso, execute este comando para adicionar o repositório do New Relic Helm:
$helm repo add newrelic https://helm-charts.newrelic.com
Crie um namespace para newrelic
Execute este comando para criar um namespace para newrelic:
$kubectl create namespace newrelic
Instalar kube-state-metrics
Execute este comando para instalar kube-state-metrics
:
$helm repo add ksm https://kubernetes.github.io/kube-state-metrics$helm install ksm ksm/kube-state-metrics --version 2.13.2
Importante
Este comando serve para instalar kube-state-metrics
, dependência obrigatória da integração, em um nó Linux. Não oferecemos suporte à instalação para nós não Linux e, se você instalá-lo em um nó não Linux, a implantação poderá falhar. Recomendamos usar nodeSelector
para escolher um nó Linux. Isso pode ser feito editando a implantação kube-state-metrics
.
Crie um arquivo values-newrelic.yaml
Crie um arquivo values-newrelic.yaml
com os dados a seguir. Isto é o que Helm usará:
global: licenseKey: _YOUR_NEW_RELIC_LICENSE_KEY_ cluster: _K8S_CLUSTER_NAME_
enableLinux: true # Set to true if your cluster also has linux nodes enableWindows: true windowsOsList: - version: 2019 # Human-readable version identifier imageTag: 2-windows-1809-alpha # Tag to be used for nodes running the windows version above buildNumber: 10.0.17763 # Build number for your nodes running the version above. Used as a selector. - version: 20h2 imageTag: 2-windows-20H2-alpha buildNumber: 10.0.19042 - version: 2022 imageTag: 2-windows-ltsc2022-alpha buildNumber: 10.0.20348 nodeSelector: kubernetes.io/os: linux # Selector for Linux installation. windowsNodeSelector: kubernetes.io/os: windows # Selector for Windows installation.
Instale a integração
Execute este comando para instalar a integração:
$helm upgrade --install newrelic newrelic/newrelic-infrastructure \> --namespace newrelic --create-namespace \> --version 2.7.2 \> -f values-newrelic.yaml
Verificar pod
Verifique se o pod foi implantado e atingiu um estado estável:
$kubectl -n newrelic get pods -w
O gráfico do Helm criará um DaemonSet
para cada versão do Windows que estiver na lista e usará NodeSelector
para implantar o pod correspondente por nó.
Exemplo: Obtenha o Kubernetes para Windows de um contêiner BusyBox
Este é um exemplo de como você pode obter o Kubernetes para Windows a partir de um contêiner BusyBox.
Execute este comando:
$kubectl exec -it busybox1-766bb4d6cc-rmsnj -- Reg Query$"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ReleaseId
Você deverá ver algo assim:
$HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion$ReleaseId REG_SZ 1809
Para um mapeamento útil entre IDs de lançamento e versões do sistema operacional, veja aqui.
Limitações à integração do Kubernetes para Windows
O agente do Windows envia apenas amostras do Kubernetes, como K8sNodeSample
ou K8sPodSample
. Estas limitações se aplicam à integração do Kubernetes para Windows:
SystemSample
,StorageSample
,NetworkSample
eProcessSample
não são gerados.Algumas métricasKubernetes estão faltando porque o kubelet do Windows não as possui:
Nó:
fsInodes
: não enviadofsInodesFree
: não enviadofsInodesUsed
: não enviadomemoryMajorPageFaultsPerSecond
: sempre retorna zero como valormemoryPageFaults
: sempre retorna zero como valormemoryRssBytes
: sempre retorna zero como valorruntimeInodes
: não enviadoruntimeInodesFree
: não enviadoruntimeInodesUsed
: não enviado
Pod:
net.errorsPerSecond
: não enviadonet.rxBytesPerSecond
: não enviadonet.txBytesPerSecond
: não enviado
Contêiner:
containerID
: não enviadocontainerImageID
: não enviadomemoryUsedBytes
: na interface, isso é mostrado no cartão pod que aparece quando você clica em um pod e não mostra dados. Em breve corrigiremos isso atualizando nossos gráficos para usarmemoryWorkingSetBytes
.
Volume:
fsUsedBytes
: zero, entãofsUsedPercent
é zero
Problemas conhecidos com o Windows Kubelet
Existem alguns problemas com a versão Windows do Kubelet que podem impedir a integração de buscar dados:
Problema 90554: esse problema faz com que o Kubelet retorne 500 erros quando a integração faz uma solicitação ao endpoint
/stats/summary
. Ele será incluído na versão 1.19 do Kubernetes e foi portado para as versões 1.16.11, 1.17.7 e 1.18.4. Não há solução do lado da integração para este problema, aconselhamos que você atualize para uma das versões do patch o mais rápido possível. Você pode ver se está sendo afetado por esse problema ativando o log detalhado e procurando mensagens do tipo:bash$error querying Kubelet. Get "https://<KUBELET_IP>/stats/summary": error calling kubelet endpoint. Got status code: 500Problema 87730: esse problema torna a métrica do Kubelet muito lenta ao executar carga mínima. Isso faz com que a integração falhe com um erro de tempo limite. Um patch para esse problema foi adicionado ao Kubernetes 1.18 e portado para 1.15.12, 1.16.9 e 1.17.5. Aconselhamos você a atualizar para uma das versões de patch o mais rápido possível. Para atenuar esse problema, você pode aumentar o tempo limite de integração com a opção de configuração
TIMEOUT
. Você pode ver se está sendo afetado por esse problema ativando o log detalhado e procurando mensagens do tipo:bash$error querying Kubelet. Get "https://<KUBELET_IP>/stats/summary": context deadline exceeded (Client.Timeout exceeded while awaiting headers)