首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Skaffold非阻塞程序

Skaffold非阻塞程序
EN

Stack Overflow用户
提问于 2020-03-29 14:52:38
回答 1查看 245关注 0票数 0

假设我想要部署一个不包含连续运行/阻塞程序的skaffold吊舱。例如,使用入门示例并将main.go更改为:

代码语言:javascript
复制
package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello world!")
}

如果我使用上面修改过的示例运行skaffold dev,然后等待而不对代码做任何更改,则结束符将继续重新启动,循环通过statuses Completed -> CrashLoopBackOff -> Completed,每次重新启动都会在pod中运行程序。如何让pod运行一次程序,而只在更改代码时重新运行/重新启动?

这是与skaffoldv1.6.0-docs,ubuntu 18,microk8s 1.16/稳定化,设置了skaffold config set default-repo localhost:32000

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-30 23:33:21

首先,我要强调的是,Skaffold没有什么特定的东西。它与kubernetes Pod的性质有很大关系,它不是要运行到完成,而是继续运行(至少使用它的默认设置)。

通过在几个不同的变体中从Pod示例中运行,您可以很容易地验证它:

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
  - name: myapp-container
    image: busybox
    command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']

尝试将睡眠时间缩短到一些较短的值,您将看到它在CompletedCrashLoopBackOff状态之间也在不断变化。当您删除保持容器正常运行的命令时,也会发生这种情况。

如果你跑:

代码语言:javascript
复制
kubectl get pod myapp-pod -o yaml

您可能会注意到,在restartPolicy规范中定义了Pod,如果不明确地将其设置为不同的值,默认情况下将其设置为Always。这里有您的Completed Pods不断重新启动的原因。

将其设置为Never 应该会给出您想要达到的结果。

代码语言:javascript
复制
spec:
  restartPolicy: Never
  containers:
  - name: myapp-container
    image: busybox
    ...

但是,请记住,通常不会使用裸Pods在kubernetes中运行工作负载。您更愿意使用诸如Deployment这样的控制器来管理它们。只要使用Deployment来确保某些Pods的启动和运行,就可以运行一些要完成的东西--您在kubernetes中拥有的--另一个控制器,名为工作

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60915975

复制
相关文章

相似问题

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