k8s之Pod
什么是Pod
通俗的来讲就是以pause为基础容器,其它容器共享pause容器的网络名称空间、主机名以及进程间通信,组成的一个逻辑的容器集合。
• Kubernetes Pod是Kubernetes的基础单元,一个Pod是一组功能相关的部署到一起的容器的集合。
• 在Kubernetes 中,每个Pod会有自己独立的内部动态IP,在Pod新建或重启时会重新分配新的IP。
• Pod会有自己的Label(元数据)用来标识Pod的服务内容。
• Pod自身不具有高可用等特性,Pod一般不会直接使用,而是通过控制器进行调度使用。
• Pod中默认存在一个基础架构容器pause,创建完成后一直处于暂停状态或者看不到它。
• Pod为逻辑组件,Pod内运行一个和多个容器,这些容器共享同一个底层的(NET)网络名称空间、(UTS)主机名、(IPC)进程间通信,另外三个互相隔离。并且一个Pod内的容器共享Volume。
Pod的生命周期
Pod 生命周期包含三个阶段:
- 初始化阶段,Pod 的 init 容器运行。
- 运行阶段,Pod 的常规容器在该阶段运行。
- 终止阶段,Pod 的容器被终止。
探针是什么
kubelet基于探针机制对容器执行的定期诊断。判断容器的运行状态。
- 启动探针(Startup Probe)
启动探针是一个相对较新的概念,用于确定容器是否已成功启动。与存活探针不同,启动探针仅在容器启动时执行一次。如果启动探针失败,Kubernetes 不会尝试重新启动容器,但可以用于在容器启动时执行一些初始化任务。这些探针可以采用多种方式来验证容器状态,包括执行HTTP请求、TCP检查或自定义命令。成功或失败的结果将报告给 Kubernetes,允许系统采取适当的措施。
- 就绪探针(Readiness Probe)
就绪探针用于确定容器是否已准备好接收网络流量。如果就绪探针失败,Kubernetes 将停止将流量发送到容器,以确保不会将流量发送到尚未准备好的容器。这有助于避免将流量发送到正在启动或尚未加载数据的应用程序。
- 存活探针(Liveness Probe)
存活探针用于确定容器是否正在运行。如果存活探针失败,Kubernetes 将视为容器不健康,尝试重新启动容器。这对于检测应用程序内部的假死情况非常有用,例如,如果 Web 服务器停止响应请求。
基于容器启动的应用程序的配置
1、传统配置应用程序
-
命令行、选项参数
-
修改配置文件、进程重载
2、容器化应用
-
自定义要在容器中运行的命令,及相关选项和参数;
-
环境变量,容器中进程基于环境变量加载环境变量的值
传统应用一般对此支持有限(Entrypoint: entrypoint.sh)
kubernetes原生的应用 -
卷,传递配置文件
Kubernetes借助etcd来存储配置,不依赖任何第三方存储
ConfigMap
Secret
3、Pod的容器应用如何配置
kubectl explain pods.spec.containers
- args <[]string>
- command <[]string>
- env <[]EnvVar>
- envFrom <[]EnvFromSource>