如何在YAML文件中指定GKE节点池配置,而不是使用gcloud容器节点池创建?

时间:2019-07-27 09:19:34

标签: kubernetes google-kubernetes-engine

似乎在Google Kubernetes Engine上创建节点池的唯一方法是使用命令gcloud container node-pools create。我想将所有配置都放在YAML文件中。我尝试了以下内容:

apiVersion: v1
kind: NodeConfig
metadata:
  annotations:
    cloud.google.com/gke-nodepool: ares-pool
spec:
  diskSizeGb: 30
  diskType: pd-standard
  imageType: COS
  machineType: n1-standard-1
  metadata:
    disable-legacy-endpoints: 'true'
  oauthScopes:
  - https://www.googleapis.com/auth/devstorage.read_only
  - https://www.googleapis.com/auth/logging.write
  - https://www.googleapis.com/auth/monitoring
  - https://www.googleapis.com/auth/service.management.readonly
  - https://www.googleapis.com/auth/servicecontrol
  - https://www.googleapis.com/auth/trace.append
  serviceAccount: default

但是kubectl apply失败:

error: unable to recognize "ares-pool.yaml": no matches for kind "NodeConfig" in version "v1"

令我惊讶的是,我的所有搜索都几乎没有找到与Google相关的结果。我找到的唯一文档是Google Cloud上的文档,我认为这是不完整的。

1 个答案:

答案 0 :(得分:3)

节点池不是Kubernetes对象,它们是Google Cloud API的一部分。因此,Kubernetes不了解它们,而kubectl apply将不起作用。

您真正需要的是一个名为“基础设施即代码” 的解决方案-该代码将告诉GCP所需的节点池类型。

如果您严格不需要YAML,则可以签出处理此用例的Terraform。请参阅:https://terraform.io/docs/providers/google/r/container_node_pool.html

您还可以查看 Google部署管理器 Ansible (具有GCP模块,并使用YAML语法),它们也可以满足您的需求。