docker - 收到 http 请求时如何在 Kubernetes 集群中执行 docker 镜像
问题描述
我有一些 docker 映像,当我收到 http 请求时,我想在 Kubernetes 集群中运行它们。
我怎么能那样做?例如,我需要创建一个烧瓶应用程序来监听请求,然后在收到请求时执行 bash 命令以从注册表部署和运行这些图像?
或者还有另一种简单的方法来实现这一点?
解决方案
如果您有一个烧瓶应用程序,您可以使用 Kubernetes python api创建 Kubernetes pod 或作业。他们有一个基于存在的 yaml 文件在此处创建部署的示例,但您也可以在代码中定义 yaml 或使用他们的 api 规范。他们的部署示例如下,但同样您可能希望使用 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()