K8S中若要挂载其他命名空间中的 Secret操作方法

 更新时间:2025年03月22日 10:58:52   作者:网络飞鸥  
在Kubernetes中,通过创建ServiceAccount和RoleBinding,可以实现一个命名空间中的Pod挂载另一个命名空间中的Secret,以下是具体步骤和示例代码,包括创建ServiceAccount、Role和RoleBinding,以及在Pod中使用这些资源挂载Secret,感兴趣的朋友一起看看吧

在Kubernetes(k8s)里,若要挂载其他命名空间中的Secret,你可以通过创建一个 SecretServiceAccountRoleBinding 来实现对其他命名空间 Secret 的访问,接着在 Pod 中挂载这个 Secret

下面是详细的步骤和示例代码:

步骤

  • 创建 ServiceAccount:在要挂载 Secret 的命名空间里创建一个 ServiceAccount
  • 创建 RoleRoleBinding:在包含 Secret 的命名空间创建一个 Role 以及 RoleBinding,以此赋予 ServiceAccount 访问 Secret 的权限。
  • Pod 中使用 ServiceAccount 并挂载 Secret:在 Pod 定义里运用 ServiceAccount,并且挂载 Secret

示例代码

下面是一系列的 YAML 文件,用来实现上述步骤。

1. 创建 ServiceAccount

在要挂载 Secret 的命名空间(假设为 target-namespace)创建 ServiceAccount

apiVersion: v1
kind: ServiceAccount
metadata:
  name: secret-reader
  namespace: target-namespace

2. 创建 RoleRoleBinding

在包含 Secret 的命名空间(假设为 source-namespace)创建 RoleRoleBinding

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: secret-reader-role
  namespace: source-namespace
rules:
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["get", "watch", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: secret-reader-rolebinding
  namespace: source-namespace
subjects:
- kind: ServiceAccount
  name: secret-reader
  namespace: target-namespace
roleRef:
  kind: Role
  name: secret-reader-role
  apiGroup: rbac.authorization.k8s.io

3. 在 Pod 中使用 ServiceAccount 并挂载 Secret

target-namespace 里创建一个 Pod,使用 ServiceAccount 并挂载 Secret

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
  namespace: target-namespace
spec:
  serviceAccountName: secret-reader
  containers:
  - name: my-container
    image: nginx
    volumeMounts:
    - name: secret-volume
      mountPath: "/etc/secret"
      readOnly: true
  volumes:
  - name: secret-volume
    secret:
      secretName: my-secret
      namespace: source-namespace

解释

  • ServiceAccount:在 target-namespace 创建的 secret-reader ServiceAccount 用于给 Pod 授予访问权限。
  • RoleRoleBinding:在 source-namespace 创建的 RoleRoleBinding 赋予 secret-reader ServiceAccount 访问 Secret 的权限。
  • Pod:在 target-namespace 创建的 Pod 使用 secret-reader ServiceAccount,并且挂载 source-namespace 中的 my-secret Secret

操作步骤

  • 把上述 YAML 文件保存为不同的文件,例如 serviceaccount.yamlrole.yamlpod.yaml
  • 依次执行以下命令:
kubectl apply -f serviceaccount.yaml
kubectl apply -f role.yaml
kubectl apply -f pod.yaml

这样,Pod 就能成功挂载其他命名空间中的 Secret 了。

到此这篇关于K8S中若要挂载其他命名空间中的 Secret的文章就介绍到这了,更多相关K8S命名空间 Secret内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • kubernetes部署dashboard及应用小结

    kubernetes部署dashboard及应用小结

    Dashboard 是基于网页的 Kubernetes 用户界面,可以对 Deployment 实现弹性伸缩、发起滚动升级、重启 Pod 或者使用向导创建新的应用,这篇文章主要介绍了kubernetes部署dashboard,需要的朋友可以参考下
    2024-06-06
  • K8S加入新的node节点实现方式

    K8S加入新的node节点实现方式

    文章主要介绍了基于kubeadm安装的k8s集群加入新的节点的过程,包括初始化节点、安装Docker和相关组件、配置镜像下载加速器、添加软件源、安装组件、上传和解压镜像、加入新的节点并查看节点状态等步骤
    2026-04-04
  • 节点NotReady后容器驱逐时间调整方式

    节点NotReady后容器驱逐时间调整方式

    文章介绍了Kubernetes早期版本中用于节点监控和Pod驱逐的参数,以及在k8s1.20版本后这些参数的废弃情况,通过测试,验证了新的TaintBasedEvictions机制的有效性,此外,还介绍了与Pod驱逐效率相关的kube-controller-manager参数,包括大规模集群的处理逻辑
    2026-01-01
  • k8s容器状态Terminating无法删除的问题及解决

    k8s容器状态Terminating无法删除的问题及解决

    这篇文章主要介绍了k8s容器状态Terminating无法删除的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-07-07
  • k8s Service 实现服务发现和负载均衡

    k8s Service 实现服务发现和负载均衡

    这篇文章主要为大家介绍了k8s Service 实现服务发现和负载均衡的工作原理及使用方式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Kubernetes中根据Pod IP查找Pod及关联服务的实现方式

    Kubernetes中根据Pod IP查找Pod及关联服务的实现方式

    文章介绍Kubernetes中通过Endpoints、Service选择器、网络策略及节点IPVS/iptables等方法快速定位Pod与关联Service的技巧,推荐优先使用Endpoints并结合标签匹配,适用于调试和运维场景
    2025-10-10
  • Kubernetes存储系统数据持久化管理详解

    Kubernetes存储系统数据持久化管理详解

    这篇文章主要为大家介绍了Kubernetes存储系统数据持久化管理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Kubernetes从私有镜像仓库拉取容器镜像时的身份验证方式

    Kubernetes从私有镜像仓库拉取容器镜像时的身份验证方式

    Kubernetes从私有镜像仓库拉取容器镜像时,需要使用私有仓库的凭证进行身份验证,这些凭证可以存储在`private-registry-auth`这个Secret中,然后在Pod或ServiceAccount中指定使用该Secret,这样可以确保Pod在拉取镜像时能够正确进行身份验证
    2026-01-01
  • k8s部署dashboard ui管理平台全过程

    k8s部署dashboard ui管理平台全过程

    Kubernetes仪表盘是一个用于管理和监控Kubernetes集群的Web界面,它是一个容器化应用,可以通过Kubernetes的API进行部署和管理,仪表盘提供了一个用户友好的界面,可以查看和管理集群中的资源,包括Pod、Deployment、Service等
    2026-01-01
  • 关于Rancher部署并导入K8S集群的问题

    关于Rancher部署并导入K8S集群的问题

    这篇文章主要介绍了关于Rancher部署并导入K8S集群的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12

最新评论