Cette page décrit les ressources de l'API Cluster Kubernetes utilisées dans les clusters Anthos sur VMware (GKE sur VMware).
Présentation
Anthos clusters on VMware est compatible avec les ressources API Cluster suivantes :
- Cluster
- Machine
- MachineDeployment
- MachineSet
- MachineClasses
Anthos clusters on VMware génère automatiquement ces ressources dans vos clusters lors de l'installation. En règle générale, vous n'avez pas besoin d'interagir directement avec elles. De plus, la documentation Anthos clusters on VMware fait référence à ces ressources pour illustrer des concepts tels que la haute disponibilité.
Vous pouvez vérifier quels CustomResourceDefinitions (CRD) d'API Cluster sont disponibles dans un cluster :
kubectl get crds | grep "cluster.k8s.io" clusters.cluster.k8s.io machineclasses.cluster.k8s.io machinedeployments.cluster.k8s.io machines.cluster.k8s.io machinesets.cluster.k8s.io
Les sections suivantes décrivent les ressources API Cluster actuellement pertinentes pour comprendre Anthos clusters on VMware.
Cluster
Une ressource "Cluster" représente une instance de Kubernetes s'exécutant sur un hôte. Tous les clusters Anthos clusters on VMware possèdent une ressource Cluster qui décrit le cluster.
Pour afficher les ressources "Cluster" dans un cluster, exécutez la commande suivante, où [KUBECONFIG] représente le chemin d'accès au fichier kubeconfig du cluster :
kubectl get clusters --kubeconfig [KUBECONFIG]
Vous trouverez ci-dessous un exemple de ressource Cluster que vous pourriez voir dans un cluster d'utilisateur Anthos clusters on VMware :
apiVersion: cluster.k8s.io/v1alpha1 kind: Cluster metadata: annotations: addons.gke.io/loadbalancerip: "" bundle.gke.io/target-version: bundle.gke.io/version: onprem.gke.io/provider: vsphere creationTimestamp: finalizers: - cluster.cluster.k8s.io generation: name: example-user-cluster namespace: default resourceVersion: "" selfLink: /apis/cluster.k8s.io/v1alpha1/namespaces/default/clusters/example-user-cluster uid: spec: clusterNetwork: pods: cidrBlocks: - serviceDomain: cluster.local services: cidrBlocks: - providerSpec: value: apiVersion: vsphereproviderconfig.k8s.io/v1alpha1 controlPlaneReplicas: controlPlaneVersion: kind: VsphereClusterProviderConfig loadBalancerIP: loadBalancerNodePort: metadata: creationTimestamp: networkSpec: dns: ntp: "" reservedAddresses: oidcSpec: sniCert: vsphereDatacenter: vsphereDefaultDatastore: vsphereNetwork: vsphereResourcePool: status: apiEndpoints: - host: port:
Machine
Dans Anthos clusters on VMware, une ressource Machine est une spécification déclarative pour une machine virtuelle (VM) individuelle qui réside dans vSphere. Chaque ressource Machine possède une ressource Node correspondante qui est créée par Anthos clusters on VMware en fonction de la spécification de la ressource Machine. Ces ressources font référence au même objet physique : une VM résidant dans votre environnement vSphere.
Pour afficher les ressources "Machine" dans un cluster, exécutez la commande suivante, où [KUBECONFIG] représente le chemin d'accès au fichier kubeconfig du cluster :
kubectl get machines --kubeconfig [KUBECONFIG]
Vous trouverez ci-dessous un exemple de ressource Machine que vous pourriez voir dans un cluster Anthos clusters on VMware :
apiVersion: cluster.k8s.io/v1alpha1 kind: Machine metadata: annotations: control-plane-version: "" kubelet-version: onprem.gke.io/provider: vsphere vm-ip-address: vsphere-machine-state: vsphere-machine-uuid: creationTimestamp: finalizers: - machine.cluster.k8s.io generateName: example-cluster-node generation: labels: kubernetes.googleapis.com/cluster-name: example-cluster-node kubernetes.googleapis.com/cluster-namespace: machine-template-hash: "" set: node name: example-cluster-node namespace: default ownerReferences: - apiVersion: cluster.k8s.io/v1alpha1 blockOwnerDeletion: controller: kind: MachineSet name: example-cluster-node uid: resourceVersion: "" selfLink: /apis/cluster.k8s.io/v1alpha1/namespaces/default/machines/example-cluster-node uid: spec: metadata: creationTimestamp: providerSpec: value: apiVersion: vsphereproviderconfig.k8s.io/v1alpha1 kind: VsphereMachineProviderConfig machineVariables: datacenter: datastore: disk_label: disk_size: "" memory: "" network: num_cpus: "" resource_pool: vm_template: metadata: creationTimestamp: networkSpec: address: dns: ntp: "" useIPAM: vsphereMachine: versions: kubelet: status: lastUpdated: nodeRef: kind: Node name: uid:
MachineDeployment
Une ressource MachineDeployment gère un groupe de ressources Machine : elle spécifie le cluster Anthos clusters on VMware dans lequel les ressources Machine s'exécutent. Elle déclare aussi leur configuration vSphere et déploie les modifications apportées aux configurations. Vous pouvez considérer les "MachineDeployments" et les "Machines" comme des déploiements et des pods.
Pour afficher les ressources "MachineDeployment" dans un cluster, exécutez la commande suivante, où [KUBECONFIG] représente le chemin d'accès au fichier kubeconfig du cluster :
kubectl get machinedeployments --kubeconfig [KUBECONFIG]
Vous trouverez ci-dessous un exemple de ressource MachineDeployment susceptible de s'afficher dans un cluster Anthos clusters on VMware :
apiVersion: cluster.k8s.io/v1alpha1 kind: MachineDeployment metadata: annotations: machinedeployment.clusters.k8s.io/revision: "1" onprem.gke.io/provider: vsphere creationTimestamp: generation: 2 labels: kubernetes.googleapis.com/cluster-name: example-cluster kubernetes.googleapis.com/cluster-namespace: set: node name: example-cluster namespace: default resourceVersion: "" selfLink: /apis/cluster.k8s.io/v1alpha1/namespaces/default/machinedeployments/example-cluster uid: spec: minReadySeconds: 0 progressDeadlineSeconds: replicas: revisionHistoryLimit: selector: matchLabels: kubernetes.googleapis.com/cluster-name: example-cluster kubernetes.googleapis.com/cluster-namespace: default set: node strategy: rollingUpdate: maxSurge: maxUnavailable: type: RollingUpdate template: metadata: annotations: onprem.gke.io/provider: vsphere creationTimestamp: null labels: kubernetes.googleapis.com/cluster-name: example-cluster kubernetes.googleapis.com/cluster-namespace: set: node spec: metadata: creationTimestamp: providerSpec: value: apiVersion: vsphereproviderconfig.k8s.io/v1alpha1 kind: VsphereMachineProviderConfig machineVariables: datacenter: datastore: disk_label: disk_size: "" memory: "" network: num_cpus: "" resource_pool: example-cluster vm_template: metadata: creationTimestamp: networkSpec: address: dns: ntp: "" useIPAM: vsphereMachine: versions: kubelet: status: availableReplicas: observedGeneration: readyReplicas: replicas: updatedReplicas: