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可能会在任何时候因为各种原因(如节点故障、资源不足等)被重新调度或替换。因此,设计应用程序时应该考虑到这一点,确保它们是状态无关的或能够处理状态的持久化。
相关推荐
Kookoos1 小时前
ABP vNext + Dapr 实现云原生微服务治理
微服务·云原生·架构·c#·.net
好吃的肘子7 小时前
ElasticSearch入门详解
java·大数据·elasticsearch·搜索引擎·云原生
alden_ygq8 小时前
Kubernetes生产实战(十九):镜像拉取失败排查处理
云原生·容器·kubernetes
alden_ygq8 小时前
Kubernetes排错(十四):Pod状态异常排查手册
云原生·容器·kubernetes
hie988948 小时前
k8s存储类型:emptyDir、hostPath、nfs、pvc及存储类storageclass的静态/动态创建pv
云原生·容器·kubernetes
加勒比海涛10 小时前
微服务架构实战:从服务拆分到RestTemplate远程调用
微服务·云原生·架构
alden_ygq11 小时前
Kubernetes生产实战(十四):Secret高级使用模式与安全实践指南
java·安全·kubernetes
掘金-我是哪吒13 小时前
分布式微服务系统架构第128集:elastic-search安装部署
分布式·微服务·云原生·架构·系统架构
小马爱打代码18 小时前
K8S - 蓝绿发布实战 - Argo Rollouts 零停机方案解析
云原生·容器·kubernetes