在一个pod中运行多个容器时,环境变量不起作用

时间:2017-11-27 09:26:59

标签: kubernetes openshift

在一个pod中运行mysql时,env MYSQL_ROOT_PASSWORD按预期工作。

但是,如果在一个pod中运行带有其他容器的mysql,那么“MYSQL_ROOT_PASSWORD”似乎没有按预期工作。

尽管变量已设置到mysql容器中,但实际上在连接容器内的mysql时密码为空。

详细部署如下,

   spec:
      containers:
      - name: ocai
        image: aura/web:develop
        imagePullPolicy: Always
        ports:
        - containerPort: 9000
      - name: notebook
        image: aura/all-spark-notebook:latest
        imagePullPolicy: Always
        ports:
        - containerPort: 8889
        command: ["sh", "-c", "jupyter-notebook --port=8889 --NotebookApp.token='secret' --config=/jupyter_notebook_config.py --no-browser"]
        volumeMounts:
            - mountPath: /data/ai_lab/ocai/
              name: nb-data
        resources:
          requests:
            memory: 4Gi
      - name: mysql
        env:
          - name: MYSQL_ROOT_PASSWORD
            value: Ocai@1234
        image: aura/mysql:5.7
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 3306
        volumeMounts:
            - mountPath: "/var/lib/mysql"
              name: mysql-data
        resources:
          requests:
            memory: 2G
      volumes:
        - name: mysql-data
          persistentVolumeClaim:
            claimName: ocai-mysql-claim
        - name: nb-data
          persistentVolumeClaim:
            claimName: ocai-nb-claim

2 个答案:

答案 0 :(得分:3)

在部署配置yaml中,env值仅为设置为mysql容器。因此,即使它们共享同一个pod,环境变量也只能用于mysql容器。

答案 1 :(得分:0)

问题是由持久存储引起的。

我没有正确创建pv / pvc,所以pod虽然已经开始,但没有按预期工作。

我还发现将hostPath挂载为持久存储,pod无法启动。

然后我重新创建了PV / PVC,效果很好。