收到 http 请求时如何在 Kubernetes 集群中执行 docker 镜像

Posted

技术标签:

【中文标题】收到 http 请求时如何在 Kubernetes 集群中执行 docker 镜像【英文标题】:How to execute docker images inside a Kubernetes cluster when receive a http request 【发布时间】:2020-10-14 19:46:55 【问题描述】:

我有一些 docker 镜像,我想在收到 http 请求时在 Kubernetes 集群中运行它们。

我怎么能做到这一点?例如,我需要创建一个烧瓶应用程序来监听请求,然后在收到请求时执行 bash 命令以从注册表部署和运行这些图像?

或者还有其他简单的方法可以实现这一点?

【问题讨论】:

【参考方案1】:

如果您有烧瓶应用程序,则可以使用 Kubernetes python api 创建 Kubernetes pod 或作业。他们有一个基于yaml file that exists 创建部署here 的示例,但您也可以在代码中定义yaml 或使用their api spec。下面是他们的部署示例,但您可能希望再次使用 Pod 或作业。

from os import path
import yaml
from kubernetes import client, config

def main():
    # Configs can be set in Configuration class directly or using helper
    # utility. If no argument provided, the config will be loaded from
    # default location.
    config.load_kube_config()

    with open(path.join(path.dirname(__file__), "nginx-deployment.yaml")) as f:
        dep = yaml.safe_load(f)
        k8s_apps_v1 = client.AppsV1Api()
        resp = k8s_apps_v1.create_namespaced_deployment(
            body=dep, namespace="default")
        print("Deployment created. status='%s'" % resp.metadata.name)


if __name__ == '__main__':
    main()

【讨论】:

以上是关于收到 http 请求时如何在 Kubernetes 集群中执行 docker 镜像的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Kubernetes 中路由 Angular?

无法从 Kubernetes 集群上的 Angular pod 向服务发出 GET 请求

如何在对 Kubernetes 服务的请求上使用 Session Affinity?

负载分配在 Kubernetes 中不起作用,请求将发送到单个 pod

当我使用 HTTP 协议尝试请求时,为啥会收到错误的请求响应?

如何在使用 CloudFront 函数重定向请求时包含 HTTP 请求正文?