Python 使用 Token 认证方案连接 Kubernetes (k8s) 的详细过程

ops/2024/11/25 8:42:06/

在 Kubernetes 中,使用 Token 认证是一种常见的客户端身份验证方式,尤其适用于 ServiceAccount。以下是详细的步骤,包括如何查看 Token、获取 API 服务地址、配置远程连接,以及如何在 Python 中连接 k8s。

1. 获取 Token

首先,您需要创建一个 ServiceAccount 并为其分配适当的角色和权限。以下是一个示例,创建一个名为 admin 的 ServiceAccount 并赋予集群管理员权限:

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:name: adminannotations:rbac.authorization.kubernetes.io/autoupdate: "true"
roleRef:kind: ClusterRolename: cluster-adminapiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccountname: adminnamespace: kube-system

创建完成后,您可以通过以下命令获取 Secret 中的 Token 值:

# 获取 admin-token 的 Secret 名字
$ kubectl -n kube-system get secret | grep admin-token# 获取 Token 的值
$ kubectl -n kube-system describe secret <secret-name>

您也可以使用 jsonpath 的方式直接获取 Token 的值:

kubectl -n kube-system get secret <secret-name> -o jsonpath={.data.token}|base64 -d

请注意,Token 值是 base64 编码的,需要解码后使用 。

2. 获取 API 服务地址

您可以通过以下命令获取集群的 API 服务器地址:

kubectl cluster-info

这将显示 Kubernetes 控制平面的地址,例如 https://k8s-api:6443

3. 配置远程连接

如果您需要从集群外部访问 Kubernetes API,您可能需要配置 API 服务器以允许远程访问。这通常涉及到设置防火墙规则、网络策略以及可能的负载均衡器配置。

4. Python 连接 Kubernetes

在 Python 中,您可以使用 Kubernetes 的官方 Python 客户端库 kubernetes 来连接和操作 Kubernetes 集群。以下是如何使用 Token 认证连接 Kubernetes 的步骤:

首先,安装 Kubernetes Python 客户端库:

pip install kubernetes

然后,使用以下 Python 代码连接 Kubernetes:

python">from kubernetes import client, config# 定义 Token 和 API 服务器地址
Token = "your_token_here"
APISERVER = "https://your_api_server:6443"# 创建配置对象
configuration = client.Configuration()
configuration.host = APISERVER
configuration.verify_ssl = False  # 如果您不验证 SSL 证书
configuration.api_key = {"authorization": "Bearer " + Token}# 使用配置创建 API 对象
api_instance = client.CoreV1Api(client.ApiClient(configuration=configuration))# 列出所有 Pod
print(api_instance.list_pod_for_all_namespaces())

请确保替换 your_token_hereyour_api_server:6443 为您的实际 Token 和 API 服务器地址。如果您的集群配置了 SSL 证书验证,您需要设置 configuration.verify_sslTrue 并提供 CA 证书路径 。

通过以上步骤,您可以使用 Token 认证方案在 Python 中连接和操作 Kubernetes 集群。这种方法适用于需要从集群外部或在集群内部使用 ServiceAccount 进行 API 调用的场景。


http://www.ppmy.cn/ops/136522.html

相关文章

MyBatis框架-动态SQL-XML中的常用标签+特殊字符在XML中的显示

一、if标签、where标签、trim标签、choose标签、set标签、foreach标签 1、问题引入&#xff1a;where关键字和and关键字在动态SQL里面应该如何添加&#xff1f; &#xff08;1&#xff09;if标签&#xff1a; test属性的值是判断条件 if标签里面的内容是条件成立时添加到SQ…

Elasticsearch实战应用:构建高效搜索与分析平台

Elasticsearch实战应用&#xff1a;构建高效搜索与分析平台 在当今大数据时代&#xff0c;数据的量级已经达到了惊人的级别&#xff0c;动辄上亿甚至更多。对于这样的数据量&#xff0c;如何进行有效的搜索和分析成为了众多开发者和数据科学家关注的焦点。Elasticsearch&#…

SpringBoot多文件上传

多文件上传是在单文件上传的基础上修改而来&#xff0c;不了解单文件上传可以参考上一篇。以下在将修改部分展示如下&#xff1a; 一、修改upload.html文件&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title&g…

Selenium + 数据驱动测试:从入门到实战!

引言 在软件测试中&#xff0c;测试数据的多样性和灵活性对测试覆盖率至关重要。而数据驱动测试&#xff08;Data-Driven Testing&#xff09;通过将测试逻辑与数据分离&#xff0c;极大地提高了测试用例的可维护性和可扩展性。本文将结合Selenium这一流行的测试工具&#xff0…

计算机的错误计算(一百六十四)

摘要 探讨 MATLAB 中 函数的计算精度问题。 例1. 考虑在许多应用中出现的函数 计算 直接贴图吧&#xff1a; 从上图可知&#xff0c;MATLAB的输出为 0.999200722162641 . 然而&#xff0c;事实上&#xff0c;16位的正确结果为 0.1000000000000045e1&#xff08;ISReals…

什么是Git,有什么特点

版本控制工具Git简介 一、Git的由来 Git 是一种分布式版本控制系统&#xff0c;由 Linux 之父 Linus Torvalds 于 2005 年创建。当时&#xff0c;Linux 内核开发团队需要一个高效的版本控制系统来管理庞大的代码库。在此之前&#xff0c;他们使用的是 BitKeeper&#xff0c;这…

Dubbo源码解析-服务订阅与发现(八)

一、服务订阅与发现 服务提供者暴漏服务的时候会向注册中心注册服务信息&#xff0c;当服务消费者引入服务的时候会去订阅服务提供者信息。RegistryDirectory#subscribe public void subscribe(URL url) {setSubscribeUrl(url);consumerConfigurationListener.addNotifyListe…

SQL注入--布尔盲注--理论

布尔盲注的原理 在SQL注入时&#xff0c;我们查询的数据不会直接回显在界面上&#xff0c;且界面对正确的查询和错误的查询有不同的回显&#xff0c;我们就可以使用布尔盲注。 比如sqli-labs的第八题&#xff0c;当我们输入的查询语句是正确的时候&#xff0c;回显就是you ar…