gpt4 book ai didi

kubernetes - Kubernetes Secret 是如何挂载的?

转载 作者:行者123 更新时间:2023-12-02 12:15:14 35 4
gpt4 key购买 nike

更新

显然此行为是由 ServiceAccount 引起的:
https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/#service-account-admission-controller

它使用了一个叫做 AdmissionController 的东西.我想我正在寻找的是以下之一:

  • AdmissionController 中查找设置在我的情况下跳过给定容器 (initContainer) 的 secret 挂载
  • 查找 AdmissionController 的实现具有这种灵 active
  • 将 secret 的位置从/var/run/secrets 更改到其他位置

  • 原来的

    我有一个 initContainer,它是 pod 的一部分,也是 statefulset 的一部分。我正在安装一些直接的卷(所以我可以在我的应用容器启动之前创建路径/权限)。但是,一旦我检查文件系统,我就会看到一个嵌套路径,其中包含似乎是 kubernetes 的 secret 。

    这是如何安装的?这是我们自己做的吗?为什么是这条路?我可以阻止 secret 被安装吗?我可以更改挂载路径吗?
    $ kubectl logs nmnode-0-0 -n test -c prep-hadoop-paths
    drwxrwsrwt 4 root root 80 Aug 21 03:52 /run
    /run:
    total 0
    drwxrwsr-x 2 1000 root 40 Aug 21 03:52 configmaps
    drwxr-sr-x 3 root root 60 Aug 21 03:52 secrets

    /run/configmaps:
    total 0

    /run/secrets:
    total 0
    drwxr-sr-x 3 root root 60 Aug 21 03:52 kubernetes.io

    /run/secrets/kubernetes.io:
    total 0
    drwxrwsrwt 3 root root 140 Aug 21 03:51 serviceaccount

    /run/secrets/kubernetes.io/serviceaccount:
    total 0
    lrwxrwxrwx 1 root root 13 Aug 21 03:51 ca.crt -> ..data/ca.crt
    lrwxrwxrwx 1 root root 16 Aug 21 03:51 namespace -> ..data/namespace
    lrwxrwxrwx 1 root root 12 Aug 21 03:51 token -> ..data/token

    initContainers:
    - command:
    - sh
    - -c
    - umask 002; ls -ld /run; ls -lR /run; mkdir -p /var/run/secrets/credentials
    ; mkdir -p /var/opt/hdfs ; mkdir -p /var/run/configmaps ; mkdir -p /var/run/secrets/certificates
    ; ls -lR /var;
    image: ubuntu:16.04
    imagePullPolicy: IfNotPresent
    name: prep-hadoop-paths
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /var/opt
    name: data
    subPath: hadoop/var/opt
    - mountPath: /var/log
    name: logs
    subPath: hadoop
    - mountPath: /var/run
    name: var-run
    subPath: hadoop


    正如您从 initContainer 规范中看到的那样,我没有指定或要求挂载任何 secret 。然而他们无论如何都会出现

    以下是 pod 的卷列表。

    volumes:
    - name: mssql-master-pool-secret
    secret:
    defaultMode: 420
    secretName: mssql-master-pool-secret
    - name: controller-internal-secret
    secret:
    defaultMode: 420
    secretName: controller-internal-secret
    - emptyDir:
    medium: Memory
    name: var-run
    - configMap:
    defaultMode: 420
    name: mssql-hadoop-storage-0-configmap
    name: hadoop-config-volume
    - name: nmnode-0-agent-secret
    secret:
    defaultMode: 420
    secretName: nmnode-0-agent-secret
    - configMap:
    defaultMode: 420
    name: cluster-configmap
    name: cluster-config-volume


    如果您需要 yaml 的更多部分,请告诉我。

    最佳答案

    您走在正确的道路上,如Admission controller是通过 Kubernetes API 实现各种功能的主要贡献者。正如你上面提到的 Service Account也在 Kubernetes 集群中通过一些准入特性进行传播,最初绑定(bind)到名为 ServiceAccount 的特定准入插件。 .

    根据 Kubernetes 官方 documentation ,有特殊标志--enable-admission-plugins--disable-admission-plugins包含在 kube-apiserverconfiguration可用于分别启用或禁用准入插件。

    默认情况下,ServiceAccount准入 Controller 插件已启用,如 here 所述.除了其他操作,此插件将带有 token 数据和 CA 证书的卷安装到跨 K8s 集群的每个 Pod 中,用于 authentication到 apiserver 的目的。

    为了停用 ServiceAccount准入插件,可以注入(inject)--disable-admission-plugins=ServiceAccount进入kube-apiserver配置。

    否则,如果你想

    Change the location of secrets from /var/run/secrets to somewhere else



    这是 where您可以将路径更改为您想要的任何内容

    关于kubernetes - Kubernetes Secret 是如何挂载的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57596808/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com