GKE REST/Node API 调用以获取池中的节点数?
GKE REST/Node API call to get number of nodes in a pool?
如何获取 GKE 节点池的当前大小 using the REST (or Node) API?
我在我的集群上使用我的 Express 应用程序 运行 管理我自己的工作池,并且可以设置池的大小并跟踪 setSize 操作的成功,但我没有看到 API 用于获取当前节点数。 NodePool 资源仅包括原始节点数,不包括当前节点数。我不想在我的生产虚拟机之一上使用 gcloud 或 kubectl。
我可以绕过 GKE 并尝试使用计算引擎 (GCE) API 推断大小,但我还没有研究过这种方法。注意。有没有人找到任何解决方法来获取当前节点大小?
可以通过获取与节点池关联的实例组,从 Compute Engine API 检索工作程序池大小。
const { google } = require('googleapis')
const Compute = require('@google-cloud/compute')
const container = google.container('v1')
const compute = new Compute()
const projectId = 'project-12345'
const zone = 'us-central1-a'
const nodePoolId = 'worker-pool'
const clusterId = 'cluster-name'
async function authorize() {
const auth = new google.auth.GoogleAuth({
scopes: [ 'https://www.googleapis.com/auth/cloud-platform' ],
})
return auth.getClient()
}
const getNodePoolSize = async () => {
const auth = await authorize()
const clusterName = `projects/${projectId}/zones/${zone}/clusters/${clusterId}`
const request = { name: clusterName, auth }
const response = await container.projects.locations.clusters.get(request)
const nodePool = response.data.nodePools.find(({ name }) => name === nodePoolId)
const igName = nodePool.instanceGroupUrls[0].match(/.*\/instanceGroupManagers\/([a-z0-9-]*)$/)[1]
const instanceGroup = await compute.zone(zone).instanceGroup(igName).get()
return instanceGroup[1 /* 0 is config, 1 is instance */].size
}
请注意,这是使用两种不同的节点 API 机制。我们可以使用 google.compute
而不是 @google-cloud/compute
。此外,两个 API 的身份验证方式不同。前者使用authorize()
方式获取客户端,后者通过环境变量中设置的默认账号进行认证
如何获取 GKE 节点池的当前大小 using the REST (or Node) API?
我在我的集群上使用我的 Express 应用程序 运行 管理我自己的工作池,并且可以设置池的大小并跟踪 setSize 操作的成功,但我没有看到 API 用于获取当前节点数。 NodePool 资源仅包括原始节点数,不包括当前节点数。我不想在我的生产虚拟机之一上使用 gcloud 或 kubectl。
我可以绕过 GKE 并尝试使用计算引擎 (GCE) API 推断大小,但我还没有研究过这种方法。注意
可以通过获取与节点池关联的实例组,从 Compute Engine API 检索工作程序池大小。
const { google } = require('googleapis')
const Compute = require('@google-cloud/compute')
const container = google.container('v1')
const compute = new Compute()
const projectId = 'project-12345'
const zone = 'us-central1-a'
const nodePoolId = 'worker-pool'
const clusterId = 'cluster-name'
async function authorize() {
const auth = new google.auth.GoogleAuth({
scopes: [ 'https://www.googleapis.com/auth/cloud-platform' ],
})
return auth.getClient()
}
const getNodePoolSize = async () => {
const auth = await authorize()
const clusterName = `projects/${projectId}/zones/${zone}/clusters/${clusterId}`
const request = { name: clusterName, auth }
const response = await container.projects.locations.clusters.get(request)
const nodePool = response.data.nodePools.find(({ name }) => name === nodePoolId)
const igName = nodePool.instanceGroupUrls[0].match(/.*\/instanceGroupManagers\/([a-z0-9-]*)$/)[1]
const instanceGroup = await compute.zone(zone).instanceGroup(igName).get()
return instanceGroup[1 /* 0 is config, 1 is instance */].size
}
请注意,这是使用两种不同的节点 API 机制。我们可以使用 google.compute
而不是 @google-cloud/compute
。此外,两个 API 的身份验证方式不同。前者使用authorize()
方式获取客户端,后者通过环境变量中设置的默认账号进行认证