当前位置: 首页 > news >正文

【3.3】Pod详解——容器探针部署第一个pod

文章目录

    • 容器探针
    • `小知识-控制平面`
    • Pod实战
      • 声明式模型&命令模式
    • 部署第一个pod
      • 编写pod清单文件
      • kubectl命令将清单文件post到api-server
      • 验证pod
      • 删除pod

容器探针

上面已经讲到容器状态,那么这些容器的状态是怎么检测到的呢?实际上在pod中有三种探针,存活探针(livenessProbe)、就绪探针(readinessProbe)和启动探针(startupProbe)。

  • livenessProbe,叫做存活探针,是为了检测容器是否正在运行,是否活着(如果探测失败就会杀死容器根据重启策略选择是否重启);
  • readinessProbe,叫做就绪探针,是为了检测容器是否准备就绪,是否能接受客户端请求;它会指示容器是否准备好为请求提供服务。如果就绪态探测失败, EndpointSlice 控制器将从与该 Pod 匹配的所有 Service 的EndpointSlice 中删除该 Pod 的 IP 地址(为了防止我们正常的服务访问这个错误的Pod导致业务崩溃)。
  • startupProbe,叫做启动探针,用于判断容器进程是否已经启动,一旦判断成功就会失效不再判断,一般用于那些启动很久的程序。指示容器中的应用是否已经启动。如果提供了启动探针,则所有其他探针都会被 禁用,直到此探针成功为止(可以见得,启动探针的优先级还是很高的)。如果启动探测失败,kubelet 将杀死容器, 而容器依其重启策略进行重启。

实际上容器探针收集到这些数据后就汇报给我们的控制平面了(kubernetes的大脑),我们看到的容器状态就是从这里来的(如Running/NotReady)

在这里插入图片描述

小知识-控制平面

控制平面(control plane)既前面介绍过的kube-apiserverkube-controller-managerkube-scheduleretcd这几个组件组成。他们互相协作就实现了对整个k8s集群进行有效有序的管理。

Pod实战

声明式模型&命令模式

命令模式:顾名思义就是直接在服务器和平常敲命令一样,直接命令执行创建Pod(不推荐)

声明式:编写一个yaml文件,其中包含了我们期望Pod的状态,比如包含几个容器,容器镜像是什么,pod名字叫什么等等

虽然给出了两种方式,但是绝对不推荐命令模式,我们目前在k8s集群,遇到的pod可能是巨大数量的,并且pod也会经常改变,可想而知,敲命令到手软,并且多了你自己也记不住谁是谁了吧,维护起来让人头疼,所以命令模式绝对不是好的选择。

部署第一个pod

在部署之前我们来理一下思路,这里以声明式模型来讨论

  1. 首先我们编写一个yaml文件,包含了我们期望的pod状态的内容
  2. 然后我们将这个文件post到api-server
  3. api-server经过一系列验证后返回一个响应后,由其他组件监听到后进行创建pod与调度pod到合适的node节点

那么大致流程就像下图:

在这里插入图片描述

那么我们实战开始:

编写pod清单文件

vi pod.ymlapiVersion: v1
kind: Pod
metadata:name: holle-podlabels:zone: prodversion: v1
spec:containers:- name: hello-ctrimage: nginx:1.22.1ports:- containerPort: 8080

kubectl命令将清单文件post到api-server

kubectl apply -f pod.yml# 查看pod状态
kubectl get pod -o wide

在这里插入图片描述

这里已经可以看见我们的pod已经READY了,并且状态为Running,NODE项说明这个pod实际运行在node01节点上,集群内部访问ip为10.244.2.98

验证pod

由于我们在清单文件定义pod中运行nginx镜像,所以访问上面pod给出的ip应该是可以出现nginx的欢迎页(注意关闭node01的防火墙与selinux)

在这里插入图片描述

至此,我们的第一个pod已经创建成功并运行起来了,不过它目前似乎只能在集群内部访问,外部访问不了,那是因为我们并未配置暴露服务给外部,这一部分后续再说。

删除pod

由于我们是直接定义的pod文件,所以删除pod可以有两种方式

第一种:kubectl delete holle-pod (注意这里的holle-pod是上面我们查询pod状态的NAME字段)

第二种:kubectl delete -f pod.yml (注意这里的pod.yml是我们编写的pod清单文件)

在这里插入图片描述

可以看见我们删除后再次查看pod状态已经提示未找到了


文章转载自:
http://abseil.zekgq.cn
http://apodous.zekgq.cn
http://bauxitic.zekgq.cn
http://cattalo.zekgq.cn
http://biscuit.zekgq.cn
http://ashore.zekgq.cn
http://candescent.zekgq.cn
http://aries.zekgq.cn
http://blanket.zekgq.cn
http://antielectron.zekgq.cn
http://calycular.zekgq.cn
http://aeg.zekgq.cn
http://camaraderie.zekgq.cn
http://alembicated.zekgq.cn
http://adret.zekgq.cn
http://agitatedly.zekgq.cn
http://aboriginally.zekgq.cn
http://charman.zekgq.cn
http://best.zekgq.cn
http://addax.zekgq.cn
http://bryozoan.zekgq.cn
http://backing.zekgq.cn
http://calorescence.zekgq.cn
http://afterburner.zekgq.cn
http://aerogram.zekgq.cn
http://balkhash.zekgq.cn
http://amylase.zekgq.cn
http://carbonylic.zekgq.cn
http://chlamys.zekgq.cn
http://blowzy.zekgq.cn
http://www.dtcms.com/a/262198.html

相关文章:

  • Python 可迭代的对象、迭代器 和生成器(另一个示例:等差数列生成器)
  • 设计模式 | 组合模式
  • Excel之证件照换底色3
  • Ubuntu无法显示IP地址
  • 【算法设计与分析】(二)什么是递归,以及分治法的基本思想
  • Mac homebrew 安装教程
  • 左神算法之Zigzag方式打印矩阵
  • Redis分布式锁核心原理源码
  • SpringCloud系列(40)--SpringCloud Gateway的Filter的简介及使用
  • 和ai对话:讨论一个简单的理财方案
  • Halcon 常用算子总结
  • 基于 SpringBoot 实现一个 JAVA 代理 HTTP / WS
  • MyBatis实战指南(八)MyBatis日志
  • 热传导方程能量分析与边界条件研究
  • HarmonyOS实战:自定义表情键盘
  • < OS 有关 4 台 Ubuntu VPSs 正在被攻击:nginx 之三> 记录、分析、防护的过程 配置 ufw Fail2Ban 保护网络上的主机
  • 个人计算机系统安全、网络安全、数字加密与认证
  • Github 2025-06-29php开源项目日报 Top10
  • RK3588集群服务器性能优化案例:电网巡检集群、云手机集群、工业质检集群
  • Mac电脑手动安装原版Stable Diffusion,开启本地API调用生成图片
  • 基于云的平板挠度模拟:动画与建模-AI云计算数值分析和代码验证
  • Linux中部署Nacos保姆级教程
  • Wpf布局之WrapPanel面板!
  • Java面试宝典:基础二
  • JSON + 存储过程:SaaS 架构下的统一接口与租户定制之道
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 19(题目+回答)
  • OpenCV读取照片和可视化详解和代码示例
  • Java 数据结构 泛型
  • Hive SQL 快速入门指南
  • 线性相关和线性无关