Nesta página, descrevemos os recursos da API Cluster do Kubernetes usados em clusters do Anthos no VMware (GKE no local).
Visão geral
Os clusters do Anthos no VMware são compatíveis com os seguintes recursos da API Cluster:
- Cluster
- Máquina
- MachineDeployment
- MachineSet
- MachineClasses
Os clusters do Anthos no VMware geram automaticamente esses recursos nos clusters durante a instalação. Geralmente, não é preciso interagir diretamente com eles. Além disso, os clusters do Anthos na documentação do VMware mencionam esses recursos para ilustrar conceitos como alta disponibilidade.
É possível verificar quais CustomResourceDefinitions (CRDs) da API Cluster estão disponíveis em um 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
Nas seções a seguir, você conhecerá os recursos da API Cluster atualmente relevantes para entender os clusters do Anthos no VMware.
Cluster
Um recurso de cluster representa uma instância do Kubernetes em execução em um host. Todos os clusters do Anthos em clusters do VMware têm um recurso de cluster que descreve o cluster.
Para ver os recursos do cluster em um cluster, execute o seguinte comando, em que [KUBECONFIG] é o caminho para o arquivo kubeconfig do cluster:
kubectl get clusters --kubeconfig [KUBECONFIG]
Veja abaixo um exemplo de recurso de cluster que você consegue ver em um cluster do Anthos no cluster de usuário do 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:
Máquina
Nos clusters do Anthos no VMware, um recurso de máquina é uma especificação declarativa para uma máquina virtual (VM) individual que reside no vSphere. Cada recurso de máquina tem um recurso Node correspondente que é criado pelos clusters do Anthos no VMware com base na especificação da máquina. Esses recursos fazem referência ao mesmo objeto físico: uma VM localizada no seu ambiente do vSphere.
Para ver os recursos Machine em um cluster, execute o seguinte comando, em que [KUBECONFIG] é o caminho para o arquivo kubeconfig do cluster:
kubectl get machines --kubeconfig [KUBECONFIG]
Veja abaixo um exemplo de recurso de máquina que você pode ver em um cluster do Anthos no cluster do 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
Um MachineDeployment gerencia um grupo de máquinas: ele especifica os clusters do Anthos no cluster da VMware em que as máquinas são executadas, declara a configuração do vSphere e implementa alterações nas configurações. Pense em MachineDeployments e Machines como implantações e pods.
Para ver os recursos do MachineDeployment em um cluster, execute o seguinte comando, em que [KUBECONFIG] é o caminho para o arquivo kubeconfig do cluster:
kubectl get machinedeployments --kubeconfig [KUBECONFIG]
Veja abaixo um exemplo de recurso MachineDeployment que você pode ver em um cluster Anthos em cluster 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: