Remarque :

Adapter un cluster Kubernetes sur un environnement natif Oracle Cloud

Introduction

Ce tutoriel explique comment redimensionner un cluster Kubernetes existant dans Oracle Cloud Native Environment.

L'augmentation d'un cluster Kubernetes implique l'ajout de noeuds, ainsi que la réduction en enlevant des noeuds. Les noeuds peuvent être des noeuds de plan de contrôle ou de processus actif. Oracle vous recommande de ne pas augmenter ou réduire le cluster simultanément. Effectuez plutôt une augmentation, puis une réduction, dans deux commandes distinctes.

Pour éviter les scénarios split-brain et conserver le quorum, il est recommandé de redimensionner le plan de contrôle de cluster Kubernetes ou les noeuds de processus actif par nombres impairs. Par exemple, 3, 5 ou 7 noeuds de plan de contrôle ou de processus actif garantissent la fiabilité du cluster.

Ce tutoriel utilise un cluster Kubernetes existant hautement disponible exécuté sur Oracle Cloud Native Environment et dispose de trois modules déployés :

Le déploiement de départ se compose des éléments suivants :

Il s'appuie sur les exercices :

Objectifs

Ce tutoriel/cet atelier explique comment configurer et ajouter deux nouveaux noeuds de plan de contrôle et deux nouveaux noeuds de processus actif au cluster. Le didacticiel montre ensuite comment réduire le cluster en supprimant les mêmes noeuds du cluster.

Dans ce scénario, les certificats d'autorité de certification privés X.509 sont utilisés pour sécuriser la communication entre les noeuds. D'autres méthodes permettent de gérer et de déployer les certificats, par exemple à l'aide du gestionnaire de clés secrètes Vault HashiCorp, ou à l'aide de vos propres certificats, signés par une autorité de certification sécurisée. Ces autres méthodes ne sont pas incluses dans ce tutoriel.

Prérequis

Remarque : si vous utilisez l'environnement d'exercice gratuit, ces prérequis constituent le point de départ.

Outre l'exigence d'un cluster Kubernetes hautement disponible exécuté sur Oracle Cloud Native Environment, les éléments suivants sont nécessaires :

Configurer l'environnement des exercices

Remarque : lorsque vous utilisez l'environnement d'atelier gratuit, reportez-vous à Notions de base des laboratoires Oracle Linux pour obtenir des informations sur la connexion et d'autres instructions d'utilisation.

Informations : l'environnement d'atelier gratuit déploie Oracle Cloud Native Environment sur les noeuds fournis, prêts à créer des environnements. Ce déploiement prend environ 20 à 25 minutes après son lancement. Par conséquent, il se peut que vous souhaitiez vous retirer pendant l'exécution, puis revenir à la fin de l'exercice.

Sauf indication contraire, toutes les étapes de l'environnement d'exercice gratuit peuvent être exécutées à partir du noeud ocne-operator et il est recommandé de commencer par ouvrir une fenêtre de terminal et de se connecter au noeud. Dans une installation multinoeud d'Oracle Cloud Native Environment, les commandes kubectl sont exécutées sur l'opérateur, un noeud de plan de contrôle ou un autre système configuré pour kubectl.

  1. Ouvrez un terminal et connectez-vous via ssh au système ocne-operator.

    ssh oracle@<ip_address_of_ol_node>
    

Installer le module Kubernetes

Important Toutes les opérations, sauf indication contraire, sont exécutées à partir du noeud ocne-operator.

L'environnement d'atelier gratuit crée une installation Oracle Cloud Native Environment hautement disponible au cours du déploiement, y compris la préparation de la configuration de l'environnement et du module.

  1. Affichez le fichier myenvironment.yaml.

    cat ~/myenvironment.yaml
    

    Dans le cadre des exercices pratiques gratuits, le déploiement utilise trois noeuds de plan de contrôle et cinq noeuds de processus actif lors de la création du cluster.

    Exemple de sortie :

    [oracle@ocne-operator ~]$ cat ~/myenvironment.yaml
    environments:
      - environment-name: myenvironment
        globals:
          api-server: 127.0.0.1:8091
          secret-manager-type: file
          olcne-ca-path: /etc/olcne/configs/certificates/production/ca.cert
          olcne-node-cert-path: /etc/olcne/configs/certificates/production/node.cert
          olcne-node-key-path:  /etc/olcne/configs/certificates/production/node.key
        modules:
          - module: kubernetes
            name: mycluster
            args:
              container-registry: container-registry.oracle.com/olcne
              load-balancer: 10.0.0.168:6443
              master-nodes:
                - ocne-control01.lv.vcnf998d566.oraclevcn.com:8090
                - ocne-control02.lv.vcnf998d566.oraclevcn.com:8090
                - ocne-control03.lv.vcnf998d566.oraclevcn.com:8090
              worker-nodes:
                - ocne-worker01.lv.vcnf998d566.oraclevcn.com:8090
                - ocne-worker02.lv.vcnf998d566.oraclevcn.com:8090
                - ocne-worker03.lv.vcnf998d566.oraclevcn.com:8090
                - ocne-worker04.lv.vcnf998d566.oraclevcn.com:8090
                - ocne-worker05.lv.vcnf998d566.oraclevcn.com:8090
              selinux: enforcing
              restrict-service-externalip: true
              restrict-service-externalip-ca-cert: /etc/olcne/configs/certificates/restrict_external_ip/production/ca.cert
              restrict-service-externalip-tls-cert: /etc/olcne/configs/certificates/restrict_external_ip/production/node.cert
              restrict-service-externalip-tls-key: /etc/olcne/configs/certificates/restrict_external_ip/production/node.key
          - module: helm
            name: myhelm
            args:
              helm-kubernetes-module: mycluster      
          - module: oci-ccm
            name: myoci
            oci-ccm-helm-module: myhelm
            oci-use-instance-principals: true
            oci-compartment: ocid1.compartment.oc1..aaaaaaaau2g2k23u6mp3t43ky3i4ky7jpyeiqcdcobpbcb7z6vjjlrdnuufq
            oci-vcn: ocid1.vcn.oc1.eu-frankfurt-1.amaaaaaaw6qx2pia2xkfmnnknpk3jll6emb76gtcza3ttbqqofxmwjb45rka
            oci-lb-subnet1: ocid1.subnet.oc1.eu-frankfurt-1.aaaaaaaawfjs5zrb6wdmg43522a4l5aak5zr6vvkaaa6xogttha2ufsip7fq         
    

    La partie domaine du nom de domaine qualifié complet des noeuds sera unique à chaque déploiement de l'environnement d'exercice gratuit.

  2. Installer le module Kubernetes.

    olcnectl module install --config-file myenvironment.yaml
    

    Remarque : le déploiement de Kubernetes sur les noeuds prend entre 20 et 25 minutes.

    Exemple de sortie :

    [oracle@ocne-operator ~]$ olcnectl module install --config-file myenvironment.yaml
    Modules installed successfully.
    Modules installed successfully.
    Modules installed successfully.
    

    Pourquoi trois réponses Modules installés avec succès ? Eh bien, cela est dû au fait que le fichier myenvironment.yaml utilisé dans cet exemple définit trois modules distincts :

    • - module: kubernetes
    • - module: helm
    • - module: oci-ccm

    Il est important de comprendre cela, car plus tard dans ces étapes, certaines réponses seront également renvoyées trois fois - une fois pour chaque module défini dans le fichier myenvironment.yaml.

  3. Vérifiez le déploiement du module Kubernetes.

    olcnectl module instances --config-file myenvironment.yaml
    

    Exemple de sortie :

    [oracle@ocne-operator ~]$ olcnectl module instances --config-file myenvironment.yaml
    INSTANCE                                        	MODULE    	STATE    
    mycluster                                       	kubernetes	installed
    myhelm                                          	helm      	installed
    myoci                                           	oci-ccm   	installed
    ocne-control01.lv.vcnf998d566.oraclevcn.com:8090	node      	installed
    ocne-control02.lv.vcnf998d566.oraclevcn.com:8090	node      	installed
    ocne-control03.lv.vcnf998d566.oraclevcn.com:8090	node      	installed
    ocne-worker01.lv.vcnf998d566.oraclevcn.com:8090 	node      	installed
    ocne-worker02.lv.vcnf998d566.oraclevcn.com:8090 	node      	installed
    ocne-worker03.lv.vcnf998d566.oraclevcn.com:8090 	node      	installed
    ocne-worker04.lv.vcnf998d566.oraclevcn.com:8090 	node      	installed
    ocne-worker05.lv.vcnf998d566.oraclevcn.com:8090 	node      	installed
    

Configurer kubectl

  1. Configurez la commande kubectl.

    1. Copiez le fichier de configuration à partir de l'un des noeuds du plan de contrôle.

      mkdir -p $HOME/.kube
      ssh -o StrictHostKeyChecking=no 10.0.0.150 "sudo cat /etc/kubernetes/admin.conf" > $HOME/.kube/config
      

      Exemple de sortie :

      [oracle@ocne-operator ~]$ mkdir -p $HOME/.kube
      [oracle@ocne-operator ~]$ ssh -o StrictHostKeyChecking=no 10.0.0.150 "sudo cat /etc/kubernetes/admin.conf" > $HOME/.kube/config
      Warning: Permanently added '10.0.0.150' (ECDSA) to the list of known hosts.
      
    2. Exportez la configuration en vue d'une utilisation par la commande kubectl.

      sudo chown $(id -u):$(id -g) $HOME/.kube/config
      export KUBECONFIG=$HOME/.kube/config
      echo 'export KUBECONFIG=$HOME/.kube/config' >> $HOME/.bashrc
      
  2. Vérifiez que kubectl fonctionne.

    kubectl get nodes
    

    Exemple de sortie :

    [oracle@ocne-operator ~]$ kubectl get nodes
    NAME             STATUS   ROLES                  AGE   VERSION
    ocne-control01   Ready    control-plane,master   17m   v1.23.7+1.el8
    ocne-control02   Ready    control-plane,master   16m   v1.23.7+1.el8
    ocne-control03   Ready    control-plane,master   15m   v1.23.7+1.el8
    ocne-worker01    Ready    <none>                 16m   v1.23.7+1.el8
    ocne-worker02    Ready    <none>                 15m   v1.23.7+1.el8
    ocne-worker03    Ready    <none>                 14m   v1.23.7+1.el8
    ocne-worker04    Ready    <none>                 15m   v1.23.7+1.el8
    ocne-worker05    Ready    <none>                 15m   v1.23.7+1.el8
    [oracle@ocne-operator ~]$
    

Confirmation que le module Oracle Cloud Infrastructure Cloud Controller Manager est prêt

Avant de continuer, il est important d'attendre que le module Oracle Cloud Infrastructure Cloud Controller Manager établisse la communication avec l'API OCI. Le module Oracle Cloud Infrastructure Cloud Controller Manager exécute un pod sur chaque noeud qui gère des fonctionnalités telles que l'attachement du stockage de blocs. Une fois installé, ce contrôleur empêche toute programmation de pods tant que ce pod dédié ne confirme pas son initialisation, son exécution et sa communication avec l'API OCI. Tant que cette communication n'est pas établie, toute tentative de poursuite risque d'empêcher Kubernetes de réussir à utiliser le stockage cloud ou les équilibreurs de charge.

  1. Extrayez le statut des pods oci-cloud-controller-manager du composant.

    kubectl -n kube-system get pods -l component=oci-cloud-controller-manager
    

    Exemple de sortie :

    [[oracle@ocne-operator ~]$ kubectl -n kube-system get pods -l component=oci-cloud-controller-manager
    NAME                                 READY   STATUS    RESTARTS      AGE
    oci-cloud-controller-manager-9d9gh   1/1     Running   1 (48m ago)   50m
    oci-cloud-controller-manager-jqzs6   1/1     Running   0             50m
    oci-cloud-controller-manager-xfm9w   1/1     Running   0             50m
    
  2. Extrayez le statut des pods du rôle csi-oci.

    kubectl -n kube-system get pods -l role=csi-oci
    

    Exemple de sortie :

    [[oracle@ocne-operator ~]$ kubectl -n kube-system get pods -l role=csi-oci
    NAME                                  READY   STATUS             RESTARTS      AGE
    csi-oci-controller-7fcbddd746-2hb5c   4/4     Running            2 (50m ago)   51m
    csi-oci-node-7jd6t                    3/3     Running            0             51m
    csi-oci-node-fc5x5                    3/3     Running            0             51m
    csi-oci-node-jq8sm                    3/3     Running            0             51m
    csi-oci-node-jqkvl                    3/3     Running            0             51m
    csi-oci-node-jwq8g                    3/3     Running            0             51m
    csi-oci-node-jzxqt                    3/3     Running            0             51m
    csi-oci-node-rmmmb                    3/3     Running            0             51m
    csi-oci-node-zc287                    1/3     Running            0             51m
    

Remarque : attendez que ces deux commandes indiquent à STATUS la valeur Running avant de continuer.

Si les valeurs figurant sous la colonne READY n'affichent pas tous les conteneurs comme démarrés et que celles figurant sous la colonne STATUS n'affichent pas Running au bout de 15 minutes, redémarrez l'exercice.

(Facultatif) Configuration des nouveaux noeuds Kubernetes

Remarque : les étapes de cette section ne sont pas requises dans l'environnement d'exercice gratuit car elles ont déjà été effectuées lors du déploiement initial de l'exercice. Passez à la section suivante et continuez à partir de là.

Lors de l'augmentation (ajout de noeuds), tous les nouveaux noeuds nécessitent que tous les prérequis répertoriés dans la section Prerequisites de ce tutoriel soient respectés.

Dans ce tutoriel/atelier, les noeuds ocne-control04 et ocne-control05 sont les nouveaux noeuds de plan de contrôle, tandis que les noeuds ocne-worker06 et ocne-worker07 sont les nouveaux noeuds de processus actif. Outre les prérequis, ces nouveaux noeuds nécessitent l'installation et l'activation de l'agent de plate-forme Oracle Cloud Native Environment.

  1. Installez et activez l'agent de plate-forme.

    sudo dnf install olcne-agent olcne-utils
    sudo systemctl enable olcne-agent.service
    
  2. Si vous utilisez un serveur proxy, configurez-le avec CRI-O. Sur chaque noeud Kubernetes, créez un répertoire de configuration CRI-O systemd. Créez un fichier nommé proxy.conf dans le répertoire et ajoutez les informations du serveur proxy.

    sudo mkdir /etc/systemd/system/crio.service.d
    sudo vi /etc/systemd/system/crio.service.d/proxy.conf
    
  3. Remplacez les valeurs de proxy appropriées pour ceux de l'environnement à l'aide de l'exemple de fichier proxy.conf :

    [Service]
    Environment="HTTP_PROXY=proxy.example.com:80"
    Environment="HTTPS_PROXY=proxy.example.com:80"
    Environment="NO_PROXY=.example.com,192.0.2.*"
    
  4. Si le service docker ou containerd est en cours d'exécution, arrêtez-le et désactivez-le.

    sudo systemctl disable --now docker.service
    sudo systemctl disable --now containerd.service
    

Configurer des certificats d'autorité de certification privés X.509

Configurez des certificats d'autorité de certification privée X.509 pour les nouveaux noeuds de plan de contrôle et les noeuds de processus actif.

  1. Créez une liste de noeuds.

    VAR1=$(hostname -d)
    for NODE in 'ocne-control04' 'ocne-control05' 'ocne-worker06' 'ocne-worker07'; do VAR2+="${NODE}.$VAR1,"; done
    VAR2=${VAR2%,}
    

    Le script bash fourni extrait le nom de domaine du noeud opérateur et crée une liste séparée par des virgules des noeuds à ajouter au cluster lors de la procédure d'augmentation.

  2. Générez une autorité de certification privée et un ensemble de certificats pour les nouveaux noeuds.

    Utilisez l'option --byo-ca-cert pour spécifier l'emplacement du certificat CA existant et l'option --byo-ca-key pour spécifier l'emplacement de la clé CA existante. Utilisez l'option --nodes et fournissez le nom de domaine qualifié complet du nouveau plan de contrôle et des noeuds de processus actif.

    cd /etc/olcne
    sudo ./gen-certs-helper.sh \
    --cert-dir /etc/olcne/configs/certificates/ \
    --byo-ca-cert /etc/olcne/configs/certificates/production/ca.cert \
    --byo-ca-key /etc/olcne/configs/certificates/production/ca.key \
    --nodes $VAR2
    

    Exemple de sortie :

    [oracle@ocne-operator ~]$ cd /etc/olcne
    [oracle@ocne-operator olcne]$ sudo ./gen-certs-helper.sh \
    > --cert-dir /etc/olcne/configs/certificates/ \
    > --byo-ca-cert /etc/olcne/configs/certificates/production/ca.cert \
    > --byo-ca-key /etc/olcne/configs/certificates/production/ca.key \
    > --nodes $VAR2
    [INFO] Generating certs for ocne-control04.lv.vcnf998d566.oraclevcn.com
    Generating RSA private key, 2048 bit long modulus (2 primes)
    .............................+++++
    ....................+++++
    e is 65537 (0x010001)
    Signature ok
    subject=C = US, ST = North Carolina, L = Whynot, O = your-company, OU = private cloud, CN = example.com
    Getting CA Private Key
    [INFO] Generating certs for ocne-control05.lv.vcnf998d566.oraclevcn.com
    Generating RSA private key, 2048 bit long modulus (2 primes)
    ...+++++
    ...........................................................+++++
    e is 65537 (0x010001)
    Signature ok
    subject=C = US, ST = North Carolina, L = Whynot, O = your-company, OU = private cloud, CN = example.com
    Getting CA Private Key
    [INFO] Generating certs for ocne-worker06.lv.vcnf998d566.oraclevcn.com
    Generating RSA private key, 2048 bit long modulus (2 primes)
    ......+++++
    .......................+++++
    e is 65537 (0x010001)
    Signature ok
    subject=C = US, ST = North Carolina, L = Whynot, O = your-company, OU = private cloud, CN = example.com
    Getting CA Private Key
    [INFO] Generating certs for ocne-worker07.lv.vcnf998d566.oraclevcn.com
    Generating RSA private key, 2048 bit long modulus (2 primes)
    ....................................................................................+++++
    .................................+++++
    e is 65537 (0x010001)
    Signature ok
    subject=C = US, ST = North Carolina, L = Whynot, O = your-company, OU = private cloud, CN = example.com
    Getting CA Private Key
    -----------------------------------------------------------
    Script To Transfer Certs: /etc/olcne/configs/certificates/olcne-tranfer-certs.sh
    -----------------------------------------------------------
    [SUCCESS] Generated certs and file transfer script!
    [INFO]    CA Cert: /etc/olcne/configs/certificates/production/ca.key
    [INFO]    CA Key:  /etc/olcne/configs/certificates/production/ca.cert
    [WARNING] The CA Key is the only way to generate more certificates, ensure it is stored in long term storage
    [USER STEP #1]    Please ensure you have ssh access from this machine to: ocne-control04.lv.vcnf998d566.oraclevcn.com,ocne-control05.lv.vcnf998d566.oraclevcn.com,ocne-worker06.lv.vcnf998d566.oraclevcn.com,ocne-worker07.lv.vcnf998d566.oraclevcn.com
    

Certificats de transfert

Transférez les certificats nouvellement créés à partir du noeud opérateur vers tous les nouveaux noeuds.

  1. Mettez à jour les détails de l'utilisateur dans le script de transfert fourni.

    sudo sed -i 's/USER=opc/USER=oracle/g' configs/certificates/olcne-tranfer-certs.sh
    

    Remarque : le tutoriel requiert cette étape car l'utilisateur par défaut du script est opc. Dans la mesure où ce tutoriel et l'environnement d'exercice gratuit installent le produit à l'aide de l'utilisateur oracle, mettez à jour la variable USER dans le script en conséquence.

  2. Mettez à jour les droits d'accès pour chaque node.key généré par le script de création de certificat.

    sudo chmod 644 /etc/olcne/configs/certificates/tmp-olcne/ocne-control*/node.key
    sudo chmod 644 /etc/olcne/configs/certificates/tmp-olcne/ocne-operator*/node.key
    sudo chmod 644 /etc/olcne/configs/certificates/tmp-olcne/ocne-worker*/node.key
    
  3. Transférez les certificats à chacun des nouveaux noeuds.

    Remarque Cette étape nécessite la configuration de SSH sans mot de passe entre les noeuds. Cette configuration n'est pas traitée dans ce didacticiel, mais elle est préconfigurée dans l'environnement d'exercice gratuit.

    bash -ex /etc/olcne/configs/certificates/olcne-tranfer-certs.sh
    

Configuration de l'agent de plate-forme pour qu'il utilise les certificats

Configurez l'agent de plate-forme sur chaque nouveau noeud pour utiliser les certificats copiés à l'étape précédente. Cette tâche est effectuée à partir du noeud opérateur en exécutant la commande sur ssh.

  1. Configurez le noeud ocne-control04.

    ssh -o StrictHostKeyChecking=no ocne-control04 'sudo /etc/olcne/bootstrap-olcne.sh \
    --secret-manager-type file \
    --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    --olcne-component agent'
    

    Exemple de sortie :

    [oracle@ocne-operator olcne]$ ssh -o StrictHostKeyChecking=no ocne-control04 'sudo /etc/olcne/bootstrap-olcne.sh \
    > --secret-manager-type file \
    > --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    > --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    > --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    > --olcne-component agent'
    Warning: Permanently added 'ocne-control04,10.0.0.153' (ECDSA) to the list of known hosts.
    ��� olcne-agent.service - Agent for Oracle Linux Cloud Native Environments
       Loaded: loaded (/usr/lib/systemd/system/olcne-agent.service; enabled; vendor preset: disabled)
      Drop-In: /etc/systemd/system/olcne-agent.service.d
               ������10-auth.conf
       Active: active (running) since Tue 2022-08-30 15:29:37 GMT; 2s ago
     Main PID: 152809 (olcne-agent)
        Tasks: 8 (limit: 202294)
       Memory: 11.1M
       CGroup: /system.slice/olcne-agent.service
               ������152809 /usr/libexec/olcne-agent --secret-manager-type file --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key
    
    Aug 30 15:29:37 ocne-control04 systemd[1]: Started Agent for Oracle Linux Cloud Native Environments.
    Aug 30 15:29:37 ocne-control04 olcne-agent[152809]: time=30/08/22 15:29:37 level=info msg=Started server on[::]:8090
    
  2. Configurez le noeud ocne-control05.

    ssh -o StrictHostKeyChecking=no ocne-control05 'sudo /etc/olcne/bootstrap-olcne.sh \
    --secret-manager-type file \
    --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    --olcne-component agent'
    

    Exemple de sortie :

    [oracle@ocne-operator olcne]$ ssh -o StrictHostKeyChecking=no ocne-control05 'sudo /etc/olcne/bootstrap-olcne.sh \
    > --secret-manager-type file \
    > --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    > --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    > --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    > --olcne-component agent'
    Warning: Permanently added 'ocne-control05,10.0.0.154' (ECDSA) to the list of known hosts.
    ��� olcne-agent.service - Agent for Oracle Linux Cloud Native Environments
      Loaded: loaded (/usr/lib/systemd/system/olcne-agent.service; enabled; vendor preset: disabled)
      Drop-In: /etc/systemd/system/olcne-agent.service.d
               ������10-auth.conf
       Active: active (running) since Tue 2022-08-30 15:34:13 GMT; 2s ago
     Main PID: 153413 (olcne-agent)
        Tasks: 7 (limit: 202294)
       Memory: 9.1M
       CGroup: /system.slice/olcne-agent.service
               ������153413 /usr/libexec/olcne-agent --secret-manager-type file --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key
    
    Aug 30 15:34:13 ocne-control05 systemd[1]: olcne-agent.service: Succeeded.
    Aug 30 15:34:13 ocne-control05 systemd[1]: Stopped Agent for Oracle Linux Cloud Native Environments.
    Aug 30 15:34:13 ocne-control05 systemd[1]: Started Agent for Oracle Linux Cloud Native Environments.
    Aug 30 15:34:13 ocne-control05 olcne-agent[153413]: time=30/08/22 15:34:13 level=info msg=Started server on[::]:8090
    
  3. Configurez le noeud ocne-worker06.

    ssh -o StrictHostKeyChecking=no ocne-worker06 'sudo /etc/olcne/bootstrap-olcne.sh \
    --secret-manager-type file \
    --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    --olcne-component agent'
    

    Exemple de sortie :

    [oracle@ocne-operator olcne]$ ssh -o StrictHostKeyChecking=no ocne-worker06 'sudo /etc/olcne/bootstrap-olcne.sh \
    > --secret-manager-type file \
    > --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    > --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    > --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    > --olcne-component agent'
    Warning: Permanently added 'ocne-worker06,10.0.0.165' (ECDSA) to the list of known hosts.
    ��� olcne-agent.service - Agent for Oracle Linux Cloud Native Environments
       Loaded: loaded (/usr/lib/systemd/system/olcne-agent.service; enabled; vendor preset: disabled)
      Drop-In: /etc/systemd/system/olcne-agent.service.d
               ������10-auth.conf
       Active: active (running) since Tue 2022-08-30 15:41:08 GMT; 2s ago
     Main PID: 153988 (olcne-agent)
        Tasks: 8 (limit: 202294)
       Memory: 5.2M
       CGroup: /system.slice/olcne-agent.service
               ������153988 /usr/libexec/olcne-agent --secret-manager-type file --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key
    
    Aug 30 15:41:08 ocne-worker06 systemd[1]: Started Agent for Oracle Linux Cloud Native Environments.
    Aug 30 15:41:08 ocne-worker06 olcne-agent[153988]: time=30/08/22 15:41:08 level=info msg=Started server on[::]:8090
    
  4. Configurez le noeud ocne-worker07.

    ssh -o StrictHostKeyChecking=no ocne-worker07 'sudo /etc/olcne/bootstrap-olcne.sh \
    --secret-manager-type file \
    --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    --olcne-component agent'
    

    Exemple de sortie :

    [oracle@ocne-operator olcne]$ ssh -o StrictHostKeyChecking=no ocne-worker07 'sudo /etc/olcne/bootstrap-olcne.sh \
    > --secret-manager-type file \
    > --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    > --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    > --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    > --olcne-component agent'
    Warning: Permanently added 'ocne-worker07,10.0.0.166' (ECDSA) to the list of known hosts.
    ��� olcne-agent.service - Agent for Oracle Linux Cloud Native Environments
       Loaded: loaded (/usr/lib/systemd/system/olcne-agent.service; enabled; vendor preset: disabled)
      Drop-In: /etc/systemd/system/olcne-agent.service.d
               ������10-auth.conf
       Active: active (running) since Tue 2022-08-30 15:43:23 GMT; 2s ago
     Main PID: 154734 (olcne-agent)
        Tasks: 8 (limit: 202294)
       Memory: 9.1M
       CGroup: /system.slice/olcne-agent.service
               ������154734 /usr/libexec/olcne-agent --secret-manager-type file --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key
    
    Aug 30 15:43:23 ocne-worker07 systemd[1]: olcne-agent.service: Succeeded.
    Aug 30 15:43:23 ocne-worker07 systemd[1]: Stopped Agent for Oracle Linux Cloud Native Environments.
    Aug 30 15:43:23 ocne-worker07 systemd[1]: Started Agent for Oracle Linux Cloud Native Environments.
    Aug 30 15:43:23 ocne-worker07 olcne-agent[154734]: time=30/08/22 15:43:23 level=info msg=Started server on[::]:8090
    

Accès à l'équilibreur de charge OCI et visualisation des back-ends

Etant donné que la définition de plusieurs noeuds pour le plan de contrôle Kubernetes nécessite un équilibreur de charge, il est intéressant de connaître la configuration automatique lors du déploiement de l'environnement d'atelier gratuit. Les trois noeuds déployés et configurés sont affichés lorsque l'exercice est créé avec le statut Healthy et les deux noeuds ajoutés aux étapes à venir avec le statut Critical.

  1. Passer du terminal au bureau Luna

  2. Ouvrez la page de détails du Luna Lab à l'aide de l'icône Luna Lab.

  3. Cliquez sur le lien Console OCI.

    lien oci

  4. La page de connexion à la console Oracle Cloud s'affiche.

    connexion à la console

  5. Entrez User Name et Password (situés dans l'onglet Luna Lab de la section Informations d'identification).

    dés-pw

  6. Cliquez sur le menu latéral (en haut à gauche), puis sur Fonctions de réseau et Equilibreurs de charge.

    sélection-réseau

  7. La page Equilibreurs de charge apparaît.

    équilibrage de charge

  8. Localisez le compartiment utilisé dans la liste déroulante.

    compartiment oci

  9. Cliquez sur l'équilibreur de charge répertorié dans la table (ocne-load-balancer).

    équilibrage de charge

  10. Faites défiler la page vers le bas et cliquez sur le lien vers Ensembles de back-ends (sur le côté gauche de la section Ressources).

    Ensemble de back-ends

  11. La table Ensembles de back-ends apparaît. Cliquez sur le lien ocne-lb-backend-set dans la colonne Nom.

    équilibrage de charge

  12. Cliquez sur le lien vers les back-ends (à gauche dans la section Ressources).

    lien backend

  13. Les back-ends représentant les noeuds de plan de contrôle sont affichés.

    Remarque : deux des noeuds back-end présentent l'état Critique - échec de la connexion car ces noeuds ne font pas encore partie du cluster de plan de contrôle Kubernetes. Gardez cet onglet de navigateur ouvert, car nous vérifierons à nouveau le statut des noeuds back-end une fois les étapes de redimensionnement terminées.

    table back-end

Affichage des noeuds Kubernetes

Vérifiez les noeuds Kubernetes actuellement disponibles dans le cluster. Il existe trois noeuds de plan de contrôle et cinq noeuds de processus actif.

  1. Vérifiez que tous les noeuds ont le statut READY.

    kubectl get nodes
    

    Exemple de sortie :

    [oracle@ocne-operator olcne]$ kubectl get nodes
    NAME             STATUS   ROLES                  AGE     VERSION
    ocne-control01   Ready    control-plane,master   5h15m   v1.23.7+1.el8
    ocne-control02   Ready    control-plane,master   5h14m   v1.23.7+1.el8
    ocne-control03   Ready    control-plane,master   5h13m   v1.23.7+1.el8
    ocne-worker01    Ready    <none>                 5h14m   v1.23.7+1.el8
    ocne-worker02    Ready    <none>                 5h13m   v1.23.7+1.el8
    ocne-worker03    Ready    <none>                 5h12m   v1.23.7+1.el8
    ocne-worker04    Ready    <none>                 5h13m   v1.23.7+1.el8
    ocne-worker05    Ready    <none>                 5h14m   v1.23.7+1.el8
    

Ajouter un plan de contrôle et des noeuds de processus actif au fichier de configuration de déploiement

Ajoutez le nom de domaine qualifié complet et le port d'accès de l'agent de plate-forme (8090) à tous les noeuds de plan de contrôle et de processus actif à ajouter au cluster.

Modifiez le fichier de configuration du déploiement YAML pour inclure les nouveaux noeuds de cluster. Ajoutez les noeuds de plan de contrôle sous la section master-nodes tout en ajoutant les noeuds de processus actif à la section worker-node.

Le nom du fichier de configuration dans ce tutoriel est myenvironment.yaml et inclut actuellement trois plans de contrôle et cinq noeuds de processus actif.

  1. Vérifiez que l'environnement actuel utilise trois noeuds de plan de contrôle et cinq noeuds de processus actif.

    cat ~/myenvironment.yaml
    

    Exemple de sortie :

    ...
              master-nodes:
                - ocne-control01.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control02.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control03.lv.vcneea798df.oraclevcn.com:8090
              worker-nodes:
                - ocne-worker01.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker02.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker03.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker04.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker05.lv.vcneea798df.oraclevcn.com:8090
    ...
    
  2. Ajoutez le nouveau plan de contrôle et les noeuds de processus actif au fichier myenvironment.yaml.

    cd ~
    sed -i '19 i \            - ocne-control04.'"$(hostname -d)"':8090' ~/myenvironment.yaml
    sed -i '20 i \            - ocne-control05.'"$(hostname -d)"':8090' ~/myenvironment.yaml
    sed -i '27 i \            - ocne-worker06.'"$(hostname -d)"':8090' ~/myenvironment.yaml
    sed -i '28 i \            - ocne-worker07.'"$(hostname -d)"':8090' ~/myenvironment.yaml
    
  3. Vérifiez que le plan de contrôle et les noeuds de processus actif ont été ajoutés au fichier myenvironment.yaml.

    cat ~/myenvironment.yaml
    

    Exemple d'extrait :

    ...
              master-nodes:
                - ocne-control01.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control02.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control03.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control04.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control05.lv.vcneea798df.oraclevcn.com:8090
              worker-nodes:
                - ocne-worker01.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker02.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker03.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker04.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker05.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker06.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker07.lv.vcneea798df.oraclevcn.com:8090   
    ...
    

Le fichier de configuration inclut désormais les nouveaux noeuds de plan de contrôle (ocne-control04 et ocne-control05) et les nouveaux noeuds de processus actif (ocne-worker06 et ocne-worker07). Cela représente tous les noeuds de processus actif et de plan de contrôle qui doivent se trouver dans le cluster une fois l'augmentation terminée.

Augmenter le plan de contrôle et les noeuds de processus actif

  1. Exécutez la commande module update.

    Utilisez la commande olcnectl module update avec l'option --config-file pour indiquer l'emplacement du fichier de configuration. Le serveur d'API de plate-forme valide le fichier de configuration avec l'état du cluster et reconnaît que d'autres noeuds doivent être ajoutés au cluster. A l'invite, répondez y.

    Remarque : il y aura un délai entre les invites dans la fenêtre de terminal lors de la mise à jour de chacun des modules. Dans l'environnement d'exercice gratuit, ce délai peut aller jusqu'à 10-15 minutes.

    olcnectl module update --config-file myenvironment.yaml
    

    Exemple de sortie :

    [oracle@ocne-operator ~]$ olcnectl module update --config-file myenvironment.yaml
    ? [WARNING] Update will shift your workload and some pods will lose data if they rely on local storage. Do you want to continue? Yes
    Taking backup of modules before update
    Backup of modules succeeded.
    Updating modules
    Update successful
    ? [WARNING] Update will shift your workload and some pods will lose data if they rely on local storage. Do you want to continue? Yes
    Taking backup of modules before update
    Backup of modules succeeded.
    Updating modules
    Update successful
    ? [WARNING] Update will shift your workload and some pods will lose data if they rely on local storage. Do you want to continue? Yes
    Taking backup of modules before update
    Backup of modules succeeded.
    Updating modules
    Update successful
    
  2. (Dans la console cloud), vérifiez que l'ensemble de back-ends de l'équilibreur de charge affiche cinq noeuds de back-end en bon état.

    lb-santé

  3. Vérifiez que le nouveau plan de contrôle et les noeuds de processus actif ont été ajoutés au cluster.

    kubectl get nodes
    

    Exemple de sortie :

    [oracle@ocne-operator ~]$ kubectl get nodes
    NAME             STATUS   ROLES                  AGE   VERSION
    ocne-control01   Ready    control-plane,master   99m   v1.23.7+1.el8
    ocne-control02   Ready    control-plane,master   97m   v1.23.7+1.el8
    ocne-control03   Ready    control-plane,master   96m   v1.23.7+1.el8
    ocne-control04   Ready    control-plane,master   13m   v1.23.7+1.el8
    ocne-control05   Ready    control-plane,master   12m   v1.23.7+1.el8
    ocne-worker01    Ready    <none>                 99m   v1.23.7+1.el8
    ocne-worker02    Ready    <none>                 98m   v1.23.7+1.el8
    ocne-worker03    Ready    <none>                 98m   v1.23.7+1.el8
    ocne-worker04    Ready    <none>                 98m   v1.23.7+1.el8
    ocne-worker05    Ready    <none>                 98m   v1.23.7+1.el8
    ocne-worker06    Ready    <none>                 13m   v1.23.7+1.el8
    ocne-worker07    Ready    <none>                 13m   v1.23.7+1.el8
    

    Les nouveaux noeuds de plan de contrôle (ocne-control04 et ocne-control05) et les nouveaux noeuds de processus actif (ocne-work06 et ocne-worker07) sont désormais inclus dans le cluster. Ainsi, l'opération d'augmentation a fonctionné.

Réduction des noeuds de plan de contrôle

Pour démontrer que le plan de contrôle et les noeuds de processus actif peuvent évoluer indépendamment, il suffit de réduire (supprimer) les noeuds de plan de contrôle au cours de cette étape.

  1. Vérifiez que l'environnement actuel utilise cinq noeuds de plan de contrôle et sept noeuds de processus actif.

    cat ~/myenvironment.yaml
    

    Exemple de sortie :

    ...
              master-nodes:
                - ocne-control01.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control02.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control03.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control04.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control05.lv.vcneea798df.oraclevcn.com:8090
              worker-nodes:
                - ocne-worker01.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker02.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker03.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker04.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker05.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker06.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker07.lv.vcneea798df.oraclevcn.com:8090
    ...
    
  2. Pour réduire le cluster aux trois plans de contrôle d'origine, enlevez les noeuds de plan de contrôle ocne-control04 et ocne-control05 du fichier de configuration.

    sed -i '19d;20d' ~/myenvironment.yaml
    
  3. Vérifiez que le fichier de configuration ne contient plus que trois noeuds de plan de contrôle et les sept noeuds de processus actif.

    cat ~/myenvironment.yaml
    

    Exemple d'extrait :

    ...
              master-nodes:
                - ocne-control01.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control02.lv.vcneea798df.oraclevcn.com:8090
                - ocne-control03.lv.vcneea798df.oraclevcn.com:8090
              worker-nodes:
                - ocne-worker01.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker02.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker03.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker04.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker05.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker06.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker07.lv.vcneea798df.oraclevcn.com:8090
    ...
    
  4. Supprimez le message d'avertissement de mise à jour du module.

    Il est possible d'éviter et de supprimer l'invite de confirmation lors de la mise à jour du module en ajoutant la directive force: true au fichier de configuration. Cette directive doit être placée immédiatement sous la directive name: <xxxx> pour chaque module défini.

    cd ~
    sed -i '12 i \        force: true' ~/myenvironment.yaml
    sed -i '35 i \        force: true' ~/myenvironment.yaml
    sed -i '40 i \        force: true' ~/myenvironment.yaml
    
  5. Vérifiez que le fichier de configuration contient désormais la directive force: true.

    cat ~/myenvironment.yaml
    

    Exemple d'extrait :

    [oracle@ocne-operator ~]$ cat ~/myenvironment.yaml
    environments:
      - environment-name: myenvironment
        globals:
          api-server: 127.0.0.1:8091
          secret-manager-type: file
          olcne-ca-path: /etc/olcne/configs/certificates/production/ca.cert
          olcne-node-cert-path: /etc/olcne/configs/certificates/production/node.cert
          olcne-node-key-path:  /etc/olcne/configs/certificates/production/node.key
        modules:
          - module: kubernetes
            name: mycluster
            force: true
            args:
              container-registry: container-registry.oracle.com/olcne
              load-balancer: 10.0.0.18:6443
              master-nodes:
                - ocne-control01.lv.vcn1174e41d.oraclevcn.com:8090
                - ocne-control02.lv.vcn1174e41d.oraclevcn.com:8090
                - ocne-control03.lv.vcn1174e41d.oraclevcn.com:8090
              worker-nodes:
                - ocne-worker01.lv.vcn1174e41d.oraclevcn.com:8090
                - ocne-worker02.lv.vcn1174e41d.oraclevcn.com:8090
                - ocne-worker03.lv.vcn1174e41d.oraclevcn.com:8090
                - ocne-worker04.lv.vcn1174e41d.oraclevcn.com:8090
                - ocne-worker05.lv.vcn1174e41d.oraclevcn.com:8090
                - ocne-worker06.lv.vcneea798df.oraclevcn.com:8090
                - ocne-worker07.lv.vcneea798df.oraclevcn.com:8090
              selinux: enforcing
              restrict-service-externalip: true
              restrict-service-externalip-ca-cert: /etc/olcne/configs/certificates/restrict_external_ip/production/ca.cert
              restrict-service-externalip-tls-cert: /etc/olcne/configs/certificates/restrict_external_ip/production/node.cert
              restrict-service-externalip-tls-key: /etc/olcne/configs/certificates/restrict_external_ip/production/node.key
          - module: helm
            name: myhelm
            force: true
            args:
              helm-kubernetes-module: mycluster      
          - module: oci-ccm
            name: myoci
            force: true
            oci-ccm-helm-module: myhelm
            oci-use-instance-principals: true
            oci-compartment: ocid1.compartment.oc1..aaaaaaaanr6cysadeswwxc7sczdsrlamzhfh6scdyvuh4s4fmvecob6e2cha
            oci-vcn: ocid1.vcn.oc1.eu-frankfurt-1.amaaaaaag7acy3iat3duvrym376oax7nxdyqd56mqxtjaws47t4g7vqthgja
            oci-lb-subnet1: ocid1.subnet.oc1.eu-frankfurt-1.aaaaaaaa6rt6chugbkfhyjyl4exznpxrlvnus2bgkzcgm7fljfkqbxkva6ya         
    
  6. Exécutez la commande pour mettre à jour le cluster et supprimer les noeuds.

    Remarque : cette opération peut prendre quelques minutes.

    olcnectl module update --config-file myenvironment.yaml
    

    Exemple de sortie :

    [oracle@ocne-operator ~]$ olcnectl module update --config-file myenvironment.yaml
    Taking backup of modules before update
    Backup of modules succeeded.
    Updating modules
    Update successful
    Taking backup of modules before update
    Backup of modules succeeded.
    Updating modules
    Update successful
    Taking backup of modules before update
    Backup of modules succeeded.
    Updating modules
    Update successful
    
  7. (Dans la console cloud), vérifiez que l'ensemble de back-ends de l'équilibreur de charge affiche trois noeuds en bon état (Health = 'OK') et deux noeuds en mauvais état (Health = 'Critical - Connection failed'). La raison pour laquelle deux noeuds présentent un statut critique est qu'ils ont été enlevés du cluster Kubernetes.

    lb-santé

  8. Afficher les noeuds de plan de contrôle supprimés du cluster par le serveur d'API de plate-forme. Vérifiez que les noeuds de plan de contrôle (ocne-control04 et ocne-control05) ont été enlevés.

    kubectl get nodes
    

    Exemple de sortie :

    [oracle@ocne-operator ~]$ kubectl get nodes
    NAME             STATUS   ROLES                  AGE    VERSION
    ocne-control01   Ready    control-plane,master   164m   v1.23.7+1.el8
    ocne-control02   Ready    control-plane,master   163m   v1.23.7+1.el8
    ocne-control03   Ready    control-plane,master   162m   v1.23.7+1.el8
    ocne-worker01    Ready    <none>                 164m   v1.23.7+1.el8
    ocne-worker02    Ready    <none>                 163m   v1.23.7+1.el8
    ocne-worker03    Ready    <none>                 164m   v1.23.7+1.el8
    ocne-worker04    Ready    <none>                 164m   v1.23.7+1.el8
    ocne-worker05    Ready    <none>                 164m   v1.23.7+1.el8
    ocne-worker06    Ready    <none>                 13m   v1.23.7+1.el8
    ocne-worker07    Ready    <none>                 13m   v1.23.7+1.el8
    

Synthèse

Ceci met fin à la démonstration expliquant comment ajouter, puis enlever, des noeuds Kubernetes dans le cluster. Bien que cet exercice ait démontré la mise à jour simultanée des noeuds de plan de contrôle et de processus actif, il n'existe pas l'approche recommandée pour l'augmentation ou la réduction d'un cluster Kubernetes Oracle Cloud Native Environment et, dans un environnement de production, elle serait probablement entreprise séparément.

Pour plus d'informations

Ressources de formation supplémentaires

Explorez d'autres exercices sur docs.oracle.com/learn ou accédez à davantage de contenu d'apprentissage gratuit sur le canal Oracle Learning YouTube. De plus, visitez le site education.oracle.com/learning-explorer pour devenir Oracle Learning Explorer.

Pour consulter la documentation du produit, consultez le centre d'aide Oracle.