首页 > 解决方案 > Kubernetes 入口配置未在 GKE 集群上更新?

问题描述

我想更新入口配置,这将应用于在 gcloud 上的 kuberntes 集群上运行的入口实例。

为此,我执行了两个步骤:

  1. 首先,人们要求设置两个注释ingress.yml然后重新创建入口将解决这个问题
kubernetes.io/ingress.class: "gce"
nginx.ingress.kubernetes.io/proxy-body-size: 20m

从集群中删除入口并再次创建入口后也宣布我不走运。

入口.yml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: "gce"
    nginx.ingress.kubernetes.io/proxy-body-size: 20m
    nginx.org/client-max-body-size: "20m"
  1. 其次,在 gcloul 集群上配置 ConfigMap 文件,这样我们的 ingress 配置会更新,但是会出现上面提到的否定结果

nginx-config.yml

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-config
  namespace: default
data:
  proxy-body-size: "20m"

那么如何更新我的入口属性,例如 annotation nginx.ingress.kubernetes.io/proxy-body-size,以便我可以上传超过 1 MB 的数据(我的集群部署在 GKE 上)?

任何帮助,将不胜感激。谢谢

标签: nginxkubernetesgoogle-kubernetes-enginekubernetes-ingress

解决方案


您误解了Ingress资源中的注释部分。让我详细说明一下。

问题是您尝试使用GCE 控制器并专门为NGINX Ingress 控制器应用注释。您不能将 NGINX Ingress 控制器注释与 GCE 控制器一起使用。

为了使您的配置正常工作,您需要部署 NGINX Ingress 控制器。

您可以按照官方文档进行部署。

部署 NGINX Ingress 控制器后,Ingress定义部分应如下所示:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/proxy-body-size: "20m"

具体看下面的部分:

    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/proxy-body-size: "20m"

为 NGINX Ingress 控制器应用注解时请参考官方文档。


推荐阅读