【问题标题】:How to distribute a file across presto cluster in kuebernetes如何在 kubernetes 中跨 presto 集群分发文件
【发布时间】:2020-07-31 13:56:39
【问题描述】:

我是 Kubernetes 新手。我们在 Kubernetes 中部署了一个 presto (starburst) 集群,我们正在尝试为 presto 集群实施 SSL 证书。

基于以下 URL,我创建了一个密钥库(在我的本地计算机中)并且必须将此密钥库路径填充到“http-server.https.keystore.path”

https://docs.starburstdata.com/latest/security/internal-communication.html

但是,这个文件必须分布在整个集群中。如果我输入本地路径,那么 Kubernetes 会抛出“找不到文件”错误。请告诉我如何在 kubernetes 的 presto 集群中分发它。

我已尝试将密钥库创建为机密并将其安装到卷。

kubectl create secret generic presto-keystore --from-file=./keystore.jks
kind: Presto
metadata:
  name: stg-presto
spec:
  clusterDomain: cluster.local
  nameOverride: stg-presto
  additionalVolumes:
    - path: /jks
      volume:
      secret:
        secretName: presto-keystore
  additionalJvmConfigProperties: |
  image:
    name: xxxxx/presto
    pullPolicy: IfNotPresent
    tag: 323-e.8-k8s-0.20
  prometheus:
    enabled: true
    additionalRules:
      - pattern: 'presto.execution<name=TaskManager><>FailedTasks.TotalCount'
        name: 'failed_tasks'
        type: COUNTER
  service:
    type: NodePort
    name: stg-presto
  memory:
    nodeMemoryHeadroom: 30Gi
    xmxToTotalMemoryRatio: 0.9
    heapHeadroomPerNodeRatio: 0.3
    queryMaxMemory: 1Pi
    queryMaxTotalMemoryPerNodePoolFraction: 0.333
  coordinator:
    cpuLimit: "5"
    cpuRequest: "5"
    memoryAllocation: "30Gi"
    image:
      pullPolicy: IfNotPresent
    additionalProperties: |
      http-server.http.enabled=false
      node.internal-address-source=FQDN
      http-server.https.enabled=true
      http-server.https.port=8080
      http-server.https.keystore.path=/jks/keystore.jks
      http-server.https.keystore.key=xxxxxxx
      internal-communication.https.required=true
      internal-communication.https.keystore.path=/jks/keystore.jks
      internal-communication.https.keystore.key=xxxxxxx

还尝试创建配置并将其安装为卷。但仍然得到'Caused by: java.io.FileNotFoundException: /jks/keystore.jks (No such file or directory)'。

如果有遗漏,请告诉我。

谢谢

【问题讨论】:

  • 当您使用 Starburst 时,正确的文档链接是 docs.starburstdata.com/latest/security/…(我在上面也对其进行了更新,以供后代使用)。
  • 嗨@PiotrFindeisen,我已经尝试了Tarun在下面提到的方法1.创建了configMap kubectl create configmap presto-keystore --from-file=/cert/keystore.jks 2.在下面使用Presto yaml 文件 AdditionalBootstrapScriptVolume: configMap: name: presto-keystore 3. 此外,在同一个 Presto yaml 文件中使用了协调器和工作人员的属性。附加属性:| internal-communication.https.keystore.path=presto-keystore 但仍然遇到“找不到文件”的问题。如果遗漏任何东西,请您告知。谢谢

标签: kubernetes presto kubernetes-pod starburst


【解决方案1】:

您可以使用您的密钥库创建一个秘密或 Configmap 并将其挂载为卷,然后使用文件中的路径。

如何在k8s中创建和使用configMaphere

如何在k8s中配置secret here

您可以在自定义资源中以与在任何其他资源中类似的方式使用两者。我看到了additionalVolumes 的选项以及与之相关的文档here

【讨论】:

    【解决方案2】:

    您可以在 K8s 中创建一个 secret,并使用 additionalVolumes 属性将其挂载到 Presto 部署中。 在https://docs.starburstdata.com/latest/kubernetes/presto_resource.htmladditionalVolumes 上查看文档

    【讨论】:

      【解决方案3】:
      1. 从文件中创建秘密:
      kubectl create secret generic cluster-keystore --from-file=./docker.cluster.jks
      
      1. 在 yaml 的“additionalVolumes”部分添加密钥:(根据上面 Karol 的 URL)
       additionalVolumes:
        - path: /jks
         volume:
          secret:
           secretName: "cluster-keystore"
      
      1. 将 jks 文件添加到 yaml 中的协调器“additionalProperties”部分:
        coordinator:
          cpuRequest: 25 
          cpuLimit: 25 
          memoryAllocation: 110Gi
          additionalProperties: |
            http-server.https.enabled=true
            http-server.https.port=8443
            http-server.https.keystore.path=/jks/docker.cluster.jks
            http-server.https.keystore.key=xxxxxxxxxxx
            http-server.authentication.type=PASSWORD
      

      【讨论】:

      • 您好,我已按照您提到的相同步骤进行操作。但仍然遇到同样的问题。用我尝试过的步骤更新了我的问题。谢谢
      • 吊舱是否正确出现?您可以通过执行以下操作进入协调器 pod: kubectl exec -it bash - 然后执行 ls /jks 并查看您的 jks 文件是否存在。我也会从 https 服务器开始,而不是内部通信。事实上,在 pod 之间进行加密是有点过头了。
      • 嗨,我已经检查了协调器 pod,但我没有看到 /jks 卷...不确定缺少什么...遵循与上述相同的方法。我们是否必须将上面提到的附加卷添加到每个容器中?谢谢
      猜你喜欢
      • 2021-07-11
      • 1970-01-01
      • 2020-05-24
      • 2019-09-08
      • 2020-07-03
      • 1970-01-01
      • 2017-06-11
      • 2020-08-29
      • 2018-05-14
      相关资源
      最近更新 更多