当前位置: 首页 > 知识库问答 >
问题:

如何执行shell脚本从POD A到另一个POD B

周子平
2023-03-14

我有两个豆荚在kubernetes星系团内运行。豆荚如下

  1. MongoDB豆荚,其类型为:statefulset
  2. 脚本吊舱,其类型为:job
kubectl exec mongo-0 -c mongo -- mongo --eval 'rs.initiate({_id: "rs0", version: 1, members: [ {_id: 0, host: "mongo-0.mongo.default.svc.cluster.local:27017"}, {_id: 1, host: "mongo-1.mongo.default.svc.cluster.local:27017"}, {_id: 2, host: "mongo-2.mongo.default.svc.cluster.local:27017"} ]});'
Error from server (Forbidden): pods "mongo-0" is forbidden: User "system:serviceaccount:default:default" cannot create resource "pods/exec" in API group "" in the namespace "default"

如何为脚本吊舱提供在mongodb吊舱中运行上述命令的权限?

因此,正如您所说,我创建了另一个类似的pod:job并包含了script.sh。

在script.sh文件中,我运行“Kubectl exec”到主吊舱以运行一些命令

因此,我使用资源创建了一个clusterrole:[“pods/exec”]并使用ClusterRoleBinding将其绑定到默认服务帐户

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: pod-reader
rules:
- apiGroups: [""]
  resources: ["pods", "pods/log"]
  verbs: ["get", "list"]
- apiGroups: [""]
  resources: ["pods/exec"]
  verbs: ["create"]

--- 

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: service-account-role-binding
  namespace: default
subjects:
  - kind: ServiceAccount
    name: default
    namespace: default
roleRef:
  kind: ClusterRole
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

---

apiVersion: v1
kind: ServiceAccount
metadata:
  name: default
  namespace: default


In the pod which is of kind:job, I include the service account like shown below

restartPolicy: Never
serviceAccountName: default

but I still get the same error. What am I doing wrong here ?

Error from server (Forbidden): pods "mongo-0" is forbidden: User "system:serviceaccount:default:default" cannot create resource "pods/exec" in API group "" in the namespace "default"

共有1个答案

荆哲
2023-03-14

如果这是为了维护而需要定期运行的东西,请查看Kubernetes守护进程集对象。

 类似资料:
  • 问题内容: 我需要从Django Shell执行Python脚本。我试过了: 但这没有用。只是在等我写东西。 问题答案: 该<<部分有误,请<改用: 你也可以这样做: 对于python3,你需要使用

  • 我需要从Django shell执行一个Python脚本。我试过: 但是没有成功。它只是在等我写些什么。

  • 问题内容: 我想从PHP脚本执行系统上存在的Bash脚本。我的系统上有两个脚本。其中一个是称为at at 的PHP脚本,另一个是称为at at 的Bash脚本。 我的client.php脚本看起来像 我的睾丸看起来像 当我在终端上执行以下操作时 我在终端上得到以下输出 但是当我在打开页面时 我得到以下输出 即使执行了chmod + x testscript,我仍然收到此错误。 我如何从浏览器中获取

  • 问题内容: 如何通过外壳程序脚本执行SQL命令,以使其自动化? 我想使用外壳程序脚本恢复在SQL文件中收集的数据。我想连接到服务器并还原数据。通过SSH命令行单独执行时,该命令有效。 这是我使用的命令: 这是创建文件并将其通过管道传递到mysql 的Shell脚本代码。 正确的方法是什么? 问题答案: 您需要使用该标志来发送密码。这很棘手,因为您和密码之间必须没有空格。 如果在空格之后使mysql

  • 问题内容: 我尝试谷歌搜索答案,但没有运气。 我需要使用我的超级计算机服务器,但是要运行我的python脚本,必须通过shell脚本执行。 例如我要执行 如何做到这一点? 问题答案: 只需确保python可执行文件在PATH环境变量中,然后在脚本中添加 细节: 在文件job.sh中,放入 执行此命令以使脚本可运行: 运行 :

  • 本文向大家介绍Android 从Gradle执行Shell脚本,包括了Android 从Gradle执行Shell脚本的使用技巧和注意事项,需要的朋友参考一下 示例 Shell脚本是一种非常通用的方法,可以将您的构建扩展到您能想到的任何东西。 例如,这是一个简单的脚本,用于编译protobuf文件并将结果java文件添加到源目录中以进行进一步编译: 此示例的“ pbScript.sh” shell