【问题标题】:Ensure services exist确保服务存在
【发布时间】:2020-05-15 23:26:01
【问题描述】:

我将在我的 K8S 集群上部署 Keycloak,并且我选择了 PostgreSQL 作为数据库。

为了调整业务需求,我们必须向 Keycloak 添加额外的功能,例如自定义主题等。这意味着,对于 Keycloak 的每一次更改,我们都将触发 CI/CD 管道。我们将 Drone 用于 CI,将 ArgoCD 用于 CD。

在管道中,在它到达 CD 部分之前,我们希望确保 PostgreSQL 已启动并运行。
问题是,它是否存在用于 K8S 的工具,我们可以验证特定服务是否已启动并运行。

【问题讨论】:

    标签: postgresql kubernetes argocd


    【解决方案1】:

    “启动并运行”!=“存在”

    1:要检查服务是否存在,只需执行kubectl get service <svc>

    2:要检查它是否有活动端点,请执行kubectl get endpoints <svc>

    3:您还可以检查 backing pods 是否处于就绪状态。

    2 & 3 需要在 pod/deployment 上正确配置就绪探针

    【讨论】:

    • 是否存在更简单的验证方法?
    【解决方案2】:

    Radek 的回答是正确的,但我想在 official docs 的帮助下扩展它。为确保服务存在且正常运行,您需要:

    • 确保 Pod 实际运行和服务:kubectl get pods -o go-template='{{range .items}}{{.status.podIP}}{{"\n"}}{{end}}'

    • 检查服务是否存在:kubectl get svc

    • 检查 Endopints 是否存在:kubectl get endopints

    • 如果需要,检查服务是否通过 DNS 名称工作:nslookup hostnames(来自同一命名空间中的 Pod)或nslookup hostnames.<namespace>(如果在不同的命名空间中)

      李>
    • 如果需要,检查服务是否通过 IP 工作:for i in $(seq 1 3); do wget -qO- <IP:port> done

    • 确保服务定义正确:kubectl get service &lt;service name&gt; -o json

    • 检查 kube-proxy 是否工作:ps auxw | grep kube-proxy

    如果上述任何一项导致问题,您可以在上面的链接中找到故障排除步骤。

    关于您在 cmets 中的问题:考虑到您需要确保一切正常,我认为没有更简单的方法。您可以跳过一些步骤,但这取决于您的用例。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2017-04-22
      • 2019-06-26
      • 2023-03-17
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      相关资源
      最近更新 更多