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

2024-02-05

我在 Google Kubernetes Engine 上使用 Kubernetes 1.8.6,并有一个运行 Alpine 的 Pod 作为StatefulSet.

我已使用以下方式登录我的 podkubectl exec -it my-pod-0 -- /bin/sh然后在提示符下运行以下命令:

$ 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

See https://kubernetes.io/docs/admin/authorization/rbac/#service-account-permissions https://kubernetes.io/docs/admin/authorization/rbac/#service-account-permissions有关向服务帐户授予权限的更多详细信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用curl从pod内访问Kubernetes API? 的相关文章

随机推荐

  • 用Python实现的好的双向加密库是什么?

    我们现在使用的应用程序的身份验证系统使用双向哈希 基本上只不过是美化的凯撒密码 在不详细了解它的情况的情况下 我想用更安全的加密算法替换它 并且需要在服务器端完成 不幸的是 它需要是双向的 而 hashlib 中的算法都是单向的 有哪些好的
  • 未实现委托方法导致崩溃

    我创建了一个协议并将其分配给委托对象 protocol AppBrainDelegate
  • C++ 私有函数真的需要放在头文件中吗?

    我一直认为头文件是一种描述类的 公共接口 在这种情况下 最好将私有字段和函数保留在 cpp 文件中 我知道私有字段需要位于标头中 以便其他类可以知道类的实例将消耗多少内存 但当我即将编写一个私有辅助函数时 我想到可以使该函数成为static
  • 如何防止用户通过写URL直接访问我的html页面?

    我想要一个硬编码的登录页面 登录 html 没有数据库 如果一个人写了正确的用户名和密码 它会重定向到 page2 html 现在我的问题是 如果一个人直接为 page2 html 编写 URL 他将能够访问它 而无需任何登录 理想案例 g
  • 对 JPanel 使用 addMouseListener() 和 PaintComponent()

    这是我的后续previous https stackoverflow com questions 12175174 paintcomponent vs paint and jpanel vs canvas in a paintbrush t
  • Realm 的 kotlin 中的 Android 测试

    如何在 Kotlin 中实现 Android 中领域数据库的简单测试 我尝试改编来自java领域的片段在github上测试 https github com realm realm java blob master examples uni
  • 有没有跨平台的方法来检查 stdout 是否正在通过管道传输到 Rust 中的另一个程序?

    当输出通过管道传输到终端以外的其他地方时 我想禁用颜色 翻译成 POSIX 语言 你的问题将是 stdout 不是 TTY 所以 nix 上的答案可以通过以下方式获得 isatty STDOUT FILENO https stackover
  • 禁止来自 3rd 方 jar 的 java util 日志记录

    我从 Eclipse 控制台中的第 3 方 jar 收到大量信息日志消息 打开 jar 我发现它使用 java util logging 我想将其 jar 的输出级别设置为 警告 我尝试使用 Djava util logging confi
  • JavaFX 会完全取代 Swing 吗?

    我有一个 Java 桌面应用程序 其中图形用户界面是在 swing 中设计的 当我们知道之后JavaFX replacing Swing我们已将图形用户界面替换为 JavaFX 6 JavaFX 是否会取代 Swing 成为 Java 的新
  • 如何在 Nest.js 中提供静态 HTML 文件?

    我想提供静态 HTML 文件 这些文件位于 distNest 项目外部的文件夹 index html加载成功但无法加载任何 JS 文件 404 error 我有一个 Node Express js 项目 它使用 app use expres
  • 在java中获取下一个更高的整数值[重复]

    这个问题在这里已经有答案了 我知道我可以使用 Math java 函数来获取 double 或 float 的下限 上限或舍入值 但我的问题是 如果小数点出现在我的值中 是否可以始终获得更高的整数值 例如 int chunkSize 91
  • silverstripe Sitetree onAfterWrite - renderWith 错误:找不到模板

    为了从页面内容自动生成 pdf 我想在页面类的 onAfterWrite 中使用 renderWith 函数 稍后使用 DOMPDF 将从返回的 HTML 生成 PDF public function onAfterWrite parent
  • 将 UISearchBar 锁定到 UITableView(如 Game Center)的顶部

    Game Center 的 UITableViews 及其顶部的搜索栏有一个很酷的功能 与搜索栏放置在表格标题视图中的应用程序不同 因此它算作标准表格单元格 相反 它似乎固定在其上方的父导航栏上 因此 当滚动表格时 搜索栏确实会移动 但如果
  • 简单堆栈溢出的 Shellcode:带有 shell 的被利用程序在 execve("/bin/sh") 之后直接终止

    我在 Linux amd64 上尝试了缓冲区溢出并尝试利用一个简单的程序 但失败了 我禁用了安全功能 使用 sysctl w kernel randomize va space 0 和 BIOS 中的 nx 位进行地址空间布局随机化 它跳转
  • 带有过滤器参数的 django 自定义管理器

    我想添加一个自定义管理器 它可以从模板调用 但不会影响整个模型 例如管理视图 并且侦听请求中设置的参数 user profile 以下是我到目前为止所拥有的 模型 py class CurrentQuerySet models query
  • 与 crond 不同的 ssh 行为

    我已经在这件事上抓狂了好几个小时了 我欢迎任何有关下一步发展的新想法 目标是通过 SSH 登录到自定义应用程序 CLI 然后使用自定义 CLI 命令之一在远端设备上下拉调试 shell 在客户端 我使用 CentOS mini 并运行 ss
  • 单选按钮的按钮组未使用 Bootstrap 3 设置任何活动按钮

    我正在尝试使用 MVC 和 Bootstrap 3 创建一组漂亮的单选按钮 选择一个选项后 我将值存储在数据库中 但是当我再次呈现视图时 没有选择任何内容 模型是 Table QuotePiecePrinting public partia
  • Mercurial - 如何禁用推送

    我正在尝试寻找是否有一种简单的方法可以使 Mercurial 存储库变为只读 用户应该能够克隆 但不允许推送 我需要对超过 100 个的所有存储库执行此操作 你可以在 hg hgrc 中这样做 hooks prechangegroup fa
  • 默认将没有扩展名的文件分配给 VS Code 上的语言

    在 VS Code 中 我通常打开没有扩展名的文件filename 我知道我可以更改语言语法更改语言模式 gt 我想要的语言但我不想每次打开这样的文件时都手动执行此操作 每次打开没有扩展名的文件时是否可以默认使用该语言 我知道我可以这样做
  • 如何使用curl从pod内访问Kubernetes API?

    我在 Google Kubernetes Engine 上使用 Kubernetes 1 8 6 并有一个运行 Alpine 的 Pod 作为StatefulSet 我已使用以下方式登录我的 podkubectl exec it my po