Cet article décrit les ressources Kubernetes de l'API Cluster utilisées dans GKE On-Prem.
Présentation
GKE On-Prem est compatible avec les ressources d'API Cluster suivantes :
- Cluster
- Machine
- MachineDeployment
- MachineSet
- MachineClasses
GKE On-Prem génère automatiquement ces ressources dans vos clusters lors de l'installation. Généralement, vous n'avez pas besoin d'interagir directement avec elles. En outre, la documentation GKE On-Prem 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 traitent des ressources d'API Cluster qui sont actuellement pertinentes pour comprendre GKE on-Prem.
Cluster
Une ressource "Cluster" représente une instance de Kubernetes s'exécutant sur un hôte. Tous les clusters GKE On-Prem possèdent une ressource "Cluster" qui les décrit.
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" pouvant exister dans un cluster d'utilisateur GKE On-Prem :
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 GKE On-Prem, une ressource "Machine" est une spécification déclarative de machine virtuelle (VM) individuelle qui réside dans vSphere. Chaque ressource "Machine" dispose d'une ressource Node correspondante, créée par GKE On-Prem sur la base des spécifications 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" pouvant exister dans un cluster GKE On-Prem :
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 GKE On-Prem dans lequel les ressources "Machine" s'exécutent, déclare leur configuration vSphere et déploie les modifications apportées aux configurations. Vous pouvez considérer les ressources "MachineDeployment" et "Machine" 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]
Voici un exemple de ressource "MachineDeployment" pouvant exister dans un cluster GKE On-Prem :
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: