我正在使用AKS(Azure k8),此选项需要k8s node.js客户端
按名称杀死豆荚
更改部署窗格的数量
重新启动所有部署吊舱
我只需要此功能,女巫lib对此最合适?
也请提供一些使用lib的示例来实现某些功能。
谢谢
更新
我喜欢这个Node.js (TypeScript) github.com/Goyoo/node-k8s-client
,能否提供有关服务帐户和访问权限的更多信息?
答案 0 :(得分:1)
这是所有客户端库的完整列表。
https://kubernetes.io/docs/reference/using-api/client-libraries/
您将需要创建一个服务帐户和角色绑定,以配置适当的权限,以便从客户端库执行这些操作。
node.js特定的库:
Node.js(TypeScript)github.com/Goyoo/node-k8s-client
Node.js github.com/tenxcloud/node-kubernetes-client
Node.js github.com/godaddy/kubernetes-client
基本示例(使用godaddy客户端)
/* eslint no-console:0 */
//
// Demonstrate some of the basics.
//
const Client = require('kubernetes-client').Client;
const config = require('kubernetes-client').config;
const deploymentManifest = require('./nginx-deployment.json');
async function main() {
try {
const client = new Client({ config: config.fromKubeconfig(), version: '1.9' });
//
// Get all the Namespaces.
//
const namespaces = await client.api.v1.namespaces.get();
console.log('Namespaces: ', namespaces);
//
// Create a new Deployment.
//
const create = await client.apis.apps.v1.namespaces('default').deployments.post({ body: deploymentManifest });
console.log('Create: ', create);
//
// Fetch the Deployment we just created.
//
const deployment = await client.apis.apps.v1.namespaces('default').deployments(deploymentManifest.metadata.name).get();
console.log('Deployment: ', deployment);
//
// Change the Deployment Replica count to 10
//
const replica = {
spec: {
replicas: 10
}
};
const replicaModify = await client.apis.apps.v1.namespaces('default').deployments(deploymentManifest.metadata.name).patch({ body: replica });
console.log('Replica Modification: ', replicaModify);
//
// Modify the image tag
//
const newImage = {
spec: {
template: {
spec: {
containers: [{
name: 'nginx',
image: 'nginx:1.8.1'
}]
}
}
}
};
const imageSet = await client.apis.apps.v1.namespaces('default').deployments(deploymentManifest.metadata.name).patch({ body: newImage });
console.log('New Image: ', imageSet);
//
// Remove the Deployment we created.
//
const removed = await client.apis.apps.v1.namespaces('default').deployments(deploymentManifest.metadata.name).delete();
console.log('Removed: ', removed);
} catch (err) {
console.error('Error: ', err);
}
}
main();
答案 1 :(得分:0)
对于node.js,有两个客户端:
答案 2 :(得分:0)
我推荐kubernetes-client/javascript。在我最喜欢原始API方法的所有API中,您可以看到一个示例here。原因是