Ressources sur l'API Cluster

Cette page décrit les ressources de l'API Cluster Kubernetes utilisées dans Anthos clusters on VMware (GKE On-Prem).

Présentation

Anthos clusters on VMware est compatible avec les ressources API Cluster suivantes :

  • Groupe
  • Machine
  • MachineDeployment
  • MachineSet
  • MachineClasses

Anthos clusters on VMware génère automatiquement ces ressources dans vos clusters lors de l'installation. En règle générale, vous n'avez pas besoin d'interagir directement avec elles. De plus, la documentation Anthos clusters on VMware 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 décrivent les ressources API Cluster actuellement pertinentes pour comprendre Anthos clusters on VMware.

Cluster

Une ressource "Cluster" représente une instance de Kubernetes s'exécutant sur un hôte. Tous les clusters Anthos clusters on VMware 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 pourriez voir dans un cluster d'utilisateur Anthos clusters on VMware :

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 Anthos clusters on VMware, une ressource Machine est une spécification déclarative pour une machine virtuelle (VM) individuelle qui réside dans vSphere. Chaque ressource Machine possède une ressource Node correspondante qui est créée par Anthos clusters on VMware en fonction de la spécification 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 que vous pourriez voir dans un cluster Anthos clusters on VMware :

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 Anthos clusters on VMware dans lequel les ressources Machine s'exécutent. Elle déclare aussi 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]

Vous trouverez ci-dessous un exemple de ressource MachineDeployment susceptible de s'afficher dans un cluster Anthos clusters on VMware :

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: