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
服务