이전 버전의 GKE On-Prem 문서를 보고 있습니다. 최신 문서 보기

Cluster API 리소스

이 주제에서는 GKE On-Prem에서 사용되는 Kubernetes Cluster API 리소스에 대해 설명합니다.

개요

GKE On-Prem에는 다음과 같은 Cluster API 리소스가 지원됩니다.

  • 클러스터
  • 머신
  • MachineDeployment
  • MachineSet
  • MachineClasses

GKE On-Prem은 설치 중 클러스터에 이러한 리소스를 자동으로 생성합니다. 일반적으로는 사용자가 이를 직접 관리할 필요가 없습니다. 또한 GKE On-Prem 문서에서는 고가용성과 같은 개념을 설명하기 위해 이 리소스가 참조됩니다.

클러스터에서 사용할 수 있는 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

다음 섹션에서는 현재 GKE On-Prem 이해와 관련된 Cluster API 리소스에 대해 설명합니다.

클러스터

클러스터 리소스는 호스트에서 실행되는 Kubernetes 인스턴스를 나타냅니다. 모든 GKE On-Prem 클러스터에는 클러스터를 설명하는 클러스터 리소스가 있습니다.

클러스터에 있는 클러스터 리소스를 보려면 다음 명령어를 실행합니다. 여기서 [KUBECONFIG]는 클러스터의 kubeconfig 파일 경로입니다.

kubectl get clusters --kubeconfig [KUBECONFIG]

다음은 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:

머신

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

클러스터에 있는 Machine 리소스를 보려면 다음 명령어를 실행합니다. 여기서 [KUBECONFIG]는 클러스터의 kubeconfig 파일 경로입니다.

kubectl get machines --kubeconfig [KUBECONFIG]

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

클러스터에 있는 MachineDeployment 리소스를 보려면 다음 명령어를 실행합니다. 여기서 [KUBECONFIG]는 클러스터의 kubeconfig 파일 경로입니다.

kubectl get machinedeployments --kubeconfig [KUBECONFIG]

다음은 GKE On-Prem 클러스터에서 볼 수 있는 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: