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可能会在任何时候因为各种原因(如节点故障、资源不足等)被重新调度或替换。因此,设计应用程序时应该考虑到这一点,确保它们是状态无关的或能够处理状态的持久化。
相关推荐
丈剑走天涯12 小时前
k8s etcd服务安装维护
云原生·etcd·devops·1024程序员节
青0721松13 小时前
千云低代码平台ETMS-k8s实施部署
低代码·云原生·容器
睡不醒的猪儿15 小时前
k8s部署自动化工具jenkins
云原生·kubernetes·自动化·jenkins
KevinPedri17 小时前
测试:uk8s创建监控和告警同步飞书等渠道
docker·kubernetes·云计算·1024程序员节
秋千码途17 小时前
在K8S中部署MySQL主从
mysql·云原生·容器·kubernetes
回忆是昨天里的海19 小时前
k8s部署容器化应用-tomcat
云原生·容器·kubernetes·1024程序员节
helloworddm1 天前
Orleans + Kubernetes + Istio 服务网格集成深度解析
容器·kubernetes·istio
小彭律师1 天前
Docker/K8s部署MySQL的创新实践与优化技巧大纲
mysql·docker·kubernetes
旦沐已成舟1 天前
K8S搭建轻量级日志收集系统(EFK)
elk·kubernetes