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.
Configurer Oracle Cloud Infrastructure Container Engine for Kubernetes avec trois noeuds de travail
Présentation
Dans ce tutoriel, nous expliquerons comment configurer une grappe Kubernetes composée du plan de contrôle Kubernetes et du plan de données (groupe 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 que cela fonctionne. Ce tutoriel préparera le terrain pour de futurs tutoriels qui plongeront dans les services de réseau offerts dans Kubernetes pour les applications hébergées dans des conteneurs.
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.
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.
Dans ce tutoriel, nous allons mettre en oeuvre le modèle de déploiement Exemple 3.
Objectifs
- Nous déploierons une grappe de contrôle Kubernetes et des noeuds de travail 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'application 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. En fin de compte, nous allons nettoyer les applications ou les pods. Nous ne déploierons aucun service réseau pour les applications ou les pods gérés par Kubernetes.
Tâche 1 : Créer une nouvelle grappe Kubernetes et vérifier les composants
-
Cliquez sur le menu hamburger.
- Cliquez sur Services de développement.
- Cliquez sur Grappes Kubernetes (OKE).
-
Cliquez sur Créer une grappe.
- Sélectionnez Création rapide.
- Cliquez sur Soumettre.
-
Dans la page Créer une grappe (rapide), entrez les informations suivantes.
- Entrez un nom de grappe.
- Sélectionnez un compartiment.
- Sélectionnez la version de Kubernetes.
- Sélectionnez le point d'extrémité de l'API Kubernetes comme point d'extrémité public.
- Sélectionnez le type de noeud à Gérer.
- Descendre.
- Sélectionnez les noeuds de travail Kubernetes à Travailleurs privés.
- Descendre.
- Conservez le nombre de noeuds (noeuds de travail) par défaut 3.
- Cliquez sur Suivant.
- Vérifiez les paramètres de la grappe.
- Descendre.
- Vérifiez les paramètres des groupes de noeuds.
- Descendre.
- Ne cochez pas la case Créer une grappe de base.
- Cliquez sur Créer une grappe.
-
Vérifiez le statut des différents composants créés.
- Assurez-vous que tout a un chèque vert.
- Cliquer sur Fermer.
- Vérifiez que le statut est Création.
- Descendre.
-
Vérifiez le statut de création de la grappe et du groupe de noeuds. La grappe de contrôle Kubernetes est en cours de création et le groupe de noeuds de travail sera créé ultérieurement.
-
Après quelques minutes, la grappe de contrôle Kubernetes a été créée.
-
Le groupe de noeuds de travail va maintenant être créé.
-
Après quelques minutes, le groupe de noeuds de travail a été créé.
- Cliquez sur Groupes de noeuds.
- Notez que les noeuds de travail du pool sont toujours en cours de création.
- Cliquez sur 3 noeuds de travail.
-
Notez que tous les noeuds ont le statut Non prêt.
-
Au bout de quelques minutes, elles seront prêtes.
La grappe de contrôle et les noeuds de travail Kubernetes 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érifier les composants de grappe Kubernetes déployés dans la console OCI
Lorsque nous utilisons OKE pour créer une grappe Kubernetes, certaines ressources seront créées dans OCI pour prendre en charge ce déploiement.
La première et la plus importante ressource est le réseau en nuage virtuel (VCN). Comme nous avons sélectionné l'option Création rapide, un nouveau VCN dédié à OKE a été créé.
-
Connectez-vous à la console OCI et naviguez jusqu'à Réseau, Réseaux en nuage virtuels (VCN). Vous verrez le nouveau VCN créé. Cliquez sur le VCN.
Dans le VCN, vous verrez trois sous-réseaux, un sous-réseau privé et deux sous-réseaux publics pour prendre en charge le déploiement OKE.
-
Vérifiez les ressources.
- Cliquez sur Blocs ou préfixes CIDR pour vérifier le CIDR du VCN.
- Notez que
10.0.0.0/16
a été affecté par OCI.
- Cliquez sur Tables de routage pour vérifier les tables de routage.
- Notez qu'il existe deux tables de routage créées : route vers des sous-réseaux privés et route vers des sous-réseaux publics.
- Cliquez sur Passerelles Internet pour vérifier la passerelle Internet qui fournira la connectivité Internet à l'aide des sous-réseaux publics vers et depuis Internet.
- Notez qu'il n'y a qu'une seule passerelle Internet.
- Cliquez sur Listes de sécurité pour vérifier les listes de sécurité qui peuvent être des règles de trafic entrant ou sortant afin de protéger la connectivité entre les sous-réseaux.
- Notez qu'il existe trois listes de sécurité, l'une utilisée pour la protection de la connectivité des noeuds de travail Kubernetes, l'autre pour la protection des points d'extrémité d'API Kubernetes et la troisième pour la protection des services Kubernetes.
- Cliquez sur Passerelles NAT pour vérifier la passerelle NAT qui fournira une connectivité Internet à l'aide des sous-réseaux privés vers Internet.
- Notez qu'il n'y a qu'une seule passerelle NAT.
- Cliquez sur Passerelles de service pour vérifier la passerelle de service qui fournira un accès privé à des services Oracle spécifiques, sans exposer les données à une passerelle Internet ou à une passerelle NAT.
- Notez qu'il n'y a qu'une seule passerelle de service.
- Ouvrez la console OCI, cliquez sur le menu hamburger et naviguez jusqu'à Calcul, Instances.
- Notez que trois instances créées seront utilisées en tant que trois noeuds de travail Kubernetes que nous avons spécifiés lors du déploiement.
- Ouvrez la console OCI, cliquez sur le menu hamburger et naviguez jusqu'à Gestion des adresses IP, Adresses IP publiques réservées.
- Notez qu'il existe une adresse IP publique se terminant par
.166
, réservée pour le point d'extrémité de l'API publique Kubernetes.
Si nous plaçons toutes les informations que nous venons de collecter et les plaçons dans un diagramme, le diagramme ressemblera à celui illustré dans l'image suivante.
-
Tables avec détails de configuration pour déployer OKE
-
VCN :
Ressources Le 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 la région dans Oracle Services NetworkOptions DHCP • Type de DNS réglé à Résolveur Internet et VCN -
Sous-réseaux :
Ressources Exemple Sous-réseau public pour le point d'extrémité d'API Kubernetes Objectif : Point d'extrémité de l'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 travail Objet : noeuds de travail ayant 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 : Régional
• Bloc CIDR : 10.96.0.0/16
• Table de routage : oke-private-routetable-IH-OKE-CLUSTER-af593850a
• Accès au sous-réseau : Privé
• Résolution DNS : Sélectionné
• Options DHCP : Par défaut
• Liste de sécurité : S/OSous-réseau public pour les équilibreurs de charge de service Objectif : Équilibreurs de charge ayant 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 :
Ressources Exemple Table de routage pour le sous-réseau de point d'extrémité d'API Kubernetes public Objectif : point d'extrémité de l'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 le sous-réseau de groupes privés Objet : pods de table de routage, 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 le sous-réseau public d'équilibreurs de charge Objectif : 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
-
-
Liste de sécurité des règles pour le sous-réseau de point d'extrémité d'API Kubernetes public
La liste de sécurité
oke-k8sApiEndpoint-quick-IH-OKE-CLUSTER-af593850a
contient les règles de trafic entrant et sortant, comme indiqué dans les tableaux suivants.-
Règles de trafic entrant :
Sans état Source Protocole IP Intervalle de ports sources Intervalle de ports de destination Type et code Autorise Description Non 0.0.0.0/0 TCP Tous 6,443 Trafic TCP pour les ports : 6443 Accès externe au point d'extrémité de l'API Kubernetes Non 10.0.10.0/24 TCP Tous 6,443 Trafic TCP pour les ports : 6443 Communication entre le travailleur Kubernetes et le point d'extrémité de l'API Kubernetes Non 10.0.10.0/24 TCP Tous 12,250 Trafic TCP pour les ports : 12250 Communication entre les noeuds de travail et le plan de contrôle Kubernetes Non 10.0.10.0/24 ICMP 3 4 Trafic ICMP pour : 3, 4 - Destination non joignable : Fragmentation nécessaire mais l'option Ne pas fragmenter a été définie Détection de chemin -
Règles de trafic sortant :
Sans état Destination Protocole IP Intervalle de ports sources Intervalle de ports de destination Type et code Autorise Description Non Tous les services AMS dans Oracle Services Network TCP Tous 443 Trafic TCP pour les ports : 443 HTTPS Permettre la communication du plan de contrôle Kubernetes avec OKE Non 10.0.10.0/24 TCP Tous Tous Trafic TCP pour les ports : Tout Tout le trafic vers les noeuds de travail Non 10.0.10.0/24 ICMP 3 4 Trafic ICMP pour : 3, 4 - Destination non joignable : Fragmentation nécessaire mais l'option Ne pas fragmenter a été définie Détection de chemin
-
-
Règles de sécurité pour le sous-réseau de noeuds de travail privé
La liste de sécurité
oke-nodeseclist-quick-IH-OKE-CLUSTER-af593850a
contient les règles de trafic entrant et sortant, comme indiqué dans les tableaux suivants.Règles de trafic entrant :
Sans état Source Protocole IP Intervalle de ports sources Intervalle de ports de destination Type et code Autorise Description Non 10.0.10.0/24 Tous les protocoles Tout trafic pour tous les ports Permettre aux pods d'un noeud de travail de communiquer avec ceux des autres noeuds de travail Non 10/28 ICMP 3 4 Trafic ICMP pour : 3, 4 - Destination non joignable : Fragmentation nécessaire mais l'option Ne pas fragmenter a été définie Détection de chemin Non 10/28 TCP Tous Tous Trafic TCP pour les ports : Tout Accès TCP à partir du plan de contrôle Kubernetes Non 0.0.0.0/0 TCP Tous 22 Trafic TCP pour les ports : 22 - Protocole de connexion à distance SSH Trafic SSH entrant vers les noeuds de travail Non 10/24 TCP Tous 32,291 Trafic TCP pour les ports : 32291 Non 10/24 TCP Tous 10,256 Trafic TCP pour les ports : 10256 Non 10/24 TCP Tous 31,265 Trafic TCP pour les ports : 31265 Règles de trafic sortant :
Sans état Destination Protocole IP Intervalle de ports sources Intervalle de ports de destination Type et code Autorise Description Non 10.0.10.0/24 Tous les protocoles Tout trafic pour tous les ports Permettre aux pods d'un noeud de travail de communiquer avec ceux des autres noeuds de travail Non 10/28 TCP Tous 6,443 Trafic TCP pour les ports : 6443 Accès au point d'extrémité de l'API Kubernetes Non 10/28 TCP Tous 12,250 Trafic TCP pour les ports : 12250 Communication entre les noeuds de travail et le plan de contrôle Kubernetes Non 10/28 ICMP 3 4 Trafic ICMP pour : 3, 4 - Destination non joignable : Fragmentation nécessaire mais l'option Ne pas fragmenter a été définie Détection de chemin Non Tous les services AMS dans Oracle Services Network TCP Tous 443 Trafic TCP pour les ports : 443 HTTPS Permettre aux nœuds de communiquer avec OKE pour assurer un démarrage correct et un fonctionnement continu Non 0.0.0.0/0 ICMP 3 4 Trafic ICMP pour : 3, 4 - Destination non joignable : Fragmentation nécessaire mais l'option Ne pas fragmenter a été définie Accès ICMP à partir du plan de contrôle Kubernetes Non 0.0.0.0/0 Tous les protocoles Tout trafic pour tous les ports Accès des noeuds de travail à Internet -
Règles de liste de sécurité pour le sous-réseau d'équilibreurs de charge public
La liste de sécurité
oke-svclbseclist-quick-IH-OKE-CLUSTER-af593850a
contient les règles de trafic entrant et sortant, comme indiqué dans les tableaux suivants.-
Règles de trafic entrant :
Sans état Source Protocole IP Intervalle de ports sources Intervalle de ports de destination Type et code Autorise Description Non 0.0.0.0/0 TCP Tous 80 Trafic TCP pour les ports : 80 -
Règles de trafic sortant :
Sans état Destination Protocole IP Intervalle de ports sources Intervalle de ports de destination Type et code Autorise Description Non 10.0.10.0/24 TCP Tous 32,291 Trafic TCP pour les ports : 32291 Non 10.0.10.0/24 TCP Tous 10,256 Trafic TCP pour les ports : 10256 Non 10.0.10.0/24 TCP Tous 31,265 Trafic TCP pour les ports : 31265
-
Tâche 3 : Vérifier que la grappe Kubernetes est en cours d'exécution à l'aide de l'interface de ligne de commande
-
Ouvrez la console OCI, cliquez sur le menu hamburger et naviguez jusqu'à Services de développement, Grappes Kubernetes (OKE). Cliquez sur la grappe Kubernetes créée dans la tâche 1.
- Descendre.
- Cliquez sur Démarrage rapide.
-
Cliquez sur Accéder à la grappe.
- Sélectionnez Accès Cloud Shell.
- Cliquez sur Copier pour copier la commande permettant l'accès à la grappe Kubernetes.
- Cliquez sur Lancer Cloud Shell.
Le diagramme suivant montre comment la connexion sera établie pour effectuer la gestion sur la grappe OKE à l'aide d'OCI Cloud Shell.
-
Cloud Shell pour OCI va démarrer.
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 d'UC.
-
Cliquez sur Fermer pour fermer ce message d'information.
-
Nous sommes prêts à utiliser OCI Cloud Shell pour accéder à la grappe Kubernetes.
-
Collez la commande copiée ci-dessus dans cette tâche.
-
Exécutez la commande suivante pour obtenir des informations sur la grappe Kubernetes.
kubectl cluster-info
-
Exécutez la commande suivante pour obtenir des informations sur les noeuds de travail.
kubectl get nodes
-
Exécutez la commande suivante pour obtenir plus d'informations sur les noeuds de travail.
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 qu'elle est toujours accessible lorsque vous faites défiler l'affichage vers le haut.
- Cliquez sur l'icône de réduction pour réduire la fenêtre OCI Cloud Shell.
-
Cliquez sur Fermer pour fermer la fenêtre Accéder à votre grappe.
La connexion est établie pour effectuer la gestion sur la grappe OKE à l'aide de Cloud Shell pour OCI.
Tâche 4 : Déployer 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 de déploiement d'un exemple d'application.
- Cliquez sur Restaurer pour restaurer la fenêtre Cloud Shell pour OCI.
-
Exécutez la commande suivante pour obtenir la version de Kubernetes.
kubectl version
-
Exécutez la commande suivante pour vérifier les pods ou les applications actuellement déployés.
kubectl get pods
Notez qu'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 les applications actuellement déployés.
kubectl get pods
-
Notez qu'il existe des pods à l'état Exécution. 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
-
Notez que l'application nouvellement déployée n'a aucune adresse IP affectée et que seule la grappe Kubernetes est associée à un service IP de grappe avec une adresse IP interne.
-
Exécutez la commande suivante pour examiner les services attachés (réseau) pour l'application nouvellement déployée.
kubectl get svc ngnix
-
Notez qu'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 du 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 ensemble qui contient toutes les ressources nécessaires pour déployer une application dans une grappe Kubernetes. 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 travail Kubernetes et créez également un nouvel 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 courant (par défaut).
kubectl get pods
-
Notez que seule l'application Nginx apparaît dans l'espace de noms en cours (par défaut). Cette commande affiche maintenant les applications déployées à l'échelle du cluster (tous les espaces de noms).
kubectl get pods -A -w
- Notez que l'application Nginx s'exécute dans l'espace de noms par défaut.
- Notez que l'application MySQL est en cours d'exécution dans le nouvel espace de noms mysql.
Tâche 6 : Nettoyer les pods et les espaces de noms
Nous avons déployé une application dans l'espace de noms par défaut (Nginx) et une autre dans un nouvel espace de noms (MySQL). À l'aide de graphiques Helm, nettoyons l'environnement afin que nous puissions commencer à nouveau chaque fois que nous en avons besoin.
-
Utilisez la commande suivante pour obtenir tous les noeuds de travail (à l'échelle de la grappe).
kubectl get nodes -o wide
-
Utilisez la commande suivante pour obtenir tous les pods en cours d'exécution dans l'espace de noms courant (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 courant (par défaut).
kubectl get pods --namespace=default
-
Exécutez la commande suivante pour obtenir tous les pods en cours d'exécution dans l'espace de noms MySQL en particulier.
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 tous les pods en cours d'exécution dans l'espace de noms MySQL spécifiquement. 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
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.
Set up Oracle Cloud Infrastructure Container Engine for Kubernetes with Three Worker Nodes
F95672-01
March 2024