Kubernetes将变量固定在POD上

Kubernetes将变量固定在POD上,kubernetes,kubernetes-pod,kubernetes-statefulset,Kubernetes,Kubernetes Pod,Kubernetes Statefulset,我有一个有3个pod的应用程序,每个pod需要一个固定的变量名存储在每个pod中。因此,如果一切正常,这三个pod将在相应的pod上存储var1、var2和var3 如果第一个pod被替换为var1,我如何确定其他两个pod具有var2和var3,从而知道新pod应该被分配var1 这可以通过有状态集来完成吗?使用StatefulSet可以从pod名称中提取 env: - name: podname valueFrom: fieldRef: fieldPa

我有一个有3个pod的应用程序,每个pod需要一个固定的变量名存储在每个pod中。因此,如果一切正常,这三个pod将在相应的pod上存储var1、var2和var3

如果第一个pod被替换为var1,我如何确定其他两个pod具有var2和var3,从而知道新pod应该被分配var1


这可以通过有状态集来完成吗?

使用
StatefulSet
可以从pod名称中提取

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

然后从名字的末尾开始。StatefulSet中的pod将被命名为
-
,请参见使用
StatefulSet
您可以从pod名称中提取该名称

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

然后从名字的末尾开始。StatefulSet中的pod将命名为
-
,请参见我看到两种方法:

  • 使用:
  • 对于具有N个副本的StatefulSet,StatefulSet中的每个Pod都将 分配了一个从0到N-1的唯一整数序号 在片场上空

  • 手动创建。例如:
  • 如果您需要您的应用程序知道它在哪个Pod上运行,Kubernetes文档中有一个有趣的页面:

    例如:

    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
    

    我认为有两种方法可以做到这一点:

  • 使用:
  • 对于具有N个副本的StatefulSet,StatefulSet中的每个Pod都将 分配了一个从0到N-1的唯一整数序号 在片场上空

  • 手动创建。例如:
  • 如果您需要您的应用程序知道它在哪个Pod上运行,Kubernetes文档中有一个有趣的页面:

    例如:

    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