Services de réseau
Cette page explique comment CoreDNS et le contrôleur Nginx-Ingress fonctionnent au sein de RKE2.
Consultez la page Options de réseau de base pour des détails sur les options de configuration de Canal, ou sur la façon de configurer votre propre CNI.
Pour des informations sur les ports à ouvrir pour RKE2, consultez les Exigences d’installation.
CoreDNS
CoreDNS est déployé par défaut lors du démarrage du serveur. Pour désactiver, exécutez chaque serveur avec l’option disable: rke2-coredns dans votre fichier de configuration.
Si vous n’installez pas CoreDNS, vous devrez installer vous-même un fournisseur DNS de cluster.
CoreDNS est déployé par défaut avec le autoscaler. Pour le désactiver ou modifier sa configuration, utilisez la ressource HelmChartConfig.
NodeLocal DNSCache
NodeLocal DNSCache améliore les performances en exécutant un agent de mise en cache DNS sur chaque nœud. Pour activer cette fonctionnalité, appliquez le HelmChartConfig suivant :
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-coredns
namespace: kube-system
spec:
valuesContent: |-
nodelocal:
enabled: true
Le contrôleur Helm redéploiera CoreDNS avec la nouvelle configuration. Veuillez noter que NodeLocal modifie les iptables du nœud pour intercepter le trafic DNS. Par conséquent, activer puis désactiver cette fonctionnalité sans redéploiement entraînera l’arrêt du service DNS.
Notez que NodeLocal DNSCache doit être déployé en mode ipvs si kube-proxy utilise ce mode. Pour le déployer dans ce mode, appliquez le HelmChartConfig suivant :
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-coredns
namespace: kube-system
spec:
valuesContent: |-
nodelocal:
enabled: true
ipvs: true
NodeLocal DNS Cache avec Cilium en mode de remplacement de kube-proxy
Cette fonctionnalité est disponible à partir des versions v1.28.13+rke2r1, v1.29.8+rke2r1 et v1.30.4+rke2r1.
Si votre choix de CNI est Cilium en mode de remplacement de kube-proxy et que vous souhaitez utiliser NodeLocal DNS Cache, vous devez configurer Cilium pour utiliser une Politique de redirection locale (LRP) pour acheminer le trafic DNS vers votre cache NodeLocal. C’est parce que dans ce mode, le routage eBPF de Cilium contourne les règles iptables, donc NodeLocal ne peut pas les configurer pour acheminer le trafic DNS vers lui-même.
Cela se fait en deux étapes :
-
Activez la fonctionnalité de politique de redirection locale dans Cilium en définissant le drapeau
localRedirectPolicysur true dans le Cilium HelmChartConfig. Cela ressemblerait à ceci :--- # /var/lib/rancher/rke2/server/manifests/rke2-cilium-config.yaml --- apiVersion: helm.cattle.io/v1 kind: HelmChartConfig metadata: name: rke2-cilium namespace: kube-system spec: valuesContent: |- kubeProxyReplacement: true k8sServiceHost: <KUBE_API_SERVER_IP> k8sServicePort: <KUBE_API_SERVER_PORT> localRedirectPolicy: true -
Configurez le graphique
rke2-corednspour configurer son LRP en appliquant le HelmChartConfig suivant :--- apiVersion: helm.cattle.io/v1 kind: HelmChartConfig metadata: name: rke2-coredns namespace: kube-system spec: valuesContent: |- nodelocal: enabled: true use_cilium_lrp: true
Contrôleur d’Ingress
-
ingress-nginx
-
Traefik
|
Le contrôleur ingress-nginx atteindra la fin du service (EOL) en mars 2026 et sa prise en charge sera cessée dans RKE2 v1.36. Les utilisateurs de SUSE® Rancher Prime: RKE2 continueront à recevoir un support et des correctifs CVE (8+) pour l’ensemble du cycle de vie de RKE2 v1.32, v1.33, v1.34, v1.35 et v1.36. Nous recommandons de passer à Traefik en suivant le guide Migrer d’Ingress-NGINX vers Traefik dans un cluster RKE2 autonome. |
ingress-nginx est un contrôleur d’Ingress alimenté par NGINX qui utilise un ConfigMap pour stocker la configuration NGINX.
ingress-nginx est déployé par défaut lors du démarrage du serveur. Les ports 80 et 443 seront liés par le contrôleur d’Ingress dans sa configuration par défaut, rendant ces ports inutilisables pour les services HostPort ou NodePort dans le cluster.
Les options de configuration peuvent être spécifiées en créant un manifeste HelmChartConfig pour personnaliser les valeurs du HelmChart rke2-ingress-nginx. Par exemple, un HelmChartConfig à /var/lib/rancher/rke2/server/manifests/rke2-ingress-nginx-config.yaml avec le contenu suivant définit use-forwarded-headers sur "true" dans le ConfigMap stockant la configuration NGINX :
# /var/lib/rancher/rke2/server/manifests/rke2-ingress-nginx-config.yaml
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-ingress-nginx
namespace: kube-system
spec:
valuesContent: |-
controller:
config:
use-forwarded-headers: "true"
Pour plus d’informations, consultez les paramètres de configuration Helm d’ingress-nginx officiels.
|
Version Gate
Le support de Traefik est disponible à partir des versions d’août 2024 : v1.28.12+rke2r1, v1.29.7+rke2r1, v1.30.3+rke2r1. |
Traefik est un proxy inverse HTTP moderne et un répartiteur de charge conçu pour déployer des microservices facilement. Il simplifie la complexité du réseau lors de la conception, du déploiement et de l’exécution d’applications.
Pour utiliser Traefik, démarrez chaque serveur avec l’option ingress-controller: traefik dans votre fichier de configuration.
- Les options de configuration peuvent être spécifiées en créant un manifeste HelmChartConfig pour personnaliser les valeurs du HelmChart
rke2-traefik. Par exemple, un HelmChartConfig à/var/lib/rancher/rke2/server/manifests/rke2-traefik-config.yamlavec le contenu suivant change le niveau de journalisation en "DEBUG"
# /var/lib/rancher/rke2/server/manifests/rke2-traefik-config.yaml
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-traefik
namespace: kube-system
spec:
valuesContent: |-
logs:
general:
level: "DEBUG"
Pour voir toutes les options configurables, visitez le values.yaml du chart.
Pour désactiver le contrôleur d’Ingress, démarrez chaque serveur avec l’option ingress-controller: none dans votre fichier de configuration.
API Gateway
L’API Gateway est une famille de ressources Kubernetes qui fournit un approvisionnement dynamique de l’infrastructure et un routage de trafic avancé. Bien que l’API Ingress traditionnelle soit toujours prise en charge (et qu’il ne soit pas prévu de cesser la prise en charge), l’API Gateway offre une manière plus expressive, orientée vers les rôles et extensible de gérer l’exposition des services.
Pour tirer parti de l’API Gateway dans SUSE® Rancher Prime: RKE2, vous devez utiliser Traefik. Veuillez utiliser le manifeste HelmChartConfig suivant pour activer l’API Gateway :
# /var/lib/rancher/rke2/server/manifests/rke2-traefik-config.yaml
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-traefik
namespace: kube-system
spec:
valuesContent: |-
providers:
kubernetesGateway:
enabled: true
# experimentalChannel: true (read warning below)
Traefik est compatible avec API Gateway v1.4.
|
Si vous avez besoin de support pour les ressources expérimentales de l’API Gateway, par exemple TCPRoute, vous devez installer le fichier experimental-install.yaml depuis les versions de l’API Gateway officielles et utiliser l’option |
Équilibreur de charge de service
Les services Kubernetes peuvent être de type LoadBalancer, mais cela nécessite un contrôleur de charge externe pour mettre en œuvre les choses correctement et, par exemple, fournir l’IP externe. RKE2 peut optionnellement déployer un contrôleur de charge connu sous le nom de ServiceLB qui utilise les ports hôtes disponibles. Pour plus d’informations, veuillez lire le lien suivant.
|
En consultant la documentation de K3s, utilisez l’étiquette |
Pour activer serviceLB, utilisez l’option --enable-servicelb lors du déploiement de RKE2.