如何使用 kubernetes configmap 运行 二进制文件

How to run binary using kuberneates config-map

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

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

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

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

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

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

据我所知有两个选项:

  • 利用configmap来存储二进制数据。检查 this

  • 将您的二进制文件远程存储在 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 大小限制。

我推荐第二种方式。

希望这对您有所帮助。