Aperçu
Nous travaillons toujours sur cette fonctionnalité, mais nous aimerions que vous l'essayiez !
Cette fonctionnalité est actuellement fournie dans le cadre d'un programme d'aperçu conformément à nos politiques de pré-sortie.
Utilisez cette option lorsque vous disposez d’un système Kubernetes basé sur Windows. Notez que l’intégration Windows présente plusieurs limitations.
Compatibilité et exigences
Avant d'installer l'intégration Kubernetes, vérifiez la compatibilité et les exigences.
Important
Lors de l'utilisation de conteneur sous Windows, la version hôte du conteneur et la version de l'image du conteneur doivent être identiques. Notre intégration Kubernetes peut fonctionner sur les versions Windows LTSC 2019 (1809), 20H2 et LTSC 2022.
Pour vérifier votre version de Windows, ouvrez une fenêtre de commande et exécutez cette commande :
$Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v$ReleaseIdcmd.exe
Installer Kubernetes sur Windows
Vous pouvez installer l'intégration Kubernetes pour Windows à l'aide de Helm. Voir un exemple sur la façon d'installer l'intégration dans un cluster avec des nœuds ayant différentes versions de build de Windows (1809 et 2004) :
Ajoutez le référentiel New Relic Helm
Si vous ne l'avez pas encore fait, exécutez cette commande pour ajouter le référentiel New Relic Helm :
$helm repo add newrelic https://helm-charts.newrelic.com
Créer un espace de nommage pour newrelic
Exécutez cette commande pour créer un espace de nommage pour newrelic :
$kubectl create namespace newrelic
Installation kube-state-metrics
Exécutez cette commande pour installer 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
Important
Cette commande permet d'installer kube-state-metrics
, une dépendance obligatoire de l'intégration, sur un nœud Linux. Nous ne prenons pas en charge l'installation de cette solution sur des nœuds non Linux, et si vous l'installez sur un nœud non Linux, le déploiement peut échouer. Nous vous recommandons d'utiliser nodeSelector
pour choisir un nœud Linux. Cela peut être fait en modifiant le déploiement kube-state-metrics
.
Créer un fichier values-newrelic.yaml
Créez un fichier values-newrelic.yaml
avec les données suivantes. Voici ce que Helm utilisera :
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.
Installer l'intégration
Exécutez cette commande pour installer l’intégration :
$helm upgrade --install newrelic newrelic/newrelic-infrastructure \> --namespace newrelic --create-namespace \> --version 2.7.2 \> -f values-newrelic.yaml
Vérifier le pod
Vérifiez que le pod se déclenche et atteigne un état stable :
$kubectl -n newrelic get pods -w
Le graphique Helm créera un DaemonSet
pour chaque version de Windows figurant dans la liste et utilisera NodeSelector
pour déployer le pod correspondant par nœud.
Exemple : obtenir Kubernetes pour Windows à partir d'un conteneur BusyBox
Voici un exemple de la manière dont vous pouvez obtenir Kubernetes pour Windows à partir d'un conteneur BusyBox.
Exécutez cette commande :
$kubectl exec -it busybox1-766bb4d6cc-rmsnj -- Reg Query$"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ReleaseId
Vous devriez voir quelque chose comme ceci :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersionReleaseId REG_SZ 1809
Pour une modélisation utile entre les identifiants de sortie et les versions du système d'exploitation, voir ici.
Limitations de l'intégration de Kubernetes pour Windows
L'agent Windows envoie uniquement les exemples Kubernetes, tels que K8sNodeSample
ou K8sPodSample
. Ces limitations s'appliquent à l'intégration de Kubernetes pour Windows :
SystemSample
,StorageSample
,NetworkSample
etProcessSample
ne sont pas générés.Certaines métriques Kubernetes sont manquantes car le kubelet Windows ne les possède pas :
Nœud:
fsInodes
: non envoyéfsInodesFree
: non envoyéfsInodesUsed
: non envoyémemoryMajorPageFaultsPerSecond
: renvoie toujours zéro comme valeurmemoryPageFaults
: renvoie toujours zéro comme valeurmemoryRssBytes
: renvoie toujours zéro comme valeurruntimeInodes
: non envoyéruntimeInodesFree
: non envoyéruntimeInodesUsed
: non envoyé
cosse:
net.errorsPerSecond
: non envoyénet.rxBytesPerSecond
: non envoyénet.txBytesPerSecond
: non envoyé
conteneur:
containerID
: non envoyécontainerImageID
: non envoyémemoryUsedBytes
:Dans l'interface utilisateur, cela est affiché dans la carte pod qui apparaît lorsque vous cliquez sur un pod et n'affiche aucune donnée. Nous allons bientôt résoudre ce problème en mettant à jour nos graphiques pour utilisermemoryWorkingSetBytes
à la place.
Volume:
fsUsedBytes
: zéro, doncfsUsedPercent
est zéro
Problèmes connus avec Windows Kubelet
Il existe quelques problèmes avec la version Windows de Kubelet qui peuvent empêcher l'intégration de récupérer des données :
Problème 90554 : ce problème fait que Kubelet renvoie des erreurs 500 lorsque l'intégration envoie une requête au point de terminaison
/stats/summary
. Il sera inclus dans la sortie Kubernetes 1.19 et a été rétroporté vers la sortie 1.16.11, 1.17.7 et 1.18.4. Il n'y a pas de solution côté intégration pour ce problème, nous vous conseillons de mettre à jour vers l'une des versions de patch dès que possible. Vous pouvez voir si vous êtes concerné par ce problème en activant le log détaillé et en recherchant des messages du type :basherror querying Kubelet. Get "https://<KUBELET_IP>/stats/summary": error calling kubelet endpoint. Got status code: 500Problème 87730 : ce problème rend les métriques Kubelet très lentes lors de l'exécution d'une charge minimale. Cela fait échouer l'intégration avec une erreur de délai d'attente. Un correctif pour ce problème a été ajouté pour Kubernetes 1.18 et rétroporté vers 1.15.12, 1.16.9 et 1.17.5. Nous vous conseillons de mettre à jour vers l'une des versions de patch dès que possible. Pour atténuer ce problème, vous pouvez augmenter le délai d’intégration avec l’ option de configuration
TIMEOUT
. Vous pouvez voir si vous êtes concerné par ce problème en activant le log détaillé et en recherchant des messages du type :basherror querying Kubelet. Get "https://<KUBELET_IP>/stats/summary": context deadline exceeded (Client.Timeout exceeded while awaiting headers)