集群 API 资源

10

本页面概述 Anthos clusters on VMware (GKE On-Prem) 中使用的 Kubernetes Cluster API 资源。

概览

Anthos clusters on VMware 支持以下 Cluster API 资源:

  • 集群
  • Machine
  • MachineDeployment
  • MachineSet
  • MachineClasses

Anthos clusters on VMware 会在安装过程中自动在集群中生成这些资源;一般而言,您无需直接与其互动。此外,Anthos clusters on VMware 文档会引用这些资源来说明高可用性等概念。

您可以查看集群中的可用 Cluster API CustomResourceDefinition (CRD)

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

下面几个部分讨论了目前与了解 Anthos clusters on VMware 相关的 Cluster API 资源。

集群

Cluster 资源表示在主机上运行的 Kubernetes 实例。所有 Anthos clusters on VMware 集群都有一个描述集群的 Cluster 资源。

如需查看集群中的 Cluster 资源,请运行以下命令,其中 [KUBECONFIG] 是集群的 kubeconfig 文件的路径:

kubectl get clusters --kubeconfig [KUBECONFIG]

下面是您可能会在 Anthos clusters on VMware 用户集群中看到的 Cluster 资源示例:

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:

机器

在 Anthos clusters on VMware 中,Machine 资源是位于 vSphere 中的单个虚拟机的声明性规范。每个 Machine 资源都有一个对应的 Node 资源,Node 资源由 Anthos clusters on VMware 根据 Machine 的规范创建。这些资源引用同一个物理对象,即位于 vSphere 环境中的虚拟机。

如需查看集群中的 Machine 资源,请运行以下命令,其中 [KUBECONFIG] 是集群的 kubeconfig 文件的路径:

kubectl get machines --kubeconfig [KUBECONFIG]

下面是您可能会在 Anthos clusters on VMware 集群中看到的 Machine 资源示例:

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

一个 MachineDeployment 管理一组 Machine:它指定 Machine 在其中运行的 Anthos clusters on VMware 集群、声明 Machine 的 vSphere 配置以及发布配置更改。您可以将 MachineDeployment 和 Machine 视为 Deploymentpod

如需查看集群中的 MachineDeployment 资源,请运行以下命令,其中 [KUBECONFIG] 是集群的 kubeconfig 文件的路径:

kubectl get machinedeployments --kubeconfig [KUBECONFIG]

下面是您可能会在 Anthos clusters on VMware 集群中看到的 MachineDeployment 资源示例:

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: