이 페이지에서는 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: