use*_*472 5 kubernetes kubectl
我在生成 Pod yaml 时在环境属性中设置端口值。
master $ kubectl run nginx --image=nginx --restart=Never --env=MY_PORT=8080 --dry-run -o yaml > Pod.yaml
Run Code Online (Sandbox Code Playgroud)
我正在尝试在 Pod yaml 的 ports 部分中使用环境属性 MY_PORT。
spec:
containers:
- env:
- name: MY_PORT
value: "8080"
image: nginx
name: nginx
ports:
- containerPort: $(MY_PORT)
Run Code Online (Sandbox Code Playgroud)
当我尝试创建 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
Run Code Online (Sandbox Code Playgroud)
我尝试引用 ${MY_PORT} 、 MY_PORT 等,但始终出现与上面相同的错误。
我如何在整数字段中使用环境变量值。
您不能在那里使用环境变量。在ContainerPortAPI 对象中,该containerPort字段被指定为整数。变量替换只在几个地方被支持,并且在它支持的地方被调用;请参阅示例args和command更高级别的ContainerAPI 对象。
没有理由使其可配置。在 Kubernetes 环境中,pod 将拥有自己的 IP 地址,因此不存在冲突风险;如果您想使用不同的端口号进行连接,您可以设置一个服务,例如服务上的端口 80 转发到 pod 中的端口 8080。(在普通 Docker 中,您可以使用选项执行类似的操作docker run -p 80:8080:即使容器内的端口号是固定的,您也始终可以选择外部端口。)我会删除环境变量设置。
| 归档时间: |
|
| 查看次数: |
1689 次 |
| 最近记录: |