Kubernetes(以下簡稱k8s)是一個用于自動化部署、擴展和管理容器化應(yīng)用的開源系統(tǒng)。
圖片來源于網(wǎng)絡(luò)
Python的k8s客戶端是以python包的形式提供的,開源地址(https://github.com/kubernetes-client/python),可以通過pip命令下載安裝。
從源碼安裝
git clone –-recursive https://github.com /kubernetes-client/python.git cd python python setup.py install
配置kubernetes api
//導(dǎo)入包:
from kubernetes import client
from pprint import pprint //優(yōu)化輸出
k8s_api_url="YOUR_API_URL"
k8s_api_token="YOUR_API_TOKEN"
k8s_api_conf=kubernetes.client.Configuration()
k8s_api_conf.host=k8s_api_url //配置url
k8s_api_conf.verify_ssl=False //關(guān)閉SSL驗證,可選擇
k8s_api_conf.api_key = {"authorization": "Bearer " + k8s_api_token} //配置token
k8s_api_client=client.ApiClient(k8s_api_conf) //創(chuàng)建客戶端
常用資源接口實例化
kubernetes的api接口極為豐富,本次僅介紹常用操作和會涉及到的類和方法,全部的接口文檔可以在官方API文檔(https://github.com/kubernetes-client/python/blob/master/kubernetes/README.md)處找到。
namespace、pod、node和service相關(guān),使用CoreV1Api類實例
k8s_api_client_core=client.CoreV1Api(k8s_api_client
deployment相關(guān),使用AppsV1Api類實例
k8s_api_client_apps=client.AppsV1Api(k8s_api_client
ingress相關(guān),使用NetworkingV1beta1Api類實例
k8s_api_client_networking=client.NetworkingV1beta1Api(k8s_api_client)
常用操作
1)查看namespace
使用list_namespace方法
//可選參數(shù):
//pretty str 如果值為"true",則美化輸出
//limit int 限制輸出數(shù)量
//timeout_second int 超時時間
try:
api_response=k8s_api_client_core.list_namespace(pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
//使用read_namespace方法
//必要參數(shù):
//name str namespace名
//可選參數(shù):
//pretty str 如果值為"true",則美化輸出
try:
api_response=k8s_api_client_core.read_namespace(name,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
2)創(chuàng)建namespace
//使用create_namespace方法
//必要參數(shù):
//body V1Namespace 創(chuàng)建的namespace描述
//可選參數(shù):
//pretty str 如果值為"true",則美化輸出
//dry_run str 如果存在此參所則表示試運行,有效值為"ALL"
//field_manager str 該參數(shù)是與進行這些更改的參與者或?qū)嶓w關(guān)聯(lián)的名稱。該值的長度必須小于或等于128個字符,并且僅包含可打印字符
body=client.V1Namespace() //創(chuàng)建body
try:
api_response=k8s_api_client_core.create_namespace(body,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
3)刪除namespace
api_response=k8s_api_client_core.delete_namespace(name,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
4)查看pod
//使用list_namespaced_pod方法
//必要參數(shù):
//namespace str namespace名
//可選參數(shù):
//pretty str 如果值為"true",則美化輸出
//limit int 限制輸出數(shù)量
//timeout_second int 超時時間
try:
api_response=k8s_api_client_core.list_namespaced_pod(namespace,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
api_response=k8s_api_client_core.list_pod_for_all_namespaces(pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
api_response=k8s_api_client_core.read_namespaced_pod(name,namespace,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
5)查看node
//使用list_node方法
//可選參數(shù):
//pretty str 如果值為"true",則美化輸出
//limit int 限制輸出數(shù)量
//timeout_second int 超時時間
try:
api_response=k8s_api_client_core.list_node(pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
api_response=k8s_api_client_core.read_node(name,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
6)查看deployment
api_response=k8s_api_client_apps.list_namespaced_deployment(namespace,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
api_response=k8s_api_client_apps.list_deployment_for_all_namespaces(pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
//使用read_namespaced_deployment方法
//必要參數(shù):
//name str deployment名
//namespace str namespace名
//可選參數(shù):
//pretty str 如果值為"true",則美化輸出
try:
api_response=k8s_api_client_apps.read_namespaced_deployment(name,namespace,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
7)刪除deployment
api_response=k8s_api_client_apps.delete_namespaced_deployment(name,namespace,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
8)刪除pod/重啟pod
api_response=k8s_api_client_core.delete_namespaced_pod(name,namespace,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
9)修改deployment配置
//先獲取當(dāng)前的deployment配置
body=k8s_api_client_apps.read_namespaced_deployment(name,namespace,pretty="true")
//修改deployment
some_change()
//替換deployment配置
api_response=k8s_api_client_apps.replace_namespaced_deployment(name,namespace,body,pretty="true")
pprint(api_response)
exception Exceptions as e:
print(e)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/129389.html
摘要:并且由外部控制器負責(zé)將資源轉(zhuǎn)移到這一狀態(tài)。在最后一個參數(shù),我們傳遞了個回調(diào)函數(shù)和。這些回調(diào)函數(shù)具有實際的邏輯,并且在節(jié)點上的鏡像占用存儲發(fā)生改變時觸發(fā)。一旦啟動,將會開始對和的監(jiān)控,并且調(diào)用回調(diào)函數(shù)。 Rancher Labs首席軟件工程師Alena Prokharchyk受邀在2017年12月6-8日的CNCF主辦的Kubernetes領(lǐng)域頂級盛會KubeCon + CloudNat...
強力推薦!那些你不能錯過的 GitHub 插件和工具 以代碼托管平臺起家的 GitHub 網(wǎng)站,已然成為全球程序員工作和生活中不可或缺的一份子。從優(yōu)秀的企業(yè),到優(yōu)秀的程序員,都將自己最優(yōu)秀的代碼作品存放在這片開源凈土里,供彼此學(xué)習(xí)交流。 GitHub Trending 欄目甚至已經(jīng)成為 IT 從業(yè)人員的新聞日報,每日必讀。在之前的一… PostgreSQL 數(shù)據(jù)庫的前世今生 編輯:IT大咖說閱讀字...
強力推薦!那些你不能錯過的 GitHub 插件和工具 以代碼托管平臺起家的 GitHub 網(wǎng)站,已然成為全球程序員工作和生活中不可或缺的一份子。從優(yōu)秀的企業(yè),到優(yōu)秀的程序員,都將自己最優(yōu)秀的代碼作品存放在這片開源凈土里,供彼此學(xué)習(xí)交流。 GitHub Trending 欄目甚至已經(jīng)成為 IT 從業(yè)人員的新聞日報,每日必讀。在之前的一… PostgreSQL 數(shù)據(jù)庫的前世今生 編輯:IT大咖說閱讀字...
摘要:將用戶命令通過接口傳送給,從而進行資源的增刪改等操作。要使用編寫應(yīng)用程序,當(dāng)下大多語言都可以很方便地去實現(xiàn)請求來操作的接口從而控制和查詢資源,但本文主要是利用已有的客戶端來更加優(yōu)雅地實現(xiàn)的資源控制。 showImg(https://segmentfault.com/img/remote/1460000013517345); 【利用K8S技術(shù)棧打造個人私有云系列文章目錄】 利用K8S...
摘要:將用戶命令通過接口傳送給,從而進行資源的增刪改等操作。要使用編寫應(yīng)用程序,當(dāng)下大多語言都可以很方便地去實現(xiàn)請求來操作的接口從而控制和查詢資源,但本文主要是利用已有的客戶端來更加優(yōu)雅地實現(xiàn)的資源控制。 showImg(https://segmentfault.com/img/remote/1460000013517345); 【利用K8S技術(shù)棧打造個人私有云系列文章目錄】 利用K8S...
閱讀 1353·2023-01-11 13:20
閱讀 1699·2023-01-11 13:20
閱讀 1211·2023-01-11 13:20
閱讀 1904·2023-01-11 13:20
閱讀 4161·2023-01-11 13:20
閱讀 2751·2023-01-11 13:20
閱讀 1397·2023-01-11 13:20
閱讀 3664·2023-01-11 13:20