gpt4 book ai didi

spring-boot - Kubernetes与Spring Boot变量解析冲突

转载 作者:行者123 更新时间:2023-12-02 11:44:48 25 4
gpt4 key购买 nike

我有一个Kubernetes和spring boot的env变量冲突错误。详细信息如下:

在创建zipkin服务器容器时,我需要设置env变量RABBITMQ_HOST=http://172.16.100.83,RABBITMQ_PORT=5672

最初,我将zipkin_pod.yaml定义如下:

apiVersion: v1
kind: Pod
metadata:
name: gearbox-rack-zipkin-server
labels:
app: gearbox-rack-zipkin-server
purpose: platform-demo
spec:
containers:
- name: gearbox-rack-zipkin-server
image: 192.168.1.229:5000/gearboxrack/gearbox-rack-zipkin-server
ports:
- containerPort: 9411
env:
- name: EUREKA_SERVER
value: http://172.16.100.83:31501
- name: RABBITMQ_HOST
value: http://172.16.100.83
- name: RABBITMQ_PORT
value: 31503

使用此配置,当我执行命令时
kubectl apply -f zipkin_pod.yaml

控制台抛出错误:
[root@master3 sup]# kubectl apply -f zipkin_pod.yaml
Error from server (BadRequest): error when creating "zipkin_pod.yaml": Pod in version "v1" cannot be handled as a Pod: v1.Pod: Spec: v1.PodSpec: Containers: []v1.Container: v1.Container: Env: []v1.EnvVar: v1.EnvVar: Value: ReadString: expects " or n, parsing 1018 ...,"value":3... at {"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"v1\",\"kind\":\"Pod\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"gearbox-rack-zipkin-server\",\"purpose\":\"platform-demo\"},\"name\":\"gearbox-rack-zipkin-server\",\"namespace\":\"default\"},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"EUREKA_SERVER\",\"value\":\"http://172.16.100.83:31501\"},{\"name\":\"RABBITMQ_HOST\",\"value\":\"http://172.16.100.83\"},{\"name\":\"RABBITMQ_PORT\",\"value\":31503}],\"image\":\"192.168.1.229:5000/gearboxrack/gearbox-rack-zipkin-server\",\"name\":\"gearbox-rack-zipkin-server\",\"ports\":[{\"containerPort\":9411}]}]}}\n"},"labels":{"app":"gearbox-rack-zipkin-server","purpose":"platform-demo"},"name":"gearbox-rack-zipkin-server","namespace":"default"},"spec":{"containers":[{"env":[{"name":"EUREKA_SERVER","value":"http://172.16.100.83:31501"},{"name":"RABBITMQ_HOST","value":"http://172.16.100.83"},{"name":"RABBITMQ_PORT","value":31503}],"image":"192.168.1.229:5000/gearboxrack/gearbox-rack-zipkin-server","name":"gearbox-rack-zipkin-server","ports":[{"containerPort":9411}]}]}}

因此,我对zipkin_pod.yaml文件的最后一行进行了如下修改:或使用强力将端口号设置为int。
apiVersion: v1
kind: Pod
metadata:
name: gearbox-rack-zipkin-server
labels:
app: gearbox-rack-zipkin-server
purpose: platform-demo
spec:
containers:
- name: gearbox-rack-zipkin-server
image: 192.168.1.229:5000/gearboxrack/gearbox-rack-zipkin-server
ports:
- containerPort: 9411
env:
- name: EUREKA_SERVER
value: http://172.16.100.83:31501
- name: RABBITMQ_HOST
value: http://172.16.100.83
- name: RABBITMQ_PORT
value: !!31503

然后成功创建了pod,但是spring getProperties抛出异常。
[root@master3 sup]# kubectl apply -f zipkin_pod.yaml
pod "gearbox-rack-zipkin-server" created

当我检查日志时:
[root@master3 sup]# kubectl logs gearbox-rack-zipkin-server
2018-05-28 07:56:26.792 INFO [zipkin-server,,,] 1 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@4ac68d3e: startup date [Mon May 28 07:56:26 UTC 2018]; root of context hierarchy

...

***************************
APPLICATION FAILED TO START
***************************
Description:
Binding to target org.springframework.boot.autoconfigure.amqp.RabbitProperties@324c64cd failed:
Property: spring.rabbitmq.port
Value:
Reason: Failed to convert property value of type 'java.lang.String' to required type 'int' for property 'port'; nested exception is org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.String] to type [int]
Action:
Update your application's configuration

我的问题是如何让kubernetes将端口号理解为int,同时又不破坏spring boot将规则从字符串转换为int的方式?因为Spring Boot无法转换 !!31503 to int 31503

最佳答案

正如@Bal Chua和@PärNilsson提到的,对于环境变量,您只能使用字符串变量,因为Linux环境变量只能是字符串。

因此,如果使用yaml,则需要将值放在引号中以强制Kubernetes使用字符串。

例如:

- name: RABBITMQ_PORT
value: '31503'

关于spring-boot - Kubernetes与Spring Boot变量解析冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50562296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com