使Kubernetes在从服务端点删除之前等待Pod终止

使Kubernetes在从服务端点删除之前等待Pod终止,kubernetes,Kubernetes,根据本发明,步骤7与步骤3同时发生。我有没有办法防止这种情况发生,并且只有在Pod正常终止(或宽限期到期)后才会发生7次 我需要它的原因是我的Pod的终止例程需要my-service-X.my-namespace.svc.cluster.local在整个过程中解析到Pod的IP,但是,只要我在Pod/部署上运行kubectl delete,相应的端点就会被删除 注意:为了有助于澄清这一点,我正在运行一组群集VerneMQ(Erlang)节点,这些节点在终止时会将其内容转储到集群上的其他节点,因此

根据本发明,步骤7与步骤3同时发生。我有没有办法防止这种情况发生,并且只有在
Pod
正常终止(或宽限期到期)后才会发生7次

我需要它的原因是我的
Pod
的终止例程需要
my-service-X.my-namespace.svc.cluster.local
在整个过程中解析到
Pod
的IP,但是,只要我在
Pod
/
部署
上运行
kubectl delete
,相应的
端点
就会被删除


注意:为了有助于澄清这一点,我正在运行一组群集VerneMQ(Erlang)节点,这些节点在终止时会将其内容转储到集群上的其他节点,因此需要在整个终止过程中正确解析节点名。只有在相应的<代码>终结点< /代码> s才能被删除。

也许你应该考虑使用而不是使用CultuSIP一。这样,您的应用程序将使用实际的端点IP进行查找,并且从端点列表中删除不会在关机期间中断可用性,但将从查找中删除(或从nginx contrib中的入口控制器后端删除)不幸的是,kubernetes的设计目的是在启动预停止挂钩的同时从端点移除Pod。告诉我们:

在kubelet开始正常关机的同时 控制平面从端点移除关闭Pod

这更清楚地表明:

  • Pod设置为“终止”状态,并从 端点所有服务的列表
  • 还有一个问题没有得到承认

    头盔用户解决方案

    但如果您使用的是helm,则可以使用(例如,预删除、预升级、预回滚)。不幸的是,这个头盔挂钩是一个额外的吊舱,无法访问所有吊舱资源

    这是挂钩的一个示例:


    我已经在使用无头服务了。然而,由于Erlang集群的工作方式,我需要保持发现。
    apiVersion: batch/v1
    kind: Job
    metadata:
      name: graceful-shutdown-hook
      annotations:
        "helm.sh/hook": pre-delete,pre-upgrade,pre-rollback
      labels:
        app.kubernetes.io/name: graceful-shutdown-hook
    spec:
      template:
        spec:
          containers:
            - name: graceful-shutdown
              image: busybox:1.28.2
              command: ['sh', '-cx', '/bin/sleep 15']
          restartPolicy: Never
      backoffLimit: 0