欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python使用Kubernetes API訪問(wèn)集群

 更新時(shí)間:2021年05月30日 09:46:44   作者:落魄運(yùn)維  
本文主要介紹了Python使用Kubernetes API訪問(wèn)集群,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

通過(guò)將身份認(rèn)證令牌直接傳給 API 服務(wù)器,可以避免使用 kubectl 代理,像這樣:
使用 grep/cut 方式:

# 查看所有的集群,因?yàn)槟愕?.kubeconfig 文件中可能包含多個(gè)上下文
kubectl config view -o jsonpath='{"Cluster name\tServer\n"}{range .clusters[*]}{.name}{"\t"}{.cluster.server}{"\n"}{end}'

# 從上述命令輸出中選擇你要與之交互的集群的名稱(chēng)
export CLUSTER_NAME="some_server_name"

# 指向引用該集群名稱(chēng)的 API 服務(wù)器
APISERVER=$(kubectl config view -o jsonpath="{.clusters[?(@.name==\"$CLUSTER_NAME\")].cluster.server}")

# 獲得令牌
TOKEN=$(kubectl get secrets -o jsonpath="{.items[?(@.metadata.annotations['kubernetes\.io/service-account\.name']=='default')].data.token}"|base64 -d)

# 使用令牌玩轉(zhuǎn) API
curl -X GET $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure

客戶端庫(kù):https://kubernetes.io/zh/docs/reference/using-api/client-libraries/

python舉例:

目錄結(jié)構(gòu)

配置文件兩種方式

1、將集群中的~/.kube/config,重命名為kubeconfig.yaml
代碼:

from kubernetes import  client,config
from kubernetes.stream import stream
import yaml
config_file = r"D:\Users\JackHe\PycharmProjects\JJ\k8s\auth\kubeconfig.yaml"
config.kube_config.load_kube_config(config_file=config_file)
Api_Instance = client.CoreV1Api()
Api_Batch = client.BatchV1Api()

#列出所有的namesapce
for ns in Api_Instance.list_namespace().items:
    print(ns.metadata.name)

#列出所有的nodes
def list_node():
    api_response = Api_Instance.list_node()
    data = {}
    for i in api_response.items:
        data[i.metadata.name] = {"name": i.metadata.name,
                                "status": i.status.conditions[-1].type if i.status.conditions[-1].status == "True" else "NotReady",
                                "ip": i.status.addresses[0].address,
                                "kubelet_version": i.status.node_info.kubelet_version,
                                "os_image": i.status.node_info.os_image,
                                 }
    return data
nodes = list_node()
print(nodes)

2、使用token形式,獲取命令上文所示。
代碼:

# -*- coding: utf-8 -*-
from kubernetes.client import api_client
from kubernetes.client.apis import core_v1_api
from kubernetes import client,config


class KubernetesTools(object):
    def __init__(self):
        self.k8s_url = 'https://192.168.1.56:6443'

    def get_token(self):
        """
        獲取token
        :return:
        """
        with open(r'D:\Users\JackHe\PycharmProjects\JJ\k8s\auth\token', 'r') as file:
            Token = file.read().strip('\n')
            return Token

    def get_api(self):
        """
        獲取API的CoreV1Api版本對(duì)象
        :return:
        """
        configuration = client.Configuration()
        configuration.host = self.k8s_url
        configuration.verify_ssl = False
        configuration.api_key = {"authorization": "Bearer " + self.get_token()}
        client1 = api_client.ApiClient(configuration=configuration)
        api = core_v1_api.CoreV1Api(client1)
        return api

    def get_namespace_list(self):
        """
        獲取命名空間列表
        :return:
        """
        api = self.get_api()
        namespace_list = []
        for ns in api.list_namespace().items:
            # print(ns.metadata.name)
            namespace_list.append(ns.metadata.name)

        return namespace_list

    def get_pod_list(self):
       api = self.get_api()
       print("Listing pods with their IPs:")
       ret = api.list_pod_for_all_namespaces(watch=False)
       for i in ret.items:
           print("%s\t%s\t%s" % (i.status.pod_ip, i.metadata.namespace, i.metadata.name))

    def get_service_list(self):
        api = self.get_api()
        ret = api.list_service_for_all_namespaces(watch=False)
        for i in ret.items:
            print("%s \t%s \t%s \t%s \t%s \n" %(i.kind,i.metadata.namespace,i.metadata.name,i.spec.cluster_ip,i.spec.ports))

if __name__ == '__main__':
    namespace_list = KubernetesTools().get_namespace_list()
    pod_list = KubernetesTools().get_pod_list()
    service = KubernetesTools().get_service_list()
    print(namespace_list)
    print(pod_list)
    print(service)

到此這篇關(guān)于Python使用Kubernetes API訪問(wèn)集群的文章就介紹到這了,更多相關(guān)Python Kubernetes API訪問(wèn)集群內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)求特征選擇的信息增益

    python實(shí)現(xiàn)求特征選擇的信息增益

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)求特征選擇的信息增益,可以同時(shí)適用于二值離散型和連續(xù)型的屬性,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • python3 sleep 延時(shí)秒 毫秒實(shí)例

    python3 sleep 延時(shí)秒 毫秒實(shí)例

    這篇文章主要介紹了python3 sleep 延時(shí)秒 毫秒實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • python爬蟲(chóng)增加訪問(wèn)量的方法

    python爬蟲(chóng)增加訪問(wèn)量的方法

    這篇文章主要介紹了python爬蟲(chóng)增加訪問(wèn)量的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • python缺失值填充方法示例代碼

    python缺失值填充方法示例代碼

    常見(jiàn)的數(shù)據(jù)缺失填充方式分為很多種,比如刪除法、均值法、回歸法、KNN、MICE、EM等,下面這篇文章主要給大家介紹了關(guān)于python缺失值填充方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • Python使用docx模塊處理word文檔流程詳解

    Python使用docx模塊處理word文檔流程詳解

    這篇文章主要介紹了Python使用docx模塊處理word文檔流程,docx模塊是用于創(chuàng)建和更新Microsoft Word文件的Python庫(kù),用于辦公可以顯著提升工作效率,感興趣的同學(xué)可以參考下文
    2023-05-05
  • 在python中bool函數(shù)的取值方法

    在python中bool函數(shù)的取值方法

    今天小編就為大家分享一篇在python中bool函數(shù)的取值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • Python中append淺拷貝機(jī)制詳解

    Python中append淺拷貝機(jī)制詳解

    在 Python 中,對(duì)象賦值實(shí)際上是對(duì)象的引用。當(dāng)創(chuàng)建一個(gè)對(duì)象,然后把它賦給另一個(gè)變量的時(shí)候,Python 并沒(méi)有拷貝這個(gè)對(duì)象,而只是拷貝了這個(gè)對(duì)象的引用,我們稱(chēng)之為淺拷貝,這篇文章主要介紹了Python中append淺拷貝機(jī)制,需要的朋友可以參考下
    2023-02-02
  • 詳解如何使用python打印出多樣字符

    詳解如何使用python打印出多樣字符

    當(dāng)你第一次進(jìn)入Python的世界里,學(xué)到的第一句代碼是不是print("Hello?World"),今天,讓我們一起來(lái)開(kāi)啟探索print()的奇妙之旅,從最基礎(chǔ)的打印字符用法到讓它跳舞唱歌——?jiǎng)討B(tài)顯示,讓我們一步步解鎖print()的各種技能吧,需要的朋友可以參考下
    2024-03-03
  • 基于Python實(shí)現(xiàn)主機(jī)遠(yuǎn)程控制

    基于Python實(shí)現(xiàn)主機(jī)遠(yuǎn)程控制

    這篇文章主要介紹了基于Python實(shí)現(xiàn)主機(jī)遠(yuǎn)程控制,本文為?HITwh?網(wǎng)絡(luò)空間安全專(zhuān)業(yè)網(wǎng)絡(luò)空間安全設(shè)計(jì)與實(shí)踐選題,主要實(shí)現(xiàn)了遠(yuǎn)程監(jiān)控局域網(wǎng)內(nèi)的主機(jī)桌面與網(wǎng)絡(luò)情況、簡(jiǎn)單鍵鼠控制、遠(yuǎn)程斷網(wǎng)(ARP?攻擊)、數(shù)據(jù)加密傳輸?shù)裙δ?,下面?lái)看看具體實(shí)現(xiàn)過(guò)程吧
    2022-01-01
  • python之broadcast和numpy.sum()函數(shù)用法及說(shuō)明

    python之broadcast和numpy.sum()函數(shù)用法及說(shuō)明

    這篇文章主要介紹了python之broadcast和numpy.sum()函數(shù)用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評(píng)論