首页 > 解决方案 > 如何将我的应用程序与运行 Docker 容器的 Kubernetes 集群集成?

问题描述

这更像是一个研究问题。如果它不符合 SO 的标准,请告诉我,我会在别处询问。

我是 Kubernetes 新手,有几个基本问​​题。我在互联网上阅读了很多文档,希望有人可以帮助回答一些基本问题。

我正在尝试创建与 Kubernetes(准确地说是在 Docker 容器中运行的用户应用程序)和我的应用程序的集成,该应用程序将充当容器中某些数据的备份。

  1. 我的应用程序目前在 AWS 中运行。Kube 集群是否也需要在 AWS 中运行?或者,只要 API 可用,它就可以在任何云服务甚至本地运行吗?

  2. 我的应用程序需要知道主节点 API 服务器的 IP 才能执行 POST/GET 请求,仅此而已?

  3. 对于身份验证,我可以使用 AD(我的应用程序今天使用 AD 来做一些事情)。这也将为每个用户提供基于角色的策略。还是我必须始终使用 Kube Token Reviewer API 进行身份验证?

  4. 在 Kubernetes 中运行的应用程序会使用我提供的 API 与我的应用程序通信吗?

  5. 我的应用程序会使用 POST/GET 与 Kube Master API 服务器通信吗?我是否需要为此及以上 #4 使用 kubectl ?

谢谢你的帮助。

标签: dockerkubernetes

解决方案


  1. 您的应用程序不必与 k8s 存在于同一台服务器上。有几种方法可以连接到 k8s 集群,具体取决于您的用例。您可以使用 公开内置的 k8s API ,直接连接到 master 上的 k8s API,或者您可以通过负载均衡器或节点端口kubectl proxy公开服务。
  2. 如果您通过内置的 k8s API 直接连接到集群,您只需要知道主节点的 IP,但在大多数情况下,您应该只使用此 API 来内部管理您的集群。访问 k8s pod 的首选方式是通过负载均衡器公开它们,这允许您从单个 IP 访问任何节点上的服务。nodePortk8s 还允许您通过预先分配的端口从任何 k8s 节点(主节点除外)访问服务。
  3. TokenReview 只是 k8s auth 策略中的一种。我对 Active Directory 身份验证一无所知,但乍一看OpenID 连接令牌似乎支持它。您应该检查是否需要允许用户直接访问 k8s API。考虑改为通过 LoadBalancer 公开服务。
  4. 我不确定你的意思是什么,但如果你将 API 部署为k8s 部署,你可以通过服务公开它们的端点,以便与你的外部应用程序进行通信,但你喜欢。
  5. 同样,从外部应用程序与 k8s pod 通信的首选方式是通过作为负载均衡器公开的服务,而不是通过 k8s 主服务器上的内置 API。在服务的情况下,由底层 API 决定它想要接受哪些类型的请求。

推荐阅读