Ressources sur l'API Cluster

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: