如何使用curl从pod中访问Kubernetes API?

如何使用curl从pod中访问Kubernetes API?,第1张

概述我在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.cr @H_301_1@ 我在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.

总结

以上是内存溢出为你收集整理的如何使用curl从pod中访问Kubernetes API?全部内容,希望文章能够帮你解决如何使用curl从pod中访问Kubernetes API?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/1021283.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存