当前位置: 首页 > 知识库问答 >
问题:

Kubernetes StatefulSet-获取spec.replicas元数据并引用配置中的其他位置

姬昊焱
2023-03-14

我正在配置一个StatefulSet,其中我希望可以将可用的副本数(如下所示的spec.replicas)作为参数传递到应用程序实例中。我的应用程序需要spec.replicas来确定副本的数量,以便它知道从MySQL表中加载哪些行。我不想在spec.replicas和application参数中硬编码副本的数量,因为当向上或向下缩放副本数量时,这将不起作用,因为application参数需要在缩放时进行调整。

以下是我的StatefulSet配置:

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  labels:
    run: my-app
  name: my-app
  namespace: my-ns
spec:
  replicas: 3
  selector:
    matchLabels:
      run: my-app
  serviceName: my-app
  podManagementPolicy: Parallel
  template:
    metadata:
      labels:
        run: my-app
    spec:
      containers:
      - name: my-app
        image: my-app:latest
        command:
          - /bin/sh
          - /bin/start.sh
          - dev
          - 2000m
          - "0"
          - "3" **Needs to be replaced with # replicas**
          - 127.0.0.1
          - "32990"
        imagePullPolicy: Always
        livenessProbe:
          httpGet:
            path: /health
            port: 8081
          initialDelaySeconds: 180
          periodSeconds: 10
          timeoutSeconds: 3
        readinessProbe:
          failureThreshold: 10
          httpGet:
            path: /ready
            port: 8081
            scheme: HTTP
          initialDelaySeconds: 30
          periodSeconds: 15
          successThreshold: 1
          timeoutSeconds: 3
        ports:
        - containerPort: 8080
          protocol: TCP
        resources:
          limits:
            memory: 2500Mi
      imagePullSecrets:
      - name: snapshot-pull
      restartPolicy: Always

我读过Kubernetes文档,spec.replicas字段的范围是在pod或container级别,而不是StatefulSet,至少就我所见是这样。

提前道谢。

共有1个答案

萧展鹏
2023-03-14

您可以使用yaml锚点来完成以下操作:

查看:https://github.com/kubernetes/helm/blob/master/docs/chart_template_guide/yaml_techniques.md

API版本:apps/v1beta1种类:StatefulSet元数据:labels:run:my-app name:my-app namespace:my-ns spec:replicas:&numreplicas 3选择器:matchlabels:run:my-app servicename:my-app podmanagementpolicy:并行模板:metadata:labels:run:my-app servicename:my-app podmanagementpolicy:Parallel template:metadata:labels:run:my-app spec:containers:-name:ePullPolicy:Always livenessProbe:httpget:path:/health端口:8081 initialdelayseconds:180 periodseconds:10 timeoutseconds:3 readinessProbe:failurethresholds:10 httpget:path:/ready端口:8081 scheme:HTTP initialdelayseconds:30 periodseconds:15 successthreshold:1 timeoutseconds:3 ports:-containerport:8080协议:TCP资源:limits:

 类似资料:
  • 问题内容: Hibernate配置文件(.hbm.xml)的理想位置是 但我想将这些配置设置放在其他位置,例如 我怎样才能做到这一点? 如果我将配置文件放在该位置,并且启动了Tomcat,则在加载该配置时会出现错误提示 找不到hibernate.cfg.xml 问题答案: 要配置文件的位置,请使用而不是在创建时。 要配置文件的位置,请使用。 也可以看看: Java文档

  • ssh 公私钥登录配置 第一步,在客户端生成公钥 ssh-keygen -t rsa #生成的公钥匙在 ~/.ssh/ 目录下 第二步,把公钥上传到服务器端,登录服务器追加公钥到 authorized_keys 文件 简单版 ssh-copy-id -i ~/.ssh/id_rsa.pub username@ip 复杂版 scp id_rsa.pub root@ip地址:文件保存路径 ssh

  • 但当我从另一个位置(如root或其他位置)运行时,它会抛出一个错误: 线程“main”java.lang.RuntimeException中出现异常:无法在org.apache.hadoop.hive.ql.util.ResourceDownLoader.ensureDirectory(resourceDownLoader.java:123)(org.apache.hadoop.hive.ql.u

  • 有可能在JList中获得所选元素的位置吗?我想让它将JFrame放在单击选项的正下方。