Kubernetes 如何将ALB入口与EKS中的api networking.k8s.io/v1一起使用
以前我使用Kubernetes 如何将ALB入口与EKS中的api networking.k8s.io/v1一起使用,kubernetes,kubectl,kubernetes-ingress,amazon-elb,amazon-eks,Kubernetes,Kubectl,Kubernetes Ingress,Amazon Elb,Amazon Eks,以前我使用extensions/v1beta1api在AmazonEKS上创建ALB。将EKS升级到v1.19后,我开始收到警告: Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress 因此,我开始相应地更新入口配置,并部署了ALB,但ALB没有在AWS中启动,也没有获得ALB地址 入口配置--> 节点端口配置-->
extensions/v1beta1
api在AmazonEKS上创建ALB。将EKS升级到v1.19
后,我开始收到警告:
Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
因此,我开始相应地更新入口配置,并部署了ALB,但ALB没有在AWS中启动,也没有获得ALB地址
入口配置-->
节点端口配置-->
结果--->
用于创建ALB入口控制器
有人能帮我吗?即使您使用最新的入口,您的入口也应该可以正常工作。您看到的警告表明API的新版本可用。你不必担心 下面是出现此警告的原因,即使您使用的是
apiVersion:networking.k8s.io/v1
:
这是预期的工作。创建入口对象时,可以通过任何版本读取它(服务器处理转换为请求的版本)kubectl get ingress
是一个模棱两可的请求,因为它没有指明需要读取的版本
当发出不明确的请求时,kubectl搜索服务器返回的发现文档,以查找包含指定资源的第一个组/版本
出于兼容性原因,extensions/v1beta1
历来是所有其他api版本的首选。既然ingress是该组中唯一剩余的资源,并且已弃用并有GA替换,1.20将降低其优先级,以便kubectl get ingress
将从networking.k8s.io/v1
读取,但1.19服务器仍将遵循历史优先级
如果要读取特定版本,可以限定get请求(如kubectl get-ingreses.v1.networking.k8s.io
…),或者传入清单文件以请求文件中指定的相同版本(kubectl get-f ing.yaml-o yaml
)
您还可以看到。我也有同样的问题。这只是一个警告,所以我的所有资源都可以在AWS EKS上使用Kubernetes 1.19的extensions/v1beta1按预期运行,但我想知道当我们使用1.22时,为避免出现问题,推荐的升级方法是什么。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: "pub-dev-alb"
namespace: "dev-env"
annotations:
kubernetes.io/ingress.class: "alb"
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
spec:
rules:
- host: "dev.test.net"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: "dev-test-tg"
port:
number: 80
apiVersion: v1
kind: Service
metadata:
name: "dev-test-tg"
namespace: "dev-env"
spec:
ports:
- port: 80
targetPort: 3001
protocol: TCP
type: NodePort
selector:
app: "dev-test-server"