Google Kubernetes Engine クラスタの作成と管理

Google Kubernetes Engine は、Docker コンテナを実行するための強力なクラスタ管理とオーケストレーションのシステムです。コンテナをスケジュールしてクラスタを作成し、定義された要件(CPU やメモリなど)に基づいて自動的に管理します。オープンソースの Kubernetes システム上に構築されており、オンプレミス、ハイブリッド、パブリック クラウド インフラストラクチャのいずれのモデルでも使用できる柔軟性を備えています。

GKE のコマンドレットの詳細については、Google Cloud PowerShell コマンドレット リファレンスをご覧ください。GKE の全般的な情報については、GKE の概要をご覧ください。

コンテナ クラスタの作成と更新

クラスタを作成するには、最初に New-GkeNodeConfig コマンドレットを使用して NodeConfig オブジェクトを作成します。次に、NodeConfig オブジェクトを Add-GkeCluster コマンドレットに渡します。そうすると、ノードプールに NodeConfig オブジェクトの構成が設定されたクラスタが作成されます。

# Creates a GKE Node Config with image type CONTAINER_VM
# and 20 GB disk size for each node.
$nodeConfig = New-GkeNodeConfig -DiskSizeGb 20 `
                                -ImageType CONTAINER_VM

# Creates a cluster named "my-cluster" in the default zone of the
# default project using config $nodeConfig and network "my-network".
Add-GkeCluster -NodeConfig $nodeConfig `
               -ClusterName "my-cluster" `
               -Network "my-network"

また、NodeConfig オブジェクトを渡す代わりに、Add-GkeCluster コマンドレットで提供されるパラメータを使用してクラスタを作成することもできます(NodeConfig オブジェクトは、コマンドレットによって内部的に作成されます)。

# Creates a cluster named "my-cluster" with description "my new cluster"
# in the default zone of the default project using machine type
# "n1-standard-4" for each Compute Engine in the cluster.
# The cluster will use the subnetwork "my-subnetwork".
# The cluster's nodes will have autoupgrade enabled.
# The cluster will also autoscale its node pool to a maximum of 2 nodes.
Add-GkeCluster -MachineType "n1-standard-4" `
               -ClusterName "my-cluster" `
               -Description "My new cluster" `
               -Subnetwork "my-subnetwork" `
               -EnableAutoUpgrade `
               -MaximumNodesToScaleTo 2

クラスタを更新するには、Set-GkeCluster コマンドレットを使用します。一度に更新できるのは、クラスタの 1 つのプロパティのみです。

# Sets additional zones of cluster "my-cluster" in zone "asia-east1-a"
# to zones "asia-east1-b" and "asia-east1-c". This means the clusters will
# have nodes created in these zones. The primary zone
# ("asia-east1-a" in this case) will be added to the
# AdditionalZone array by the cmdlet.
Set-GkeCluster -ClusterName "my-cluster" `
               -Zone "asia-east1-a" `
               -AdditionalZone "asia-east1-b", "asia-east1-c"

使用可能なクラスタを一覧表示するには、Get-GkeCluster コマンドレットを使用します。

# Lists all container clusters in the default project.
Get-GkeCluster

# List all container clusters in zone "us-central1-a"
# of the default project.
Get-GkeCluster -Zone "us-central1-a"

ノードプールの作成と維持

ノードプールとは、1 つのクラスタ内で、すべてが同じように構成されたマシンのサブセットです。コンテナ クラスタ内のノードはすべて同一になりますが、ノードプールでは、クラスタ内に異なる構成を持ったマシンのプールを作成できます。たとえば、ローカル SSD を持つノードやインスタンス サイズの大きいノードが存在するプールをクラスタ内に作成できます。そのため、ノードプールはクラスタ内のインスタンス プロファイルをカスタマイズする際に役立ちます。

クラスタにノードプールを追加するには、最初に New-GkeNodePool コマンドレットを使用して NodePool オブジェクトを作成します。次に、Add-GkeNodePool コマンドレットを呼び出して、NodePool オブジェクトをクラスタに追加します。

# Creates a node pool named "my-nodepool" with image type
# CONTAINER_VM for each node.
$nodePool = New-GkeNodePool -NodePoolName "my-nodepool" `
                            -ImageType CONTAINER_VM

# Adds the pool to cluster "my-cluster".
Add-GkeNodePool -NodePool $nodePool -Cluster "my-cluster"

クラスタ内のすべてのノードプールを一覧表示するには、Get-GkeNodePool コマンドレットを使用します。

# Lists all node pools in cluster "my-cluster" in the default project.
Get-GkeNodePool -ClusterName "my-cluster"

クラスタからノードプールを削除するには、Remove-GkeCluster コマンドレットを使用します。

# Removes the node pool "my-nodepool" in cluster "my-cluster"
# in the zone "us-west1-b" of the default project.
Remove-GkeCluster -ClusterName "my-cluster" `
                  -Zone "us-west1-b" `
                  -NodePoolName "my-nodepool"