根据环境属性设置容器端口



在生成Pod-yaml时,我正在环境属性中设置端口值。

master $ kubectl run nginx --image=nginx --restart=Never --env=MY_PORT=8080 --dry-run -o yaml  > Pod.yaml

我正在尝试使用Pod-yaml的ports部分中的环境属性MY_PORT。

spec:
containers:
- env:
- name: MY_PORT
value: "8080"
image: nginx
name: nginx
ports:
- containerPort: $(MY_PORT)

当我尝试创建Pod时,我收到以下错误消息。

error: error validating "Pod.yaml": error validating data: ValidationError(Pod.spec.containers[0].ports[0].containerPort): invalid type for io.k8s.api.core.v1.ContainerPort.containerPort: got "string", expected "integer"; if you choose to ignore theseerrors, turn validation off with --validate=false

我试着引用${MY_PORT}、MY_PORT等。但一直都是上面的错误。

如何在整数字段中使用环境变量值。

您不能在那里使用环境变量。在ContainerPortAPI对象中,containerPort字段被指定为整数。变量替换只在几个地方得到支持,它在哪里被调用;例如参见高级ContainerAPI对象中的argscommand

没有理由让它可配置。在Kubernetes环境中,pod将有自己的IP地址,因此没有冲突的风险;如果您想使用不同的端口号进行连接,您可以设置一个服务,其中,例如服务上的端口80转发到pod中的端口8080。(在普通Docker中,你可以用docker run -p 80:8080选项做类似的事情:即使容器内的端口号是固定的,你也可以选择外部端口。(我会删除环境变量设置。

相关内容

  • 没有找到相关文章

最新更新