Kubernetes 如何在同一POD的不同实例中将环境变量设置为不同的值?

Kubernetes 如何在同一POD的不同实例中将环境变量设置为不同的值?,kubernetes,Kubernetes,我希望有两个相同POD的实例,其中一个环境变量的值不同。 我们怎样才能做到这一点 谢谢您可以使用一个包含两个不同容器的吊舱来实现您的目标 以下是如何实现这一目标的示例: apiVersion: v1 kind: Pod metadata: name: busybox spec: containers: - name: busybox1 image: busybox:1.28 env: - name: VAR1 value: "Hello I'm V

我希望有两个相同POD的实例,其中一个环境变量的值不同。 我们怎样才能做到这一点


谢谢

您可以使用一个包含两个不同容器的吊舱来实现您的目标

以下是如何实现这一目标的示例:

apiVersion: v1
kind: Pod
metadata:
  name: busybox
spec:
  containers:
  - name: busybox1
    image: busybox:1.28
    env:
    - name: VAR1
      value: "Hello I'm VAR1"
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
  - name: busybox2
    image: busybox:1.28
    env:
    - name: VAR2
      value: "VAR2 here"
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
  restartPolicy: Always
我们正在创建两个容器,一个使用
VAR1
,第二个使用
VAR2

$ kubectl exec -ti busybox -c busybox1 -- env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=busybox
TERM=xterm
VAR1=Hello I'm VAR1
KUBERNETES_PORT_443_TCP_ADDR=10.31.240.1
KUBERNETES_SERVICE_HOST=10.31.240.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT=tcp://10.31.240.1:443
KUBERNETES_PORT_443_TCP=tcp://10.31.240.1:443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_PORT=443
HOME=/root

如您所见,它们具有相同的主机名(从Pod名称继承)和不同的变量

当您说同一POD的两个实例时,是否意味着您通过
ReplicatSet
Deployment
创建它们;I don’我认为这是不可能的,它可以通过应用程序代码中的一些逻辑来完成。通过部署创建POD请澄清一下您想要实现什么?您可以使用两个不同的pod规范为每个pod设置不同的变量。两者都可以基于相同的docker图像。如果这是你想要的,请让我知道,我会发布一些例子。这能回答你的问题吗?
$ kubectl exec -ti busybox -c busybox2 -- env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=busybox
TERM=xterm
VAR2=VAR2 here
KUBERNETES_PORT=tcp://10.31.240.1:443
KUBERNETES_PORT_443_TCP=tcp://10.31.240.1:443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_ADDR=10.31.240.1
KUBERNETES_SERVICE_HOST=10.31.240.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_PORT_HTTPS=443
HOME=/root