【问题标题】:How do I un-expose (undo expose) service?如何取消公开(撤消公开)服务?
【发布时间】:2018-02-06 23:33:59
【问题描述】:

在 Kubernetes 中,可以通过运行 kubectl expose deployment 使集群中运行的服务在外部可访问。为什么部署而不是服务超出了我的理解范围。除此之外,我还希望之后能够撤消此操作。想象一个场景,我需要访问通常只能在集群内部访问的服务以进行调试,然后恢复原始状态。

除了删除部署并重新创建之外,还有什么方法可以做到这一点?


PS。实际上删除服务和部署并没有帮助。重新创建同名的服务和部署会导致服务暴露。

【问题讨论】:

  • 您需要从哪里访问?来自 pod,来自 vpc ?从外部?暴露只是创建一个映射您的部署标签的服务,您可以根据需要删除该服务并保留部署,您甚至可以拥有多个映射相同 Pod 的服务。一个用于内部测试,一个用于外部测试,完成后您可以移除外部测试。

标签: service kubernetes


【解决方案1】:

假设您有一个名为 hello-world 的部署,并按如下方式执行 kubectl 公开:

kubectl expose deployment hello-world --type=ClusterIP --name=my-service

这将创建一个名为 my-service 的服务,如您所描述的,它使您的部署可用于调试。

显示有关服务的信息:

kubectl get services my-service

调试完成后删除该服务:

kubectl delete service my-service

现在您的部署未公开。

【讨论】:

  • 值得关注的事实是,为此目的创建的服务是一个单独的实体。在一个典型的场景中,人们会想要公开一个现有的服务,并期望该服务的配置会受到操作的影响。为此创建一个新服务并不明显。顺便提一句。有没有办法创建一个已经公开的服务?如在集群外暴露于互联网?
  • 您还可以将服务与部署分开编写。如果要将部署公开到 Internet,请创建 LoadBalancer 类型的服务。这将创建一个具有外部 IP 的服务。然后访问您的程序,curl http://<external-ip>:<port>。该文档可能会帮助您:kubernetes.io/docs/tutorials/stateless-application/…
  • 我删除了服务,让 pod 保持可访问,直到我也删除了 pod
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
  • 2015-09-30
  • 2013-04-04
  • 2020-09-21
  • 2014-04-01
  • 1970-01-01
相关资源
最近更新 更多