Google Kubernetes Engine 클러스터 만들기 및 관리

Google Kubernetes Engine(GKE)은 Docker 컨테이너 실행을 위한 강력한 클러스터 관리자이자 조정 시스템입니다. GKE는 컨테이너를 클러스터에 넣어 예약하고 정의한 요구사항(예: CPU, 메모리)을 기반으로 자동으로 컨테이너를 관리합니다. GKE는 오픈소스 Kubernetes 시스템을 기반으로 구축되었으므로 온프레미스, 하이브리드 또는 공용 클라우드 인프라의 이점을 활용할 수 있는 유연성을 제공합니다.

GKE cmdlet에 대한 자세한 내용은 Google Cloud PowerShell cmdlet 참조를 읽어보세요. 일반적인 GKE에 대한 자세한 내용은 GKE 개요를 참조하세요.

컨테이너 클러스터 만들기 및 업데이트

먼저 New-GkeNodeConfig cmdlet으로 NodeConfig 객체를 만들어 클러스터를 만들 수 있습니다. 그런 다음 NodeConfig 객체를 Add-GkeCluster 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에 제공된 매개변수를 사용하여 클러스터를 만들 수도 있습니다 (NodeConfig 객체는 cmdlet에 의해 내부적으로 생성됨).

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