如何使用curl从pod中访问Kubernetes API?
发布时间:2020-12-13 23:53:35 所属栏目:Linux 来源:网络整理
导读:我在Google Kubernetes引擎上使用Kubernetes 1.8.6并且有一个运行Alpine的pod作为StatefulSet的一部分. 我使用kubectl exec -it my-pod-0 – / bin / sh登录我的pod,然后在提示符下运行以下命令: $CA_CERT=/var/run/secrets/kubernetes.io/serviceaccount/c
我在Google Kubernetes引擎上使用Kubernetes 1.8.6并且有一个运行Alpine的pod作为StatefulSet的一部分.
我使用kubectl exec -it my-pod-0 – / bin / sh登录我的pod,然后在提示符下运行以下命令: $CA_CERT=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt $TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token) $NAMESPACE=$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace) $curl --cacert $CA_CERT -H "Authorization: Bearer $TOKEN" "https://kubernetes /api/v1/namespaces/$NAMESPACE/services/" 不幸的是,返回了403 Forbidden错误: { "kind": "Status","apiVersion": "v1","metadata": { },"status": "Failure","message": "services is forbidden: User "system:serviceaccount:default:default" cannot list services in the namespace "default": Unknown user "system:serviceaccount:default:default"","reason": "Forbidden","details": { "kind": "services" },"code": 403 我究竟做错了什么? 解决方法
你没有做错任何事.该pod的服务帐户(在pod的serviceAccountName中指定)根本没有任何API权限.
您可以向该服务帐户授予视图角色,如下所示: kubectl create rolebinding default-viewer --clusterrole=view --serviceaccount=default:default --namespace=default 有关授予服务帐户权限的详细信息,请参阅https://kubernetes.io/docs/admin/authorization/rbac/#service-account-permissions. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容