k8s--重启策略

简介: k8s--重启策略

介绍


一旦容器探测出现了问题,k8s 就会对容器所在的 pod 进行重启,其实这是由 pod 的重启策略决定的,pod 的重启策略有三种,分别如下

  • Always:容器失效时,自动重启该容器,这也是默认值
  • OnFailure:容器终止运行且退出码不为 0 时重启
  • Never:不论状态为何,都不重启该容器

重启策略适应于 pod 对象中的所有容器,首次需要重启的容器,将在其需要时立即进行重启,随后需要重启的操作将由 kubelet 延迟一段时间后进行,且反复的重启操作的延迟时长依次为 10s、20s、40s、80s、160s、300s。300s 是最大延迟时长


Always


创建 pod-restartpolicy.yaml,内容如下:

apiVersion: v1
kind: Pod
metadata:
  name: pod-restartpolicy
  namespace: zouzou
spec:
  containers:
  - name: nginx
    image: nginx:1.14
    ports:
    - name: nginx-port
      containerPort: 80
    livenessProbe: # 探针,没有 /hello 的路径
      httpGet:
        scheme: HTTP
        port: 80
        path: /hello
  restartPolicy: Always # 设置重启策略,默认就为 Always

启动 pod

kubectl apply -f pod-restartpolicy.yaml

查看 pod

# 发现 pod 在重启,RESTARTS
[root@dce-10-6-215-215 tmp]# kubectl get pod pod-restartpolicy -n zouzou
NAME                READY   STATUS    RESTARTS   AGE
pod-restartpolicy   1/1     Running   2          77s


Never


上面设置了 restartPolicy: Always ,这也是默认策略,发现容器启动不了就一直在重启,我们将 restartPolicy 改为 Never,看下效果

先删除上面创建的 pod

# 删除 pod
kubectl delete pod pod-restartpolicy -n zouzou

修改 pod-restartpolicy.yaml,内容如下

apiVersion: v1
kind: Pod
metadata:
  name: pod-restartpolicy
  namespace: zouzou
spec:
  containers:
  - name: nginx
    image: nginx:1.14
    ports:
    - name: nginx-port
      containerPort: 80
    livenessProbe: # 探针,没有 /hello 的路径
      httpGet:
        scheme: HTTP
        port: 80
        path: /hello
  restartPolicy: Never # 设置重启策略,改为 Never

启动 pod

# 启动 pod
kubectl apply -f pod-restartpolicy.yaml

查看 pod 和 event

# 查看 pod,发现容器没有运行,也没有 RESTARTS
[root@dce-10-6-215-215 tmp]# kubectl get pod pod-restartpolicy -n zouzou
NAME                READY   STATUS      RESTARTS   AGE
pod-restartpolicy   0/1     Completed   0          84s
# 查看 event,发现容器存活性探测失败了,停止了容器,这是因为设置的 restartPolicy: Never
[root@dce-10-6-215-215 tmp]# kubectl describe pod pod-restartpolicy -n zouzou
Name:         pod-restartpolicy
Namespace:    zouzou
Priority:     0
Node:         dce-10-6-215-200/10.6.215.200
Start Time:   Fri, 15 Apr 2022 20:15:43 +0800
......
Events:
  Type     Reason     Age                From               Message
  ----     ------     ----               ----               -------
  Normal   Scheduled  104s               default-scheduler  Successfully assigned zouzou/pod-restartpolicy to dce-10-6-215-200
  Normal   Pulled     101s               kubelet            Container image "nginx:1.14" already present on machine
  Normal   Created    101s               kubelet            Created container nginx
  Normal   Started    100s               kubelet            Started container nginx
  Warning  Unhealthy  77s (x3 over 97s)  kubelet            Liveness probe failed: HTTP probe failed with statuscode: 404
  Normal   Killing    77s                kubelet            Stopping container nginx

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
20天前
|
Kubernetes 监控 Java
如何设置 Kubernetes的垃圾回收策略为定期
如何设置 Kubernetes的垃圾回收策略为定期
|
20天前
|
Kubernetes Java 调度
Kubernetes中的Pod垃圾回收策略是什么
Kubernetes中的Pod垃圾回收策略是什么
|
2月前
|
Kubernetes 应用服务中间件 nginx
k8s学习--kubernetes服务自动伸缩之水平收缩(pod副本收缩)VPA策略应用案例
k8s学习--kubernetes服务自动伸缩之水平收缩(pod副本收缩)VPA策略应用案例
|
3月前
|
Kubernetes 安全 API
Kubernetes系统安全-授权策略(authorization policy)
文章主要介绍了Kubernetes系统中的授权策略,包括授权模块的概述、RBAC授权模块的详细说明以及如何创建和管理角色(Role)和集群角色(ClusterRole)。
62 0
Kubernetes系统安全-授权策略(authorization policy)
|
4月前
|
Kubernetes 持续交付 容器
在K8S中,镜像的拉取策略有哪些?
在K8S中,镜像的拉取策略有哪些?
|
4月前
|
存储 Kubernetes 调度
在K8S中,影响Pod调度策略的有哪些?
在K8S中,影响Pod调度策略的有哪些?
|
4月前
|
Kubernetes Cloud Native 应用服务中间件
Kubernetes 自动伸缩策略:优化资源利用率
【8月更文第29天】在现代云原生环境中,应用的流量往往具有不可预测性。为了应对这种变化,Kubernetes 提供了多种自动伸缩机制来动态调整应用实例的数量和每个实例分配的资源。本文将深入探讨两种主要的自动伸缩工具:水平 Pod 自动伸缩器 (HPA) 和垂直 Pod 伸缩器 (VPA),并提供实际的应用示例。
117 0
|
4月前
|
Kubernetes 容器 Perl
在K8S中,镜像的更新策略是什么?
在K8S中,镜像的更新策略是什么?
|
4月前
|
Kubernetes Perl 容器
在K8S中,Pod的重启策略是什么?
在K8S中,Pod的重启策略是什么?
|
4月前
|
Prometheus Kubernetes 监控
在K8S中,如何排查与解决Pod频繁重启的问题?
在K8S中,如何排查与解决Pod频繁重启的问题?