tnblog
首页
视频
资源
登录
愿你出走半生,归来仍是少年
排名
3
文章
317
粉丝
22
评论
14
bootstrap 栅格布局一小例子
剑轩 : 后端写样式有点痛苦哇
一点flex布局的运用
剑轩 : 后端写样式有点痛苦哇
vue.js常用指令
剑轩 : 可以可以,多总结一点
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

k8s 重启 pod

14451人阅读 2022/6/27 16:00 总访问:2063103 评论:0 收藏:1 手机
分类: k8s

pod准备

使用如下pod的yaml文件

  1. [root@host131 config]# cat busybox-pod-test.yaml
  2. apiVersion: v1
  3. kind: Pod
  4. metadata:
  5. name: test-pod
  6. spec:
  7. containers:
  8. - name: busybox-container
  9. image: busybox:latest
  10. command: ["sleep", "15"]
  11. restartPolicy: Never
  12. [root@host131 config]#


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

执行日志示例如下所示:

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

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

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

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

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

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

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

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


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

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

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

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

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

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

然后删除pod

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

然后重新创建pod

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

pod重启:方式4:设定restartPolicy

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

  1. [root@host131 ~]# cat busybox-pod-test.yaml
  2. apiVersion: v1
  3. kind: Pod
  4. metadata:
  5. name: test-pod
  6. spec:
  7. containers:
  8. - name: busybox-container
  9. image: busybox:latest
  10. command: ["sleep", "15"]
  11. restartPolicy: Always
  12. [root@host131 ~]#

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

  1. [root@host131 ~]# kubectl get pods
  2. No resources found in default namespace.
  3. [root@host131 ~]# kubectl create -f busybox-pod-test.yaml
  4. pod/test-pod created
  5. [root@host131 ~]# kubectl get pods
  6. NAME READY STATUS RESTARTS AGE
  7. test-pod 1/1 Running 0 7s
  8. [root@host131 ~]# kubectl get pods
  9. NAME READY STATUS RESTARTS AGE
  10. test-pod 0/1 Completed 0 25s
  11. [root@host131 ~]# kubectl get pods
  12. NAME READY STATUS RESTARTS AGE
  13. test-pod 1/1 Running 1 28s
  14. [root@host131 ~]#

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

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

pod重启:方式6

大于1.15版本直接用kubectl rollout restart deploy


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

k8s编写yaml文件的一些小问题

Yaml文件编写的小毛病kubenetes yaml 随在编写yaml文件中难免会出现一些磕磕碰碰的问题 建议大家去这个网站编写 yaml 文...

初探k8s

概念补充Deployment 是在 Pod 这个抽象上更为上层的一个抽象层,它可以定义一组 Pod 的副本数量,以及这个 Pod 的版本。一...

k8s 结合 Service 与 Deployment 部署容器

前言最近看到了学习k8s的网站,在文章末尾分享给大家,所以我最近的教程也会根据上面的课程来进行一些总结Service:暴露容...

k8s理论整理(持续更新)

整理一GOKubernetes 的工作节点负责运行应用程序 Pod 等工作负载;还可以运行网络或存储等扩展功能;每个节点上都运行了 ku...

k8s详解基本对象

k8s详解基本对象[TOC] 参考yaml代码如下apiVersion: apps/v1 kind: Deployment metadata: name: k8s-demo names...

.netcore 通过Flurl验证k8s内部访问与获取环境变量

.netcore验证k8s内部访问与获取环境变量[TOC] 创建k8s-name项目 项目结构如下 实验过程 st=>start: k8s-demo项...

.netcore 通过Flurl验证k8s内部访问与获取环境变量 (二)

.netcore验证k8s内部访问与获取环境变量 (二)[TOC] 修改k8s-name项目 NameController.cs [ApiController] ...

Mysql k8s部署Volume(hostPath)

Mysql K8s部署Volume[TOC] Mysql 与 Yaml 稍作修改这里提供的是官网的链接:https://kubernetes.io/docs/tasks/run-a...

k8s ConfigMap 配置中心

k8s ConfigMap 配置中心[TOC] ConfigMap 简介 ConfigMap用于保存配置数据的键值对,可以用来保存单个属性,也可以用...

k8s Deployment中Rollout与Rollback使用与滚动更新

k8s Deployment中Rollout与Rollback使用[TOC] Rollout 简介 Deployment 的 rollout 当且仅当 Deployment 的 pod temp...

kubectl proxy 让外部网络访问k8s service的ClusterIP

kubectl proxy 让外部网络访问K8S service的ClusterIP[TOC] 使用kubectl proxy命令就可以使API server监听在本地的800...

k8s 网络(笔记)

K8s 网络(笔记)[TOC] K8s 网络 Docker容器网络回顾K8s CNIFlannel 网络插件跨node的 pod to podCluster Service是什么...

Jenkins在k8s中的安装

Jenkins在k8s中的安装[TOC] k8s部署Jenkins.yaml--- apiVersion: apps/v1 kind: Deployment #设置资源的类型为Deploym...

Centos7安装k8s(基于kubeadm)

Centos7安装k8s(基于kubeadm)[TOC] 下载相关包 链接:https://pan.baidu.com/s/1H9MuZsf28f_3uyVHBUS8jQ提取码:w9tv ...

Docker和k8s的区别与介绍

2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫“dotCloud”的公司。这家公司主要提供基于PaaS的云计算技术服务。...

如何把阿里云的主机加入到腾讯云的k8s节点中,或者如何把外网的服务器用到自建的k8s节点

如何把阿里云的主机加入到腾讯云的k8s节点中 考虑使用iptables转换了下就好了