我可以使用复制控制器为每个副本定义容器的变量吗?

时间:2017-07-10 12:43:40

标签: kubernetes

我可以使用每个副本的复制控制器为Container定义环境变量吗?

示例:

我有这个复制控制器:

apiVersion: v1
kind: ReplicationController
metadata:
  name: bdirest
  labels:
    component: bdirest
    role: publicapi
spec:
  replicas: 2
  template:
    metadata:
      labels:
        component: bdirest
        role: publicapi
    spec:
      containers:
      - name: bdirest
        image: XXX.dkr.ecr.us-west-2.amazonaws.com/rest-latest:XX.XX
        imagePullPolicy: Always
        env:      
        - name: MY_RC_NAME
          value: bdirest
        - name: NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: "JAVA_OPTIONS"
          value: "-Xmx1G -Xms256m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/bdi/dumps/jetty -Dconfig.dir.path=/bdi/conf -Dlog4j.configurationFile=/bdi/logs/rest/log4j2.properties -Djetty.logging.dir=/bdi/logs/rest -DMY_RC_NAME=$(MY_RC_NAME)"
        ports:
        - containerPort: 8080
          name: http

我说我想要这个组件有2个副本,但是我想要定义第一个副本将具有某种我可以在组件内使用它的唯一变量,而第二个副本将拥有自己的唯一变量。

我宁愿不使用像“MY_POD_NAME”这样的pods变量,我可以从“metadata.name”获取,因为我希望该变量将始终使用相同的变量,并且不会在每次杀死pod时更改。

知道是否有可能吗?

1 个答案:

答案 0 :(得分:1)

据我所知,此功能在kubernetes中不可用。 Kubernetes将每个POD作为单独的实体进行管理。

EG。如果POD有人死于某种原因,kubernetes将启动另一个具有不同主机名和IP的POD实例。

在此使用中可以使用,因为您需要使用共享持久性存储(如数据库

)来管理此逻辑