是在没有停机时间内在Kubernetes中运行进入的重新配置



我们当前面临以下情况:

Ingress1_legacy: service.domain.com
  / >> service_legacy
Ingress2_new: service_one.domain.com, service_two.domain.com
  /one >> service_new_one
  /two >> service_new_two

我们的计划是无缝重定向service.domain.com到service_new_one。这个想法现在是编辑intress1,以指向Service_new_one这样的想法:

Ingress1_legacy (updated): service.domain.com
  / >> service_new_one

我们所经历的是,一旦我们更改Ingress1_legacy的配置,请致电to service.domain.com结果。502。这种情况持续了足够长的时间,使我们可以更好地回到原始配置。

那么这是一个可行的策略吗?我们的假设是正确的,在入口中更改了服务路由的配置应允许无缝,即时迁移到另一个服务?或更改入口配置通常会导致负载平衡的某些停机时间?

简短答案:当您更新入口资源时,由于Google Cloud Platform和Kubernetes One中所需的过程,因此存在很小的停机时间。/p>

我不排除有最大程度地减少或取消停机时间的方法,但是如果您简单地更新入口,就会体验到它。


小实验我们有以下入口:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /index.html
        backend:
          serviceName: httpd
          servicePort: 80
      - path: /apache
        backend:
          serviceName: nginx
          servicePort: 80

和4个服务nginxnxing2httpdhttpd2键入4个不同的部署。

运行:

kubectl run nginx2 --image=nginx
kubectl run nginx2 --image=nginx
kubectl run httpd --image=httpd:2.4
kubectl run httpd2 --image=httpd:2.4

并创建:

kind: Service
apiVersion: v1
metadata:
  name: httpd
spec:
  selector:
    run: httpd2
  type: LoadBalancer
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
---
kind: Service
[...]

我们连接到http://ingress-ip/index.html,我们可视化经典的" 它可以工作!"

将入口更改为 nginx2httpd2

  • 〜1分钟继续服务旧服务
  • 〜1分钟/nginx将您带到" Error: Server Error"和/index.html" default backend - 404"
  • 3分钟后,我们回到稳定的情况

相关内容

  • 没有找到相关文章

最新更新