1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| from kubernetes import config,client config.load_kube_config(config_file='config') client_apps=client.AppsV1Api()
namespaces_list=['qatest','production','dev']
while True:
print("动态调整deployment副本数脚本(输入exit退出)") namespaces=input(f"输入命名空间:\n可选:{','.join(namespaces_list)}\n>>>")
if namespaces == 'exit': break elif namespaces not in namespaces_list: print(f"无效的命名空间{namespaces},请重新输入") continue
try: replica=int(input(f"输入副本数:")) except ValueError: print("副本数无效,请输入整数") continue
deployment_name=input(f"输入Deployment名:")
try: deployment_info=client_apps.read_namespaced_deployment(namespace=namespaces,name=deployment_name) deployment_info.spec.replicas=replica client_apps.replace_namespaced_deployment(name=deployment_name,namespace=namespaces,body=deployment_info) print(f"Deployment {deployment_name} in {namespaces} replicas is updated to {replica}") except client.exceptions.ApiException as e: if e.status == 404: print(f"deployment {deployment_name} is not found") deployment_body=client.V1Deployment( metadata=client.V1ObjectMeta( name=deployment_name, namespace=namespaces ), spec=client.V1DeploymentSpec( replicas=replica, selector=client.V1LabelSelector( match_labels={'app':"python"} ), template=client.V1PodTemplateSpec( metadata=client.V1ObjectMeta( name='my-pod', labels={"app":"python"} ), spec=client.V1PodSpec( containers=[client.V1Container( name='my-container', image='nginx:latest', image_pull_policy='IfNotPresent', ports=[client.V1ContainerPort( container_port=80 )] )], ) ) ) ) client_apps.create_namespaced_deployment(namespace=namespaces,body=deployment_body) print(f'deployment {deployment_name} is created in {namespaces},replacs is {replica}') else: print(f'错误{e.reason}')
|