首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Kubenetes服务运行bash脚本

使用Kubenetes服务运行bash脚本
EN

Stack Overflow用户
提问于 2020-06-02 22:25:39
回答 3查看 90关注 0票数 0

我不确定这个问题有多愚蠢或不合理,但我们正在尝试是否可以以任何方式做到这一点。

我有一个.bash文件。当我调用一个url的时候,我想运行它。

当我在浏览器上调用这段代码时,假设url为https://domainname.com/jobapi,这应该会调用容器上的.bash脚本。

这真的可能吗?如果可能,我想知道我是否需要将此脚本添加为部署或作业?

EN

回答 3

Stack Overflow用户

发布于 2020-06-02 23:23:29

在查看Kubernetes之前,第一步是配置web服务器来运行您的脚本。这可以是一个通用的web服务器,如nginx或Apache,您可以将您的脚本添加为CGI脚本。有很多教程可以解释如何编写CGI脚本。

根据应用程序的需求,简单的HTTP挂钩服务器可能是更好的匹配。例如,让我们来看看https://github.com/adnanh/webhook

无论哪种方式,在尝试在Kubernetes中创建pod以及潜在的服务和入口之前,请先尝试使用Docker。

在第二步中,为了能够访问您的服务(调用您的脚本的服务器),您需要创建一个pod,可能是通过一个部署,并且可能是一个服务和它的入口。

Kubernetes作业用于运行脚本(或其他程序)一次。它们对于自动化应用程序的维护任务最为有用。

票数 0
EN

Stack Overflow用户

发布于 2020-06-03 03:10:40

我会尝试做的是run the shell script from a php file。否则,您将需要某种类型的驱动程序来触发脚本。

因此,您可以将脚本作为常规可执行文件,并在收到请求时,php将通过shell执行它。

实际上你可以让它像一个API;domain.com/job1可以执行job1,domain.com/jobn可以执行jobn等等。

现在,我所描述的方式只能作为Deployment工作,因为您希望服务器始终处于启动状态并准备好接收请求。

票数 0
EN

Stack Overflow用户

发布于 2020-07-29 13:04:33

  • 创建入口服务(如果是面向外部的,则为NodePort),该服务将调用服务
  • 调用映射pod上定义的标签的服务(运行脚本).This pod可以来自部署或简单pod
  • 使此服务公开可以使用外壳脚本触发pod,或者pod也可以触发外壳脚本。

入口服务:

代码语言:javascript
复制
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: "domainame.com"
     http:
      paths:
      - path: /jobapi
        pathType: Prefix
        backend:
          serviceName: my-service
          servicePort: 8080

my-service.yaml

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: NodePort
  selector:
    app: MyApp
  ports:
     nodePort: 30007
     port: 8080
     targetPort: 8080

运行bash脚本,这可以通过定义部署或pod Pod来完成:

k run MyApp --image=nginx --labels=app=MyApp --port=8080 -- /bin/sh -c echo 'Im up'

Deployment.yaml

代码语言:javascript
复制
controllers/nginx-deployment.yaml 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: MyAppdep
spec:
  replicas: 2
  selector:
    matchLabels:
      app: MyApp
  template:
    metadata:
      labels:
        app: MyApp
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        commands: ["/bin/sh","-c","echo 'test'"]
        ports:
        - containerPort: 8080
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62154278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档