当前位置: 首页 > 知识库问答 >
问题:

如何回收Kubernetes中的豆荚

井洲
2023-03-14

我希望我的pod在一段时间后(例如每周或每月)从我的部署中优雅地回收。如果我知道库伯内特斯命令,我知道我可以为此添加一个cron作业。

问题是在库伯内特斯做这件事的最好方法是什么,哪个命令会让我实现这个目标?

非常感谢你在这件事上帮助我。

共有3个答案

姚伟
2023-03-14

到目前为止,我发现下面的一行命令对我来说效果很好。在成功构建之后,我正在从Jenkins那里运行它。

kubectl patch deployment {deployment_name} -p "{\"spec\":{\"template\":{\"metadata\":{\"labels\":{\"date\":\"`date +'%s'`\"}}}}}"
郎泰平
2023-03-14

您应该通过部署或StatefulSet等更高级别的控制器来管理您的Pod。如果您这样做了,并且更改了嵌入式Pod规范的任何细节,部署/StatefulSet/...将为您重新启动所有Pod。可能最简单的方法是向Pod规范添加注释,说明它上次部署的时间:

apiVersion: apps/v1
kind: Deployment
spec:
  template:
    spec:
      annotations:
        deployed-at: 20181222

可能有一个kubectl补丁来实现这一点;如果您使用的是像kubernetes helm这样的部署管理器,那么您只需将当前日期作为“值”(配置字段)传递并为您注入。

不过,如果你想更深入地思考:各种基本图像通常都有安全更新和小错误修复,如果你每个月拉一次ubuntu:18.04左右,你就会得到这些更新。如果您积极地知道您希望每月都重新启动pod,并且您已经建立了一个良好的CI/CD管道,那么可以考虑在Jenkins中设置一个计划作业或任何可以重建和重新部署一切的东西,即使底层源代码树中没有任何更改。这将导致更新图像:,这将导致所有pod被销毁并重新创建,并且您将始终合理地了解最新的安全更新。

文志学
2023-03-14

正如OP rayhan所发现的,正如kubernetes/kubernetes在13488期中所评论的那样,一个环境变量的kubectl补丁就足够了。

但是K8s 1.15将重新启动kubectl卷展。。。也就是说,PR 77423被接受并合并。

kubectl Rollout restart现在适用于守护程序集和状态集。

 类似资料:
  • 客户端版本:version.info{Major:“1”,Minor:“0”,GitVersion:“V1.0.4”,GitCommit:“65D28D5FD12345592405714C81CD03B9C41D41D9”,GitTreesteat:“Clean”} 服务器版本:version.info{Major:“1”,Minor:“2”,GitVersion:“V1.2.0”,GitComm

  • 我们有一个应用程序,其中包含 4 个 pod,并使用负载均衡器运行!我们想尝试滚动更新,但我们不确定当 Pod 出现故障时会发生什么!文档不清楚!特别是《豆荚的终止》中的这句话: Pod将从服务的endpoint列表中删除,并且不再被视为复制控制器的运行Pod集的一部分。缓慢关闭的Pod可以继续为流量提供服务,因为负载平衡器(如服务代理)将它们从轮换中删除。 因此,如果有人能在以下问题上指导我们:

  • PostgreService.yaml 已创建服务的终结点为 然后我在pod(kubectl exec-it mark-dummy-pod bash)内运行ping172.31.6.149,但不工作。(ping localhost正在工作)

  • 环境*Kubernetes 1.9.3*使用在AWS(专用网络拓扑)上运行的kops(V1.8)创建的集群*网络:weave-net*集群:1主,3节点 事件实例时间线 > 我们已经使用kops执行了滚动集群更新,以使用我们构建的新AMI(基于kops AMI k8s-1.8-debian-jessie-amd64-hvm-ebs-2017-11-27)启动节点和主机。调整kops AMI从来都不

  • 如何使用命令行列出特定实例组节点中运行的所有节点? 例如,如果我有instancegroup“foo”,它有三个节点:N1、N2和N3,它们依次有在N1上运行的pods A和B,在N2上运行的pods C、D和E,在N3上运行的pods F....我如何使用Kops/Kubectl使用输入“foo”和输出“a、B、C、D、E、f”进行查询? 我知道您可以查询一个特定的节点并列出其中的所有节点,但我

  • 我想通过API从kubernetes集群读取信息:我使用fabric8 java客户机。 我想知道服务选择了哪些豆荚,但除了名称之外,我找不到对象中的任何链接信息,名称不是唯一的。 另一个方向就足够了(service->pods)或(pod<-service)。 如果有人能帮助我使用Kubectl/YAML,我可能会自己找到一种方法来使用API。