0

我将配置映射与文件一起使用,但我正在尝试使用像 supervisor d 和其他内部工具这样的便携式服务。

我们有可以在任何图像中运行的 golang 二进制文件。我正在尝试使用 configmap 运行这些二进制文件。

示例:-我们有一个用 Go 编写的内部工具(大小小于 7MB)可以存储在配置映射中,我们想将该配置映射挂载到 kuberneates pod 中并希望在 pod 中运行它

问题:-有人用吗?这是一个好方法吗?最佳做法是什么?

4

2 回答 2

3

我不相信您可以将 7MB 的内容放在 ConfigMap 中。例如,请参见此处。您正在尝试做的事情听起来像是一种非常不寻常的做法。在 Kubernetes 的 Pod 中运行二进制文件的标准做法是构建一个包含二进制文件的容器镜像,并配置该镜像或 Pod 以运行该二进制文件。

于 2019-08-23T05:24:16.350 回答
3

在 k8s pod 中存储 elastic.jks 密钥库二进制文件时,我也遇到了类似的问题。

AFAIK有两种选择:

  • 利用 configmap 存储二进制数据。看看这个

或者

  • 将您的二进制文件远程存储在 s3 存储桶中,并在使用initContainers概念运行实际 pod 之前提取该二进制文件。
apiVersion: v1
kind: Pod
metadata:
  name: alpine
  namespace: default
spec:
  containers:
  - name: myapp-container
    image: alpine:3.1
    command: ['sh', '-c', 'if [ -f /jks/elastic.jks ]; then sleep 99999; fi']
    volumeMounts:
    - name: jksdata
      mountPath: /jks
  initContainers:
  - name: init-container
    image: atlassian/pipelines-awscli
    command: ["/bin/sh","-c"]
    args: ['aws s3 sync s3://my-artifacts/$CLUSTER /jks/']
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - name: jksdata
      mountPath: /jks
    env:
    - name: CLUSTER
      value: dev-elastic
  volumes:
  - name: jksdata
    emptyDir: {}
  restartPolicy: Always

正如@amit-kumar-gupta 提到的 configmap 大小约束。

我推荐第二种方式。

希望这可以帮助。

于 2019-08-23T05:29:39.483 回答