无论如何我可以执行到容器,然后编辑一些代码(例如:添加一些日志,编辑来配置文件)并重启容器以查看发生了什么?
我尝试搜索这个,但我没有看到。
重点是我想进行快速调试,而不是进行完整的集群部署。
答案 0 :(得分:2)
如果重新启动pod,对本地容器文件系统的任何更改都将丢失您需要确定您使用的应用程序堆栈是否可以在不实际退出的情况下执行内部重启。
您使用的语言/应用程序堆栈是什么?
答案 1 :(得分:2)
某些程序(例如ie.nginx)支持配置重新加载而不重新启动它们的进程,只需kubectl exec
更改配置并向主进程发送信号(即kubectl exec <nginx_pod> kill -HUP 1
)。这是该软件的一个特点,因此很多人不会考虑这一点。
容器在设计上是不可变的,因此每次都会以干净的状态重新启动。也就是说,没有简单的方法可以实现这一目标。
我能想到的一个问题涉及修改节点上的图像,然后重新启动容器。如果您可以直接访问节点并访问docker,则可以使用修改后的文件标识容器,并在同一标记下使用docker commit
提交这些更改。此时,具有该标记的本地容器会对您的更改进行烘焙,因此如果您重新启动它(不重新计划,因为它可以在不同的节点上启动),它将提供您的更改(假设您不使用pullPolicy: always
)。
同样,不是它的意思,而是可以实现的。
答案 2 :(得分:1)
您至少应该考虑hostPath
volume,以便与您的Kubernetes实例共享主机上的本地文件,以便能够进行此类测试。
之后,由您的应用程序在您的pod中运行以检测文件更改,并在需要时重新启动(即,这根本不是Kubernetes特有的)
答案 3 :(得分:0)
你可以在configmap中放置任何配置然后只应用它,显然假设读取configmap会重新读取它。
答案 4 :(得分:0)
您可以使用以下命令登录Pod
kubectl获得豆荚。 复制吊舱名称并将其粘贴到下面。
kubectl exec -it podname-/ bin / sh或bash