一、概述
kubernetes Api python client 相关内容信息 Github地址: https://github.com/kubernetes-client/python/blob/master/kubernetes/README.md
目前公司才用的镜像更新的方式为,jenkins服务器执行一个镜像更新shell脚本,脚本中通过使用ansible从而达到从kubernetes master执行更新命令,从而达到镜像版本的更新。
后期需考虑逐步通过python得到需更新的镜像,与版本以及deployment直接通过调用kubernetes Api完成对更镜像的版本更新。
所以特此学习Kubernetes Api 熟悉该Api的调用
二、代码实现
环境说明
系统 | k8s版本 | docker版本 | ip | 主机名 | 配置 |
---|---|---|---|---|---|
centos 7.6 | 1.18.1 | 19.03.5 | 10.212.20.94 | k8s-master | 2核4G |
centos 7.6 | 1.18.1 | 19.03.5 | 10.212.21.159 | k8s-node01 | 2核4G |
centos 7.6 | 1.18.1 | 19.03.5 | 10.212.22.192 | jenkins | 2核4G |
安装模块
登录jenkins服务器,执行
代码语言:javascript复制pip3 install kubernetes
拷贝k8s config
登录jenkins服务器,拷贝k8s master节点的$HOME/.kube/config文件
代码语言:javascript复制scp 10.212.20.94:/root/.kube/config .
python脚本
举例:将应用 flaskapp-1的镜像地址更改为:nginx:1.12
登录k8s-master节点,查看一下当前的镜像地址
代码语言:javascript复制[root@k8s-master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
flaskapp-1-54b8675b87-8rsnf 1/1 Running 0 22s
[root@k8s-master ~]# kubectl get po flaskapp-1-54b8675b87-8rsnf -o yaml|grep '- image:'
- image: jcdemo/flaskapp
可以看到,当前的镜像地址为:jcdemo/flaskapp
登录jenkins服务器,编辑文件test.py,完整内容如下:
代码语言:javascript复制# !/usr/bin/python3
# -*- coding: utf-8 -*-
'''replace_namespace_deployment,快速替换deployment需要升级或回滚的镜像'''
import os
from kubernetes import client, config
from kubernetes.client.rest import ApiException
def read_deployment(name, namespace, update_image):
body = api_instance.read_namespaced_deployment(name, namespace)
# 修改镜像版本为指定
body.spec.template.spec.containers[0].image = update_image
return body
def replace_deployment(name, namespace, body):
try:
api_response = api_instance.replace_namespaced_deployment(name, namespace, body)
print("