创建和管理 Google Kubernetes Engine 集群

Google Kubernetes Engine 是一个强大的集群管理和协调系统,可用于运行您的 Docker 容器。GKE 可将您的容器安排成集群,并根据您指定的要求(例如 CPU 和内存)自动进行管理。GKE 以开源系统 Kubernetes 为基础构建而成,可让您灵活地利用本地、混合或公共的云端基础架构。

参阅 Tools for PowerShell 参考,详细了解 GKE cmdlet。如需从整体上了解 GKE,请参阅 GKE 概览

创建和更新 GKE 集群

要创建一个集群,您可以先使用 New-GkeNodeConfig cmdlet 创建一个 NodeConfig 对象。 然后,您可以将 NodeConfig 对象传递给 Add-GkeCluster cmdlet。然后,此 cmdlet 将创建一个集群,其节点池的配置将通过 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 cmdlet 中提供的参数来创建集群(该 cmdlet 将在内部创建一个 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 cmdlet 更新集群。一次只能更新集群的一个属性。

# 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 cmdlet 列出可用的集群。

# 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"

创建和维护节点池

节点池是集群中具有相同配置的计算机的子集。虽然容器集群中的所有节点都相同,但节点池允许您在集群中创建具有不同配置的计算机池。例如,您可以在集群中创建具有本地 SSD 或更大实例大小的节点池。因此,节点池可用于自定义集群中的实例配置文件。

要将节点池添加到集群,您可以先使用 New-GkeNodePool cmdlet 创建一个 NodePool 对象。然后,您可以调用 Add-GkeNodePool cmdlet 将 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 cmdlet 列出集群中的所有节点池。

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

您可以使用 Remove-GkeCluster cmdlet 从集群中移除节点池。

# 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"