Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 根据环境属性设置容器端口_Kubernetes_Kubectl - Fatal编程技术网

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

Kubernetes 根据环境属性设置容器端口,kubernetes,kubectl,Kubernetes,Kubectl,在生成Pod yaml时,我正在环境属性中设置端口值 master $ kubectl run nginx --image=nginx --restart=Never --env=MY_PORT=8080 --dry-run -o yaml > Pod.yaml spec: containers: - env: - name: MY_PORT value: "8080" image: nginx name:

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

master $ kubectl run nginx --image=nginx --restart=Never --env=MY_PORT=8080 --dry-run -o yaml  > Pod.yaml
spec:
     containers:
     - env:
       - name: MY_PORT
         value: "8080"
       image: nginx
       name: nginx
       ports:
       - containerPort: $(MY_PORT)
我正在尝试使用Pod yaml的ports部分中的environment属性MY_PORT

master $ kubectl run nginx --image=nginx --restart=Never --env=MY_PORT=8080 --dry-run -o yaml  > Pod.yaml
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等。。但始终存在与上述相同的错误


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

在整型字段中不能使用环境变量。在中,
containerPort
字段被指定为整数。变量替换仅在几个地方提供支持,在执行的地方调用变量替换;例如,请参见更高级别中的
args
command


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

您不能在那里使用环境变量。在中,
containerPort
字段被指定为整数。变量替换仅在几个地方提供支持,在执行的地方调用变量替换;例如,请参见更高级别中的
args
command


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

为什么要这样做?@Arghya Sandhu实际上没有实际使用案例。我在尝试这一点,因为有时我们可以在定义yaml中动态使用configmap中的一些参数,类似地,我尝试看看是否可以从环境属性中动态选择端口值。为什么要这样做?@Arghya Sandhu实际上没有实际的使用案例。我尝试了这一点,因为有时我们可以在定义yaml中动态使用configmap中的一些参数,类似地,我尝试看看是否能够从environment属性中动态选择端口值。