【问题标题】:Kubernetes keep variables fixed to podsKubernetes 将变量固定到 pod
【发布时间】:2019-11-21 15:49:18
【问题描述】:

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

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

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

【问题讨论】:

    标签: kubernetes kubernetes-pod kubernetes-statefulset


    【解决方案1】:

    我看到了两种方法:

    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
    

    【讨论】:

      【解决方案2】:

      使用 StatefulSet可以从 pod-name 中提取它。

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

      然后从名称的末尾获取。 StatefulSet 中的 pod 将被命名为 <StatfulSetName>-<ordinal>,请参阅 pod-identity

      【讨论】:

        猜你喜欢
        • 2019-08-02
        • 2021-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-26
        • 2021-07-25
        • 2020-03-30
        相关资源
        最近更新 更多