configMap 的文件名在 Pod 中显示为 env

bac*_*eld 2 bash nginx kubernetes

我有一个名为 config.txt 的文件,我用来在 minikube 集群中创建 configmap myconfig

但是,当我在 Pod 中使用myconfig时,文件 config.txt 的名称也显示为 ENV 的一部分。

我该如何纠正?

> cat config.txt
var3=val3
var4=val4

> kubectl create cm myconfig --from-file=config.txt
configmap/myconfig created

> kubectl describe cm myconfig
Name:         myconfig
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
config.txt:
----
var3=val3
var4=val4

Events:  <none>
Run Code Online (Sandbox Code Playgroud)

Pod 定义

> cat nginx.yml 
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: nginx
  name: nginx
spec:
  containers:
  - image: nginx
    name: nginx
    envFrom:
      - configMapRef:
          name: myconfig
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Never
status: {}

> kubectl create -f nginx.yml
pod/nginx created
Run Code Online (Sandbox Code Playgroud)

Pod EVN 检查,注意行config.txt=var3=val3 预计它只是var3=val3

> kubectl exec -it nginx -- env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=nginx
TERM=xterm
config.txt=var3=val3
var4=val4

KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT=tcp://10.96.0.1:443
NGINX_VERSION=1.19.4
NJS_VERSION=0.4.4
PKG_RELEASE=1~buster
HOME=/root
Run Code Online (Sandbox Code Playgroud)

Kun*_* Li 5

像这样创建配置映射将完成这项工作:

kubectl create cm myconfig --from-env-file=config.txt
Run Code Online (Sandbox Code Playgroud)