如何使用 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 大小限制。
我推荐第二种方式。
希望这对您有所帮助。
我将配置映射与文件一起使用,但我正在试验 supervisor d 和其他内部工具等便携式服务。
我们有 golang 二进制文件,可以 运行 在任何图像中。我正在尝试的是使用 configmap 运行 这些二进制文件。
例子:- 我们有一个用 Go 编写的内部工具(大小小于 7MB)可以存储在配置映射中,我们想将该配置映射安装在 kuberneates pod 中并希望 运行 它在 pod
中问题:- 有人用吗?这是一个好方法吗?最佳做法是什么?
我不相信你能把 7MB 的内容放在一个 ConfigMap 里。例如,参见
我在 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 大小限制。
我推荐第二种方式。
希望这对您有所帮助。