【问题标题】:deployment on minikube locally本地部署在 minikube 上
【发布时间】:2017-04-26 12:15:36
【问题描述】:

我已经通过 minikube 在本地通过使用 docker 文件在 kubernetes 上为 socketclusterscc-brokerscc-state 部署和创建服务(请参阅此 link 以获取 .yaml 文件)。我还使用我提到的链接中提供的.yaml 文件在同一集群中为ingress 创建了一个服务。据我了解,这些服务默认为ClusterIP 类型。

服务的部署在 vm (minikube) 上正常工作。 状态设置为在 Kubernetes 仪表板上运行

  • 豆荚

  • 部署

但我面临的问题是 scc-state、scc-broker、socketcluster 服务器没有暴露公共端点。 所以目前我无法理解如何从外部访问服务,即在虚拟机之外(在 minikube 上运行)。

图像是直接从 kubernetes yml 文件构建的,禁用了入口 TLS 安全性。

我是否错过了有关如何访问主机上的 socketcluster 的任何方面?我是否应该将服务类型指定为ClusterIP 以外的任何其他类型,因为我知道使用此类型可确保服务仅在集群中公开。但我再次怀疑,如果我使用 ingress ,它应该有助于访问 vm 之外的服务。我需要单独拥有一个ingress controller,例如 NGINX 吗?

任何线索将不胜感激。

谢谢!

附:遵循this 部署指南。

【问题讨论】:

    标签: docker deployment kubernetes minikube socketcluster


    【解决方案1】:

    Kubernetes 不会在私有容器网络之外公开任何内容,除非您明确告诉它这样做。常见的方法是

    • 使用Servicetype: LoadBalancer 获取附加到云服务的公共IP。这在 minikube 上不可用
    • 使用Servicetype: NodePort 在每个节点的公共网络上公开一个端口。这是在 minikube 上做事的推荐方式 (https://github.com/kubernetes/minikube#networking)
    • 使用hostNetwork: true 创建您的 pod,以跳过容器网络并使用主机网络(例如,与节点本身共享相同的 IP)。除非在非常特殊的情况下,否则这通常不如前两个选项有用。

    Ingress 资源与外部连接无关。如果您部署了一个入口控制器,它将使用您创建的Ingress 资源来配置自己。例如,nginx-ingress-controller (https://github.com/kubernetes/ingress/tree/master/controllers/nginx) 本质上会在 nginx 配置中为每个 Ingress 创建一个 server 块。但是,入口控制器本身仍然需要使用 Servicetype: LoadBalancertype: NodePort 暴露给外部网络。

    【讨论】:

    • 所以你的意思是..?如果我只是将我的服务作为 NodePort 类型放在 kubernetes 中,我不需要任何入口/入口控制器服务 ..??
    • 没错。如果你将你的服务设置为type: NodePort,那么底层的 pod 将暴露在 minikube 的 IP 上(例如 192.168.99.1)
    • 谢谢@coreypobrien!
    • 还有一个问题,因为我将拥有多个 Pod 副本以用于扩展目的,所以在这种情况下,我需要在 kubernetes 内部部署一个负载均衡器来执行反向代理,是吗?对吧..?
    • 除了服务之外,您仍然不需要任何东西。带有type: ClusterIP 的Kubernetes Service 将直接连接到任何可用的pod。这是来自文档的图形:kubernetes.io/images/docs/services-iptables-overview.svg
    【解决方案2】:

    如果您遵循 minikube 文档 https://github.com/kubernetes/minikube#quickstart,它会告诉您使用 type: NodePort 创建一个 Service

    然后运行kubectl get services 找到为您的服务分配的IP 号,并使用minikube ip 找到minikube VM 的IP 地址。然后将这两者放在一起,从您的笔记本电脑访问该服务。

    【讨论】:

    • 感谢您的回复,但如果我使用入口控制器将我的服务暴露给外界,我认为将服务作为 clusterIP/NodePort 不会产生影响。如果我错了,请纠正我。
    猜你喜欢
    • 2017-11-22
    • 2017-07-24
    • 2019-05-09
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    相关资源
    最近更新 更多