似乎在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上的文档,我认为这是不完整的。
答案 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语法),它们也可以满足您的需求。