Kubernetes容器云平台自动化运维工具——管理service资源
Kubernetes Python运维脚本开发,使用Restful APIs方式管理service服务。
在提供的OpenStack私有云平台上,使用k8s-python-dev镜像创建1台云主机,云主机类型使用4vCPU/12G内存/100G硬盘。该主机中已经默认安装了所需的开发环境,登录默认账号密码为“root/1DaoYun@2022”。
使用python request库和Kubernetes Restful APIs,在/root目录下,创建api_manager_service.py文件,要求编写python代码,代码实现以下任务:
(1)首先查询查询服务service,如果service名称“nginx-svc”已经存在,先删除。
(2)如果不存在“nginx-svc”,则使用service.yaml文件创建服务。
(3)创建完成后,查询该服务的信息,查询的body部分以json格式的文件输出到当前目录下的service_api_dev.json文件中。
(4)然后使用service_update.yaml更新服务端口。
(5)完成更新后,查询该服务的信息,信息通过控制台输出,并通过json格式追加到service_api_dev.json文件后。
编写完成后,提交该云主机的用户名、密码和IP地址到答题框。
import requests, json, yaml
import urllib3
urllib3.disable_warnings()
# token获取建议使用推荐的api方式获取
token = 'bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjgzOUlSOUNIQjVpZHhZdTk4SVcwYjBBUUxoaWpLVHZUY3Q2NWZFTnVyekkifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtc2EtY2x1c3RlcmFkbWluLXRva2VuLWxicDdqIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRhc2hib2FyZC1zYS1jbHVzdGVyYWRtaW4iLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI5YmNiMDc4NC01YTdiLTQzN2EtODQyNy1lZDU3YjU2MzgyNzIiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1kYXNoYm9hcmQ6ZGFzaGJvYXJkLXNhLWNsdXN0ZXJhZG1pbiJ9.ZCXqqY9TXFdgWRsvhdCIwskxDGrtIxRoGsRiGptOtMLnyIL_QewRT127bqwAGdLGQ6QQI-iUb_LWPu0XrryipOMb6WnLk_bzPlef4YNK57Zsg83i441rA08t6ykMVxRqFgUSp5eMEpo-OsKMj0FnThrKooCZTtZgi_spNBLdBgLi5SKY4N63tjsSlAIV7WZEBLclQaqVAWryler98TeASoK06HVtVL-mwhUh8sRV5SNALyXmunnM-ZJcA22fK7YnAx6JCQgoCHed4ZBN51y8qGBWL4Cw5T-GRrPXFxvoj44pkMQEMNHYfhVAj-RCYaccLtF4aMFQByH0LB30lIN8Fg'
headers = {
"Content-Type": "application/json",
"Authorization": token
}
requests.delete('https://192.168.200.13:6443/api/v1/namespaces/default/services/nginx-svc', headers=headers, verify=False)
with open('service.yaml', encoding='utf-8') as f:
s = json.dumps(yaml.safe_load(f.read()))
sspi = requests.post('https://192.168.200.13:6443/api/v1/namespaces/default/services', headers=headers, verify=False, data=s)
print(sspi.text)
ss = requests.get('https://192.168.200.13:6443/api/v1/namespaces/default/services/nginx-svc', headers=headers, verify=False)
print(ss.text)
with open('service_api_dev.json', 'w') as f:
f.write(ss.text)
with open('service_update.yaml',encoding='utf-8') as f:
b=json.dumps(yaml.safe_load(f.read()))
ssb = requests.patch('https://192.168.200.13:6443/api/v1/namespaces/default/services/nginx-svc', headers=headers, verify=False,data=b)
print(ssb.text)
ss = requests.get('https://192.168.200.13:6443/api/v1/namespaces/default/services/nginx-svc', headers=headers, verify=False)
print(ss.text)
with open('service_api_dev.json', 'a') as f:
f.write(ss.text)