当前位置: 首页 > news >正文

k8s实践总结

一、pod常用操作:

1、如何重启pod?

1.1 删除并重新创建Pod

这是最直接的方法。你可以通过kubectl命令行工具删除Pod,然后Kubernetes将基于其对应的Deployment、ReplicaSet或其他控制器自动重新创建它。

不建议并行删除全部pod,建议一个一个串行删除,至少保留一个pod可用,常用于删除一个pod(多pod情况下)。

kubectl delete pod <pod-name>

确保你知道Pod所属的Deployment或其他控制器,因为这将触发控制器重新创建Pod。如果你只删除了Pod而没有对应的控制器来重新创建它,那么Pod将不会自动恢复。

1.2 使用kubectl rollout restart

对于由Deployment管理的Pod,你可以使用kubectl rollout restart命令来重启所有的Pod实例。

kubectl rollout restart deployment/<deployment-name>

这个命令会触发Deployment的滚动更新,即使Deployment的配置没有改变也会如此。

1.3 缩放Deployment然后恢复

将Deployment的副本数(replicas)缩放到0,然后再恢复到原始值,也可以达到重启Pod的效果。

此方法存在风险,不建议使用。其流程是先将副本调成 0,然后再改回目的副本数,会中断服务。

kubectl scale deployment/<deployment-name> --replicas=0  kubectl scale deployment/<deployment-name> --replicas=<original-replica-count>

1.4 kubectl rollout restart

这个命令是比较推荐的,通过

kubectl rollout restart deployment  -n kubectl rollout restart deployment <deployment_name> -n <namespace>

便可以重建这个deployment下的 pod,和滚动升级类似,并不会一次性杀死Pod,比较平滑。

1.5 kubectl replace

通过更新Pod ,从触发k8s pod 的更新。

kubectl get pod <pod_name> -n <namespace> -o yaml | kubectl replace --force -f -

1.6 kubectl set env

通过 设置环境变量,其实也是更新pod spec 从而触发滚动升级。

kubectl set env deployment <deployment name> -n <namespace> DEPLOY_DATE="$(date)"

 只不过这里通过kubectl 命令行,当我们通过API 更新pod spec 后一样会触发滚动升级

注意事项

  • 在执行上述操作之前,请确保你已经备份了任何重要的数据或配置,以防止数据丢失。
  • 了解你的Pod是如何被管理的(比如通过Deployment、StatefulSet、DaemonSet等),以便选择最合适的方法。
  • 在生产环境中,避免直接删除Pod,因为这可能会导致服务中断。通常,使用滚动更新或修改配置来触发更新是更安全的做法。
  • 考虑到Kubernetes的调度和容错机制,Pod可能会在任何时候因为各种原因(如节点故障、资源不足等)被重新调度或替换。因此,设计应用程序时应该考虑到这一点,确保它们是状态无关的或能够处理状态的持久化。
     
http://www.lryc.cn/news/339482.html

相关文章:

  • 前端从零到一搭建脚手架并发布到npm
  • 使用 git 提交项目到 github
  • SRE 与传统 IT 运营有何不同?
  • html公众号页面实现点击按钮跳转到导航
  • 【算法】快速排序的基本思想、优化 | 挖坑填补法和区间分割法
  • OSPF动态路由实验(华为)
  • EasyRecovery2024专业免费的电脑数据恢复软件
  • Vue集成PageOffice实现在线编辑word、excel(前端配置)
  • IBM SPSS Statistics for Mac:数据分析的卓越工具
  • python爬虫------- Selenium下篇(二十三天)
  • 获取字符串的全排列(去除字符串中2个字符相同时造成的重复)
  • HTML5新增的多媒体标签
  • 温湿度传感器(DHT11)以及光照强度传感器(BH1750)的使用
  • ActiveMQ 04 Linux下安装
  • .pyc 文件是什么?是否有必要同步到 GitHub 远程仓库?
  • Zookeeper的集群搭建和ZAB协议详解
  • STM32 MPU配置参数
  • Kafka概述
  • OpenHarmony编译构建系统
  • Qt5 编译oracle数据库驱动
  • UE5学习日记——实现自定义输入及监听输入,组合出不同的按键输入~
  • 为什么把script标签放在div下面?
  • Git 自定义命令
  • SpringBoot多数据源配置及使用
  • 12-项目部署_持续集成
  • 文献阅读:LESS: Selecting Influential Data for Targeted Instruction Tuning
  • 应对中年危机-高效学习
  • Java二叉树(2)
  • 关于AG32 MCU的一些奇思妙想
  • 除了sql外还有那些查询语言