云计算-容器云-容器云服务运维开发

容器云服务运维开发(15)
​ 基于Kubernetes APIs与SDK,使用Python脚本,完成容器云服务运维任务

1.管理service资源(5分)
​ Kubernetes Python运维脚本开发,使用Restful APIs方式管理service服务。
​ 使用已经部署完成的Kubernetes两节点云平台,在Master节点安装Python 3.7.3的运行环境与依赖库。

​ 使用python request库和Kubernetes Restful APIs,在/root目录下,创建api_manager_service.py文件,要求编写python代码,代码实现以下任务:

​ ①首先查询查询服务service,如果service名称“nginx-svc”已经存在,先删除。

​ ②如果不存在“nginx-svc”,则使用service.yaml文件创建服务。

​ ③创建完成后,查询该服务的信息,查询的body部分以json格式的文件输出到当前目录下的service_api_dev.json文件中。

​ ④然后使用service_update.yaml更新服务端口。

​ ⑤完成更新后,查询该服务的信息,信息通过控制台输出,并通过json格式追加到service_api_dev.json文件后。

# 上传k8s_Python_Packages解压
tar -zxf k8s_Python_Packages.tar.gz

# 解压python包
tar -zxf /root/Python_Packages/python-3.6.8.tar.gz

# 安装python
yum install -y /root/python-3.6.8/packages/*

# 验证是否安装成功
pip3 --version

# 进入Python_Packages
cd Python_Packages

# 安装依赖包
pip3 install pip-21.1.3-py3-none-any.whl

# 使用pip3命令安装开发环境依赖包
pip3 install --no-index --find-links=/root/Python_Packages/ -r /root/Python_Packages/requirements.txt

# 在Kubernetes中创建一个名为admin1的服务账号(ServiceAccount)在kube-system命名空间中
kubectl create serviceaccount admin1 -n kube-system

# 用于创建一个新的集群角色绑定,它将一个服务账号绑定到一个集群角色上
kubectl create clusterrolebinding admin1 --clusterrole=cluster-admin --serviceaccount=kube-system:admin1

# 获取账户token(用于替换api_server_token,做身份验证)
cat<<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
  name: admin1
  namespace: kube-system
  annotations:
    kubernetes.io/service-account.name: "admin1"
EOF 

# 查看账户资源
kubectl describe secret admin1 -n kube-system

# 编写service.yaml
vi service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-svc3
  namespace: default
spec:
  selector:
    app: nginx
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30083
  type: NodePort
 
# 编写api_manager_service
vi api_manager_service.py
import requests,time
import logging
import os,yaml,json
#-----------logger-----------
#get logger
logger = logging.getLogger(__name__)
# level
logger.setLevel(logging.DEBUG)
# format
format = logging.Formatter('%(asctime)s %(message)s')
# to console
stream_handler  = logging.StreamHandler()
stream_handler .setFormatter(format)
logger.addHandler(stream_handler )
#-----------logger-----------
def get_api_server_token(api_server_token, node_url):
    # Bearer token
    bearer_token = "bearer " + api_server_token
    return bearer_token
class api_service_manager():
    def __init__(self,node_url: str, bearer_token: str):
        self.node_url = node_url
        self.bearer_token = bearer_token
    def create_svc(self, yamlFile, namespace: str):
        headers = {
   
            "Authorization": self.bearer_token,
            "Content-Type": "application/json"
        }
        with open(yamlFile, encoding="utf8") as f:
            body = json.dumps(yaml.safe_load(f))
        request_url = self.node_url + "/api/v1/namespaces/" + namespace + "/services"
        result = json.loads
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值