Umgebung :
GCP-Containercluster
Kube-Version :
kubectl version
Client Version: version.Info{Major:"1", Minor:"3", GitVersion:"v1.3.7", GitCommit:"a2cba278cba1f6881bb0a7704d9cac6fca6ed435", GitTreeState:"clean", BuildDate:"2016-09-12T23:15:30Z", GoVersion:"go1.6.2", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"4", GitVersion:"v1.4.8", GitCommit:"c5fcb1951afb8150e4574bc234aed957cb586eb0", GitTreeState:"clean", BuildDate:"2017-01-12T02:14:29Z", GoVersion:"go1.6.3", Compiler:"gc", Platform:"linux/amd64"}
In unserem Projekt haben wir versucht, die Configmaps/Geheimnisse stark zu verwenden.
Es funktioniert, wenn wir die configmaps als "Voulme Plugin" konsumieren. Aber es wird nicht funktionieren, wenn es als ENV konsumiert wird.
root<strong i="14">@localhost</strong> env-dir]# cat bcsp-env
discovery_app=discovery
discovery_port=8761
kubectl get configmaps bcsp-var -o yaml
apiVersion: v1
data:
bcsp-env: |
discovery_app=discovery
discovery_port=8761
kind: ConfigMap
metadata:
creationTimestamp: 2017-02-07T14:33:50Z
name: bcsp-var
namespace: default
resourceVersion: "1689350"
selfLink: /api/v1/namespaces/default/configmaps/bcsp-var
uid: 7153f6a7-ed42-11e6-b230-42010af00056
Ich habe es in unserer App im Bereitstellungsmodell ausprobiert, es funktioniert nicht. Also nehme ich ein Beispiel auf der Kubernetes-Site und teste über busybox.
cat test.yml
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
containers:
- name: test-container
image: gcr.io/google_containers/busybox
command: [ "/bin/sh", "-c", "echo $(DISCOVERY_APP) $(DISCOVERY_PORT)" ]
env:
- name: DISCOVERY_APP
valueFrom:
configMapKeyRef:
name: bcsp-var
key: discovery_app
- name: DISCOVERY_PORT
valueFrom:
configMapKeyRef:
name: bcsp-var
key: discovery_port
restartPolicy: Never
Der Pod ist mit den folgenden Meldungen fehlgeschlagen
kubectl describe pod test-pod
Name: test-pod
Namespace: default
Node: gke-container-cluster-it-default-pool-e1732b12-jn5c/10.242.153.2
Start Time: Tue, 07 Feb 2017 06:34:51 -0800
Labels: <none>
Status: Pending
IP: 10.8.1.21
Controllers: <none>
Containers:
test-container:
Container ID:
Image: gcr.io/google_containers/busybox
Image ID:
Port:
Command:
/bin/sh
-c
echo $(DISCOVERY_APP) $(DISCOVERY_PORT)
Requests:
cpu: 100m
State: Waiting
Reason: RunContainerError
Ready: False
Restart Count: 0
Environment Variables:
DISCOVERY_APP: <set to the key 'discovery_app' of config map 'bcsp-var'>
DISCOVERY_PORT: <set to the key 'discovery_port' of config map 'bcsp-var'>
Conditions:
Type Status
Initialized True
Ready False
PodScheduled True
Volumes:
default-token-1u3vc:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-1u3vc
QoS Tier: Burstable
Events:
FirstSeen LastSeen Count From SubobjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
26s 26s 1 {default-scheduler } Normal Scheduled Successfully assigned test-pod to gke-container-cluster-it-default-pool-e1732b12-jn5c
26s 9s 3 {kubelet gke-container-cluster-it-default-pool-e1732b12-jn5c} spec.containers{test-container} Normal Pulling pulling image "gcr.io/google_containers/busybox"
25s 8s 3 {kubelet gke-container-cluster-it-default-pool-e1732b12-jn5c} spec.containers{test-container} Normal Pulled Successfully pulled image "gcr.io/google_containers/busybox"
25s 8s 3 {kubelet gke-container-cluster-it-default-pool-e1732b12-jn5c} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "test-container" with RunContainerError: "GenerateRunContainerOptions: Couldn't find key discovery_app in ConfigMap default/bcsp-var"
Der Dateiname wird als Schlüssel für configmap verwendet. Ich habe die falsche Implementierung gemacht.
@talk2vino Was ist also die Syntax, die in den Pods verwendet werden soll. Auch ich habe dieses Problem!
Hilfreichster Kommentar
Der Dateiname wird als Schlüssel für configmap verwendet. Ich habe die falsche Implementierung gemacht.