操作场景
本文介绍如何在腾讯云容器服务集群中使用 Kubernetes API 进行相关操作。例如,查看集群下所有 namespaces、查看指定 namespaces 下所有 Pods 及 Pod 的增加、删除、查询操作。
操作步骤
获取集群访问凭证 kubeconfig
1. 参考 使用标准登录方式登录 Linux 实例(推荐),登录集群节点。
2. 执行以下命令,获取集群访问凭证(kubeconfig)文件的位置。
ps -ef |grep kubelet|grep -v grep
返回结果如下图所示,访问凭证位置为:![](https://qcloudimg.tencent-cloud.cn/image/document/9dd41e20abe6e6dc3eb496bc6f1fcbc7.png)
/etc/kubernetes/kubelet-kubeconfig
。
![](https://qcloudimg.tencent-cloud.cn/image/document/9dd41e20abe6e6dc3eb496bc6f1fcbc7.png)
3. 执行以下命令,进入目录 kubernetes。
cd /etc/kubernetes
4. 依次执行以下命令,分别从 kubeconfig 文件中获取 ca、key 和 apiserver 信息。
cat ./kubelet-kubeconfig |grep client-certificate-data | awk -F ' ' '{print $2}' |base64 -d > client-cert.pem
cat ./kubelet-kubeconfig |grep client-key-data | awk -F ' ' '{print $2}' |base64 -d > client-key.pem
APISERVER=`cat ./kubelet-kubeconfig |grep server | awk -F ' ' '{print $2}'`
执行命令 ![](https://qcloudimg.tencent-cloud.cn/image/document/391eab8fe304c7ae8d937f5bfc918896.png)
ls
,可查看在 kubernetes 目录下已生成的 client-cert.pem
、client-key.pem
文件。如下图所示:
![](https://qcloudimg.tencent-cloud.cn/image/document/391eab8fe304c7ae8d937f5bfc918896.png)
使用 CURL 命令操作 Kubernetes API
1. 执行以下命令,查看当前集群中所有 namespaces。
curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces
说明
2. 执行以下命令,查看 kube-system 命名空间下的所有 Pods。
curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/kube-system/pods
Pod 生命周期管理
说明
以下步骤中所创建的文件及文件内容均为示例,您可根据实际需要进行自定义创建。
使用 JSON 格式创建 Pod
1. 执行以下命令,创建并打开 JSON 文件。
vim nginx-pod.json
2. 在 JSON 文件中,输入以下内容:
{"apiVersion":"v1","kind":"Pod","metadata":{"name":"nginx","namespace": "default"},"spec":{"containers":[{"name":"nginx-test","image":"nginx","ports":[{"containerPort": 80}]}]}}
3. 执行以下命令,创建 Pod。
curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods -X POST --header 'content-type: application/json' -d@nginx-pod.json
使用 YAML 格式创建 Pod
1. 执行以下命令,创建并打开 YAML 文件。
vim nginx-pod.json
2. 在 YAML 文件中,输入以下内容:
apiVersion: v1kind: Podmetadata:name: nginxnamespace: defaultspec:containers:- name: nginx-testimage: nginxports:- containerPort: 80
3. 执行以下命令,创建 Pod。
curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods -X POST --header 'content-type: application/yaml' --data-binary @nginx-pod.yaml
查询 Pod 状态
您可执行以下命令,查询 Pod 状态。
curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods/nginx
查询 Pod logs
您可执行以下命令,查询 Pod logs。
curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods/nginx/log
查询 Pod 的 metrics 数据
您可执行以下命令,通过 metric-server api 查询 Pod 的 metrics 数据。
curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/apis/metrics.k8s.io/v1beta1/namespaces/default/pods/nginx
删除 Pod
您可执行以下命令,删除 Pod。
curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods/nginx -X DELETE
相关操作
放通集群访问权限
方式二:执行以下命令进行授权,但在生产集群中,不建议盲目地将账户提升为集群管理员权限 cluster-admin。
kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous