importante
Com o lançamento do suporte Windows para o New Relic Kubernetes integração v3, não é recomendado usar as diretrizes de instalação listadas aqui. Siga o guia de instalação de integração do Kubernetes para obter as instruções mais recentes.
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.exeInstale 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.comCrie um namespace para newrelic
Execute este comando para criar um namespace para newrelic:
$kubectl create namespace newrelicInstalar 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.2Importante
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.yamlVerificar pod
Verifique se o pod foi implantado e atingiu um estado estável:
$kubectl -n newrelic get pods -wO 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 ReleaseIdVocê deverá ver algo assim:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersionReleaseId  REG_SZ  1809Para 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,NetworkSampleeProcessSamplenã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:basherror 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:basherror querying Kubelet. Get "https://<KUBELET_IP>/stats/summary": context deadline exceeded (Client.Timeout exceeded while awaiting headers)