Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. A la fin de l'exercice, remplacez ces valeurs par des valeurs propres à votre environnement cloud.
Configuration d'Oracle Cloud Infrastructure Container Engine for Kubernetes avec trois noeuds de processus actifs
Introduction
Dans ce tutoriel, nous allons expliquer comment configurer un cluster Kubernetes composé du plan de contrôle Kubernetes et du plan de données (pool de noeuds) à l'aide d'Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE). Nous allons également déployer et supprimer deux exemples d'applications sur la plate-forme Kubernetes pour prouver qu'elle fonctionne. Ce tutoriel préparera le terrain pour les futurs tutoriels qui plongeront dans les services de mise en réseau offerts dans Kubernetes pour les applications hébergées par conteneur.
Les exemples de modèles de déploiement OKE sont les suivants :
-
Exemple 1 : cluster avec un module d'extension CNI de canal, une adresse d'API Kubernetes publique, des noeuds de processus actif privés et des équilibreurs de charge publics.
-
Exemple 2 : cluster avec un module d'extension CNI de canal, une adresse d'API Kubernetes privée, des noeuds de processus actif privés et des équilibreurs de charge publics.
-
Exemple 3 : cluster avec le module d'extension CNI OCI, l'adresse d'API Kubernetes publique, les noeuds de processus actif privés et les équilibreurs de charge publics.
-
Exemple 4 : cluster avec le module d'extension CNI OCI, l'adresse d'API Kubernetes privée, les noeuds de processus actif privés et les équilibreurs de charge publics.
Pour plus d'informations sur les différents modèles de déploiement OKE que nous pouvons choisir, reportez-vous à la section Example Network Resource Configurations.
Dans ce tutoriel, nous implémenterons le modèle de déploiement de l'exemple 3.
Objectifs
- Nous allons déployer un cluster de contrôle Kubernetes et des noeuds de processus actif entièrement déployés et configurés dans Oracle Cloud Infrastructure (OCI). C'est ce que nous appelons Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE). Nous allons déployer deux exemples d'applications dans deux espaces de noms différents où une application sera déployée à l'aide d'un graphique Helm dans un nouvel espace de noms. Au final, nous allons nettoyer les applications ou les pods. Nous ne déploierons aucun service réseau pour les applications ou pods gérés par Kubernetes.
Tâche 1 : création d'un cluster Kubernetes et vérification des composants
-
Cliquez sur le menu.
- Cliquez sur Services de développeur.
- Cliquez sur Clusters Kubernetes (OKE).
-
Cliquez sur Créer un cluster.
- Sélectionnez Création rapide.
- Cliquez sur Soumettre.
-
Sur la page Créer un cluster (rapide), saisissez les informations suivantes.
- Entrez un nom de cluster.
- Sélectionnez un compartiment.
- Sélectionnez la version Kubernetes.
- Sélectionnez l'adresse d'API Kubernetes en tant qu'adresse publique.
- Sélectionnez le type de noeud à gérer.
- Défiler vers le bas.
- Sélectionnez les noeuds de processus actif Kubernetes en tant que processus actifs privés.
- Défiler vers le bas.
- Conservez la valeur par défaut 3 pour le nombre de noeuds (noeuds de processus actif).
- Fournissez les informations relatives au jeu de transport, puis cliquez sur Suivant.
- Vérifiez les paramètres du cluster.
- Défiler vers le bas.
- Vérifiez les paramètres des pools de noeuds.
- Défiler vers le bas.
- Ne cochez pas la case Créer un cluster de base.
- Cliquez sur Créer un cluster.
-
Vérifiez le statut des différents composants créés.
- Assurez-vous que tout a un chèque vert.
- Cliquez sur Fermer.
- Vérifiez que le statut est CREATING.
- Défiler vers le bas.
-
Vérifiez le statut de création du cluster et du pool de noeuds. Le cluster de contrôle Kubernetes est en cours de création et le pool de noeuds de processus actif sera créé ultérieurement.
-
Au bout de quelques minutes, le cluster de contrôle Kubernetes est créé.
-
Le pool de noeuds de processus actif va maintenant être créé.
-
Au bout de quelques minutes, le pool de noeuds de processus actif est créé.
- Cliquez sur Pools de noeuds.
- Notez que les noeuds de processus actif du pool sont toujours en cours de création.
- Cliquez sur 3 noeuds de processus actif.
-
Notez que tous les noeuds ont le statut Non prêt.
-
Après quelques minutes, ils seront prêts.
Le cluster de contrôle Kubernetes et les noeuds de processus actif sont entièrement déployés et configurés dans Oracle Cloud Infrastructure (OCI). C'est ce que nous appelons Oracle Cloud Infrastructure Container Engine for Kubernetes.
Tâche 2 : vérification des composants de cluster Kubernetes déployés dans la console OCI
Lorsque nous utilisons OKE pour créer un cluster Kubernetes, certaines ressources sont créées dans OCI pour prendre en charge ce déploiement.
La première et la plus importante ressource est le réseau cloud virtuel (VCN). Comme nous avons choisi l'option Création rapide, un nouveau VCN dédié à OKE a été créé.
-
Connectez-vous à la console OCI et accédez à Networking, Virtual Cloud Networks (VCN). Vous verrez le nouveau VCN créé. Cliquez sur le VCN.
Dans le VCN, vous verrez trois sous-réseaux, un privé et deux publics pour prendre en charge le déploiement OKE.
-
Vérifiez les ressources.
- Cliquez sur Préfixes/Blcs CIDR pour vérifier le CIDR du VCN.
10.0.0.0/16
a été affecté par OCI.
- Cliquez sur Tables de routage pour consulter les tables de routage.
- Notez que deux tables de routage ont été créées : routage vers des sous-réseaux privés et routage vers des sous-réseaux publics.
- Cliquez sur Passerelles Internet pour passer en revue la passerelle Internet qui fournira la connectivité Internet à l'aide des sous-réseaux publics à destination et en provenance d'Internet.
- Notez qu'il n'existe qu'une seule passerelle Internet.
- Cliquez sur Listes de sécurité pour passer en revue les listes de sécurité pouvant être des règles entrantes ou sortantes afin de protéger la connectivité entre les sous-réseaux.
- Il existe trois listes de sécurité, l'une utilisée pour la protection de la connectivité des noeuds de processus actif Kubernetes, l'autre pour la protection des adresses d'API Kubernetes et l'autre pour la protection des services Kubernetes.
- Cliquez sur Passerelles NAT pour passer en revue la passerelle NAT qui fournira la connectivité Internet à l'aide des sous-réseaux privés vers Internet.
- Notez qu'il n'existe qu'une seule passerelle NAT.
- Cliquez sur Passerelles de service pour passer en revue la passerelle de service qui fournira un accès privé à des services Oracle spécifiques, sans exposer les données à une passerelle Internet ou NAT.
- Notez qu'il n'existe qu'une seule passerelle de service.
- Ouvrez la console OCI, cliquez sur le menu du menu déroulant et accédez à Compute, Instances.
- Trois instances créées seront utilisées en tant que trois noeuds de processus actif Kubernetes que nous avons spécifiés lors du déploiement.
- Ouvrez la console OCI, cliquez sur le menu du menu déroulant et accédez à Gestion des adresses IP, Adresses IP publiques réservées.
- Une adresse IP publique se termine par
.166
et est réservée à l'adresse d'API publique Kubernetes.
Si nous plaçons chaque information que nous venons de collecter et que nous la plaçons dans un diagramme, le diagramme ressemblera à ce qui suit.
-
Tables avec détails de configuration pour déployer OKE
-
VCN :
Ressource Nom VCN • Nom : oke-vcn-quick-IH-OKE-CLUSTER-af593850a
• Bloc CIDR : 10.0.0.0/16
• Résolution DNS : SélectionnéPasserelle Internet • Nom : oke-igw-quick-IH-OKE-CLUSTER-af593850a passerelle NAT • Nom : oke-ngw-quick-IH-OKE-CLUSTER-af593850a passerelle de service • Nom : oke-sgw-quick-IH-OKE-CLUSTER-af593850a
• Services : tous les services de région dans Oracle Services NetworkOptions DHCP • Type de DNS défini sur Internet et Résolveur VCN -
Sous-réseaux :
Ressource Exemple Sous-réseau public pour l'adresse d'API Kubernetes But : Adresse d'API Kubernetes avec les propriétés suivantes :
• Type : Régional
• Bloc CIDR : 10.0.0.0/28
• Table de routage : oke-public-routetable-IH-OKE-CLUSTER-af593850a
• Accès au sous-réseau : Public
• Résolution DNS : Sélectionné
• Options DHCP : Par défaut
• Liste de sécurité : oke-k8sApiEndpoint-quick-IH-OKE-CLUSTER-af593850aSous-réseau privé pour les noeuds de processus actif Objectif : noeuds de travail avec les propriétés suivantes :
• Type : Régional
• Bloc CIDR : 10.0.10.0/24
• Table de routage : S/O
• Accès au sous-réseau : Privé
• Résolution DNS : Sélectionné
• Options DHCP : Par défaut
• Liste de sécurité : oke-nodeseclist-quick-IH-OKE-CLUSTER-af593850aSous-réseau privé pour les pods Objectif : pods avec les propriétés suivantes :
• Type : Regional
• Bloc CIDR : 10.96.0.0/16
• Table de routage : oke-private-routetable-IH-OKE-CLUSTER-af593850a
• Accès au sous-réseau : Private
• Résolution DNS : Selected
• Options DHCP : Default
• Liste de sécurité : N/ASous-réseau public pour les équilibreurs de charge de service Objectif : Equilibreurs de charge avec les propriétés suivantes :
• Type : Régional
• Bloc CIDR : 10.0.20.0/24
• Table de routage : oke-private-routetable-IH-OKE-CLUSTER-af593850a
• Accès au sous-réseau : Public
• Résolution DNS : Sélectionné
• Options DHCP : Par défaut
• Liste de sécurité : oke-svclbseclist-quick-IH-OKE-CLUSTER-af593850a -
Tables de routage :
Ressource Exemple Table de routage pour un sous-réseau d'adresse d'API Kubernetes public Objectif : adresse d'API routetable-Kubernetes, avec une règle de routage définie comme suit :
• Bloc CIDR de destination : 0.0.0.0/0
• Type de cible : passerelle Internet
• Cible : oke-igw-quick-IH-OKE-CLUSTER-af593850aTable de routage pour sous-réseau de pods privés But : routetable-pods, avec deux règles de routage définies comme suit :
• Règle pour le trafic vers Internet :
◦ Bloc CIDR de destination : 0.0.0.0/0
◦ Type de cible : passerelle NAT
◦ Cible : oke-ngw-quick-IH-OKE-CLUSTER-af593850a
• Règle pour le trafic vers les services OCI :
◦ Destination : Tous les services de région dans Oracle Services Network
◦ Type de cible : passerelle de service
◦ Cible : oke-sgw-quick-IH-OKE-CLUSTER-af593850aTable de routage pour un sous-réseau d'équilibreurs de charge public But : routetable-serviceloadbalancers, avec une règle de routage définie comme suit :
• Bloc CIDR de destination : 0.0.0.0/0
• Type de cible : passerelle Internet
• Cible : oke-igw-quick-IH-OKE-CLUSTER-af593850a
-
-
Règles de liste de sécurité pour un sous-réseau d'adresse d'API Kubernetes public
La liste de sécurité
oke-k8sApiEndpoint-quick-IH-OKE-CLUSTER-af593850a
contient les règles entrantes et sortantes, comme indiqué dans les tableaux suivants.-
Règles d'entrée :
Sans conservation de statut Source Protocole IP Plage de ports source Plage de ports de destination Type et code Permet Description No 0.0.0.0/0 TCP Toutes 6 443 Trafic TCP pour les ports : 6443 Accès externe à l'adresse d'API Kubernetes No 10.0.10.0/24 TCP Toutes 6 443 Trafic TCP pour les ports : 6443 Communication entre le processus actif Kubernetes et l'adresse d'API Kubernetes No 10.0.10.0/24 TCP Toutes 12 250 Trafic TCP pour les ports : 12250 Communication entre le processus actif Kubernetes et le plan de contrôle No 10.0.10.0/24 ICMP 3 4 Trafic ICMP pour : 3, 4 Destination inaccessible : la fragmentation est requise et l'option Ne pas fragmenter a été définie Repérage de chemin -
Règles sortantes :
Sans conservation de statut Destination Protocole IP Plage de ports source Plage de ports de destination Type et code Permet Description No Tous les services AMS dans Oracle Services Network TCP Toutes 443 Trafic TCP pour les ports : HTTPS 443 Autoriser le plan de contrôle Kubernetes à communiquer avec OKE No 10.0.10.0/24 TCP Toutes Toutes Trafic TCP pour les ports : Tout Tout le trafic vers les noeuds de processus actif No 10.0.10.0/24 ICMP 3 4 Trafic ICMP pour : 3, 4 Destination inaccessible : la fragmentation est requise et l'option Ne pas fragmenter a été définie Repérage de chemin
-
-
Règles de liste de sécurité pour un sous-réseau de noeuds de processus actif privé
La liste de sécurité
oke-nodeseclist-quick-IH-OKE-CLUSTER-af593850a
contient les règles entrantes et sortantes, comme indiqué dans les tableaux suivants.Règles d'entrée :
Sans conservation de statut Source Protocole IP Plage de ports source Plage de ports de destination Type et code Permet Description No 10.0.10.0/24 Tous les protocoles Tout le trafic pour tous les ports Autoriser les pods sur un noeud de travail à communiquer avec les pods sur d'autres noeuds de travail No 10/28 ICMP 3 4 Trafic ICMP pour : 3, 4 Destination inaccessible : la fragmentation est requise et l'option Ne pas fragmenter a été définie Repérage de chemin No 10/28 TCP Toutes Toutes Trafic TCP pour les ports : Tout Accès TCP à partir du plan de contrôle Kubernetes No 0.0.0.0/0 TCP Toutes 22 Trafic TCP pour les ports : Protocole de connexion distante SSH 22 Trafic SSH entrant vers les noeuds de processus actif No 10/24 TCP Toutes 32 291 Trafic TCP pour les ports : 32291 No 10/24 TCP Toutes 10 256 Trafic TCP pour les ports : 10256 No 10/24 TCP Toutes 31 265 Trafic TCP pour les ports : 31265 Règles sortantes :
Sans conservation de statut Destination Protocole IP Plage de ports source Plage de ports de destination Type et code Permet Description No 10.0.10.0/24 Tous les protocoles Tout le trafic pour tous les ports Autoriser les pods sur un noeud de travail à communiquer avec les pods sur d'autres noeuds de travail No 10/28 TCP Toutes 6 443 Trafic TCP pour les ports : 6443 Accès à l'adresse d'API Kubernetes No 10/28 TCP Toutes 12 250 Trafic TCP pour les ports : 12250 Communication entre le processus actif Kubernetes et le plan de contrôle No 10/28 ICMP 3 4 Trafic ICMP pour : 3, 4 Destination inaccessible : la fragmentation est requise et l'option Ne pas fragmenter a été définie Repérage de chemin No Tous les services AMS dans Oracle Services Network TCP Toutes 443 Trafic TCP pour les ports : HTTPS 443 Autoriser les noeuds à communiquer avec OKE pour garantir le bon démarrage et le bon fonctionnement No 0.0.0.0/0 ICMP 3 4 Trafic ICMP pour : 3, 4 Destination inaccessible : la fragmentation est requise et l'option Ne pas fragmenter a été définie Accès ICMP à partir du plan de contrôle Kubernetes No 0.0.0.0/0 Tous les protocoles Tout le trafic pour tous les ports Accès des noeuds de processus actif à Internet -
Règles de liste de sécurité pour un sous-réseau d'équilibreurs de charge public
La liste de sécurité
oke-svclbseclist-quick-IH-OKE-CLUSTER-af593850a
contient les règles entrantes et sortantes, comme indiqué dans les tableaux suivants.-
Règles d'entrée :
Sans conservation de statut Source Protocole IP Plage de ports source Plage de ports de destination Type et code Permet Description No 0.0.0.0/0 TCP Toutes 80 Trafic TCP pour les ports : 80 -
Règles sortantes :
Sans conservation de statut Destination Protocole IP Plage de ports source Plage de ports de destination Type et code Permet Description No 10.0.10.0/24 TCP Toutes 32 291 Trafic TCP pour les ports : 32291 No 10.0.10.0/24 TCP Toutes 10 256 Trafic TCP pour les ports : 10256 No 10.0.10.0/24 TCP Toutes 31 265 Trafic TCP pour les ports : 31265
-
Tâche 3 : vérifier que le cluster Kubernetes est en cours d'exécution à l'aide de l'interface de ligne de commande
-
Ouvrez la console OCI, cliquez sur le menu déroulant et accédez à Services de développeur, Clusters Kubernetes (OKE). Cliquez sur le cluster Kubernetes créé dans la tâche 1.
- Défiler vers le bas.
- Cliquez sur Démarrage rapide.
-
Cliquez sur Accéder au cluster.
- Sélectionnez Accès à Cloud Shell.
- Cliquez sur Copier pour copier la commande afin d'autoriser l'accès au cluster Kubernetes.
- Cliquez sur Lancer Cloud Shell.
Le diagramme suivant montre comment la connexion sera établie pour effectuer la gestion sur le cluster OKE à l'aide d'OCI Cloud Shell.
-
OCI Cloud Shell démarre.
Certains messages d'information seront affichés sur ce qui se passe en arrière-plan.
Dans ce cas, il est possible de laisser OCI Cloud Shell s'exécuter sur différentes architectures de processeur.
-
Cliquez sur Fermer pour fermer ce message d'information.
-
Nous sommes prêts à utiliser OCI Cloud Shell pour accéder au cluster Kubernetes.
-
Collez la commande copiée ci-dessus dans cette tâche.
-
Exécutez la commande suivante pour obtenir des informations sur le cluster Kubernetes.
kubectl cluster-info
-
Exécutez la commande suivante pour obtenir des informations sur les noeuds de processus actif.
kubectl get nodes
-
Exécutez la commande suivante pour obtenir plus d'informations sur les noeuds de processus actif.
kubectl get nodes -o wide
-
Exécutez la commande suivante pour effacer l'écran et commencer avec un nouvel écran.
clear
- Notez que la sortie précédente a été effacée, mais toujours accessible lorsque vous faites défiler l'affichage vers le haut.
- Cliquez sur l'icône Réduire pour réduire la fenêtre OCI Cloud Shell.
-
Cliquez sur Fermer pour fermer la fenêtre Accéder à votre cluster.
La connexion est établie pour effectuer la gestion sur le cluster OKE à l'aide d'OCI Cloud Shell.
Tâche 4 : déploiement d'un exemple d'application Nginx à l'aide de kubectl
-
Exécutez les commandes suivantes .
- Notez la commande permettant d'obtenir la version de Kubernetes.
- Notez la commande permettant de déployer un exemple d'application.
- Cliquez sur Restaurer pour restaurer la fenêtre OCI Cloud Shell.
-
Exécutez la commande suivante pour obtenir la version de Kubernetes.
kubectl version
-
Exécutez la commande suivante pour vérifier les pods ou applications en cours déployés.
kubectl get pods
Aucune ressource n'a été trouvée.
-
Exécutez la commande suivante pour déployer un nouvel exemple d'application.
kubectl create -f https://k8s.io/examples/application/deployment.yaml
-
Exécutez la commande suivante pour vérifier les pods ou applications en cours déployés.
kubectl get pods
-
Des pods sont à l'état RUNNING. Cela signifie que l'application que nous venons de déployer est en cours d'exécution.
-
Exécutez la commande suivante pour obtenir les adresses IP permettant d'accéder à l'application.
kubectl get deploy,svc
-
Aucune adresse IP n'est affectée à l'application nouvellement déployée et seul le cluster Kubernetes est associé à un service IP de cluster avec une adresse IP interne.
-
Exécutez la commande suivante pour examiner spécifiquement les services (réseau) attachés pour l'application nouvellement déployée.
kubectl get svc ngnix
-
Aucun service (réseau) n'est déployé ou attaché pour l'application Nginx déployée. Pour cette raison, nous ne pourrons pas accéder à l'application à partir d'une autre application ou utiliser le navigateur Web pour accéder à la page Web dans le serveur Web Nginx. Nous en discuterons dans un autre tutoriel.
Tâche 5 : déployer un exemple d'application MySQL à l'aide d'un graphique Helm
-
Un graphique Helm est un package qui contient toutes les ressources nécessaires pour déployer une application vers un cluster Kubernetes. Exécutez les commandes suivantes pour :
-
Ajoutez le référentiel Bitnami pour la base de données MySQL.
helm repo add bitnami https://charts.bitnami.com/bitnami
-
Déployez une base de données MySQL sur les noeuds de processus actif Kubernetes et créez également un espace de noms mysql.
helm install mysql bitnami/mysql -–namespace mysql --create-namespace
-
-
Pour obtenir les applications déployées, exécutez la commande suivante. Cette commande affiche uniquement les applications déployées dans l'espace de noms actuel (par défaut).
kubectl get pods
-
Notez que seule l'application Nginx apparaît dans l'espace de noms actuel (par défaut). Cette commande affiche désormais les applications déployées à l'échelle du cluster (tous les espaces de noms).
kubectl get pods -A -w
- Notez que l'application Nginx est en cours d'exécution dans l'espace de noms par défaut.
- L'application MySQL est exécutée dans le nouvel espace de noms mysql.
Tâche 6 : nettoyage des pods et des espaces de noms
Nous avons déployé une application dans l'espace de noms par défaut (Nginx) et une autre application dans un nouvel espace de noms (MySQL). A l'aide des graphiques Helm, nettoyons l'environnement afin de pouvoir recommencer à zéro à tout moment.
-
Utilisez la commande suivante pour obtenir tous les noeuds de processus actif (à l'échelle du cluster).
kubectl get nodes -o wide
-
Utilisez la commande suivante pour obtenir tous les pods en cours d'exécution dans l'espace de noms actuel (par défaut).
kubectl get pods -o wide
-
Exécutez la commande suivante pour obtenir tous les espaces de noms.
kubectl get namespaces
-
Exécutez la commande suivante pour obtenir spécifiquement tous les pods en cours d'exécution dans l'espace de noms actuel (par défaut).
kubectl get pods --namespace=default
-
Exécutez la commande suivante pour obtenir spécifiquement tous les pods en cours d'exécution dans l'espace de noms MySQL.
kubectl get pods --namespace=mysql
-
Exécutez la commande suivante pour supprimer tous les déploiements ou pods dans l'espace de noms par défaut.
kubectl delete --all deployments --namespace=default
-
Utilisez la commande suivante pour vérifier si les déploiements ou les pods sont supprimés.
kubectl get pods --namespace=default
-
Utilisez la commande suivante pour obtenir spécifiquement tous les pods en cours d'exécution dans l'espace de noms MySQL. Vérifiez simplement si cela existe encore.
kubectl get pods --namespace=mysql
-
Exécutez la commande suivante pour supprimer tous les déploiements ou pods et l'espace de noms MySQL complet.
kubectl delete namespace mysql
-
Utilisez cette commande pour collecter tous les espaces de noms et vérifier si l'espace de noms MySQL est supprimé.
kubectl get namespaces
Remerciements
- Auteur - Iwan Hoogendoorn (spécialiste du réseau OCI)
Ressources de formation supplémentaires
Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, rendez-vous sur education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.
Set up Oracle Cloud Infrastructure Container Engine for Kubernetes with Three Worker Nodes
F95673-01
March 2024