首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在状态集中引入Pod重新启动之间的延迟?

如何在状态集中引入Pod重新启动之间的延迟?
EN

Stack Overflow用户
提问于 2022-03-23 15:44:17
回答 2查看 410关注 0票数 0

我使用下面的命令在状态集中重新启动Pods

代码语言:javascript
复制
kubectl rollout restart statefulset ts

如果我必须在吊舱旋转之间引入延迟,是否有任何争论或其他方法来实现它?我使用的是将Pod IP地址更新为配置文件的sidecar,如果Pod在配置文件中更新IP地址之前重新启动,则服务是不健康的。寻找一种方法来引入一个延迟之间的荚重新启动/吊舱轮转。

代码语言:javascript
复制
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: typesense
  namespace: typesense
  labels:
    service: typesense
    app: typesense
spec:
  serviceName: ts
  podManagementPolicy: Parallel
  replicas: 3
  selector:
    matchLabels:
      service: typesense
      app: typesense
  template:
    metadata:
      labels:
        service: typesense
        app: typesense
    spec:
      serviceAccountName: typesense-service-account
      securityContext:
        fsGroup: 2000
        runAsUser: 10000
        runAsGroup: 3000
        runAsNonRoot: true
      terminationGracePeriodSeconds: 300
      containers:
        - name: typesense
          envFrom:
            # - configMapRef: 
            #     name: typesense-config
            - secretRef:
                name: typesense-secret
          image: typesense/typesense:0.23.0.rc43
          command:
            - "/opt/typesense-server"
            - "-d"
            - "/usr/share/typesense/data"
            - "--api-port"
            - "8108"
            - "--peering-port"
            - "8107"
            - "--nodes"
            - "/usr/share/typesense/nodes"
          ports:
            - containerPort: 8108
              name: http
          resources:
            requests:
              memory: 100Mi
              cpu: "100m"
            limits:
              memory: 1Gi
              cpu: "1000m"
          volumeMounts:
            - name: nodeslist
              mountPath: /usr/share/typesense
            - name: data
              mountPath: /usr/share/typesense/data
        - name: typesense-node-resolver
          image: alasano/typesense-node-resolver
          command:
            - "/opt/tsns"
            - "-namespace=typesense"
          volumeMounts:
          - name: nodeslist
            mountPath: /usr/share/typesense
      volumes:
        - name: nodeslist
          emptyDir: {}
  volumeClaimTemplates:
    - metadata:
        name: data
      spec:
        accessModes:
          - ReadWriteOnce
        storageClassName: nfs
        resources:
          requests:
            storage: 1Gi

您可以找到完整的清单这里

EN

回答 2

Stack Overflow用户

发布于 2022-06-15 08:30:57

也许您可以使用下面的命令尝试terminationGracePeriodSecondspreStop钩子。

代码语言:javascript
复制
command: [ "/bin/bash", "-c", "sleep 30" ]

它引入30秒的延迟后,您的集装箱收到停止从控制飞机。使用terminationGracePeriodSeconds,控制飞机不会在这段时间内强行杀死你的容器。

完整的示例应该如下所示:

代码语言:javascript
复制
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: test
  labels:
    app: test
spec:
  replicas: 1
  serviceName: "test"
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
      - image: nginx
        name: test
      lifecycle:
        preStop:
          exec:
            command: [ "/bin/bash", "-c", "sleep 60" ]
      terminationGracePeriodSeconds: 60
票数 0
EN

Stack Overflow用户

发布于 2022-06-15 08:53:11

也许用init容器

代码语言:javascript
复制
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: typesense
  namespace: typesense
  labels:
    service: typesense
    app: typesense
spec:
  serviceName: ts
  podManagementPolicy: Parallel
  replicas: 3
  selector:
    matchLabels:
      service: typesense
      app: typesense
  template:
    metadata:
      labels:
        service: typesense
        app: typesense
    spec:
      serviceAccountName: typesense-service-account
      securityContext:
        fsGroup: 2000
        runAsUser: 10000
        runAsGroup: 3000
        runAsNonRoot: true
      terminationGracePeriodSeconds: 300
      initContainers:
        - name: init-myservice
          image: busybox:1.34.1
          command: [
              "echo",
              "ip",
              "to",
              "config",
              "file",,
            ]
      containers:
        - name: typesense
          envFrom:
            # - configMapRef: 
            #     name: typesense-config
            - secretRef:
                name: typesense-secret
          image: typesense/typesense:0.23.0.rc43
          command:
            - "/opt/typesense-server"
            - "-d"
            - "/usr/share/typesense/data"
            - "--api-port"
            - "8108"
            - "--peering-port"
            - "8107"
            - "--nodes"
            - "/usr/share/typesense/nodes"
          ports:
            - containerPort: 8108
              name: http
          resources:
            requests:
              memory: 100Mi
              cpu: "100m"
            limits:
              memory: 1Gi
              cpu: "1000m"
          volumeMounts:
            - name: nodeslist
              mountPath: /usr/share/typesense
            - name: data
              mountPath: /usr/share/typesense/data
        - name: typesense-node-resolver
          image: alasano/typesense-node-resolver
          command:
            - "/opt/tsns"
            - "-namespace=typesense"
          volumeMounts:
          - name: nodeslist
            mountPath: /usr/share/typesense
      volumes:
        - name: nodeslist
          emptyDir: {}
  volumeClaimTemplates:
    - metadata:
        name: data
      spec:
        accessModes:
          - ReadWriteOnce
        storageClassName: nfs
        resources:
          requests:
            storage: 1Gi
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71590115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档