【发布时间】:2018-04-12 07:53:26
【问题描述】:
我们使用kubernetes来部署我们的微服务,在生产模式下我们将无法直接访问kubernetes,所以有没有什么方法可以执行操作,例如使用rest api调用删除pod或通过http请求执行任何操作。
我们需要删除一个 pod 或其副本集来强制重启该 pod。
就像我们访问远程 kubernetes 并在运行时删除特定 pod
【问题讨论】:
标签: kubernetes
我们使用kubernetes来部署我们的微服务,在生产模式下我们将无法直接访问kubernetes,所以有没有什么方法可以执行操作,例如使用rest api调用删除pod或通过http请求执行任何操作。
我们需要删除一个 pod 或其副本集来强制重启该 pod。
就像我们访问远程 kubernetes 并在运行时删除特定 pod
【问题讨论】:
标签: kubernetes
通过设置 RBAC 可以。
您需要以下内容:
然后使用给定的服务帐户令牌,您可以使用kubectl 或对 k8s apiserver 的实际 REST 调用来删除。
【讨论】:
如果您无法获得访问 kubectl 命令或生产环境 API 的权限,您应该在容器上实现一个 liveness probe。
https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/
您可以完全在微服务中的软件中完成此操作。如果您的应用程序不再“好”,则活性检查应该失败。您可以将活性检查与您可以手动创建的系统条件结合起来(数据库中的字段“restart_request”设置为1,文件存在等等)
这样,您可以手动重启容器,如果容器停止正常运行,k8s 会为您重启。
【讨论】: