使用Kubernetes API
本文将基于cURL命令简单演示如何以REST的方式使用Kubernetes API,方便您使用开发语言原生的HTTPS方式操作Kubernetes集群。演示包括创建和删除Pod,创建和修改Deployment。
获取集群访问凭证KubeConfig
- 登录容器服务管理控制台。
- 在控制台左侧导航栏中,单击集群。
- 在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。
- 单击连接信息页签,查看集群访问凭证(KubeConfig),将KubeConfig文件保存到本地。
- 从KubeConfig文件中提取ca、key和apiserver信息,命令如下。
1 | cat ./kubeconfig |grep client-certificate-data | awk -F ' ' '{print $2}' |base64 -d > ./client-cert.pem |
使用cURL命令操作Kubernetes API
执行以下命令查看当前集群中所有Namespaces。
1 | --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces |
- 常用的Pod相关操作。
执行以下命令查看default命名空间下的所有Pods。
1 | --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods |
执行以下命令创建Pod(JSON格式)。
1 | cat nginx-pod.json |
执行以下命令创建Pod(YAML格式)。
1 | cat nginx-pod.yaml |
执行以下命令查询Pod状态。
1 | --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods/nginx |
执行以下命令查询Pod logs。
1 | --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods/nginx/log |
执行以下命令查询Pod的metrics数据(通过metric-server api)。
1 | --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/apis/metrics.k8s.io/v1beta1/namespaces/default/pods/nginx |
执行以下命令删除Pod。
1 | --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods/nginx -X DELETE |
- 常用的Deployment相关操作。
创建Deployment示例YAML文件如下。
1 | cat nginx-deploy.yaml |
执行以下命令查看Deployment。
1 | --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/apis/apps/v1/namespaces/default/deployments |
执行以下命令更新Deployment(修改replicas副本数量)。
1 | --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/apis/apps/v1/namespaces/default/deployments/nginx-deploy -X PATCH -H 'Content-Type: application/strategic-merge-patch+json' -d '{"spec": {"replicas": 4}}' |
执行以下命令更新Deployment(修改容器镜像)。
1 | --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/apis/apps/v1/namespaces/default/deployments/nginx-deploy -X PATCH -H 'Content-Type: application/strategic-merge-patch+json' -d '{"spec": {"template": {"spec": {"containers": [{"name": "nginx","image": "nginx:1.7.9"}]}}}}' |
本文引自这里