我们最近遇到了一个使用容器内环境变量的问题。
操作系统: Windows 10 Pro
k8s集群: Minikube
k8s版本: 1.18.3 1. 不起作用的方法,虽然这是我们首选的方法 下面是使用 'envFrom' 的 deployment.yaml 文件:
运行上述命令,得到以下结果:
步骤二:
k8s集群: Minikube
k8s版本: 1.18.3 1. 不起作用的方法,虽然这是我们首选的方法 下面是使用 'envFrom' 的 deployment.yaml 文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: db
labels:
app.kubernetes.io/name: db
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: db
template:
metadata:
labels:
app.kubernetes.io/name: db
spec:
serviceAccountName: default
securityContext:
{}
containers:
- name: db
image: "postgres:9.4"
ports:
- name: http
containerPort: 5432
protocol: TCP
envFrom:
- configMapRef:
name: db-configmap
以下是db.properties文件:
POSTGRES_HOST_AUTH_METHOD=trust
步骤1:
kubectl create configmap db-configmap ./db.properties
步骤二:
kebuctl apply -f ./deployment.yaml
步骤三:
kubectl get pod
运行上述命令,得到以下结果:
db-8d7f7bcb9-7l788 0/1 CrashLoopBackOff 1 9s
这表明环境变量POSTGRES_HOST_AUTH_METHOD未被注入。
2. 这种方式是可行的(但我们不能采用这种方法)
下面是使用“env”选项的deployment.yaml文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: db
labels:
app.kubernetes.io/name: db
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: db
template:
metadata:
labels:
app.kubernetes.io/name: db
spec:
serviceAccountName: default
securityContext:
{}
containers:
- name: db
image: "postgres:9.4"
ports:
- name: http
containerPort: 5432
protocol: TCP
env:
- name: POSTGRES_HOST_AUTH_METHOD
value: trust
步骤1:
kubectl apply -f ./deployment.yaml
步骤二:
kubectl get pod
运行上述命令,获得以下结果:
db-fc58f998d-nxgnn 1/1 Running 0 32s
以上表明环境被注入,以便启动数据库。
在第一个案例中,我做错了什么?
提前感谢您的帮助。
更新:
提供配置映射:
kubectl describe configmap db-configmap
Name: db-configmap
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
db.properties:
----
POSTGRES_HOST_AUTH_METHOD=trust