在本地部署在 minikube 上

deployment on minikube locally

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

服务部署在 vm (minikube) 上正常运行。

的 Kubernetes 仪表板上的状态设置为 运行

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

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

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

如有线索,我们将不胜感激。

谢谢!

P.S。按照 this 指南进行部署。

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

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

除非您特别指定,否则 Kubernetes 不会在私有容器网络之外公开任何内容。常见的方法是

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

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

暴露给外部网络