当前位置: 首页 > 知识库问答 >
问题:

如何将ALB入口与api网络一起使用。k8s。EKS中的io/v1

白嘉志
2023-03-14

以前我使用扩展/v1beta1api在Amazon EKS上创建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地址。

入口配置--

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"

结果---

使用本文档创建ALB入口控制器。

有人能帮我吗?

共有1个答案

公良奇
2023-03-14

即使您使用最新的入口,您的入口也应该可以正常工作。您看到的警告表明新版本的API可用。您不必担心它。

以下是发生此警告的原因,即使您使用apiVersion:networking.k8s.io/v1

这正按预期工作。创建入口对象时,可以通过任何版本读取它(服务器处理转换为请求的版本)kubectl get ingress(代码>获取入口)是一个不明确的请求,因为它没有指示需要读取的版本。

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

出于兼容性原因,与所有其他api版本相比,扩展v1beta1历来是首选。既然ingress是该组中仅存的资源,并且已被弃用并有GA替代,1.20将降低其优先级,以便kubectl get ingress将从网络中读取。k8s。io/v1,但1.19服务器仍将遵循历史优先级。

如果要读取特定版本,可以限定get请求(如kubectl get ingreses.v1.networking.k8s.io…)或者可以传入清单文件以请求文件中指定的相同版本(kubectl get-f ing.yaml-o yaml)

您还可以看到类似的问题。

 类似资料:
  • 我试图理解API网关和AWS ALB(入口控制器)在EKS集群中的使用。 假设AWS EKS集群中有10个微服务运行在10个豆荚上。EKS集群位于私有VPC中。我可以创建Kubernetes入口,它将创建一个ALB并提供基于规则的路由。ALB将在公共VPC中,我相信,AWS将为ALB分配一个公共ip。我可以将Route53后面的ALB配置为使用域名进行访问。我的理解是,ALB支持多种功能,包括基于

  • 这起作用了 这不是

  • 我们使用Kong api网关作为所有api的单一网关。我们面临着一些api(1500-2000毫秒)的延迟问题。后来当我们检查时,延迟是由于“速率限制”插件而产生的。当我们禁用插件时,延迟会提高,响应与我们直接从IP获得的响应相同(约300毫秒)。我试图设置redis节点来缓存数据库查询,我不确定我们如何配置Kong从redis本身读取。我们正在为Kong使用postgreql。

  • 我创建了一个EKS集群,并部署了一个带有应用程序负载平衡器的NGINX入口控制器。我部署了一个示例应用程序,并将其绑定到我的域名。这是入口文件- 当我打开测试时。美国广播公司。在我的浏览器中,它返回一个404 but测试。美国广播公司。xyz工作正常。我错过什么了吗?我想要测试。美国广播公司。xyz/游戏工作和测试。美国广播公司。xyz返回404。 更新-我按照本教程部署应用程序-https://

  • 我一直在尝试遵循这个网站和其他网站上的食谱,了解如何将log4j2 FileAppender实例添加到使用SLF4J API进行整体日志记录的类中,但我运气不佳。有人能告诉我下面的代码哪里出错了吗? assertTrue语句通过,因此文件由FileAppender创建,但assertEquals失败,因为日志线的长度为零(即日志文件没有内容)。 有什么想法吗?

  • 我想使用的与chrome API,但我遇到了一个问题... 我尝试了以下操作,但chrome API无法将识别为函数,因此我尝试先将保存为变量。。。 但是当我尝试以下操作时,仍然是一个空字符串。我不明白为什么,因为被设置为。我怎样才能解决这个问题? 编辑 我把剧本叫做... 在剧本里我有以下内容... 其中函数只返回一个字符串。它是由我的捕获的,我通过打印到if语句内的控制台来验证它。 我注意到是