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

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

1. 获取 Token

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

yaml 复制代码
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: admin
  annotations:
    rbac.authorization.kubernetes.io/autoupdate: "true"
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
  name: admin
  namespace: kube-system

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

bash 复制代码
# 获取 admin-token 的 Secret 名字
$ kubectl -n kube-system get secret | grep admin-token

# 获取 Token 的值
$ kubectl -n kube-system describe secret <secret-name>

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

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

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

2. 获取 API 服务地址

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

bash 复制代码
kubectl cluster-info

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

3. 配置远程连接

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

4. Python 连接 Kubernetes

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

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

bash 复制代码
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_here 和 your_api_server:6443 为您的实际 Token 和 API 服务器地址。如果您的集群配置了 SSL 证书验证,您需要设置 configuration.verify_ssl 为 True 并提供 CA 证书路径 。

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

相关推荐
昵称画4 小时前
交接班记录电子化:三班之间的信息不漏
开发语言·数据库·人工智能·低代码·php
“AI国潮设计-小江”4 小时前
【AIGC实战】Python+SDXL批量生成“潮汕英歌舞不倒翁”IP | 角色一致性与多场景融合方案,附完整代码
开发语言·人工智能·python·prompt·aigc
传奇开心果编程5 小时前
【Rust入门练中学】第6课:结构体与方法
开发语言·rust·结构体·编程语言理论·结构体方法·编程通用语言
Linux_cy5 小时前
服务器管理工具哪个好用?我用了七八个
运维·服务器·javascript·python·ssh·面板·gmssh
MoRanzhi12035 小时前
第6篇(下)· 使用 PyQt5 实现 2048 高性能计算版:统一运行控制与跨模式安全交接
python·pyqt·进程管理·状态机·软件架构·并发控制·数据一致性
code tsunami5 小时前
【无标题】
开发语言·python
CodeGL5 小时前
10、Python基础之进程和线程
开发语言·python
TechWayfarer6 小时前
PHP漏洞被利用,怎么揪出攻击IP?
开发语言·python·tcp/ip·网络安全·php
2601_967980117 小时前
Python列表操作方法详解
python·数据类型·修改·列表操作·功能汇总
卡卡~~8 小时前
“101计划”核心课程实践教材《数据实验结构指导-C++语言版》题目集
开发语言·c++·学习·算法