Aiutaci a migliorare questa pagina
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Configurare webhook per nodi ibridi
Questa pagina descrive in dettaglio le considerazioni sull'esecuzione di webhook con nodi ibridi. I webhook vengono utilizzati nelle applicazioni Kubernetes e nei progetti open source, come Load AWS Balancer Controller e CloudWatch Observability Agent, per eseguire funzionalità di mutazione e convalida in fase di esecuzione.
Reti pod routabili
Se riesci a rendere il tuo pod locale CIDR instradabile sulla tua rete locale, puoi eseguire webhook su nodi ibridi. Esistono diverse tecniche che puoi utilizzare per rendere il tuo pod locale CIDR instradabile sulla tua rete locale, tra cui Border Gateway Protocol (BGP), route statiche o altre soluzioni di routing personalizzate. BGP è la soluzione consigliata in quanto è più scalabile e facile da gestire rispetto alle soluzioni alternative che richiedono una configurazione del percorso personalizzata o manuale. AWS supporta le funzionalità BGP di Cilium e Calico per il pod CIDRs pubblicitario, vedi e per ulteriori informazioni. Configurare un CNI per nodi ibridi Pod remoto indirizzabile CIDRs
Reti pod non routabili
Se non riesci a rendere il tuo pod locale CIDR instradabile sulla tua rete locale e devi eseguire webhook, ti consigliamo di eseguire tutti i webhook sui nodi cloud nello stesso cluster EKS dei nodi ibridi.
Considerazioni per i cluster in modalità mista
I cluster in modalità mista sono definiti come cluster EKS con nodi ibridi e nodi in esecuzione nel cloud. AWS Quando esegui un cluster in modalità mista, considera i seguenti consigli:
-
Esegui VPC CNI sui nodi in AWS Cloud e Cilium o Calico sui nodi ibridi. Cilium e Calico non sono supportati da AWS quando vengono eseguiti su nodi in Cloud. AWS
-
Configura i webhook per l'esecuzione su nodi in Cloud. AWS Scopri come configurare Configura i webhook per i componenti aggiuntivi i webhook e i componenti aggiuntivi della community. AWS
-
Se le tue applicazioni richiedono pod in esecuzione su nodi in AWS Cloud per comunicare direttamente con pod in esecuzione su nodi ibridi («comunicazione est-ovest») e utilizzi VPC CNI sui nodi in AWS Cloud e Cilium o Calico sui nodi ibridi, il tuo pod CIDR locale deve essere instradabile sulla tua rete locale.
-
Esegui almeno una replica di CoreDNS su nodi AWS in Cloud e almeno una replica di CoredNS su nodi ibridi.
-
Configura la distribuzione del traffico di servizio per mantenere il traffico del servizio locale rispetto alla zona da cui proviene. Per ulteriori informazioni sulla distribuzione del traffico di servizio, vedereConfigura la distribuzione del traffico di servizio.
-
Se si utilizzano AWS Application Load Balancers (ALB) o Network Load Balancers (NLB) per il traffico di carichi di lavoro in esecuzione su nodi ibridi, è necessario che sia possibile instradare le destinazioni IP utilizzate con ALB o NLB. AWS
-
Il componente aggiuntivo Metrics Server richiede la connettività dal piano di controllo EKS all'indirizzo IP del pod Metrics Server. Se esegui il componente aggiuntivo Metrics Server su nodi ibridi, il pod CIDR locale deve essere instradabile sulla rete locale.
-
Per raccogliere metriche per i nodi ibridi utilizzando i raccoglitori gestiti di Amazon Managed Service for Prometheus (AMP), il pod CIDR locale deve essere instradabile sulla rete locale. In alternativa, puoi utilizzare il collettore gestito AMP per le metriche e le risorse del piano di controllo EKS in esecuzione nel AWS cloud e il componente aggiuntivo AWS Distro for (ADOT) per raccogliere metriche per i nodi ibridi. OpenTelemetry
Configura i cluster in modalità mista
Per visualizzare i webhook mutanti e di convalida in esecuzione sul cluster, è possibile visualizzare il tipo di risorsa Extensions nel pannello Risorse della console EKS per il cluster oppure utilizzare i seguenti comandi. EKS riporta anche le metriche dei webhook nella dashboard di osservabilità del cluster, vedi per ulteriori informazioni. Monitora il tuo cluster con la dashboard di osservabilità
kubectl get mutatingwebhookconfigurations
kubectl get validatingwebhookconfigurations
Configura la distribuzione del traffico di servizio
Quando si eseguono cluster in modalità mista, si consiglia di utilizzare Service Traffic Distribution
Se si utilizza Cilium come CNI, è necessario eseguire il CNI con il enable-service-topology
set per abilitare la distribuzione del traffico del servizio. true
Puoi passare questa configurazione con il flag di installazione Helm --set loadBalancer.serviceTopology=true
oppure puoi aggiornare un'installazione esistente con il comando Cilium CLI. cilium config set enable-service-topology true
L'agente Cilium in esecuzione su ciascun nodo deve essere riavviato dopo aver aggiornato la configurazione per un'installazione esistente.
Un esempio di come configurare la distribuzione del traffico di servizio per il servizio CoredNS è mostrato nella sezione seguente e si consiglia di abilitare la stessa opzione per tutti i servizi del cluster per evitare traffico indesiderato tra ambienti.
Configurazione delle repliche CoredNS
Quando si eseguono cluster in modalità mista, si consiglia di avere almeno una replica CoreDNS su nodi ibridi e almeno una replica CoreDNS su nodi in Cloud. AWS
-
Aggiungi un'etichetta di zona topologica per ciascuno dei tuoi nodi ibridi, ad esempio.
topology.kubernetes.io/zone: onprem
In alternativa, puoi impostare l'etichetta innodeadm init
fase, specificando l'etichetta nellanodeadm
configurazione, vedi. Node Config per personalizzare kubelet (opzionale) Nota, ai nodi in esecuzione in AWS Cloud viene applicata automaticamente un'etichetta di zona topologica che corrisponde alla zona di disponibilità (AZ) del nodo.kubectl label node
hybrid-node-name
topology.kubernetes.io/zone=zone
-
Aggiungilo
podAntiAffinity
alla distribuzione CoredNS con la chiave della zona di topologia. In alternativa, puoi configurare l'implementazione di CoredNS durante l'installazione con i componenti aggiuntivi EKS.kubectl edit deployment coredns -n kube-system
spec: template: spec: affinity: ... podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchExpressions: - key: k8s-app operator: In values: - kube-dns topologyKey: kubernetes.io/hostname weight: 100 - podAffinityTerm: labelSelector: matchExpressions: - key: k8s-app operator: In values: - kube-dns topologyKey: topology.kubernetes.io/zone weight: 50 ...
-
Aggiungi l'impostazione
trafficDistribution: PreferClose
alla configurazione delkube-dns
servizio per abilitare la distribuzione del traffico del servizio.kubectl patch svc kube-dns -n kube-system --type=merge -p '{ "spec": { "trafficDistribution": "PreferClose" } }'
-
È possibile confermare che Service Traffic Distribution è abilitata visualizzando le slice degli endpoint per il
kube-dns
servizio. Le sezioni degli endpoint devono mostrare le etichette dellehints
zone topologiche, a conferma che Service Traffic Distribution è abilitata. Se non vedi l'indirizzohints
per ogni endpoint, Service Traffic Distribution non è abilitato.kubectl get endpointslice -A | grep "kube-dns"
kubectl get endpointslice [.replaceable]`kube-dns-<id>` -n kube-system -o yaml
addressType: IPv4 apiVersion: discovery.k8s.io/v1 endpoints: - addresses: - <your-hybrid-node-pod-ip> hints: forZones: - name: onprem nodeName: <your-hybrid-node-name> zone: onprem - addresses: - <your-cloud-node-pod-ip> hints: forZones: - name: us-west-2a nodeName: <your-cloud-node-name> zone: us-west-2a
Configura i webhook per i componenti aggiuntivi
I seguenti componenti aggiuntivi utilizzano i webhook e sono supportati per l'uso con nodi ibridi.
-
AWS Controller Load Balancer
-
CloudWatch Agente di osservabilità
-
AWS Distro per OpenTelemetry (ADOT)
-
cert-manager
Consulta le seguenti sezioni per configurare i webhook utilizzati da questi componenti aggiuntivi per l'esecuzione sui nodi in Cloud. AWS
AWS Controller Load Balancer
Per utilizzare il AWS Load Balancer Controller in una configurazione cluster in modalità mista, devi eseguire il controller sui nodi in AWS Cloud. A tale scopo, aggiungi quanto segue alla configurazione dei valori di Helm o specifica i valori utilizzando la configurazione aggiuntiva EKS.
affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid
CloudWatch Agente di osservabilità
Il componente aggiuntivo CloudWatch Observability Agent dispone di un operatore Kubernetes che utilizza webhook. Per eseguire l'operatore sui nodi di AWS Cloud in una configurazione di cluster in modalità mista, modifica la configurazione dell'operatore Observability Agent. CloudWatch Non è possibile configurare l'affinità dell'operatore durante l'installazione con i componenti aggiuntivi Helm ed EKS (vedi containers-roadmap
kubectl edit -n amazon-cloudwatch deployment amazon-cloudwatch-observability-controller-manager
spec: ... template: ... spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid
AWS OpenTelemetry Distro per (ADOT)
Il componente aggiuntivo AWS Distro for OpenTelemetry (ADOT) dispone di un operatore Kubernetes che utilizza webhook. Per eseguire l'operatore sui nodi in AWS Cloud in una configurazione di cluster in modalità mista, aggiungi quanto segue alla configurazione dei valori di Helm o specifica i valori utilizzando la configurazione aggiuntiva EKS.
affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid
Se il pod CIDR non è instradabile sulla rete locale, il collettore ADOT deve essere eseguito su nodi ibridi per acquisire le metriche dai nodi ibridi e dai carichi di lavoro in esecuzione su di essi. A tale scopo, modifica la Custom Resource Definition (CRD).
kubectl -n opentelemetry-operator-system edit opentelemetrycollectors.opentelemetry.io adot-col-prom-metrics
spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: In values: - hybrid
Puoi configurare il collettore ADOT per acquisire solo le metriche dai nodi ibridi e dalle risorse in esecuzione sui nodi ibridi aggiungendo quanto segue relabel_configs
a ciascuno scrape_configs
nella configurazione CRD di ADOT collector.
relabel_configs: - action: keep regex: hybrid source_labels: - __meta_kubernetes_node_label_eks_amazonaws_com_compute_type
Il componente aggiuntivo ADOT presenta un requisito preliminare per l'installazione cert-manager
dei certificati TLS utilizzati dal webhook dell'operatore ADOT. cert-manager
esegue anche webhook ed è possibile configurarlo per l'esecuzione su nodi in AWS Cloud con la seguente configurazione dei valori Helm.
affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid webhook: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid cainjector: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid startupapicheck: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid
cert-manager
Il cert-manager
componente aggiuntivo esegue i webhook ed è possibile configurarlo per l'esecuzione su nodi in AWS Cloud con la seguente configurazione dei valori Helm.
affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid webhook: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid cainjector: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid startupapicheck: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid