Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Créer un cluster Kubernetes

Utilisez cet exemple de procédure pour créer un cluster Kubernetes en amont.

Nous fournissons cet exemple de procédure à titre purement informatif. Il existe plusieurs façons de créer un cluster, comme avec kubeadm, kOps ou kubespray, entre autres.

Dans cet exemple, nous allons utiliser kubespray et Ansible pour créer le cluster. Kubespray utilise les playbooks Ansible, ce qui rend la création de clusters assez simple. Pour faciliter le suivi des étapes, nous utiliserons une machine d’installation distincte pour effectuer l’installation et exécuter kubectl et d’autres outils.

Pour plus d’informations sur la création d’un cluster, consultez la documentation officielle de Kubernetes (https://kubernetes.io/docs/home/).

Note:

Les exemples de ligne de commande ci-dessous n’affichent pas toujours les chemins d’accès absolus aux répertoires. Nous vous laissons le soin d’appliquer ces commandes au sein de votre structure de répertoires.

  1. Installez un nouveau système d’exploitation sur la machine d’installation, en configurant le système d’exploitation au minimum pour les éléments suivants :
    • adresse IP statique et masque (par exemple, 172.16.0.10/24 pour notre cluster unique) et passerelle
    • l’accès à un ou plusieurs serveurs DNS
    • Connectivité SSH, y compris l’accès SSH racine
    • NTP
    La machine d’installation utilisée dans nos exemples est un hôte Ubuntu attaché au réseau du cluster.
  2. À partir de votre ordinateur local, connectez-vous à la machine d’installation en tant qu’utilisateur sudo.
  3. Installez ansible.
  4. Installez kubectl. Dans cet exemple, nous exécutons kubectl sur la machine d’installation. Si vous souhaitez exécuter kubectl sur une autre machine (par exemple, votre ordinateur local), téléchargez et installez kubectl sur cette machine à la place.
    • Configurer et mettre à jour le référentiel Kubernetes.
    • Installez kubectl.
  5. Si vous souhaitez installer Contrail Analytics, installez Helm 3.0 ou une version ultérieure.
    • Configurer et mettre à jour le référentiel Helm.

    • Installez Helm.

  6. Configurez l’accès root sans mot de passe SSH de la machine d’installation au plan de contrôle et aux nœuds de travail. Cela permet à ansible de se connecter à ces nœuds lorsque vous exécuterez le playbook ultérieurement.
    1. Créez une clé SSH.

      Dans cet exemple, nous stockons la clé SSH à son emplacement par défaut ~/.ssh/id_rsa.pub.

    2. Copiez la clé vers l’utilisateur racine sur le plan de contrôle et les nœuds de travail. Par exemple :
  7. Clonez le répertoire kubespray.
    Par exemple :

    Cela crée un clone du répertoire kubespray à l’emplacement actuel (dans ~/contrail dans cet exemple).

  8. Configurez les sous-réseaux de pod et de service si vous le souhaitez.
    Les sous-réseaux par défaut utilisés par kubespray sont définis dans le fichier kubespray/roles/kubespray-defaults/defaults/main.yaml . Recherchez les paramètres suivants dans ce fichier et modifiez-les en conséquence.
    Note:

    Si vous créez une configuration Contrail à plusieurs clusters, vous devez configurer des sous-réseaux de pods et de services différents sur chaque cluster. Ces sous-réseaux doivent être uniques au sein de l’ensemble du multicluster.

    Si vous suivez l’exemple multicluster de ce document, conservez les valeurs par défaut des sous-réseaux du cluster central et configurez-les comme suit :

  9. Désactivez le DNS local du nœud.
    Dans le fichier kubespray/roles/kubespray-defaults/defaults/main.yaml , définissez enable_nodelocaldns: false.
  10. Si vous exécutez DPDK dans votre cluster, configurez multus.
    Multus est requis lors de l’exécution de DPDK.
    1. Activez multus.
      Dans kubespray/roles/kubespray-defaults/defaults/main.yaml, activez multus :
    2. Définissez la version multus sur 0.3.1, qui est la version requise pour exécuter DPDK. Vous définissez la version dans deux fichiers.
      Dans kubespray/roles/network_plugin/multus/defaults/main.yml, configurez la version multus :
      Dans kubespray/extra_playbooks/roles/network_plugin/multus/defaults/main.yml, configurez la version multus :
  11. Créez le fichier d’inventaire à utiliser par ansible. Par exemple :

    Les noms d’hôte (, , ) que vous spécifiez dans le fichier sont automatiquement configurés sur le noeud lorsque le override_system_hostname paramètre est défini sur true. k8s-worker1k8s-worker0k8s-cp0

    Note:

    Si vous créez une configuration Contrail multicluster, vous devez configurer des noms de noeud différents pour chaque noeud du multicluster. Les noms de noeud doivent être uniques dans l’ensemble du multicluster.

    Note:

    Si vous utilisez DPDK, définissez kube_network_plugin_multus: true.

    Si vous souhaitez l’exécuter avec un environnement d’exécution de conteneur différent, modifiez la container_manager valeur ci-dessus.

    Assurez-vous enable_nodelocaldns que la valeur est .false

    Si vous souhaitez exécuter avec un nombre différent de nœuds de plan de contrôle et de travail, ajustez l’inventaire en conséquence.

  12. Vérifiez qu’ansible peut se connecter en SSH au plan de contrôle et aux nœuds de travail en fonction du contenu du fichier inventory.yaml. Dans cet exemple, le fichier inventory.yaml se trouve dans le répertoire ~/contrail.
  13. Pour créer le cluster, exécutez le playbook à partir du répertoire kubespray. Ajustez la commande ci-dessous pour référencer inventory.yaml dans votre structure de répertoires.
    Cette étape peut prendre une heure ou plus, en fonction de la taille de votre cluster.
    Note:

    Vous pouvez ignorer en toute sécurité les avertissements et les erreurs liés au réseau et au CNI, car vous n’avez pas encore configuré de CNI. Si une erreur fatale se produit, ansible arrête le playbook.

  14. Copiez le jeton sécurisé du cluster à l’emplacement par défaut ~/.kube/config. Le kubeconfig doit se trouver à cet emplacement par défaut pour que les outils Contrail fonctionnent.
    Vous pouvez trouver l’emplacement du jeton sécurisé à partir du fichier inventory.yaml . Si vous utilisez le fichier inventory dans cet exemple, le jeton se trouve dans /tmp/mycluster.
    Note:

    Si vous avez un kubeconfig qui contient déjà des jetons pour les clusters existants, vous devrez fusionner plutôt que d’écraser le fichier ~/.kube/config .

  15. Utilisez les commandes kubectl standard pour vérifier l’intégrité du cluster.
    1. Afficher l’état des nœuds.
      Vous pouvez voir que les nœuds ne sont pas prêts, car il n’y a pas de plug-in CNI. Ceci est normal car vous n’avez pas encore installé Contrail.
    2. Afficher l’état des pods.
      Tous les pods doivent avoir l’état En cours d’exécution, à l’exception des pods DNS. Les modules DNS ne s’affichent pas, car il n’y a pas de réseau. C’est ce à quoi nous nous attendons.
Vous avez installé un nouveau cluster avec succès. Vous pouvez maintenant procéder à l’installation de Contrail sur ce cluster.