Public Clous가 제공하는 Managed Kubernetes Cluster를 사용할때 비용절감 방안도 중요하다
이때는 사용자가 많은 시간대에 NodePool(WorkerNode Group)을 Scale Out 하고 사용자가 없는 시간대에 NodePool(WorkerNode Group)을 Scale In 하는 방식으로 야간 동안의 Cost를 절감할 수 있다.
이를 구현하기 위해서는
AWS Lambda, GCP CloudFunction 를 통하여 Cloud Developer SDK를 활용하면 된다. 그리고 이 FaaS를 GCP Cloud Schduler 또는 AWS EventTrigger로 주기적으로 실행시켜주면 된다.
아래는 GCP 예제를 담았다.
아래와 같이 ClusterManagerClient 를 통하여 SetNodePoolSizeRequest Class를 전달하면된다. 이때 이 Class에는 필요한 정보가 담겨있다.
from google.cloud import container_v1
// ...
def scale_out_function(argument):
# Create a client
client = container_v1.ClusterManagerClient()
# Initialize request argument(s)
request_val = container_v1.SetNodePoolSizeRequest(
name="projects/sample-prj-XXXX/locations/us-central1-c/clusters/my-first-cluster-1/nodePools/default-pool",
node_count=val_scale_out
)
# Make the request
response = client.set_node_pool_size(request=request_val)
# Handle the response
print("### START - Send request ")
print(response)
print("### END - Send request ")
return 200
// ...
def scale_in_function(argument):
# Create a client
client = container_v1.ClusterManagerClient()
# Initialize request argument(s)
request_val = container_v1.SetNodePoolSizeRequest(
name="projects/sample-prj-XXXX/locations/us-central1-c/clusters/my-first-cluster-1/nodePools/default-pool",
node_count=val_scale_in
)
# Make the request
response = client.set_node_pool_size(request=request_val)
# Handle the response
print("### START - Send request ")
print(response)
print("### END - Send request ")
return 200
소스코드에 대한 이해를 돕기 위하여 아래에 Git Repository 링크를 제공한다.
https://github.com/armyost/gke-scaler
GitHub - armyost/gke-scaler
Contribute to armyost/gke-scaler development by creating an account on GitHub.
github.com
해당 Class 정보는 다음과 같다.
- [Class Definition - ClusterManagerClient](https://cloud.google.com/python/docs/reference/container/latest/google.cloud.container_v1.services.cluster_manager.ClusterManagerClient)
- [Class Definition - SetNodePoolSizeRequest](https://cloud.google.com/python/docs/reference/container/latest/google.cloud.container_v1.types.SetNodePoolSizeRequest)
'IaaS > 퍼블릭클라우드' 카테고리의 다른 글
AWS) ECS와 Fargate Computing에 영구볼륨 추가 (0) | 2024.03.24 |
---|---|
AWS) 다른 Region에 리소스 생성 못하도록 IAM 정책만들기 (0) | 2024.03.05 |
GKE사용시 kube-system Namespace에 프로비저닝 되는 모듈 (0) | 2024.02.21 |
(GCP) BigQuery 에 대해서 (0) | 2023.12.06 |
(GCP) Cloud SQL 이란? (1) | 2023.12.06 |