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: