Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在不停机的情况下重新配置Kubernetes中运行的入口?_Kubernetes_Google Cloud Platform_Google Kubernetes Engine_Kubernetes Ingress - Fatal编程技术网

是否可以在不停机的情况下重新配置Kubernetes中运行的入口?

是否可以在不停机的情况下重新配置Kubernetes中运行的入口?,kubernetes,google-cloud-platform,google-kubernetes-engine,kubernetes-ingress,Kubernetes,Google Cloud Platform,Google Kubernetes Engine,Kubernetes Ingress,我们目前面临以下情况: 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\u new\u

我们目前面临以下情况:

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\u new\u one。现在的想法是编辑Ingress1,指向如下的service\u new\u one:

Ingress1_legacy (updated): service.domain.com
  / >> service_new_one
我们的经验是,一旦我们更改Ingress1_legacy的配置,调用service.domain.com将导致502。这种情况持续了足够长的时间,我们可以更好地回滚到原始配置


那么这是一个可行的策略吗?我们的假设正确吗?入口中服务路由的更改配置应允许无缝、立即迁移到其他服务?或者入口配置的更改通常会导致负载平衡的停机吗?

简短回答:当您更新入口资源时,由于谷歌云平台和Kubernetes云平台中所需的过程,会有少量停机

我不排除有办法尽量减少或取消停机时间,但如果您只是更新入口,您将体验到它


小实验 我们有以下入口:

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个服务
nginx
nxing2
httpd
httpd2
连接到4个不同的部署,每个部署在不同的节点上

运行:

并创建:

kind: Service
apiVersion: v1
metadata:
  name: httpd
spec:
  selector:
    run: httpd2
  type: LoadBalancer
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
---
kind: Service
[...]
我们连接并想象经典“它起作用了!

一旦将入口更改为点
nginx2
httpd2

  • 约1分钟继续提供旧服务
  • 约1分钟的
    /nginx
    会导致“
    错误:服务器错误
    ”和
    /index.html
    默认后端-404
  • 3分钟后,我们终于回到了稳定的状态
kind: Service
apiVersion: v1
metadata:
  name: httpd
spec:
  selector:
    run: httpd2
  type: LoadBalancer
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
---
kind: Service
[...]