如何解决日志抱怨“extensions/v1beta1 Ingress is deprecated”
对 Kubernetes 非常陌生。
我正在添加一个 Ingres,如下所示:
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 将起作用,您看到的这些警告只是为了通知您可用的 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 服务器
仍将遵循历史优先顺序。
如果你想阅读特定版本,你可以限定get
请求(如 kubectl get ingresses.v1.networking.k8s.io
...)或可以
传入清单文件以请求在
文件 (kubectl get -f ing.yaml -o yaml
)
长话短说:尽管使用了正确的 apiVersion
,但已弃用的 {{1}} 仍然被视为默认的,因此会产生您遇到的警告。
我最近也看到了 changes are still being made,所以我认为它仍在处理中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。