Cluster API-Ressourcen

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: