猿问

goroutine 会在其 Kubernetes 容器终止后终止吗?

例如,一个容器运行主线程和一个 goroutine。主线程遇到问题并终止。请注意,对于 Golang,主线程的终止不会导致 goroutine 的自动终止。

  1. 由于主线程已经终止,容器是否会被杀死并重新创建?或者容器是否会因为 goroutine 仍在运行而继续运行?

  2. 如果在主线程终止后容器将被杀死并重新创建,这是否会导致 goroutine 也被终止?还是 goroutine 会无限期地继续运行并且现在没有简单的方法来终止它?


烙印99
浏览 101回答 1
1回答

胡说叔叔

如果主函数存在,则程序停止。什么都不会再运行了。它将释放任何使用的资源,例如文件描述符和数据库连接。在下面的程序中,我们永远不会看到完成打印。func main() {    go func() {        time.Sleep(time.Minute)        fmt.Println("done")    }()    time.Sleep(time.Second * 3)}https://play.golang.com/p/kPKZDdMcduS如果具有该主要功能的程序是容器的前台进程,则容器将作为其与容器的标准行为而关闭。如果你运行下面的例子,你可以观察到容器在睡眠结束后是如何关闭的。$ docker run --name sample busybox sleep 3 && docker ps -aCONTAINER ID   IMAGE     COMMAND     CREATED         STATUS                              PORTS     NAMESfd4319261a0d   busybox   "sleep 3"   4 seconds ago   Exited (0) Less than a second ago             sample如果正在运行程序的容器被关闭,那或多或少就像您要拔掉计算机的插头一样。您的计算机上将不再运行任何东西。不可能。我鼓励您自己创建一些测试场景并进行验证。
随时随地看视频慕课网APP

相关分类

Go
我要回答