Kubernetes POD参数不传递给服务,但是Dockerparameter passing正确

问题陈述:

我已经成功地从docker.io/joethecoder2/spring-boot-web创build了一个Docker镜像。 它已经通过命令行参数进行了testing,并且在Docker中本地正常工作。

我正在尝试传递给Docker的javaparameter passing给一个用单个图像定义的docker.io/joethecoder2/spring-boot-web

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

问题定义:

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

预期结果:

我期望Kubernetes POD与这里定义的Docker镜像兼容。

我期望Kubernetes POD像Docker一样接受参数:

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定义文件知道参数是静态定义的?

如果你想在容器中注入环境variables,最好使用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 

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

ConfigMap

服务