このページでは、Anthos clusters on VMware(GKE On-Prem)で使用される Kubernetes Cluster API リソースの概要について説明します。
概要
Anthos clusters on VMware は、次の Cluster API リソースをサポートしています。
- Cluster
- Machine
- MachineDeployment
- MachineSet
- MachineClasses
Anthos clusters on VMware は、インストール時にこれらのリソースを自動的に生成します。通常、直接操作する必要はありません。また、Anthos clusters on VMware のドキュメントでは、これらのリソースについて高可用性などのコンセプトを説明しています。
クラスタ内に次のどの Cluster API CustomResourceDefinitions(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
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 リソースには、対応する Node リソースがあります。これらは、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 は、Deployment と 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: