VNodectl gère les VNodes, les modules complémentaires et d'autres ressources en ligne de commande. Les sections suivantes décrivent la syntaxe, les paramètres et des exemples des commandes VNodectl les plus courantes.
Prérequis
VNodectl — Installez et configurez l'outil de ligne de commande VNodectl avant d'exécuter les commandes présentées dans cette rubrique.
Fichier de configuration VNode — Avant d'exécuter une commande VNode (
create,list,describe,updateoudelete), vérifiez que le fichier~/.vnode/configexiste et est correctement configuré.Fichier kubeconfig du cluster — Un fichier kubeconfig pour le cluster à gérer. Les commandes relatives aux modules complémentaires ainsi que la commande
cluster cleanutilisent le chemin vers le fichier kubeconfig via l'option--kubeconfig.
Aperçu des commandes
Les commandes VNodectl sont regroupées par ressource cible.
Commandes VNode
|
Commande |
Description |
|
|
Crée un VNode. |
|
|
Affiche le statut des VNodes. |
|
|
Affiche les détails d'un VNode spécifique. |
|
|
Met à jour la configuration d'un VNode spécifié. |
|
|
Supprime un VNode spécifié. |
Commandes relatives aux modules complémentaires et au cluster
|
Commande |
Description |
|
|
Liste les modules complémentaires disponibles. |
|
|
Installe et active un module complémentaire. |
|
|
Désactive et désinstalle un module complémentaire. |
|
|
Nettoie les configurations du cluster. |
Ajoutez l'option--dryà toute commandevnodepour valider côté client sans appliquer les modifications. En cas d'erreur de compatibilité de version API, ajoutez l'option--kubernetes-versionpour spécifier la version Kubernetes de votre cluster.
Gérer les VNodes
create
La commande create crée un VNode.
Syntaxe
vnode create [--vswitch-id <vswitch id>] [--security-group-id <security group id>] [--custom-resources <resource name>=<resource count>] [--cluster-dns <dns ip>] [--cluster-domain <cluster domain>]
Paramètres
|
Paramètre |
Description |
Exemple |
|
|
ID du vSwitch auquel le VNode appartient. |
|
|
|
ID du groupe de sécurité auquel le VNode appartient. |
|
|
|
Ressources personnalisées prises en charge par le VNode. Si un pod Elastic Container Instance (ECI) déclare l'une de ces ressources personnalisées dans son champ |
|
|
|
Adresses IP des serveurs DNS. Si un pod ECI définit |
|
|
|
Nom de domaine du cluster. Après avoir spécifié ce paramètre, Kubelet configure tous les conteneurs pour rechercher ce domaine en plus des domaines de recherche de l'hôte. |
|
Exemple 1 : Créer un VNode sans paramètres
[root@vnode-test001 ~]# vnode create
{"RequestId":"12B984BB-D3FB-53D2-8326-9A2E9EF7EF46","VirtualNodeId":"vnd-7xv6g0gp3ok6****"}
Exemple 2 : Créer un VNode prenant en charge des ressources personnalisées
[root@vnode-test001 ~]# vnode create --custom-resources example1.com=10000,example2.com=20000
{"RequestId":"98965B78-4F19-5DA4-BAAA-E6461BF7FF67","VirtualNodeId":"vnd-7xv1zedhxp****"}
Une fois le VNode créé, exécutez la commande kubectl describe node pour afficher les détails du nœud. Les ressources personnalisées spécifiées apparaissent dans les sections Capacity et Allocatable.
Capacity:
alibabacloud.com/vfuse: 6k
cpu: 100k
ephemeral-storage: 40000Gi
example1.com: 10k
example2.com: 20k
memory: 1000Ti
nvidia.com/gpu: 1k
pods: 2k
Allocatable:
alibabacloud.com/vfuse: 6k
cpu: 100k
ephemeral-storage: 40000Gi
example1.com: 10k
example2.com: 20k
memory: 1000Ti
nvidia.com/gpu: 1k
pods: 2k
Exemple 3 : Créer un VNode avec des serveurs DNS et un domaine de cluster
[root@vnode-test001 ~]# vnode create --cluster-dns 192.168.0.1 --cluster-domain example.com
{"RequestId":"1FCB1308-7C96-5FF2-A7BB-202F69D1961C","VirtualNodeId":"vnd-7xv4qqroc5f****"}
Une fois le VNode créé, exécutez la commande kubectl describe pod pour afficher les détails d'un pod ECI planifié sur le VNode. Les valeurs spécifiées apparaissent sous forme d'annotations k8s.aliyun.com/cluster-dns et k8s.aliyun.com/cluster-domain.
[root@vnode-test001 ~]# kubectl describe pod test-5748b8cfb6-xgmp7
Name: test-5748b8cfb6-xgmp7
Namespace: default
Priority: 0
Node: cn-guangzhou.vnd-7xv4qqroc5f****/192.168.XX.XX
Start Time: Mon, 27 Mar 2023 17:27:06 +0800
Labels: alibabacloud.com/eci=true
app=nginx
pod-template-hash=5748b8cfb6
Annotations: k8s.aliyun.com/cluster-dns: 192.168.0.1
k8s.aliyun.com/cluster-domain: example.com
k8s.aliyun.com/eci-created-by-template: true
k8s.aliyun.com/eci-extra-ephemeral-storage: 62Gi
k8s.aliyun.com/eci-instance-cpu: 2.0
k8s.aliyun.com/eci-instance-id: eci-7xv4qqroc****
k8s.aliyun.com/eci-instance-mem: 4.0
k8s.aliyun.com/eci-instance-spec: 2.0-4.0Gi
k8s.aliyun.com/eci-instance-zone: cn-guangzhou-a
k8s.aliyun.com/eci-matched-image-cache: imc-7xv80t0k3g****
list
La commande list affiche le statut des VNodes.
Syntaxe
vnode list
Exemple
[root@vnode-test001 ~]# vnode list
VNODE ID VNODE NAME CREATED STATUS SCHEDULABLE ZONES
vnd-7xv6g0gp3ok**** vnode-cn-guangzhou-a-7xv6g0**** About a minute ago Ready cn-guangzhou-a
vnd-7xvetkyase7**** vnode-cn-guangzhou-a-7xvetk**** 49 minutes ago Ready cn-guangzhou-a
[root@vnode-test001 ~]#
describe
La commande describe affiche les détails d'un VNode spécifique.
Syntaxe
vnode describe <vnode id>
Exemple
[root@vnode-test001 ~]# vnode describe vnd-7xv6g0gp3ok69****
VNodeId: vnd-7xv6g0gp3ok69****
VNodeName: vnode-cn-guangzhou-a-7xv6g0gp3****
ClusterId:
RegionId: cn-guangzhou
ResourceGroupId: rg-acfm4ia6****
SecurityGroupId: sg-7xv5tcch****
VpcId: vpc-7xvuaoizvudf366bh****
VSwitchId: vsw-7xv4hi6ioxpw3****
Status: Ready
CreationTime: 2022-12-23T06:44:52Z
IntranetIp: 192.168.XX.54
InternetIp:
Cpu:
Memeory:
Tags: []
Events:
Type Reason Agent Message
----- ----- ----- -----
Normal StartingHeartBeat 2 minutes ago birth cry
Warning HeartBeatToECIServiceFailed 2 minutes ago fail to connect eci-service
Normal CreateEciForVnode 2 minutes ago [eci.virtualnode]Create Eci eci-7xv6g0gp3**** for Vnode
Normal StartingVKubelet 2 minutes ago Starting VKubelet.
update
La commande update met à jour la configuration d'un VNode spécifié. Vous pouvez mettre à jour les valeurs des options --vswitch-id, --security-group-id, --custom-resources, --cluster-dns et --cluster-domain.
La commande update écrase l'intégralité de la configuration. Les valeurs de paramètres que vous transmettez remplacent les valeurs existantes. Par exemple, si le VNode est déjà configuré avec --custom-resources example1.com=10000 et que vous souhaitez ajouter la ressource personnalisée example2.com avec une quantité de 10000, transmettez --custom-resources example1.com=10000,example2.com=10000.
Syntaxe
vnode update <vnode id> [--vswitch-id <vswitch id>] [--security-group-id <security group id>] [--custom-resources <resource name>=<resource count>] [--cluster-dns <dns ip>] [--cluster-domain <cluster domain>]
Paramètres
La commande update accepte les mêmes options que la commande create. Pour les descriptions des options, consultez le tableau des paramètres de la section create.
|
Paramètre |
Description |
Exemple |
|
|
ID du vSwitch auquel le VNode appartient. |
|
|
|
ID du groupe de sécurité auquel le VNode appartient. |
|
|
|
Ressources personnalisées prises en charge par le VNode. Si un pod Elastic Container Instance (ECI) déclare l'une de ces ressources personnalisées dans son champ |
|
|
|
Adresses IP des serveurs DNS. Si un pod ECI définit |
|
|
|
Nom de domaine du cluster. Après avoir spécifié ce paramètre, Kubelet configure tous les conteneurs pour rechercher ce domaine en plus des domaines de recherche de l'hôte. |
|
Exemple
[root@vnode-test001 ~]# vnode update vnd-7xv1zedhxp**** --cluster-domain example.com
{"RequestId":"DA86B896-3A05-5A0C-A9D2-A1D433C85035"}
Pour vérifier la configuration du VNode après la mise à jour, exécutez la commande vnode describe.
delete
La commande delete supprime un VNode spécifié.
Avant de supprimer un VNode, assurez-vous qu'aucune instance ECI n'est en cours d'exécution sur ce VNode.
Syntaxe
vnode delete <vnode id>
Exemple
[root@vnode-test001 ~]# vnode delete vnd-7xv6g0gp3ol****
are you sure to delete vnd-7xv6g0gp3ol**** ?(y/n)y
{"RequestId":"7B7E8276-772A-5229-B2D7-B3DD36A66432"}
Pour vérifier l'état de vos VNodes après la suppression, exécutez la commande vnode list.
Gérer les modules complémentaires et les configurations du cluster
Outre les VNodes, VNodectl gère les modules complémentaires du cluster, tels que eci-profile et vnode-approver, et nettoie les configurations du cluster. Dans les commandes de cette section, l'option --kubeconfig indique le chemin vers le fichier kubeconfig du cluster cible.
addon list
La commande addon list liste les modules complémentaires disponibles.
Syntaxe
vnode addon list --kubeconfig <kubeconfig path>
Exemple
[root@vnode-test001 ~]# vnode addon list --kubeconfig ~/.kube/config
ADDON NAME | STATUS | MAINTAINER | REPOSITORY
-----------------+------------+--------------+------------------------------------------------------
eci-profile | enabled | ECI Group | https://github.com/aliyuneci/eci-profile.git
vnode-approver | disabled | ECI Group | https://github.com/aliyuneci/vnode-approver.git
addon enable
La commande addon enable installe et active un module complémentaire. Cette commande crée les ressources requises par le module complémentaire dans le cluster, telles qu'un ClusterRole, une CustomResourceDefinition, un Service et un Deployment.
Syntaxe
vnode addon enable <add-on name> --kubeconfig <kubeconfig path>
Exemple
L'exemple suivant active le module complémentaire eci-profile puis liste les modules complémentaires pour confirmer le nouveau statut :
[root@vnode-test001 ~]# vnode addon list
ADDON NAME | STATUS | MAINTAINER | REPOSITORY
-----------------+------------+--------------+------------------------------------------------------
eci-profile | disabled | ECI Group | https://github.com/aliyuneci/eci-profile.git
vnode-approver | disabled | ECI Group | https://github.com/aliyuneci/vnode-approver.git
[root@vnode-test001 ~]# vnode addon enable eci-profile --kubeconfig ~/.kube/config
clusterrole.rbac.authorization.k8s.io/eci-profile created
clusterrolebinding.rbac.authorization.k8s.io/eci-profile created
customresourcedefinition.apiextensions.k8s.io/selectors.eci.aliyun.com created
service/eci-profile created
serviceaccount/eci-profile created
deployment.apps/eci-profile created
[root@vnode-test001 ~]# vnode addon list
ADDON NAME | STATUS | MAINTAINER | REPOSITORY
-----------------+------------+--------------+------------------------------------------------------
eci-profile | enabled | ECI Group | https://github.com/aliyuneci/eci-profile.git
vnode-approver | disabled | ECI Group | https://github.com/aliyuneci/vnode-approver.git
addon disable
La commande addon disable désactive et désinstalle un module complémentaire. Cette commande supprime les ressources créées pour le module complémentaire dans le cluster.
Syntaxe
vnode addon disable <add-on name> --kubeconfig <kubeconfig path>
Exemple
L'exemple suivant désactive le module complémentaire eci-profile puis liste les modules complémentaires pour confirmer le nouveau statut :
[root@vnode-test001 ~]# vnode addon list
ADDON NAME | STATUS | MAINTAINER | REPOSITORY
-----------------+------------+--------------+------------------------------------------------------
eci-profile | enabled | ECI Group | https://github.com/aliyuneci/eci-profile.git
vnode-approver | disabled | ECI Group | https://github.com/aliyuneci/vnode-approver.git
[root@vnode-test001 ~]# vnode addon disable eci-profile --kubeconfig ~/.kube/config
clusterrole.rbac.authorization.k8s.io "eci-profile" deleted
clusterrolebinding.rbac.authorization.k8s.io "eci-profile" deleted
customresourcedefinition.apiextensions.k8s.io "selectors.eci.aliyun.com" deleted
Error from server (NotFound): error when deleting "/root/.vnode/addon/eci-profile/eci-profile-cus...
service "eci-profile" deleted
serviceaccount "eci-profile" deleted
deployment.apps "eci-profile" deleted
[root@vnode-test001 ~]# vnode addon list
ADDON NAME | STATUS | MAINTAINER | REPOSITORY
-----------------+------------+--------------+------------------------------------------------------
eci-profile | disabled | ECI Group | https://github.com/aliyuneci/eci-profile.git
vnode-approver | disabled | ECI Group | https://github.com/aliyuneci/vnode-approver.git
cluster clean
La commande cluster clean nettoie les configurations du cluster.
Exécutez la commande cluster clean si vous n'utilisez plus les VNodes.
Syntaxe
vnode cluster clean --kubeconfig <kubeconfig path> [--bootstrap]
L'option à utiliser dépend de la méthode précédemment employée pour configurer le cluster.
Exemple 1 : Nettoyer un cluster configuré via la méthode standard
vnode cluster clean --kubeconfig <kubeconfig path>
Exemple 2 : Nettoyer un cluster configuré via la méthode TLS bootstrap
vnode cluster clean --kubeconfig <kubeconfig path> --bootstrap