In diesem Thema werden die Kubernetes Cluster API-Ressourcen beschrieben, die in GKE On-Prem verwendet werden.
Übersicht
GKE On-Prem unterstützt die folgenden Cluster API-Ressourcen:
- Cluster
- Maschine
- MachineDeployment
- MachineSet
- MachineClasses
GKE On-Prem generiert diese Ressourcen während der Installation automatisch in Ihren Clustern. Im Allgemeinen müssen Sie nicht direkt mit ihnen interagieren, abgesehen von erweiterten Verfahren wie dem manuellen Löschen eines Nutzerclusters. Darüber hinaus wird in der GKE On-Prem-Dokumentation auf diese Ressourcen verwiesen, um Konzepte wie Hochverfügbarkeit zu veranschaulichen.
Sie können prüfen, welche CustomResourceDefinitions (CRDs) der Cluster API in einem Cluster verfügbar sind:
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
In den folgenden Abschnitten werden die Cluster API-Ressourcen erläutert, die derzeit für das Verständnis von GKE On-Prem relevant sind.
Cluster
Eine Clusterressource stellt eine Instanz von Kubernetes dar, die auf einem Host ausgeführt wird. Alle GKE On-Prem-Cluster haben eine Clusterressource, die den Cluster beschreibt.
Führen Sie zum Ansehen der Clusterressourcen in einem Cluster den folgenden Befehl aus, wobei [KUBECONFIG] der Pfad zur kubeconfig-Datei des Clusters ist:
kubectl get clusters --kubeconfig [KUBECONFIG]
Das folgende Beispiel zeigt eine Clusterressource, der Sie in einem GKE On-Prem-Nutzercluster begegnen können:
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:
Maschine
In GKE On-Prem ist eine Maschinenressource eine deklarative Spezifikation für eine einzelne virtuelle Maschine (VM), die in vSphere ausgeführt wird. Jede Maschinenressource hat eine entsprechende Knotenressource, die von GKE On-Prem gemäß der Maschinenspezifikation erstellt wird. Diese Ressourcen verweisen auf dasselbe physische Objekt: eine VM, die sich in Ihrer vSphere-Umgebung befindet.
Führen Sie den folgenden Befehl aus, um Maschinenressourcen in einem Cluster abzurufen. Dabei ist [KUBECONFIG] der Pfad zur kubeconfig-Datei des Clusters:
kubectl get machines --kubeconfig [KUBECONFIG]
Das folgende Beispiel zeigt eine Maschinenressource, die Sie in einem GKE On-Prem-Cluster sehen können:
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
Ein MachineDeployment verwaltet eine Gruppe von Maschinen: Es wird der GKE On-Prem-Cluster angegeben, in dem die Maschinen ausgeführt werden, ihre vSphere-Konfiguration wird deklariert und es werden Änderungen an Konfigurationen eingeführt. Sie können sich MachineDeployments und Maschinen wie Deployments und Pods vorstellen.
Führen Sie den folgenden Befehl aus, um sich MachineDeployment-Ressourcen in einem Cluster anzusehen. Dabei ist [KUBECONFIG] der Pfad zur kubeconfig-Datei des Clusters:
kubectl get machinedeployments --kubeconfig [KUBECONFIG]
Das folgende Beispiel zeigt eine Maschinenressource, die in einem GKE On-Prem-Cluster enthalten sein kann:
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: