Kubernetes基础:重启pod的方法
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的方法相关推荐
- Kubernetes基础:问题排查方法示例:结合使用kubectl get event
这篇文章以Metrics Server部署时碰到的问题为例,介绍如何结合使用kubectl get event命令进行问题的排查. Metrics Server部署 Metrics Server是Ku ...
- Kubernetes基础:Pod的详细介绍
本文的演练环境为基于Virtualbox搭建的Kubernetes集群,具体搭建步骤可以参考kubeadm安装kubernetes V1.11.1 集群 1. 基本概念 1.1 Pod是什么 Pod是 ...
- Kubernetes基础详解
1. Kubernetes介绍 1.1 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不 ...
- Kubernetes基础入门(完整版)
简介 Kubernetes这个名字源于希腊语,意为"舵手"或"飞行员".k8s这个缩写是因为k和s之间有八个字符.Google在 2014年开源了Kuberne ...
- plsql job执行多个存储过程_在Kubernetes的一个Pod内连续依次执行Container
出于某些目的,有时需要在Kubernetes的一个Pod中,连续依次运行多个Container. 这种有明确结束预期的运行,即Kubernetes的Job. 但是,虽然一个Job可以在一个Pod内运行 ...
- Kubernetes基础学习(一)
Kubernetes基础学习 Kubernetes核心组件 Kubernetes核心组件如下: Kubernetes Master部分: etcd保存了整个集群的状态: apiserver提供了资源操 ...
- kubernetes基础命令
目录 一.名称空间 二.Pod 三. Deployment 四.Service 五.ingress 六.存储抽象 PV&PVC ConfigMap Secret 一.名称空间 资源 ...
- 【Kubernetes系列】Pod
文章目录 概述 使用 Pod 管理 pod 的工作负载资源 Pod 管理多个容器 Pod的使用 Pod 操作系统 Pod 和控制器 Pod 模板 Pod 更新与替换 资源共享和通信 Pod 中的存储 ...
- kubernetes基础介绍及kubectl常用命令
kubernetes基础介绍及kubectl常用命令 k8s的pod分类 自主式pod 控制器管理的pod 核心主键 HPA service 网络模型 同节点Pod之间的通信 不同节点上的Pod通信 ...
最新文章
- 小红帽怎样装图形化界面_linux安装图形化界面
- curl发送html邮件,使用curl命令行发送/发布xml文件
- C#全能数据库操作类及调用示例
- 2篇CIKM详解阿里妈妈搜索广告CTR模型如何低碳瘦身
- WPF学习笔记-第二周【基本笔刷】
- url散列算法原理_如何列出与网站相关的所有URL
- php oop 效率,浅谈PHP的oop
- MySQL必知必会——第十四章使用子查询
- ICCV2021 | TOOD:任务对齐的单阶段目标检测
- NET 2.0(C#)调用ffmpeg处理视频的方法
- 微服务弹性伸缩与负载均衡
- CentOS7 或 Ubuntu20.04、22.04 安装最新版 Podman-4.1.1,离线安装请移步到连接
- 中点画线法(计算机图形学)
- kotlin “${ }”是什么意思?
- HTTP服务器的实现--CGI中POST表单。
- 太阳直射点纬度计算公式_高中地理——每日讲1题(太阳直射点、太阳高度角、极昼、极夜)...
- 2023-01-03 Echarts学习笔记(二) 常见Option配置项介绍:xAxis,yAxis,series,grid,toolbox,legend,tooltip,title,color等
- 游戏模型制作流程,你知道吗?
- android ijk 播放器,[流媒体]ijkplayer 播放器,android平台使用说明
- 教会AI“读唇术”,唇语数据功不可没