Kubernetes:拼写错误检测器?

Kubernetes:拼写错误检测器?

我在 Ingress 中输入了错误。我使用了端口80,但服务正在监听8080

我花了一些时间才发现错别字。

据我所知,Kubernetes 在这种情况下不会创建错误消息。Kubernetes 仅创建所需状态。它不会检查所需状态是否有意义。没关系。

是否有一个工具可以检查连接(入口 --> 服务 --> 部署 --> pod)是否有效?

我所说的“有效”是指:是否有与选择器匹配的相关对象。

例子:

  selector:
    app: foobar

如果没有与选择器匹配的相关对象,那么我会收到警告。

示例 2:您在 Ingress 中使用ingressClassName,但此类不存在。

答案1

是否有一个工具可以检查连接(入口 --> 服务 --> 部署 --> pod)是否有效?

没有具体的可以实现这一目的的工具,但我认为以一种有用的方式实现这一目的会很困难。

创建资源时,通常可以从 API 获得两种响应:(a) 成功,或 (b) 失败,您会收到错误消息。可以实现准入控制器执行此类检查,但无法发出“警告”。因此,请考虑这样一种情况:您正在执行应用程序资源的初始部署:它们很可能被“无序”部署,例如,您在相应的服务之前创建 Ingress 对象。使用我们假设的准入控制器,这将导致 Ingress 部署失败,这不是我们想要的。

您可以编写一个工具,向其提供一组清单作为输入,然后它会在本地执行验证,但这只有在您部署的资源形成“封闭集”时才有用:如果您要添加 Ingress,但相应的服务已存在于集群中而不是本地文件中,则此想法行不通。如果您依赖于部署资源后动态添加到资源中的标签或其他元数据,它也会失败。

所以唯一真正的选择是编写某种工具来检查你的资源它们已经部署,因此 (a) 所有内容都存在于 API 中,并且 (b) 任何动态修改都已发生。这可能是可行的,但我认为执行传统的服务可用性检查会更有效 - 也就是说,如果您正在部署一个提供 Web 服务的应用程序,则有一个监控框架,如果不可用(这可能是由于标签选择器中的拼写错误、缺少资源或出于各种其他原因而发生的),它会https://example.com提醒您。https://example.com

这并不能给您提供您可能希望的相同粒度,但实现起来很简单,并且解决了“我的部署是否成功”的一般问题。

相关内容