CSE: Kubernetes pour n'importe qui dans vCloud


Bonjour Ă  tous!

Il se trouve que notre petite équipe de développement, pour ne pas dire que récemment, et certainement pas tout d'un coup, a grandi pour transférer certains (et à l'avenir, tous) des produits à Kubernetes.

Il y avait plusieurs raisons Ă  cela, mais notre histoire ne concerne pas l'holivar.

Du point de vue des infrastructures, nous avions peu de choix. vCloud Director et vCloud Director. Nous avons choisi une version plus récente et avons décidé de commencer.

Une fois de plus, en parcourant «The Hard Way», j'ai rapidement conclu qu'un outil pour automatiser au moins les processus de base, tels que le déploiement et le dimensionnement, était nécessaire hier. Une immersion profonde dans Google a mis au jour un produit tel que VMware Container Service Extension (CSE) - un produit open source qui vous permet d'automatiser la création et le dimensionnement des clusters k8s pour ceux de vCloud.
Avis de non-responsabilitĂ©: le CST a ses limites, mais pour nos besoins, il a parfaitement fonctionnĂ©. De plus, la solution doit ĂȘtre prise en charge par le fournisseur de cloud, mais comme la partie serveur est Ă©galement open-source, demandez-la au gestionnaire le plus proche :)

Installation du client CSE


  1. Pour commencer, vous aurez besoin d'un compte administrateur dans l'organisation vCloud et d'un réseau routé créé à l'avance pour le cluster. Important: pendant le processus de déploiement, vous avez besoin d'un accÚs Internet à partir de ce réseau, n'oubliez pas de configurer le pare-feu / NAT.

    L'adressage n'a pas d'importance. Dans cet exemple, prenez 10.0.240.0/24:


    Étant donnĂ© qu'aprĂšs la crĂ©ation du cluster, il sera nĂ©cessaire de gĂ©rer d'une maniĂšre ou d'une autre, la prĂ©sence d'un VPN avec routage vers le rĂ©seau crĂ©Ă© est recommandĂ©e. Nous utilisons un VPN SSL standard configurĂ© sur la passerelle Edge de notre organisation.
  2. Ensuite, vous devez installer le client CSE lĂ  oĂč les clusters k8s seront gĂ©rĂ©s. Dans mon cas, il s'agit d'un ordinateur portable fonctionnel et de quelques conteneurs bien cachĂ©s qui dirigent l'automatisation.

    Le client nécessite Python installé 3.7.3 et supérieur et un module vcd-cli installé, nous allons donc installer les deux.

    pip3 install vcd-cli pip3 install container-service-extension 
  3. AprÚs l'installation, vérifiez la version de CSE et obtenez les éléments suivants:

     # vcd cse version Error: No such command "cse". 

    De façon inattendue, mais réparable.
  4. Il s'est avĂ©rĂ© que le CSE devait ĂȘtre vissĂ© en tant que module Ă  vcd-cli.
    Pour ce faire, vous devez d'abord vous connecter vcd-cli Ă  notre organisation:

     # vcd login MyCloud.provider.com org-dev admin Password: admin logged in, org: 'org-dev', vdc: 'org-dev_vDC01' 
  5. AprÚs cela, vcd-cli créera le fichier de configuration ~ / .vcd-cli / profiles.yaml
    À sa fin, vous devez ajouter ce qui suit:

     extensions: - container_service_extension.client.cse 
  6. Ensuite, nous vérifions à nouveau:

     # vcd cse version CSE, Container Service Extension for VMware vCloud Director, version 2.5.0 

La phase d'installation du client est terminée. Essayons de déployer le premier cluster.

DĂ©ploiement de cluster


CSE a plusieurs ensembles de paramĂštres d'utilisation, qui peuvent tous ĂȘtre consultĂ©s ici.

  1. CrĂ©ez d'abord les clĂ©s pour un accĂšs sans mot de passe au futur cluster. Ce point est important, car par dĂ©faut, la saisie du mot de passe sur les nƓuds sera dĂ©sactivĂ©e. Et, si vous ne spĂ©cifiez pas les clĂ©s, vous pouvez obtenir beaucoup de travail via la console de la machine virtuelle, ce qui ne veut pas dire pratique.

     # ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. 
  2. Nous essayons de commencer à créer un cluster:

     vcd cse cluster create MyCluster --network k8s_cluster_net --ssh-key ~/.ssh/id_rsa.pub --nodes 3 --enable-nfs 
  3. Si nous obtenons une erreur: la session a expiré ou l'utilisateur n'est pas connecté. Veuillez vous reconnecter. - reconnectez vcd-cli à vCloud, comme décrit ci-dessus, et réessayez.

    Cette fois, tout va bien et la tùche de création d'un cluster a commencé.

     cluster operation: Creating cluster vApp 'MyCluster' (38959587-54f4-4a49-8f2e-61c3a3e879e0) from template 'photon-v2_k8-1.12_weave-2.3.0' (revision 1) 
  4. Il faudra environ 20 minutes pour terminer la tĂąche. En attendant, nous analyserons les principaux paramĂštres de lancement.
    • --network - le rĂ©seau que nous avons crĂ©Ă© plus tĂŽt.
    • --ssh-key - clĂ©s crĂ©Ă©es par nous, qui seront Ă©crites sur les nƓuds du cluster.
    • --nodes n - Le nombre de nƓuds Worker du cluster. Il y aura toujours un assistant, il s'agit d'une limitation CSE.
    • --enable-nfs - crĂ©e un nƓud supplĂ©mentaire pour les boules NFS sous des volumes persistants. Un peu une option de pĂ©dale, nous reviendrons un peu plus tard pour ajuster ce qu'il fait.

  5. Pendant ce temps, dans vCloud, vous pouvez observer visuellement la création d'un cluster.

  6. Une fois la tĂąche de crĂ©ation d'un cluster terminĂ©e, il est prĂȘt Ă  dĂ©marrer.
  7. Vérifiez le déploiement avec la commande MyCluster vcd cse cluster info .

  8. Ensuite, nous devons obtenir la configuration du cluster pour utiliser kubectl .

     # vcd cse cluster config MyCluster > ./.kube/config 
  9. Et vous pouvez vérifier l'état du cluster en l'utilisant:


Pas si simple


À ce stade, le cluster peut ĂȘtre considĂ©rĂ© comme conditionnellement opĂ©rationnel, sinon pour l'histoire avec des volumes persistants. Puisque nous sommes dans vCloud, l'utilisation de vSphere Provider Ă©chouera. L'option --enable-nfs est conçue pour attĂ©nuer ce problĂšme, mais elle n'a pas fonctionnĂ© jusqu'Ă  la fin. Un rĂ©glage manuel est requis.

  1. Pour commencer, notre nƓud doit crĂ©er un disque indĂ©pendant distinct dans vCloud. Cela garantit que nos donnĂ©es ne disparaissent pas avec le cluster s'il est supprimĂ©. Connectez Ă©galement le lecteur Ă  NFS.

     # vcd disk create nfs-shares-1 100g --description 'Kubernetes NFS shares' # vcd vapp attach mycluster nfsd-9604 nfs-shares-1 
  2. AprĂšs cela, nous passons par ssh (avez-vous vraiment crĂ©Ă© les clĂ©s?) À notre nƓud NFS et enfin connectez le disque:

     root@nfsd-9604:~# parted /dev/sdb (parted) mklabel gpt Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? yes (parted) unit GB (parted) mkpart primary 0 100 (parted) print Model: VMware Virtual disk (scsi) Disk /dev/sdb: 100GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 0.00GB 100GB 100GB primary (parted) quit root@nfsd-9604:~# mkfs -t ext4 /dev/sdb1 Creating filesystem with 24413696 4k blocks and 6111232 inodes Filesystem UUID: 8622c0f5-4044-4ebf-95a5-0372256b34f0 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done 
  3. Créez un répertoire pour les données et montez-y une nouvelle section:

     mkdir /export echo '/dev/sdb1 /export ext4 defaults 0 0' >> /etc/fstab mount -a 
  4. Créons cinq sections de test et partageons-les pour le cluster:

     >cd /export >mkdir vol1 vol2 vol3 vol4 vol5 >vi /etc/exports #     /export/vol1 *(rw,sync,no_root_squash,no_subtree_check) /export/vol2 *(rw,sync,no_root_squash,no_subtree_check) /export/vol3 *(rw,sync,no_root_squash,no_subtree_check) /export/vol4 *(rw,sync,no_root_squash,no_subtree_check) /export/vol5 *(rw,sync,no_root_squash,no_subtree_check) #:wq! ;) # -   >exportfs -r 
  5. AprÚs toute cette magie, vous pouvez créer du PV et du PVC dans notre cluster comme ceci:

    PV

     cat <<EOF | kubectl apply -f - apiVersion: v1 kind: PersistentVolume metadata: name: nfs-vol1 spec: capacity: storage: 10Gi accessModes: - ReadWriteMany nfs: # Same IP as the NFS host we ssh'ed to earlier. server: 10.150.200.22 path: "/export/vol1" EOF 

    PVC

     cat <<EOF | kubectl apply -f - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-pvc spec: accessModes: - ReadWriteMany storageClassName: "" resources: requests: storage: 10Gi EOF 

Sur ce, l'histoire de la création d'un cluster se termine et l'histoire de son cycle de vie commence. En prime, il existe deux autres commandes CSE utiles qui vous permettent d'économiser des ressources parfois ou non :

 #    8   >cse cluster resize MyCluster --network k8s_cluster_net --nodes 8 #         >vcd cse node delete MyCluster node-1a2v node-6685 --yes 

Merci Ă  tous pour votre temps, si vous avez des questions - posez-les dans les commentaires.

Source: https://habr.com/ru/post/fr472752/


All Articles