Recursos de la API de clúster

En esta página, se describen los recursos de la API de clúster de Kubernetes que se usan en los clústeres de Anthos alojados en VMware (GKE On-Prem).

Descripción general

Los clústeres de Anthos en alojados en VMware admiten los siguientes recursos de la API de clúster:

  • Clúster
  • Machine
  • MachineDeployment
  • MachineSet
  • MachineClasses

Los clústeres de Anthos alojados en VMware generan de forma automática estos recursos en tus clústeres durante la instalación. Por lo general, no es necesario interactuar directamente con ellas. Además, en la documentación de clústeres de Anthos alojados en VMware, se hace referencia a estos recursos para ilustrar conceptos como la alta disponibilidad.

Puedes verificar qué CustomResourceDefinitions (CRD) de la API de clúster están disponibles en un clúster:

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

En las siguientes secciones, se analizan los recursos de la API de clúster que en la actualidad son relevantes para comprender los clústeres de Anthos alojados en VMware.

Clúster

Un recurso Cluster representa una instancia de Kubernetes que se ejecuta en un host. Todos los clústeres de Anthos alojados en VMware tienen un recurso Cluster que los describe.

Para ver los recursos Cluster de un clúster, ejecuta el siguiente comando, en el que [KUBECONFIG] es la ruta de acceso al archivo kubeconfig del clúster:

kubectl get clusters --kubeconfig [KUBECONFIG]

A continuación, se muestra un ejemplo de un recurso Cluster que puedes ver en un clúster de usuario de clústeres de Anthos alojados en 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

En los clústeres de Anthos alojados en VMware, un recurso Machine es una especificación declarativa de una máquina virtual (VM) individual que se encuentra en vSphere. Cada recurso Machine tiene un recurso Node correspondiente que crea clústeres de Anthos alojados en VMware según la especificación de Machine. Estos recursos hacen referencia al mismo objeto físico: una VM que se encuentra en tu entorno de vSphere.

Para ver los recursos Machine en un clúster, ejecuta el siguiente comando, en el que [KUBECONFIG] es la ruta de acceso al archivo kubeconfig del clúster:

kubectl get machines --kubeconfig [KUBECONFIG]

A continuación, se muestra un ejemplo de un recurso Machine que puedes ver en un clúster de clústeres de Anthos alojados en 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

Un MachineDeployment administra un grupo de Machines: especifica el clúster de Anthos en VMware en el que se ejecutan los recursos Machine, declara su configuración de vSphere y lanza cambios en parámetros de configuración. Puedes pensar en MachineDeployment y Machine como Deployment y Pod.

Para ver los recursos MachineDeployment en un clúster, ejecuta el siguiente comando, en el que [KUBECONFIG] es la ruta de acceso al archivo kubeconfig del clúster:

kubectl get machinedeployments --kubeconfig [KUBECONFIG]

A continuación, se muestra un ejemplo de un recurso MachineDeployment que puedes ver en un clúster de clústeres de Anthos alojados en 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: