抱怨“extensions/v1beta1 Ingress 已弃用”的日志

Posted

技术标签:

【中文标题】抱怨“extensions/v1beta1 Ingress 已弃用”的日志【英文标题】:Logs complaining "extensions/v1beta1 Ingress is deprecated" 【发布时间】:2021-05-10 20:04:04 【问题描述】:

我正在添加一个 Ingress,如下所示:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cheddar
spec:
  rules:
  - host: cheddar.213.215.191.78.nip.io
    http:
      paths:
      - backend:
          service:
            name: cheddar
            port:
              number: 80
        path: /
        pathType: ImplementationSpecific

但日志抱怨:

W0205 15:14:07.482439       1 warnings.go:67] extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
time="2021-02-05T15:14:07Z" level=info msg="Updated ingress status" namespace=default ingress=cheddar
W0205 15:18:19.104225       1 warnings.go:67] networking.k8s.io/v1beta1 IngressClass is deprecated in v1.19+, unavailable in v1.22+; use networking.k8s.io/v1 IngressClassList

为什么?使用什么正确的 yaml? 我目前正在使用 microk8s 1.20

【问题讨论】:

您是否在新集群中创建或更新了入口?我曾经遇到过这个问题,当我升级集群时,我不得不删除资源并重新创建。当我再次应用它时,它看不到任何变化。 在两台服务器中,我都是从头开始,但后来我删除并重新创建了入口控制器 尽管有警告消息,你能确认 Ingress 实际上没有工作吗? 相反:Ingress 正在运行。只是我想使用正确的定义来避免日志混乱。 供参考:kubernetes.io/docs/reference/using-api/deprecation-guide/… 【参考方案1】:

我分析了你的问题,得出以下结论:

    Ingress 将起作用,您看到的这些警告只是为了告知您可用的 api 版本控制。您不必担心这一点。我也看到了同样的警告:

@microk8s:~$ kubectl describe ing
Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
    至于“为什么”即使您使用apiVersion: networking.k8s.io/v1 也会发生这种情况,我找到了following explanation:

这是按预期工作的。当你创建一个入口对象时,它可以 通过任何版本读取(服务器处理转换为 要求的版本)。 kubectl get ingress 是一个模棱两可的请求, 因为它没有指明要读取哪个版本。

当请求不明确时,kubectl 会搜索发现文档 服务器返回以查找包含的第一个组/版本 指定的资源。

出于兼容性原因,extensions/v1beta1 在历史上一直是 优于所有其他 api 版本。现在入口是唯一的 保留在该组中的资源,已弃用并具有 GA 替换,1.20 将优先删除它,以便 kubectl get ingress 将从 networking.k8s.io/v1 读取,但 1.19 服务器 仍将遵循历史优先级。

如果你想阅读特定版本,你可以限定获取 请求(如kubectl get ingresses.v1.networking.k8s.io ...)或可以 传入清单文件以请求与 文件 (kubectl get -f ing.yaml -o yaml)

长话短说:尽管使用了正确的apiVersion,但已弃用的仍被视为默认值,因此会产生您遇到的警告。

我最近也看到了changes are still being made,所以我认为它仍在处理中。

【讨论】:

对不起,我之前没有注意到你的回答。我接受了,因为它实际上解释了这些问题。唯一剩下的疑问是我已经在使用 1.20... 我已经创建了入口服务,入口 pod 处于运行状态。由于某种原因,我看不到负载均衡器。它只是没有被创建。

以上是关于抱怨“extensions/v1beta1 Ingress 已弃用”的日志的主要内容,如果未能解决你的问题,请参考以下文章

不抱怨21天实践手册~2017-12-8

Django测试抱怨缺少表问题,怎么解决

14. 不抱怨的世界--人际关系篇,2017-12-18

MyPy 抱怨 Qt.AlignmentFlag

Perl 不会抱怨缺少分号

为啥 Eclipse 在接口方法上抱怨 @Override?