1、查看
1 kube_conf = '/root/kubeconfig.yaml' 2 config.load_kube_config(kube_conf) 3 api = client.AppsV1Api() 4 core = client.CoreV1Api() 5 6 7 def list_namespace(): 8 ret = [] 9 for ns in core.list_namespace().items: 10 ret.append(ns.metadata.name) 11 return ret 12 13 14 def list_services(): 15 result = [] 16 ret = core.list_service_for_all_namespaces(watch=False) 17 for i in ret.items: 18 info = {'kind': i.kind, 'namespace': i.metadata.namespace, 'name': i.metadata.name, 'ip': i.spec.cluster_ip, 19 'ports': i.spec.ports} 20 result.append(info) 21 return result 22 23 24 def list_pod(): 25 result = [] 26 ret = core.list_pod_for_all_namespaces(watch=False) 27 for i in ret.items: 28 info = {'pod_ip': i.status.pod_ip, 'namespace': i.metadata.namespace, 'name': i.metadata.name} 29 result.append(info) 30 return result 31 32 33 def list_deploy(): 34 result = [] 35 ret = api.list_deployment_for_all_namespaces(watch=False) 36 for i in ret.items: 37 images = [x.image for x in i.spec.template.spec.containers] 38 info = {'namespace': i.metadata.namespace, 'name': i.metadata.name, 'images': images} 39 result.append(info) 40 return result
2、更新
1 def upgrade_by_kube(update_image): 2 # 傳入參數配置 3 name = 'flaskapp-1' 4 namespace = 'default' 5 6 # read deployment 7 body = api.read_namespaced_deployment(name, namespace) 8 # 修改鏡像版本為指定 9 body.spec.template.spec.containers[0].image = update_image 10 try: 11 api.replace_namespaced_deployment(name, namespace, body) 12 print("\033[0;32m{} 中deployment : {} {}更新完成\033[0m".format(namespace, name, update_image)) 13 except ApiException as e: 14 print("Exception when calling AppsV1Api->replace_namespaced_deployment: %s\n" % e)