Cluster API 리소스

이 페이지에서는 VMware용 Anthos 클러스터(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:

Machine

Anthos clusters on VMware에서 Machine 리소스는 vSphere에 있는 개별 가상 머신(VM)에 대한 선언적 사양입니다. 각 Machine 리소스에는 머신 사양을 기준으로 Anthos clusters on VMware에서 생성된 해당 노드 리소스가 있습니다. 이러한 리소스는 vSphere 환경에 있는 VM인 동일한 물리적 객체를 나타냅니다.

클러스터에 있는 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 클러스터를 지정하고 해당 vSphere 구성을 선언하고 변경사항을 구성에 적용합니다. MachineDeployment 및 Machine은 배포pod로 이해될 수 있습니다.

클러스터에 있는 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: