小编Lin*_*dry的帖子

Kubernetes Nginx:如何实现零停机部署?

我试图让kubernetes nginx部署零停机时间.该过程的一部分是启动rollingUpdate,确保至少有一个pod始终在运行nginx.这非常有效.

当旧的nginx pod终止时,我遇到了错误.根据终止的kubernetes文档,kubernetes将:

  1. 从服务的端点列表中删除pod,因此在终止开始时它不会收到任何新流量
  2. 如果已定义,则调用预停止挂钩,并等待它完成
  3. 将SIGTERM发送给所有剩余的进程
  4. 在宽限期到期后,将SIGKILL发送给任何剩余的进程.

我知道该命令nginx -s quit应该通过等待所有工作程序在主服务器终止之前完成请求来优雅地终止nginx.它优雅地响应SIGQUIT命令,而SIGTERM导致暴力终止.其他论坛说它就像在部署中添加以下preStop挂钩一样简单:

lifecycle:
  preStop:
    exec:
      command: ["/usr/sbin/nginx", "-s", "quit"]
Run Code Online (Sandbox Code Playgroud)

但是,通过测试此命令,我发现nginx -s quit立即返回,而不是等待工人完成.它也不会返回主进程的PID,这是我希望D:

什么情况是,kubernetes所调用nginx -s quit,这将适当SIGQUIT发送到工人的孩子,而不是等待它们完成.相反,它会直接跳到第3步,而SIGTERM会转向那些进程,导致暴力终止,从而导致连接丢失.

问题:有没有人想出一个在滚动部署期间优雅地关闭他们的nginx控制器并且没有停机时间的好方法?一个sleep解决办法是不够好,我正在寻找的东西更稳健.

以下是完整部署yaml:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-ingress-controller
spec:
  replicas: 1
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 0
 template:
    metadata:
      labels:
        app: nginx-ingress-lb
    spec:
      terminationGracePeriodSeconds: 60
      serviceAccount: nginx
      containers:
        - name: nginx-ingress-controller
          image: gcr.io/google_containers/nginx-ingress-controller:0.9.0-beta.8
          imagePullPolicy: Always
          readinessProbe:
            httpGet:
              path: /healthz
              port: 10254
              scheme: HTTP
          livenessProbe: …
Run Code Online (Sandbox Code Playgroud)

termination nginx kubernetes

10
推荐指数
1
解决办法
1084
查看次数

UI测试不再适用于Xcode 7.3

我有一套与我们的iOS应用程序一起运行的XCUITests.他们曾经在Xcode 7.2.1上正常运行,但升级到7.3导致测试在"设置 - >等待应用程序空闲"阶段失败,并出现以下错误:

UI Testing Failure - Failed to perform AX action for monitoring the animations of <XCUIApplicationProcess: 0x7f82450288c0 [appName here] (25670)>, error: Error -25204 performing AXAction 2043

每次单独的UI测试都会出现这种失败,无论是在机器人上还是在本地运行时.

有没有其他人看过这个或有任何变通办法?

ios xcode-bots xcode7 xcode7.3

8
推荐指数
1
解决办法
631
查看次数

标签 统计

ios ×1

kubernetes ×1

nginx ×1

termination ×1

xcode-bots ×1

xcode7 ×1

xcode7.3 ×1