K8s基础之-Pod

news2024/10/5 15:24:56

第一章:什么是Pod

  • 1.1 创建一个Pod
  • 1.2 更改Pod的启动命令和参数
  • 1.3 Pod状态及pod故障排查命令
  • 1.4 Pod镜像拉取策略
  • 1.5 Pod重启策略

第二章:Pod探针

  • 2.1 Pod的三种探针
  • 2.2 Pod探针的实现方式
    • 2.2.1 数据库建表语句
    • 2.2.2 数据库解析
    • 2.2.3 修改Hive数据库默认存储路径的两种方式

第一章:什么是Pod

  • Pod可以简单的理解为是一组、一个或多个容器构成,每个Pod还包含一个Pause容器。Pause容器是Pod容器的父进程,它主要负责僵尸进程的回收管理,同时通过Pause容器可以使得一个Pod里面的不同容器共享存储、网络、PID、IPC等,容器之间可以使用localhost:port的方式相互访问,可以使用volume等实现数据共享。根据docker的构造,Pod可被建模为一组具有共享命名空间、卷、IP地址和PORT端口的容器。
    在这里插入图片描述

1.1 创建一个Pod

1、使用这个命令把nginx:1.15.2版本的yaml文件拉取到本地
kubectl run nginx --image=nginx:1.15.2 -oyaml --dry-run > pod.yaml

2、下面是pod.yaml文件的内容
candidate@master01:~/practise$ cat pod.yaml
apiVersion: v1  #apiVersion版本
kind: Pod       #资源的数据类型,deployment ststefulset service
metadata:       #元数据信息
  creationTimestamp: null
  labels:       #标签
    run: nginx  #key=value
  name: nginx   #pod名称
spec:           #定义pod
  containers:   #配置容器的地方
  - image: nginx:1.21.6        #指定容器的镜像
    name: nginx                 #指定容器的名称
    resources: {}
    command: ["sleep","5"]
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

3、创建一个pod
candidate@master01:~/practise$ kubectl create -f pod.yaml
pod/nginx created

4、查看此pod的状态,可以看到status是running,restarts表示的是重启的次数,age表示运行的时间
candidate@master01:~/practise$ kubectl get pod
NAME                            READY   STATUS    RESTARTS      AGE
11-factor-app                   1/1     Running   9 (21m ago)   127d
foo                             1/1     Running   9 (20m ago)   127d
front-end-55455ccf94-pjl2m      1/1     Running   9 (20m ago)   127d
nginx                           1/1     Running   0             66s
presentation-5f64bd874c-68z8p   1/1     Running   9 (20m ago)   127d

5、pod是不能被修改的,只能被删除,两种方式:
kubectl delete -f pod.yaml
kubectl delete pod  nginx

1.2 更改pod的启动命令和参数

  • candidate@master01:~/practise$ kubectl explain pod.spec.containers
apiVersion: v1  #apiVersion版本
kind: Pod       #资源的数据类型,deployment ststefulset service
metadata:       #元数据信息
  creationTimestamp: null
  labels:       #标签
    run: nginx  #key=value
  name: nginx   #pod名称
spec:           #定义pod
  containers:   #配置容器的地方
  - image: nginx:1.21.6        #指定容器的镜像
    name: nginx                 #指定容器的名称
    resources: {}
    command: ["sleep","5"]
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

1.3 pod状态及pod故障排查命令

状态说明
Pending(挂起)Pod 已被 Kubernetes 系统接收,但仍有一个或多个容器未被创建,可以通过kubectl describe 查看处于 Pending Pending(挂起) 状态的原因
Running(运行中)Pod已经被绑定到一个节点上,并且所有的容器都已经被创建,而且至少有一个是运行的状态,或者是正在启动或者重启,使用kubectl logs -f
Succeeded(成功)所有容器执行成功并终止,并且不会再次重启
Failed(成功)所有容器都已终止,并且至少有一个容器以失败的方式终止,也就是说这个容器要么以非零状态退出,要么被系统终止,可以通过 logs 和 describe 查看 Pod 日志和状态
Unknown(成功)通常是由于通信问题造成的无法获得 Pod 的状态
  • Pod处于running状态就一定是可用的么?
  • 答:status需要是running,并且ready 前后都需要是1才行
    在这里插入图片描述

1.4 pod状态及pod故障排查命令

  • 通过 spec.containers[].imagePullPolicy 参数可以指定镜像的拉取策略,目前支持的策略如下:
操作方式说明
Always总是拉取,当镜像 tag 为 latest 时,且 imagePullPolicy 未配置,默认为 Always
Nerver不管是否存在都不会拉取
IfNotPresent镜像不存在时拉取镜像,如果 tag 为非 latest,且 imagePullPolicy 未配置,默认为 IfNotPresent
1、进行测试修改,修改nginx的版本号(当前系统中并不存在),然后kubect delete -f pod.yaml或者kubectl delete pod nginx,再进行启动:kubectl create -f pod.yaml,

2、使用kubectl get pod nginx -o yaml可以看出nginx这个pod对应的yaml文件
spec:
  containers:
  - image: nginx:1.21.7
    imagePullPolicy: IfNotPresent
    name: nginx
    resources: {}
    terminationMessagePath: /dev/termination-log

1.5 pod重启策略

  • 可以使用 spec.restartPolicy 指定容器的重启策略
操作方式说明
Always默认策略,容器失效时,自动重启该容器
OnFailure容器以不为0的状态码终止,自动重启该容器
Never无论何种状态,都不会重启

restartPolicy是pod级别的,不是container级别的:
如上图中,container级别下command参数启动5秒后就结束,查看pod的状态,发现启动一次以后不管是成功还是失败后都不会再次进行启动

spec:           #定义pod
  containers:   #配置容器的地方
  - image: nginx:1.21.7        #指定容器的镜像
    name: nginx                 #指定容器的名称
    resources: {}
    command: {"sleep","10"}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

修改restartPolicy参数为Always之后,再次启动查看状态
能够发现他这个状态是completed然后又变成running说明他是会不停的进行重启的

第二章:Pod探针

2.1、 Pod的三种探针

种类说明
startupProbeKubernetes1.16 新加的探测方式,用于判断容器内的应用程序是否已经启动。如果配置了 startupProbe,就会先禁用其他探测,直到它成功为止。如果探测失败,Kubelet会杀死容器,之后根据重启策略进行理,如果探测成功,或没有配置 startupProbe,则状态为成功,之后就不再探测。
livenessProbe用于探测容器是否在运行,如果探测失败,kubelet 会“杀死”容器并根据重启策略进行相应的处理。如果未指定该探针,将默认为 Success
readinessProbe一般用于探测容器内的程序是否健康,即判断容器是否为就绪(Ready)状态。如果是,则可以处理请求,反之 Endpoints Controller 将从所有的 Service 的 Endpoints中删除此容器所在 Pod 的 IP 地址。如果未指定,将默认为 Success

2.2、 Pod探针的实现方式

实现方式说明
ExecAction在容器内执行一个指定的命令,如果命令返回值为 0,则认为容器健康
TCPSocketAction通过 TCP 连接检查容器指定的端口,如果端口开放,则认为容器健康
HTTPGetAction对指定的 URL 进行 Get 请求,如果状态码在 200~400 之间,则认为容器健康

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/25881.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Servlet常用API

目录 一、HttpServlet 1、HttpServlet核心方法 2、Servlet的生命周期 二、HttpRequest 1、HttpRequest核心方法 2、代码示例 示例1:打印请求信息 示例2:获取GET请求中的query string 示例3:获取POST请求中的query string(form表单形…

功率谱分析笔记-------脑电相关

1:功率谱分析的方法介绍 功率谱分析的方法大致可以分为两大类:第一类是经典的功率谱计算方法,第二类是现代功率谱计算方法,如图1所示。其中第一类经典功率谱分析方法,又可以分为直接法、间接法和改进的直接法。直接法…

常见移动端导航类型

手机导航设计是人机交互最重要的桥梁和平台,旨在引导用户正确的方向,不迷路。 好的菜单设计不仅能提升整个产品的用户体验,还能让用户耳目一新。 一、导航菜单的作用是什么 ? 1.提升产品内容和功能结构和层次 2.重点展示核心功能…

windows cmd 常用操作命令

文章目录进程端口相关打开面板快捷键防火墙相关进程端口相关 可以查看本机开放的全部端口. netstat -ano 协议:分为TCP和UDP 本地地址(Local Address):代表本机IP地址和打开的端口号 外部地址(Foreign Address&#…

字节8年测试开发工程师感悟,说说我们自动化测试平台的进阶之路

前言 自2015年10月底加入Pactera Edge以来,我一直服务于客户的Quality Engineering项目。这之间经历了很多的技术变革,包括探索,实施,维护,淘汰等一整个流程。下面就写一下项目中 UTAP(unified testing automation pl…

Java多线程(三)

目录 一、线程的同步(二) 同步机制释放锁的操作 不会释放锁的操作 线程的死锁问题 死锁 解决方法 Lock(锁) 使用Lock(锁)创建多线程步骤: 使用Lock解决窗口售票问题 synchronized与Lock的对比 练习 二、线程的通信 通过例题说明线…

优化器-SQL语句分析与优化

一、连接-配置优化 1.1 连接数过多问题 有时会碰到Mysql:error 1040:Too many connection的错误。原因:超过了服务端设置的最大并发连接数。 1.2 从两个方面解决问题 服务端,增加服务端可用连接数;客户端&#xff0…

如何在视频上添加水印?建议收藏这些方法

小伙伴们平时会刷短视频吗?那你们会不会自己也在平台上,发布一些自己剪辑的短视频呢?在网上发布的视频,很容易被一些不安好心的人,直接窃取,所以为视频添加自己的水印显得尤为重要。那你们知道如何给视频加…

sqli-labs/Less-49

欢迎界面还是以sort作为注入点 首先判断属于数字型还是字符型 输入如下 sortrand() 页面从没有变化 说明属于字符型 然后输入1 发现没有报错信息 不能使用报错注入 只能通过结果去反映处你的注入是对是错 首先输入1-- 成功回显 说明注入类型就是属于单引号字符型 然后接…

Towards Class-Oriented Poisoning Attacks Against Neural Networks 论文笔记

#论文笔记# 1. 论文信息 论文名称Towards Class-Oriented Poisoning Attacks Against Neural Networks作者Bingyin Zhao会议/出版社WACV 2022pdf📄在线pdf代码无 基于类别的 availability attacks,不同于原本的 availability attacks 只考虑降低模型的…

VMware虚拟机中的Linux通过NAT模式共享主机网卡实现与外部设备通信

目前遇到的使用场景: 需要VMware虚拟机中linux通过PC端的物理网卡与外界其他设备或PC进行通信,因此需要配置虚拟机中linux的通信链路。 1.设置PC端IP网络 如果要实现虚拟机被局域网其它机子访问到,那么这里我们要选择桥架模式,具…

Oracle实验五Sql语句

每一句插入都要带commit提交,不然会出现很多报错 直接从WPS实验报告里复制过来的,可能有中英文标点问题 实验目的 (1) 掌握数据的插入(INSERT)、 修改(UPDATE) 和删除(D…

现代密码学导论-1-导论

目录 1.1 密码学和现代密码学 1.2 私钥加密 1.2.1 私钥加密的两个广泛应用 1.2.2 加密的语法 1.2.3 柯克霍夫原则 1.1 密码学和现代密码学 经典密码学(20世纪80年代以前)和现代密码学之间的另一个非常重要的区别与它的采用有关。历史上,密码学的主要消费者是军…

Android App开发实战项目之电子书架的实现(附源码 简单易懂 可直接使用)

需要图片集和源码请点赞关注收藏后评论区留言~~~ 一、需求描述 在手机上浏览电子书的浏览体验跟阅读纸质书差不多,翻页过程仍旧呈现纸张翻转的视觉特效,让读者看起来赏心悦目。总结一下,手机阅读无非是要具有两大功能点:其一为书…

【GlobalMapper精品教程】025:影像数据集的建立与巧妙使用

GlobalMapper影像数据集类似于金字塔,作用是提高大量影像的加载与显示速度,还可批量进行一系列设置。本文的配套数据为data025.rar。 文章目录 1. 建立影像数据集2. 影像数据集的使用1. 建立影像数据集 (1)点击【文件】→【创建新地图目录】。 (2)选择影像数据集存放路径…

Doker学习笔记1(狂神)

虚拟机技术缺点: 1.资源占用十分多 2.冗余步骤多 3.启动很慢! 容器化技术 我们去安装docker: 我们先保证我们的虚拟机是可以使用的。 环境查看: 系统内核是3.10以上的 系统版本: 我们用的是centOS7虚拟机。 然后…

微服务学习笔记(二)

文章目录Spring Cloud Eureka1.Spring Cloud Eureka 简介2.Spring Cloud Eureka 和 Zookeeper 的区别2.1 什么是 CAP 原则(面试)2.2 分布式特征3.Spring Cloud 其他注册中心3.1 Consul3.2 Nacos4.Spring Cloud Eureka 快速入门4.1 搭建 Eureka-server4.1…

【ELM回归预测】探路者优化极限学习机回归预测【含Matlab源码 2231期】

⛄一、探路者算法简介 提出的一种新兴的智能优化算法,该算法的思想起源于群体动物的狩猎行为,种群中的个体分为探路者和跟随者两种角色。算法的寻优过程模拟了种群寻找食物的探索过程,利用探路者、跟随者两种角色不同的位置更新方式以及角色…

蓝牙血压计PCBA硬件解决方案

蓝牙血压计是利用现代电子技术与血压间接测量原理进行血压测量的医疗设备。家庭医疗保健已成为现代人的医疗保健时尚。过去人们测量血压必须到医院才行,而今只要拥有了蓝牙血压计,坐在家里便可随时监测血压的变化,如发现血压异常便可及时去医…

odoo14 | odoo中domain的复杂写法

本片文章主要讲述domain中复杂业务需求的逻辑构思,关于doamin的使用位置会在另一篇文章中体现。 二叉树与波兰式 在讲述domain的使用前先讲解一下科班生必学的《数据结构与算法》中二叉树遍历与波兰式的内容,如果你会二叉树先序遍历与波兰式转换请直接…