0

我已经通过使用 docker-files 直接在本地部署和创建服务 (socketcluster请参阅此链接以获取文件)。而且我还使用我提到的链接中提供的文件在同一个集群中创建了一个服务。据我了解,默认情况下,这些服务属于类型。scc-brokerscc-statekubernetesminikube.yamlingress.yamlClusterIP

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

  • 豆荚

  • 部署

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

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

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

任何线索将不胜感激。

谢谢!

PS 按照指南进行部署。

4

2 回答 2

1

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

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

于 2017-04-26T18:32:43.903 回答
1

Kubernetes 不会暴露私有容器网络之外的任何东西,除非你明确告诉它这样做。常见的方法是

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

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

于 2017-04-27T13:44:53.063 回答