Note :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, voir Introduction à l' niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles propres à votre environnement en nuage.
Utiliser le plugiciel CNI de réseau de pods natifs du VCN OCI pour fournir des services de réseau à Oracle Cloud Infrastructure Container Engine for Kubernetes
Présentation
Par défaut, Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) utilise le plugiciel d'interface réseau conteneur native du VCN d'Oracle Cloud Infrastructure (OCI) pour fournir des fonctions de réseau ou de sécurité aux applications conteneurisées. Dans ce tutoriel, nous vous montrerons comment vérifier quel plugiciel CNI est utilisé et comment utiliser ce plugiciel CNI par défaut (plugiciel CNI OCI VCN- natif) pour configurer un service d'équilibreur de charge OCI et l'attacher à une application s'exécutant dans un conteneur.
L'avantage de l'utilisation du plugiciel CNI de réseau de pods natifs du VCN OCI est que les pods ou conteneurs obtiendront une adresse IP à partir du sous-réseau privé dans le VCN. Cela signifie que vos pods Kubernetes se trouvent dans le même réseau que vos machines virtuelles (instances) ou vos noeuds sans système d'exploitation ou d'autres charges de travail.
Objectifs
- Nous verrons comment nous pouvons vérifier le plugin CNI par défaut qui est utilisé par OKE. Nous déploierons une nouvelle application conteneurisée Nginx pour tester certaines fonctions de réseau de base du plugiciel CNI natif de VCN OCI par défaut et exploiter le plugiciel CNI de réseau de VCN natif d'OCI pour créer un nouveau service réseau de type équilibreur de charge et exposer ce service à notre application Nginx déployée. Au final, nous effacerons l'application et le service d'équilibreur de charge.
Tâche 1 : Déployer une grappe Kubernetes à l'aide d'OKE
Pour plus d'informations sur les différents modèles de déploiement OKE que nous pouvons sélectionner, voir Exemples de configurations de ressources de réseau.
Voici un exemple de modèle de déploiement OKE :
-
Exemple 1 : Grappe avec plugiciel CNI Flannel, point d'extrémité d'API Kubernetes public, noeuds de travail privés et équilibreurs de charge publics.
-
Exemple 2 : Grappe avec plugiciel CNI Flannel, point d'extrémité d'API Kubernetes privé, noeuds de travail privés et équilibreurs de charge publics.
-
Exemple 3 : Grappe avec plugiciel CNI OCI, point d'extrémité d'API Kubernetes public, noeuds de travail privés et équilibreurs de charge publics.
-
Exemple 4 : Grappe avec plugiciel CNI OCI, point d'extrémité d'API Kubernetes privé, noeuds de travail privés et équilibreurs de charge publics.
Nous sélectionnerons Exemple 3 de modèle de déploiement. Pour plus d'informations, voir Configurer Oracle Cloud Infrastructure Container Engine for Kubernetes avec trois noeuds de travail.
Tâche 2 : Vérifier le plugiciel CNI installé
Lorsque la grappe Kubernetes utilisant OKE est entièrement déployée et que vous y avez accès, vous pouvez exécuter la commande suivante.
-
Exécutez la commande suivante .
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ **kubectl get all -n kube-system** NAME READY STATUS RESTARTS AGE pod/coredns-64ffdf5cf7-lvrhq 1/1 Running 0 2d pod/coredns-64ffdf5cf7-rmxt8 1/1 Running 0 2d pod/coredns-64ffdf5cf7-vq76p 1/1 Running 0 2d pod/csi-oci-node-ghff6 1/1 Running 0 2d pod/csi-oci-node-jrjpr 1/1 Running 0 2d pod/csi-oci-node-r68qz 1/1 Running 1 (2d ago) 2d pod/kube-dns-autoscaler-5bb955d5c-r2j2q 1/1 Running 0 2d pod/kube-proxy-5cznp 1/1 Running 0 2d pod/kube-proxy-fddrd 1/1 Running 0 2d pod/kube-proxy-sb769 1/1 Running 0 2d pod/proxymux-client-7s7f9 1/1 Running 0 2d pod/proxymux-client-lngrm 1/1 Running 0 2d pod/proxymux-client-qxlf2 1/1 Running 0 2d **pod/vcn-native-ip-cni-hkfjz 1/1 Running 0 2d pod/vcn-native-ip-cni-pdv4c 1/1 Running 0 2d pod/vcn-native-ip-cni-qfvk8 1/1 Running 0 2d** NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kube-dns ClusterIP 10.96.5.5 <none> 53/UDP,53/TCP,9153/TCP 2d NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/csi-oci-node 3 3 3 3 3 <none> 2d daemonset.apps/kube-proxy 3 3 3 3 3 beta.kubernetes.io/os=linux 2d daemonset.apps/node-termination-handler 0 0 0 0 0 oci.oraclecloud.com/oke-is-preemptible=true 2d daemonset.apps/nvidia-gpu-device-plugin 0 0 0 0 0 <none> 2d daemonset.apps/proxymux-client 3 3 3 3 3 node.info.ds_proxymux_client=true 2d **daemonset.apps/vcn-native-ip-cni 3 3 3 3 3 <none> 2d** NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/coredns 3/3 3 3 2d deployment.apps/kube-dns-autoscaler 1/1 1 1 2d NAME DESIRED CURRENT READY AGE replicaset.apps/coredns-64ffdf5cf7 3 3 3 2d replicaset.apps/kube-dns-autoscaler-5bb955d5c 1 1 1 2d iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
-
Notez que le nom est
vcn-native
dans la sortie de la section pod. -
Notez que le nom est
vcn-native
dans la sortie de la section daemonset.
Cela vous montrera que le plugiciel CNI de réseau de pods natifs du VCN OCI est actuellement utilisé pour ce déploiement OKE déployé.
Tâche 3 : Déployer un exemple d'application
Nous utiliserons cet exemple d'application avec le plugiciel CNI de réseau de pods natifs du VCN OCI et activerons le type de service d'équilibreur de charge OCI dans la tâche suivante.
-
Exécutez la commande suivante pour déployer un exemple d'application Nginx dans OKE.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl apply -f https://k8s.io/examples/application/deployment.yaml deployment.apps/nginx-deployment created
-
Exécutez la commande suivante pour vérifier les détails de l'exemple d'application Nginx déployée.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl describe deployment nginx-deployment Name: nginx-deployment Namespace: default CreationTimestamp: Fri, 08 Mar 2024 07:57:02 +0000 Labels: <none> Annotations: deployment.kubernetes.io/revision: 1 Selector: app=nginx Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable StrategyType: RollingUpdate MinReadySeconds: 0 RollingUpdateStrategy: 25% max unavailable, 25% max surge Pod Template: Labels: app=nginx Containers: nginx: Image: nginx:1.14.2 Port: 80/TCP Host Port: 0/TCP Environment: <none> Mounts: <none> Volumes: <none> Conditions: Type Status Reason ---- ------ ------ Available True MinimumReplicasAvailable Progressing True NewReplicaSetAvailable OldReplicaSets: <none> NewReplicaSet: nginx-deployment-86dcfdf4c6 (2/2 replicas created) Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ScalingReplicaSet 14s deployment-controller Scaled up replica set nginx-deployment-86dcfdf4c6 to 2 iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
-
Notez que l'application est déployée à l'aide de deux pods.
-
Exécutez la commande suivante pour examiner de plus près les pods déployés.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl get pods NAME READY STATUS RESTARTS AGE nginx-deployment-86dcfdf4c6-fdxgz 1/1 Running 0 3m46s nginx-deployment-86dcfdf4c6-fqrkh 1/1 Running 0 3m46s iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
-
Notez qu'il existe deux instances, pods ou répliques de l'application Nginx et que le statut est réglé à RUNNING.
Vous trouverez une représentation visuelle du déploiement dans le diagramme suivant. Concentrez-vous sur les deux pods déployés dans les noeuds de travail.
L'avantage de l'utilisation du plugiciel CNI de réseau de pods natifs du VCN OCI est que les pods ou conteneurs obtiendront une adresse IP à partir du sous-réseau privé dans le VCN. Cela signifie que vos pods Kubernetes se trouvent dans le même réseau que vos machines virtuelles (instances) ou vos noeuds sans système d'exploitation ou d'autres charges de travail.
Tâche 4 : Configurer les services Kubernetes du type d'équilibreur de charge
Notre exemple d'application s'exécute dans OKE. Il est temps de l'exposer au réseau ou à Internet en attachant un service réseau de type équilibreur de charge à l'application.
-
Vérifiez les services en cours d'exécution existants dans la grappe Kubernetes.
-
Exécutez la commande suivante pour vérifier les services en cours d'exécution existants dans la grappe Kubernetes.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP,12250/TCP 2d23h iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
-
Notez que le seul service en cours d'exécution appartient au plan de contrôle Kubernetes.
-
-
Ajouter un service réseau à l'application.
-
Exécutez la commande suivante pour déployer un nouveau service réseau de plugiciel CNI de réseau de VCN natif pour OCI de type équilibreur de charge et exposer ce nouveau service à l'application.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl expose deployment nginx-deployment --type=LoadBalancer --name=my-service service/my-service exposed iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
-
Notez que le service est exposé avec succès.
-
-
Vérifiez les services en cours d'exécution existants dans la grappe Kubernetes.
-
Exécutez la commande suivante pour vérifier les services en cours d'exécution existants dans la grappe Kubernetes.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP,12250/TCP 2d23h my-service LoadBalancer 10.96.209.132 xxx.xxx.xxx.167 80:32291/TCP 53s iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
-
Notez que le service que nous venons de configurer est maintenant dans la liste.
-
Notez que
EXTERNAL-IP
(adresse IP publique) a été affecté à l'équilibreur de charge se terminant par.167
. -
Cliquez sur l'icône de réduction pour réduire l'OCI Cloud Shell.
-
-
Copiez l'adresse IP publique et collez-la dans le navigateur Web. Nous pouvons maintenant accéder au serveur Web Nginx qui est déployé sur un conteneur dans Oracle Cloud Infrastructure Container Engine for Kubernetes.
-
Nous pouvons également examiner de plus près ce qui se passe en arrière-plan à l'aide de la console OCI.
-
Cliquez sur Réseau.
-
Cliquez sur équilibreurs de charge.
-
-
Cliquez sur équilibreur de charge.
- Notez qu'un nouvel équilibreur de charge est déployé avec l'adresse IP publique se terminant par
.167
. - Cliquez sur l'équilibreur de charge.
- Notez que l'équilibreur de charge est ACTIF.
- Descendre.
- Consultez les détails de configuration de l'équilibreur de charge déployé.
- Cliquez sur Restaurer pour restaurer Cloud Shell pour OCI.
- Notez qu'un nouvel équilibreur de charge est déployé avec l'adresse IP publique se terminant par
Le diagramme suivant présente une représentation visuelle du déploiement de l'équilibreur de charge. Mettez l'accent sur l'équilibreur de charge.
Tâche 5 : Supprimer l'exemple d'application et les services Kubernetes du type d'équilibreur de charge
Nous avons déployé un exemple d'application et créé un nouveau service de réseau Kubernetes de type équilibreur de charge. Il est temps de nettoyer l'application et le service.
-
Supprimez le service d'équilibrage de charge.
-
Exécutez la commande suivante pour supprimer le service d'équilibreur de charge.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl delete service my-service -n default service "my-service" deleted
-
Notez que le service d'équilibreur de charge a été supprimé.
-
Exécutez la commande suivante pour vérifier que le service d'équilibreur de charge est supprimé.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP,12250/TCP 2d23h iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
-
Notez que le service d'équilibreur de charge est supprimé.
-
-
Retirez l'exemple d'application.
-
Exécutez la commande suivante pour extraire les pods existants.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl get pods NAME READY STATUS RESTARTS AGE nginx-deployment-86dcfdf4c6-fdxgz 1/1 Running 0 36m nginx-deployment-86dcfdf4c6-fqrkh 1/1 Running 0 36m
-
Notez que l'application Nginx est toujours en cours d'exécution.
-
Exécutez la commande suivante pour supprimer le déploiement de l'application Nginx.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl delete deployment nginx-deployment --namespace default deployment.apps "nginx-deployment" deleted
-
Exécutez la commande suivante pour extraire à nouveau les pods existants et vérifier que le déploiement est supprimé.
iwan_hooge@cloudshell:~ (eu-amsterdam-1)$ kubectl get pods No resources found in default namespace. iwan_hooge@cloudshell:~ (eu-amsterdam-1)$
-
Notez que l'application Nginx est supprimée.
-
Cliquez sur l'icône de réduction pour réduire l'OCI Cloud Shell.
- Notez que la console OCI affiche un message indiquant que l'équilibreur de charge est supprimé.
- Cliquer sur Fermer.
-
Notez qu'aucun équilibreur de charge n'est déployé.
Le diagramme suivant présente une représentation visuelle de la suppression de l'équilibreur de charge. Concentrez-vous sur la partie où l'équilibreur de charge n'est plus déployé.
Liens connexes
Confirmation
- Auteur - Iwan Hoogendoorn (spécialiste du réseau OCI)
Autres ressources d'apprentissage
Explorez d'autres laboratoires sur la page docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal YouTube d'Oracle Learning. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.
Use OCI VCN-Native Pods Networking CNI Plugin to Provide Networking Services to Oracle Cloud Infrastructure Container Engine for Kubernetes
F95773-01
March 2024