Você está visualizando a documentação de uma versão anterior do GKE On-Prem. Veja a documentação mais recente.

Recursos da API Cluster

Neste tópico, descrevemos os recursos da API Cluster do Kubernetes usados no GKE On-Prem.

Visão geral

O GKE On-Prem é compatível com os seguintes recursos da API Cluster:

  • Grupo
  • Máquina
  • MachineDeployment
  • MachineSet
  • MachineClasses

O GKE On-Prem gera automaticamente esses recursos nos clusters durante a instalação. Em geral, não é necessário interagir diretamente com eles. Além disso, a documentação do GKE On-Prem refere-se a 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 próximas seções, discutiremos os recursos da API Cluster atualmente relevantes para entender o GKE On-Prem.

Grupo

Um recurso de cluster representa uma instância do Kubernetes em execução em um host. Todos os clusters do GKE On-Prem 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ê pode ver em um cluster de usuário do 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

No GKE On-Prem, um recurso de máquina é uma especificação declarativa para uma máquina virtual (VM, na sigla em inglês) individual que reside no vSphere. Cada recurso de máquina tem um recurso de Node correspondente criado pelo GKE On-Prem com base na especificação da máquina. Esses recursos fazem referência ao mesmo objeto físico: uma VM que vive no seu ambiente do vSphere.

Para ver os recursos da máquina 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 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

Um MachineDeployment gerencia um grupo de máquinas: ele especifica o cluster do GKE On-Prem 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 máquinas 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 do 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: