go - K8S 通过 go API 读取配置图
问题描述
我有一个配置图,需要通过 api 从 K8S 读取
我创建了一个集群角色
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: zrole
rules:
- apiGroups: [""]
resources: ["configmaps"]
verbs: ["get", "list"]
和集群角色绑定
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: z-role-binding
subjects:
- kind: Group
name: system:serviceaccounts
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: zrole
配置图
apiVersion: v1
kind: ConfigMap
metadata:
name: z-config
namespace: fdrs
data:
avr: client1
fuss: xurbz
该代码的使用方式如下
clientSet.CoreV1().ConfigMaps(uNamespcae)
当我在本地运行代码(并向 GO api 提供 kubeconfig)时,我能够获取配置映射数据,但是当我在集群内运行代码时出现错误:invalid token
,知道我在这里缺少什么吗?
解决方案
检查automountServiceAccountToken
pod 规范。默认情况下它设置为true
,但也许您已禁用它。
使用官方 GO 客户端。默认情况下,它会读取正确的配置和令牌。https://github.com/kubernetes/client-go/blob/master/examples/in-cluster-client-configuration/main.go
如果你不使用它,那么使用正确的配置: https ://kubernetes.io/docs/tasks/administer-cluster/access-cluster-api/#directly-accessing-the-rest-api-1
检查 pod: 中的令牌/var/run/secrets/kubernetes.io/serviceaccount/token
并使用该kubernetes
服务。
推荐阅读
- cron - cron 作业执行时网站变慢
- ios - `position:fixed` 叠加在后面
在移动 safari 上`platform=ios` - chronicle - 我想实现事务匹配。我可以在其中使用纪事吗?
- c# - 我正在尝试创建 GOSTR3410 公钥。CKR_ATTRIBUTE_TYPE_INVALID 异常
- itext - 无效的跨度标记。预期结束 br 标记
- go - GO 时间字符串中的“m=+”是什么?
- javascript - 构建库并包含 CSS 文件但不包含测试文件
- cmd - 某些 Nircmd 命令不适用于任务调度程序
- python - 从不断变化的 numpy 数组中播放音频
- sql - 如何根据条件对数据进行分组?