Kubernetes没有提供诸如docker restart类似的命令用于重启容器那样重启pod的命令,一般会结合restartPolicy进行自动重启,这篇文章整理一下偶尔需要手动进行重启的时候所需要使用的方法。

事前准备

环境准备

本文使用Kubernetes 1.17,可参看下文进行快速环境搭建:

  • 单机版本或者集群版本环境搭建

pod准备

使用如下pod的yaml文件

[root@host131 config]# cat busybox-pod-test.yaml
apiVersion: v1
kind: Pod
metadata:name: test-pod
spec:containers:- name: busybox-containerimage: busybox:latestcommand: ["sleep", "15"]restartPolicy: Never
[root@host131 config]#

执行命令:kubectl create -f busybox-pod-volume.yaml

执行日志示例如下所示

[root@host131 ~]# kubectl get pods
No resources found in default namespace.
[root@host131 ~]# kubectl create -f busybox-pod-test.yaml
pod/test-pod created
[root@host131 ~]#

上述pod在15秒之后即会退出,而根据pod的生命周期的状态说明,会显示为completed的状态,状态示例如下所示:

[root@host131 ~]# kubectl get pods
NAME       READY   STATUS      RESTARTS   AGE
test-pod   0/1     Completed   0          57s
[root@host131 ~]#

pod重启:方式1:使用replace命令替换

可以使用replace结合force选项进行重启,前提是有之前启动时所使用的yaml文件

[root@host131 ~]# kubectl replace --force -f busybox-pod-test.yaml
pod "test-pod" deleted
pod/test-pod replaced
[root@host131 ~]# kubectl get pods
NAME       READY   STATUS              RESTARTS   AGE
test-pod   0/1     ContainerCreating   0          3s
[root@host131 ~]# kubectl get pods
NAME       READY   STATUS    RESTARTS   AGE
test-pod   1/1     Running   0          4s
[root@host131 ~]#

从结果中可以看出,此种方式实际上替换(replace)的过程是先进行删除然后再次创建的过程

pod重启:方式2:无yaml文件的replace方法

执行命令:kubectl get pod pod名称 -n 命名空间名称 -o yaml | kubectl replace --force -f -

没有yaml文件时可以使用-o yaml生成,然后再进行replace,执行示例日志如下所示:

[root@host131 ~]# kubectl get pods
NAME       READY   STATUS      RESTARTS   AGE
test-pod   0/1     Completed   0          5m15s
[root@host131 ~]# kubectl get pod test-pod -n default -o yaml | kubectl replace --force -f -
pod "test-pod" deleted
pod/test-pod replaced
[root@host131 ~]# kubectl get pods
NAME       READY   STATUS    RESTARTS   AGE
test-pod   1/1     Running   0          13s
[root@host131 ~]#

pod重启:方式3:重新创建

相当于上述replace命令的手工执行,可以根据pod生成yaml文件进行创建,先生成创建的yaml文件

[root@host131 ~]# kubectl get pods
NAME       READY   STATUS      RESTARTS   AGE
test-pod   0/1     Completed   0          3m13s
[root@host131 ~]# kubectl get pod test-pod -n default -o yaml >ttt.yml
[root@host131 ~]#

然后删除pod

[root@host131 ~]# kubectl delete pod test-pod
pod "test-pod" deleted
[root@host131 ~]# kubectl get pods
No resources found in default namespace.
[root@host131 ~]#

然后重新创建pod

[root@host131 ~]# kubectl create -f ttt.yml
pod/test-pod created
[root@host131 ~]# kubectl get pods
NAME       READY   STATUS    RESTARTS   AGE
test-pod   1/1     Running   0          6s
[root@host131 ~]#

pod重启:方式4:设定restartPolicy

前提是使用了Deployment或者直接是restartPolicy的设定不是Never,比如是Always,示例如下所示:

[root@host131 ~]# cat busybox-pod-test.yaml
apiVersion: v1
kind: Pod
metadata:name: test-pod
spec:containers:- name: busybox-containerimage: busybox:latestcommand: ["sleep", "15"]restartPolicy: Always
[root@host131 ~]#

实际使用的时候可以看出,由于此restartPolicy的作用,pod变为completed的时候会立即被重启

[root@host131 ~]# kubectl get pods
No resources found in default namespace.
[root@host131 ~]# kubectl create -f busybox-pod-test.yaml
pod/test-pod created
[root@host131 ~]# kubectl get pods
NAME       READY   STATUS    RESTARTS   AGE
test-pod   1/1     Running   0          7s
[root@host131 ~]# kubectl get pods
NAME       READY   STATUS      RESTARTS   AGE
test-pod   0/1     Completed   0          25s
[root@host131 ~]# kubectl get pods
NAME       READY   STATUS    RESTARTS   AGE
test-pod   1/1     Running   1          28s
[root@host131 ~]#

pod重启:方式5:直接删除Pod

前提:使用Deployment等方式的时候,相当于在pod之上又封了一层,所以此时直接删除pod,会有Deployment根据策略进行管控,一般直接删除即可,也可以调整replica来实现类似的效果。

Kubernetes基础:重启pod的方法相关推荐

  1. Kubernetes基础:问题排查方法示例:结合使用kubectl get event

    这篇文章以Metrics Server部署时碰到的问题为例,介绍如何结合使用kubectl get event命令进行问题的排查. Metrics Server部署 Metrics Server是Ku ...

  2. Kubernetes基础:Pod的详细介绍

    本文的演练环境为基于Virtualbox搭建的Kubernetes集群,具体搭建步骤可以参考kubeadm安装kubernetes V1.11.1 集群 1. 基本概念 1.1 Pod是什么 Pod是 ...

  3. Kubernetes基础详解

    1. Kubernetes介绍 1.1 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不 ...

  4. Kubernetes基础入门(完整版)

    简介 Kubernetes这个名字源于希腊语,意为"舵手"或"飞行员".k8s这个缩写是因为k和s之间有八个字符.Google在 2014年开源了Kuberne ...

  5. plsql job执行多个存储过程_在Kubernetes的一个Pod内连续依次执行Container

    出于某些目的,有时需要在Kubernetes的一个Pod中,连续依次运行多个Container. 这种有明确结束预期的运行,即Kubernetes的Job. 但是,虽然一个Job可以在一个Pod内运行 ...

  6. Kubernetes基础学习(一)

    Kubernetes基础学习 Kubernetes核心组件 Kubernetes核心组件如下: Kubernetes Master部分: etcd保存了整个集群的状态: apiserver提供了资源操 ...

  7. kubernetes基础命令

    目录 一.名称空间 二.Pod 三. Deployment 四.Service 五.ingress 六.存储抽象 PV&PVC ConfigMap Secret 一.名称空间       资源 ...

  8. 【Kubernetes系列】Pod

    文章目录 概述 使用 Pod 管理 pod 的工作负载资源 Pod 管理多个容器 Pod的使用 Pod 操作系统 Pod 和控制器 Pod 模板 Pod 更新与替换 资源共享和通信 Pod 中的存储 ...

  9. kubernetes基础介绍及kubectl常用命令

    kubernetes基础介绍及kubectl常用命令 k8s的pod分类 自主式pod 控制器管理的pod 核心主键 HPA service 网络模型 同节点Pod之间的通信 不同节点上的Pod通信 ...

最新文章

  1. 小红帽怎样装图形化界面_linux安装图形化界面
  2. curl发送html邮件,使用curl命令行发送/发布xml文件
  3. C#全能数据库操作类及调用示例
  4. 2篇CIKM详解阿里妈妈搜索广告CTR模型如何低碳瘦身
  5. WPF学习笔记-第二周【基本笔刷】
  6. url散列算法原理_如何列出与网站相关的所有URL
  7. php oop 效率,浅谈PHP的oop
  8. MySQL必知必会——第十四章使用子查询
  9. ICCV2021 | TOOD:任务对齐的单阶段目标检测
  10. NET 2.0(C#)调用ffmpeg处理视频的方法
  11. 微服务弹性伸缩与负载均衡
  12. CentOS7 或 Ubuntu20.04、22.04 安装最新版 Podman-4.1.1,离线安装请移步到连接
  13. 中点画线法(计算机图形学)
  14. kotlin “${ }”是什么意思?
  15. HTTP服务器的实现--CGI中POST表单。
  16. 太阳直射点纬度计算公式_高中地理——每日讲1题(太阳直射点、太阳高度角、极昼、极夜)...
  17. 2023-01-03 Echarts学习笔记(二) 常见Option配置项介绍:xAxis,yAxis,series,grid,toolbox,legend,tooltip,title,color等
  18. 游戏模型制作流程,你知道吗?
  19. android ijk 播放器,[流媒体]ijkplayer 播放器,android平台使用说明
  20. 教会AI“读唇术”,唇语数据功不可没

热门文章

  1. 批处理bat 延时启动的方法
  2. 计算机毕业设计(49)java小程序毕设作品之菜谱美食小程序系统
  3. OneNote的正确登出方式
  4. 汽车导航中,导航引擎与导航地图的关系
  5. 无需任何软件即可永久激活Window
  6. zuul灰度发布功能实现
  7. EBS R12多组织访问控制
  8. 网络变压器中心抽头电容的作用
  9. php项目宝塔搭建实战前后端Niushop开源商城系统
  10. 西工大机考《房地产法》大作业网考