因为公司项目需要,k8s的集群管理由其它人负责,而我们的自动化部署平台需要从k8s集群外的机器上调用k8s主节点的apiserver提供的API。
由于集群是用kubeadm安装的,证书验证齐全,那么,调用API时,只能通过kubectl proxy的方式进行调用管理。
操作步骤如下:
一,在集群外的机器上安装好kubectl的rpm包。
rpm -ivh kubectl-1.7.0-0.x86_64.rpm
二,将k8s上在安装过程中生成的config文件重命名,CP到操作用户的家目录的.kube目录下,config文件中包含的内容片段如下。
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
三,启动kubectl proxy,通过kubeconfig参数指定目标config文件(指定不同的config,可连接不同的k8s apiserver),默认通过8001端口代理访问。
kubectl --kubeconfig="/x/.kube/config" proxy
四,如果有多个k8s的apiserver,指定不同的端口需要增加port参数。
kubectl --kubeconfig="/x/.kube/config" --port=8079 proxy
五,可通过curl命令进行简单的测试。
curl http://127.0.0.1:8079/apis/extensions/v1beta1/namespaces/default/deployments/pc-saveapi
六,全版的api操作文档见如下网址(注意版本号)。
https://v1-7.docs.kubernetes.io/docs/api-reference/v1.7/
七,祝顺利。