Vous consultez la documentation d'une version précédente de GKE On-Prem. Consultez la documentation la plus récente.

Ressources sur l'API Cluster

Cet article décrit les ressources de l'API Cluster Kubernetes utilisées dans GKE On-Prem.

Aperçu

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 eux. En outre, la documentation GKE On-Prem référence ces ressources pour illustrer des concepts tels que la haute disponibilité.

Vous pouvez vérifier les CustomResourceDefinitions (CRD) d'API Cluster 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 de l'API Cluster actuellement pertinentes pour comprendre GKE on-Prem.

Cluster

Une ressource de 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 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 pouvez voir 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 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 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 pouvez voir 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

Un objet MachineDeployment gère un groupe de machines : il spécifie le cluster GKE On-Prem dans lequel les machines s'exécutent, déclare leur configuration vSphere et déploie les modifications apportées aux configurations. Vous pouvez considérer les objets 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]

Voici un exemple de ressource MachineDeployment que vous pouvez voir 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: