Kubernetes将变量固定在pod上

问题描述 投票:1回答:2

我有一个具有3个容器的应用程序,每个容器需要在每个容器中存储一个固定的变量名。因此,如果一切运行正常,则三个Pod将在相应的Pod中存储var1,var2和var3。

如果替换了第一个具有var1的容器,我如何确定其他2个容器具有var2和var3,从而知道应该为新容器分配var1?

可以使用状态集来完成吗?

kubernetes
2个回答
0
投票

使用StatefulSet,您可以从广告连播名称中提取此名称。

env:
  - name: podname
    valueFrom:
      fieldRef:
        fieldPath: metadata.name 

然后从名称末尾得到它。 StatefulSet中的Pod将命名为<StatfulSetName>-<ordinal>,请参见pod-identity


0
投票

我看到了两种方法:

  1. 使用StatefulSets

对于具有N个副本的StatefulSet,StatefulSet中的每个Pod将分配了一个从0到N-1的整数序数,该序数是唯一的在集合上。

  1. 手动创建Pods。例如:
apiVersion: v1
kind: Pod
metadata:
  name: memory-demo-3
  namespace: mem-example
spec:
  containers:
  - name: memory-demo-3-ctr
    image: polinux/stress

如果您需要您的应用程序知道运行Pod的位置,则Kubernetes文档中有一个有趣的页面:"Expose Pod Information to Containers Through Environment Variables"

示例:

apiVersion: v1
kind: Pod
metadata:
  name: mypod-var1
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      env:
        - name: MY_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
© www.soinside.com 2019 - 2024. All rights reserved.