本章将描述各种编程语言类型的Kubernetes API客户端库。
要使用Kubernetes REST API编写应用程序,你不需要自己编写API来调用、请求/响应等类型,可以直接使用现成的客户端库来实现。
客户端库经常是处理一些常见的任务,例如进行身份验证。
官方支持的Kubernetes客户端库
以下客户端库由Kubernetes SIG API Machinery维护。
Language | Client Library | Sample Programs |
Go | github.com/kubernetes/client-go/ | browse |
Python | github.com/kubernetes-incubator/client-python/ | browse |
社区维护的客户端库
以下Kubernetes API客户端库由社区创建者维护,Kubernetes团队不会提供支持和维护。
Language | Client Library |
Clojure | github.com/yanatan16/clj-kubernetes-api |
Go | github.com/ericchiang/k8s |
Java (OSGi) | bitbucket.org/amdatulabs/amdatu-kubernetes |
Java (Fabric8, OSGi) | github.com/fabric8io/kubernetes-client |
Node.js | github.com/tenxcloud/node-kubernetes-client |
Node.js | github.com/godaddy/kubernetes-client |
Perl | metacpan.org/pod/Net::Kubernetes |
PHP | github.com/devstub/kubernetes-api-php-client |
PHP | github.com/maclof/kubernetes-client |
Python | github.com/eldarion-gondor/pykube |
Ruby | github.com/Ch00k/kuber |
Ruby | github.com/abonas/kubeclient |
Scala | github.com/doriordan/skuber |
我使用python客户端库的代码如下:
from kubernetes import client, config, watch
# Configs can be set in Configuration class directly or using helper utility
config.load_kube_config(config_file=”kubeconfig.yaml”)
v1 = client.CoreV1Api()
print(“Listing All services with their info:\n”)
ret = v1.list_service_for_all_namespaces(watch=False)
for i in ret.items:
print(
“%s \t%s \t%s \t%s \t%s \n” % (i.kind, i.metadata.namespace, i.metadata.name, i.spec.cluster_ip, i.spec.ports))
但是会报
OpenSSL.SSL.Error: [(‘SSL routines’, ‘tls_process_server_certificate’, ‘certificate verify failed’)]
这是为啥?
requests 库其实是基于 urllib 编写的,对 urllib 进行了封装,使得使用时候的体验好了很多,现在 urllib 已经出到了3版本,功能和性能自然是提升了不少。 所以,requests最新版本也是基于最新的 urllib3 进行封装。
在urllib2时代对https的处理非常简单,只需要在请求的时候加上 verify=False 即可,这个参数的意思是忽略https安全证书的验证,也就是不验证证书的可靠性,直接请求, 这其实是不安全的,因为证书可以伪造,不验证的话就不能保证数据的真实性。
http://www.updn.cn/2020/01/03/kubernetes-python-api%e4%b8%ad%e6%96%87%e4%bd%bf%e7%94%a8%e8%af%b4%e6%98%8e/