【问题标题】:Kubernetes POD arguments are not passing to service, however Docker arguments are passing correctlyKubernetes POD 参数未传递给服务,但 Docker 参数正确传递
【发布时间】:2018-05-20 22:19:16
【问题描述】:

问题陈述:

我已经从docker.io/joethecoder2/spring-boot-web 成功创建了一个 Docker 映像。它已经使用命令行参数进行了测试,并且这些参数在 Docker 本地正常工作。

我正在尝试将传递给 Docker 的 java 参数传递给使用单个映像定义的 Kubernetes POD docker.io/joethecoder2/spring-boot-web

传递参数的目的是让 POD 知道数据库服务的 IP 地址和端口号是什么。

问题定义:

我在这里定义了一个 Kubernetes POD,但是我认为当 POD 运行服务时,参数没有从 singlePod.yaml 正确传递。

预期结果:

我希望 Kubernetes POD 与定义 here 的 Docker 镜像兼容。

我希望 Kubernetes POD 像 Docker 一样接受参数here

docker run -it -p 8080:8080 joethecoder2/spring-boot-web -Dcassandra_ip=127.0.0.1 -Dcassandra_port=9042

curl -X POST --header 'Content-Type: application/json' --header 'Accept: text/plain' 'http://localhost:8080/restaurant/arguments'

返回正确结果-> 127.0.0.1:9042

错误结果:

我知道实际参数没有传递给 POD,因为当我运行以下服务时,我没有收到任何返回的参数。

curl -X POST --header 'Content-Type: application/json' --header 'Accept: text/plain' 'http://192.168.64.3:32308/restaurant/arguments'

返回错误的结果->:

预期结果 -> 127.0.0.1:9042,在 singlePod.yaml 文件中定义

为什么即使 POD 定义文件知道参数是静态定义的,参数也会丢失?

【问题讨论】:

  • 最好创建一个configMap.yaml并将其与Pod yaml文件相关联。它将确保容器可以使用这些环境变量

标签: docker kubernetes integration kubectl minikube


【解决方案1】:

如果你想将环境变量注入到容器中。最好使用 ConfigMap,它提供了灵活性以及关注点分离。

apiVersion: v1
kind: Pod
metadata:
  name: spring-boot-web-demo
  labels:
    purpose: demonstrate-spring-boot-web
spec:
  containers:
  - name: spring-boot-web
    image: docker.io/joethecoder2/spring-boot-web
    command: ["java","-jar", "spring-boot-web-0.0.1-SNAPSHOT.jar"]
  env:
  - name: DCASSANDRA_IP
    valueFrom:
        configMapKeyRef:
            key: Dcassandra_ip
            name: env-values
  - name: DCASSANDRA_PORT
    valueFrom:
        configMapKeyRef:
            key: Dcassandra_port
            name: env-values
  restartPolicy: OnFailure

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: env-values
data:
  Dcassandra_port=9042
  Dcassandra_ip=127.0.0.1

现在您需要编写一个服务清单文件来公开此容器以便访问它。 我附上了进一步研究的链接。

ConfigMap

Service

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-25
    • 2016-04-09
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多