【问题标题】:Kubernetes : How to scale a deployment from another service/pod?Kubernetes:如何从另一个服务/pod 扩展部署?
【发布时间】:2021-01-04 01:36:13
【问题描述】:

我有 2 项服务。服务 A 和服务 B。它们对应于部署 dA 和 dB。

我设置了集群并启动了两个服务/部署。服务 A 可以从外部世界访问。外部世界 --> 服务 A 服务 B.

如何从响应用户请求的服务 A 中缩放 dB(更改 replicaCount 并运行 kubectl apply OR kubectl scale)。

例如,如果服务 A 服务的用户想要在我的应用程序中获得一些额外的资源,我想通过向 dB 添加一个额外的 pod 来提供。我如何以编程方式执行此操作?

【问题讨论】:

    标签: kubernetes deployment


    【解决方案1】:

    每个Pod,除非它选择退出,都会向其中注入一个ServiceAccount 令牌,这使其能够根据与ServiceAccount 关联的Role 与kubernetes API 交互

    因此,人们可以使用任意数量的 kubernetes 库——其中大多数是“集群中”感知的,这意味着它们不需要任何进一步的配置来了解注入的 ServiceAccount 令牌以及如何使用它——针对ServiceAccountRole 被授权使用的任何资源发出缩放事件

    您可以根据自己的喜好使其简单或复杂,但 tl;dr 类似于:

    curl --cacert /var/run/secrets/kubernetes.io/ca.crt \
        --header "Accept: application/json" \
        --header "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/token)" \
        https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT}/api/v1/namespaces
    

    【讨论】:

    • 谢谢。你是对的,我可以使用 ServiceAccount 来启用从 pod 到集群的特定操作。我还没有尝试过你的解决方案。但是我创建了一个具有扩展权限的新 ClusterRole,并将其附加到服务 A 的 ServiceAccount。并在 dA 的 docker 映像中安装了 kubectl。这似乎有效。
    猜你喜欢
    • 2019-04-23
    • 2019-02-03
    • 2019-11-22
    • 1970-01-01
    • 2020-02-15
    • 2020-07-27
    • 2018-07-05
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多