【问题标题】:Access specific kubernetes pod from external从外部访问特定的 kubernetes pod
【发布时间】:2017-03-14 14:35:42
【问题描述】:

我有一个复制控制器创建 10 个我的 pod 实例。 pod 运行一个 Zeppelin 笔记本,用户可以通过网络访问该笔记本。但是,我需要能够通过网络访问特定的笔记本/pod。如果我使用 LoadBalancer 类型的服务公开 Pod,我将自动被路由到任何 Pod。

有没有办法为每个 pod 公开一个额外的 IP,或者有其他方法可以通过网络访问特定的 pod?或者是创建 10 个复制控制器和 10 个服务的唯一方法?

【问题讨论】:

  • 用例没有意义...为什么要特定访问权限?
  • 不是问题,而是:每个 pod 也有一个本地 spark-cluster,每个用户都应该有一个类似的专用 4 核环境。因此,每个用户都可以访问他的 pod 很重要。
  • 所以您正在考虑多租户?
  • 我们将在中期实施多租户 Zeppelin-Spark 集群设置,但这不是本问题所要求的。

标签: kubernetes


【解决方案1】:

要获得 1:1 IP 地址,您需要为每个站点配备一个复制控制器。复制控制器用于管理配置相同的资源。

但是,您始终可以使用host-based or path-based 路由来访问正确的服务/pod。这样您就可以为每个用户创建一个子域 + 映射。

【讨论】:

  • 嗯,资源是一样的(同一个Docker镜像),不过我也觉得没有别的办法了
  • 主赐予,主夺去!检查更新的答案,可能有你需要的东西
  • Ingress 确实是防止有多个外部想法的好主意,但是它并没有阻止为每个笔记本创建一个 rc 和一个服务的要求,它甚至添加了一个额外的组件。
  • 没错,但要完全按照您的意愿行事,您需要编写一个与 Kubernetes API 交互的服务,从模板创建 RC 并重新生成 Ingress 对象。据我所知,kubernetes 核心中没有任何东西可以为您执行此操作,尽管很可能有一个 3rd 方工具。
【解决方案2】:

我的一位同事刚刚提出的另一个选择是为每个需要的复制创建一个自己的命名空间,并将相同的复制控制器和服务部署到其中。这至少会更舒适一些,并提供更高级别的隔离。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 2018-11-16
    • 2018-05-07
    • 2019-01-10
    相关资源
    最近更新 更多