iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python如何使用Kubernetes API访问集群
  • 251
分享到

Python如何使用Kubernetes API访问集群

2023-06-15 07:06:16 251人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍了python如何使用kubernetes api访问集群,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。通过将身份认证令牌直接传给 API 服务器,可以避免使

这篇文章主要介绍了python如何使用kubernetes api访问集群,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

通过将身份认证令牌直接传给 API 服务器,可以避免使用 kubectl 代理,像这样:
使用 grep/cut 方式:

# 查看所有的集群,因为你的 .kubeconfig 文件中可能包含多个上下文kubectl config view -o JSONpath='{"Cluster name\tServer\n"}{range .clusters[*]}{.name}{"\t"}{.cluster.server}{"\n"}{end}'# 从上述命令输出中选择你要与之交互的集群的名称export CLUSTER_NAME="some_server_name"# 指向引用该集群名称的 API 服务器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)# 使用令牌玩转 APIcurl -X GET $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure

客户端库:https://kubernetes.io/zh/docs/reference/using-api/client-libraries/

Python举例:

目录结构

Python如何使用Kubernetes API访问集群

配置文件两种方式

将集群中的~/.kube/config,重命名为kubeconfig.yaml
代码:

from kubernetes import  client,configfrom kubernetes.stream import streamimport yamlconfig_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()#列出所有的namesapcefor ns in Api_Instance.list_namespace().items:    print(ns.metadata.name)#列出所有的nodesdef 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 datanodes = list_node()print(nodes)

使用token形式,获取命令上文所示。
代码:

# -*- coding: utf-8 -*-from kubernetes.client import api_clientfrom kubernetes.client.apis import core_v1_apifrom kubernetes import client,confiGClass 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版本对象        :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)

感谢你能够认真阅读完这篇文章,希望小编分享的“Python如何使用Kubernetes API访问集群”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网Python频道,更多相关知识等着你来学习!

--结束END--

本文标题: Python如何使用Kubernetes API访问集群

本文链接: https://www.lsjlt.com/news/278562.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python如何使用Kubernetes API访问集群
    这篇文章主要介绍了Python如何使用Kubernetes API访问集群,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。通过将身份认证令牌直接传给 API 服务器,可以避免使...
    99+
    2023-06-15
  • Kubernetes集群外访问如何实现
    Kubernetes集群外访问可以通过多种方式实现,以下是一些常见的方法: 使用NodePort Service:在Kubern...
    99+
    2024-04-02
  • Dashboard管理Kubernetes集群与API访问配置
    目录Kubectl 命令大全安装 Kubernetes-DashboardRESTful API鉴权注解Pod YAML 结构配置Kubectl 命令大全 下面列出了 kubectl...
    99+
    2024-04-02
  • Dashboard怎么管理Kubernetes集群与API访问配置
    本篇内容主要讲解“Dashboard怎么管理Kubernetes集群与API访问配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Dashboard怎么管理Kubernetes集群与API访问配...
    99+
    2023-06-29
  • 配置Kubernetes外网访问集群
    查询 Service 关于 Service,读者可以查看官方文档的资料:https://kubernetes.io/zh/docs/concepts/services-network...
    99+
    2024-04-02
  • 如何使用VirtualBox+Ubuntu16搭建Kubernetes集群
    小编给大家分享一下如何使用VirtualBox+Ubuntu16搭建Kubernetes集群,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Kubernetes 运...
    99+
    2023-06-15
  • Kubernetes中如何使用Rancher部署K8S集群
    本篇文章给大家分享的是有关Kubernetes中如何使用Rancher部署K8S集群,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.安装Rancher这里使用三台机器来搭建K...
    99+
    2023-06-19
  • 如何使用PHP和Kubernetes构建容器集群
    随着云计算技术的发展,容器化架构已经成为云计算领域的热门技术之一。Kubernetes是一个开源的容器编排系统,它能够帮助开发者对容器化应用进行自动化部署、缩放、运维等操作。而PHP是一种流行的Web开发语言,它被广泛应用于Web应用的开发...
    99+
    2023-05-23
    PHP Kubernetes 容器集群
  • 如何使用Python API访问Apache存储?
    Apache存储是一个非常流行的分布式存储系统,它提供了高可靠性、高可扩展性、高性能和高可用性的解决方案。Python作为一种流行的编程语言,有很多第三方库可以用来访问Apache存储,例如HBase、Cassandra和Hive等。本文...
    99+
    2023-07-18
    api apache 存储
  • Minikube如何搭建Kubernetes集群
    这篇文章主要介绍了Minikube如何搭建Kubernetes集群,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Minikube打开 https://github....
    99+
    2023-06-29
  • kubernetes中如何使用 kubeadm 创建高可用集群
    本篇文章为大家展示了kubernetes中如何使用 kubeadm 创建高可用集群,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一. 环境和版本信息OS:  CentO...
    99+
    2023-06-19
  • 如何使用Rancher在Kubernetes上部署EMQ X集群
    这篇文章主要讲解了“如何使用Rancher在Kubernetes上部署EMQ X集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Rancher在Kubernetes上部署EMQ X...
    99+
    2023-06-03
  • kubeadm中如何部署kubernetes集群
    kubeadm中如何部署kubernetes集群,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、环境要求这里使用RHEL7.5master、etcd:192.168.10.1...
    99+
    2023-06-19
  • 如何使用Python访问MongoDB中的集合?
    MongoDB 是一个著名的 NoSQL 数据库,它提供了一种可扩展且灵活的方法来存储和检索数据,还可以通过 Python(一种多功能编程语言)访问数据库集合。将 MongoDB 与 Python 集成使开发人员能够轻松地与其数据库集合进行...
    99+
    2023-10-22
  • kubernetes集群怎么搭建和使用
    要搭建和使用Kubernetes集群,可以按照以下步骤进行操作:1. 安装Docker:Kubernetes需要在每个节点上安装Do...
    99+
    2023-08-24
    kubernetes
  • 如何在Azure上部署Kubernetes集群
    如何在Azure上部署Kubernetes集群,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在实验、演示的时候,或者是生产过程中,我经常会需要运行一些 Docker 负载。...
    99+
    2023-06-05
  • 如何使用kubeadm命令行工具创建kubernetes集群
    这篇文章主要为大家展示了“如何使用kubeadm命令行工具创建kubernetes集群”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用kubeadm命令行工具创建kubernetes集群”...
    99+
    2023-06-29
  • 如何使用Kubernetes集群环境部署MySQL数据库
    这篇文章主要讲解了“如何使用Kubernetes集群环境部署MySQL数据库”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Kubernetes集群环境部署MySQL数据库”吧!1 编...
    99+
    2023-06-30
  • 如何在kubernetes上部署consul集群
    这篇文章主要介绍“如何在kubernetes上部署consul集群”,在日常操作中,相信很多人在如何在kubernetes上部署consul集群问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何在kubern...
    99+
    2023-06-04
  • 如何使用resuests访问Python包索引的JSON API
    本篇内容介绍了“如何使用resuests访问Python包索引的JSON API”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!PyPI 的 ...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作