首页 > 解决方案 > 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,知道我在这里缺少什么吗?

标签: gokubernetes

解决方案


检查automountServiceAccountTokenpod 规范。默认情况下它设置为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服务。


推荐阅读