Consulta la documentación de una versión anterior de GKE On-Prem. Consulta la documentación más reciente.

Recursos de la API de clúster

En este tema, se describen los recursos de la API de clúster de Kubernetes que se usan en GKE local.

Resumen

GKE local admite los siguientes recursos de la API de clúster:

  • Clúster
  • Máquina
  • MachineDeployment
  • MachineSet
  • MachineClases

GKE local genera automáticamente estos recursos en tus clústeres durante la instalación. En general, no es necesario interactuar directamente con ellos. Además, la documentación de GKE local hace referencia a estos recursos para ilustrar conceptos como la alta disponibilidad.

Puedes verificar qué CustomResourceDefinitions (CRD) de 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 actualmente son relevantes para comprender GKE local.

Clúster

Un recurso de clúster representa una instancia de Kubernetes que se ejecuta en un host. Todos los clústeres de GKE On-Prem tienen un recurso de clúster que describe el clúster.

Para ver los recursos del clúster 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 clusters --kubeconfig [KUBECONFIG]

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

Máquina

En GKE local, un recurso de máquina es una especificación declarativa para una máquina virtual (VM) individual que se encuentra en vSphere. Cada recurso de máquina tiene un recurso de nodo correspondiente que GKE local crea según la especificación de la máquina. Estos recursos hacen referencia al mismo objeto físico: una VM que se encuentra en tu entorno de vSphere.

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

kubectl get machines --kubeconfig [KUBECONFIG]

A continuación, se muestra un ejemplo de un recurso de máquina que puedes ver en un clúster de 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 MachineDeployment administra un grupo de máquinas: especifica el clúster de GKE On-Prem en el que se ejecutan las máquinas, declara su configuración de vSphere y, también, implementa cambios en las configuraciones. Puedes pensar que MachineDeployments y las máquinas son como implementaciones y pods.

Para ver los recursos de 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 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: