Note :

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.

Image

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

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 :

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.

  1. 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)$ 
    
  2. Notez que le nom est vcn-native dans la sortie de la section pod.

  3. Notez que le nom est vcn-native dans la sortie de la section daemonset.

Image

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.

  1. 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
    
  2. 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)$
    
  3. Notez que l'application est déployée à l'aide de deux pods.

Image

  1. 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)$ 
    
  2. Notez qu'il existe deux instances, pods ou répliques de l'application Nginx et que le statut est réglé à RUNNING.

Image

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.

Image

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.

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.

Image

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.

Notez qu'aucun équilibreur de charge n'est déployé.

Image

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é.

Image

Confirmation

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.