成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

kubernetes之Python客戶端介紹

IT那活兒 / 2833人閱讀
kubernetes之Python客戶端介紹
點(diǎn)擊上方“IT那活兒”公眾號(hào),關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。?!

  

Kubernetes(以下簡(jiǎn)稱k8s)是一個(gè)用于自動(dòng)化部署、擴(kuò)展和管理容器化應(yīng)用的開源系統(tǒng)。

k8s在正常運(yùn)行時(shí)的大部分操作都可以通過(guò)kubectl命令行接口或類似kubeadm之類的命令行工具進(jìn)行執(zhí)行,根據(jù)文檔,這些工具背后實(shí)際上調(diào)用的是k8s提供的api,這些 api也供應(yīng)用程序和開發(fā)人員調(diào)用其功能,由于k8s的api是基于REST思想設(shè)計(jì)的,因此為了使用的不同的操作,可能需要使用不同的HTTP請(qǐng)求。
例如:從k8s獲取信息的話需要使用GET請(qǐng)求,需要在k8s上創(chuàng)建資源的話需要使用POST請(qǐng)求,刪除資源需要使用DELETE請(qǐng)求;同時(shí)還需要構(gòu)建完整的HTTP請(qǐng)求,這可能需要占用不少時(shí)間。
為了方便快速的調(diào)用k8s的api,官方和社區(qū)維護(hù)了多個(gè)編程語(yǔ)言的客戶端,在使用這些客戶端時(shí),我們并不需要自己實(shí)現(xiàn)API調(diào)用和“請(qǐng)求/響應(yīng)”類型,從而使自己的工作重心落在重要的部分。

圖片來(lái)源于網(wǎng)絡(luò)

Python的k8s客戶端是以python包的形式提供的,開源地址(https://github.com/kubernetes-client/python),可以通過(guò)pip命令下載安裝。

  • 直接通過(guò) PyPI下載安裝
    pip install kubernetes
  • 從源碼安裝
    git clone –-recursive
    https://github.com /kubernetes-client/python.git cd python python setup.py install

1

配置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驗(yàn)證,可選擇
k8s_api_conf.api_key = {"authorization": "Bearer " + k8s_api_token} //配置token
k8s_api_client=client.ApiClient(k8s_api_conf) //創(chuàng)建客戶端

2

常用資源接口實(shí)例化

kubernetes的api接口極為豐富,本次僅介紹常用操作和會(huì)涉及到的類和方法,全部的接口文檔可以在官方API文檔(https://github.com/kubernetes-client/python/blob/master/kubernetes/README.md)處找到。

  • namespace、pod、node和service相關(guān),使用CoreV1Api類實(shí)例
    k8s_api_client_core=client.CoreV1Api(k8s_api_client

  • deployment相關(guān),使用AppsV1Api類實(shí)例
    k8s_api_client_apps=client.AppsV1Api(k8s_api_client

  • ingress相關(guān),使用NetworkingV1beta1Api類實(shí)例
    k8s_api_client_networking=client.NetworkingV1beta1Api(k8s_api_client)

3

常用操作

1)查看namespace

  • 使用list_namespace方法

    //可選參數(shù):

    //pretty   str   如果值為"true",則美化輸出

    //limit   int   限制輸出數(shù)量

    //timeout_second    int    超時(shí)時(shí)間

    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   如果存在此參所則表示試運(yùn)行,有效值為"ALL"

    //field_manager    str   該參數(shù)是與進(jìn)行這些更改的參與者或?qū)嶓w關(guān)聯(lián)的名稱。該值的長(zhǎng)度必須小于或等于128個(gè)字符,并且僅包含可打印字符

    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

  • //使用delete_namespace方法
    //必要參數(shù):
    //name   str    刪除的namespace名
    //可選參數(shù):
    //pretty   str   如果值為"true",則美化輸出
    //dry_run   str    如果存在此參所則表示試運(yùn)行,有效值為"ALL"
    //grace_period_seconds   int    表示延遲多少秒執(zhí)行,非負(fù)數(shù),當(dāng)為0時(shí)立即執(zhí)行
    try:
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    超時(shí)時(shí)間

    try:

api_response=k8s_api_client_core.list_namespaced_pod(namespace,pretty="true")
   pprint(api_response)
exception Exceptions as e:
   print(e)
  • //使用list_pod_for_all_namespaces方法
    //可選參數(shù):
    //pretty    str    如果值為"true",則美化輸出
    //limit    int    限制輸出數(shù)量
    //timeout_second    int    超時(shí)時(shí)間
    try:
api_response=k8s_api_client_core.list_pod_for_all_namespaces(pretty="true")
   pprint(api_response)
exception Exceptions as e:
   print(e)
  • //使用read_namespaced_pod方法
    //必要參數(shù):
    //name   str    pod名
    //namespace    str    namespace名
    //可選參數(shù):
    //pretty   str   如果值為"true",則美化輸出
    try:
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    超時(shí)時(shí)間

    try:

api_response=k8s_api_client_core.list_node(pretty="true")
   pprint(api_response)
exception Exceptions as e:
   print(e)
  • //使用read_node方法
    //必要參數(shù):
    //name   str    node名
    //可選參數(shù):
    //pretty   str    如果值為"true",則美化輸出
    try: 
api_response=k8s_api_client_core.read_node(name,pretty="true")
   pprint(api_response)
exception Exceptions as e:
   print(e)

6)查看deployment

  • //使用list_namespaced_deployment方法
    //必要參數(shù):
    //namespace   str    namespace名
    //可選參數(shù):
    //pretty   str    如果值為"true",則美化輸出
    //limit   int    限制輸出數(shù)量
    //timeout_second    int    超時(shí)時(shí)間
    try:
api_response=k8s_api_client_apps.list_namespaced_deployment(namespace,pretty="true")
   pprint(api_response)
exception Exceptions as e:
   print(e)
  • //使用list_deployment_for_all_namespaces方法
    //可選參數(shù):
    //pretty   str    如果值為"true",則美化輸出
    //limit    int    限制輸出數(shù)量
    //timeout_second    int    超時(shí)時(shí)間
    try:  
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

  • //使用delete_namespaced_deployment方法
    //必要參數(shù):
    //name   str    deployment名
    //namespace   str    namespace名
    //可選參數(shù):
    //pretty   str    如果值為"true",則美化輸出
    //dry_run   str    如果存在此參所則表示試運(yùn)行,有效值為"ALL"
    //grace_period_seconds    int    表示延遲多少秒執(zhí)行,非負(fù)數(shù),當(dāng)為0時(shí)立即執(zhí)行
    try: 
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

  • //使用delete_namespaced_pod方法
    //必要參數(shù):
    //name?    ?str    pod名
    //namespace    str    namespace名
    //可選參數(shù):
    //pretty    str    如果值為"true",則美化輸出
    //dry_run   str    如果存在此參所則表示試運(yùn)行,有效值為"ALL"
    //grace_period_seconds    int    表示延遲多少秒執(zhí)行,非負(fù)數(shù),當(dāng)為0時(shí)立即執(zhí)行
    try:
api_response=k8s_api_client_core.delete_namespaced_pod(name,namespace,pretty="true")
   pprint(api_response)
exception Exceptions as e:
   print(e)

9)修改deployment配置

  • //使用replace_namespaced_deployment方法
    //必要參數(shù):
    //name    str     deployment名
    //namespace    str    namespace名
    //body     V1Deployment  修改后的配置
    //可選參數(shù):
    //pretty   str   如果值為"true",則美化輸出
    //dry_run    str   如果存在此參所則表示試運(yùn)行,有效值為"ALL"
    //field_manager   str   該參數(shù)是與進(jìn)行這些更改的參與者或?qū)嶓w關(guān)聯(lián)的名稱。該值的長(zhǎng)度必須小于或等于128個(gè)字符,并且僅包含可打印字符
    try:  
//先獲取當(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)


本文作者:李雙修(上海新炬王翦團(tuán)隊(duì))

本文來(lái)源:“IT那活兒”公眾號(hào)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/129389.html

相關(guān)文章

  • 如何在GO語(yǔ)言中使用Kubernetes API?

    摘要:并且由外部控制器負(fù)責(zé)將資源轉(zhuǎn)移到這一狀態(tài)。在最后一個(gè)參數(shù),我們傳遞了個(gè)回調(diào)函數(shù)和。這些回調(diào)函數(shù)具有實(shí)際的邏輯,并且在節(jié)點(diǎn)上的鏡像占用存儲(chǔ)發(fā)生改變時(shí)觸發(fā)。一旦啟動(dòng),將會(huì)開始對(duì)和的監(jiān)控,并且調(diào)用回調(diào)函數(shù)。 Rancher Labs首席軟件工程師Alena Prokharchyk受邀在2017年12月6-8日的CNCF主辦的Kubernetes領(lǐng)域頂級(jí)盛會(huì)KubeCon + CloudNat...

    microelec 評(píng)論0 收藏0
  • 系統(tǒng)架構(gòu)

    強(qiáng)力推薦!那些你不能錯(cuò)過(guò)的 GitHub 插件和工具 以代碼托管平臺(tái)起家的 GitHub 網(wǎng)站,已然成為全球程序員工作和生活中不可或缺的一份子。從優(yōu)秀的企業(yè),到優(yōu)秀的程序員,都將自己最優(yōu)秀的代碼作品存放在這片開源凈土里,供彼此學(xué)習(xí)交流。 GitHub Trending 欄目甚至已經(jīng)成為 IT 從業(yè)人員的新聞日?qǐng)?bào),每日必讀。在之前的一… PostgreSQL 數(shù)據(jù)庫(kù)的前世今生 編輯:IT大咖說(shuō)閱讀字...

    Gilbertat 評(píng)論0 收藏0
  • 系統(tǒng)架構(gòu)

    強(qiáng)力推薦!那些你不能錯(cuò)過(guò)的 GitHub 插件和工具 以代碼托管平臺(tái)起家的 GitHub 網(wǎng)站,已然成為全球程序員工作和生活中不可或缺的一份子。從優(yōu)秀的企業(yè),到優(yōu)秀的程序員,都將自己最優(yōu)秀的代碼作品存放在這片開源凈土里,供彼此學(xué)習(xí)交流。 GitHub Trending 欄目甚至已經(jīng)成為 IT 從業(yè)人員的新聞日?qǐng)?bào),每日必讀。在之前的一… PostgreSQL 數(shù)據(jù)庫(kù)的前世今生 編輯:IT大咖說(shuō)閱讀字...

    k00baa 評(píng)論0 收藏0
  • PHPer書單

    摘要:想提升自己,還得多看書多看書多看書下面是我收集到的一些程序員應(yīng)該看得書單及在線教程,自己也沒有全部看完。共勉吧當(dāng)然,如果你有好的書想分享給大家的或者覺得書單不合理,可以去通過(guò)進(jìn)行提交。講師溫銘,軟件基金會(huì)主席,最佳實(shí)踐作者。 想提升自己,還得多看書!多看書!多看書!下面是我收集到的一些PHP程序員應(yīng)該看得書單及在線教程,自己也沒有全部看完。共勉吧!當(dāng)然,如果你有好的書想分享給大家的或者...

    jimhs 評(píng)論0 收藏0
  • 利用K8S技術(shù)棧打造個(gè)人私有云(連載:K8S資源控制)

    摘要:將用戶命令通過(guò)接口傳送給,從而進(jìn)行資源的增刪改等操作。要使用編寫應(yīng)用程序,當(dāng)下大多語(yǔ)言都可以很方便地去實(shí)現(xiàn)請(qǐng)求來(lái)操作的接口從而控制和查詢資源,但本文主要是利用已有的客戶端來(lái)更加優(yōu)雅地實(shí)現(xiàn)的資源控制。 showImg(https://segmentfault.com/img/remote/1460000013517345); 【利用K8S技術(shù)棧打造個(gè)人私有云系列文章目錄】 利用K8S...

    Reducto 評(píng)論0 收藏0
  • 利用K8S技術(shù)棧打造個(gè)人私有云(連載:K8S資源控制)

    摘要:將用戶命令通過(guò)接口傳送給,從而進(jìn)行資源的增刪改等操作。要使用編寫應(yīng)用程序,當(dāng)下大多語(yǔ)言都可以很方便地去實(shí)現(xiàn)請(qǐng)求來(lái)操作的接口從而控制和查詢資源,但本文主要是利用已有的客戶端來(lái)更加優(yōu)雅地實(shí)現(xiàn)的資源控制。 showImg(https://segmentfault.com/img/remote/1460000013517345); 【利用K8S技術(shù)棧打造個(gè)人私有云系列文章目錄】 利用K8S...

    Render 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<