首页 > 其他分享 >k8s pod概念

k8s pod概念

时间:2023-05-07 14:34:17浏览次数:35  
标签:容器 Kubernetes 节点 概念 API pod k8s Pod 运行

Kubernetes Pod 是 Kubernetes 中最小的可部署单元,是一个或多个相互协作的应用容器的集合,它们共享相同的网络命名空间和存储卷。每个 Pod 都有一个唯一的 IP 地址,用于和其他 Pod 进行通信。

Pod 的核心概念如下:

  1. Pod 是一个逻辑主机,它可以包含多个容器,其中pause容器作为其他容器的父容器,同一个Pod的容器 共享同一个网络、 PID、IPC、UTS 命名空间,这意味着容器可以通过 localhost 来相互访问,并且它们可以在同一个命名空间内共享文件系统。
  2. Pod 的网络方案通过 Kubernetes 中的 CNI 插件(如flannel,calico等)来实现,包括隔离、路由、IP 分配等。
  3. Pod 包含了对于应用程序非常关键的卷挂载支持。卷可以是本地磁盘卷,也可以是来自于存储后端的网络磁盘。Kubernetes 支持多种不同的存储卷类型,比如本地磁盘卷、网络存储(例如 NFS 和 iSCSI ),以及分布式存储卷(例如 GCE Persistent Disk 和 Amazon EBS 卷等)。
  4. Kubernetes 控制器(例如 Deployment、Replica Set)负责维护 Pod 的数量,保证运行的 Pod 数目与期望数量一致。控制器确保了 Pod 在节点上的运行状态,以及在节点故障或调度的情况下重新调度 Pod。

涉及和Pod相关的组件有:

  1. Kubelet:Kubelet是Kubernetes集群中每个工作节点上运行的进程。Kubelet负责启动、停止和监视Pod。
  2. Docker:Kubernetes使用Docker来运行容器。Docker是一个容器运行时,提供了一个标准的方式来创建、运行和管理容器。
  3. CRI:容器运行时接口(CRI)是一个抽象层,允许Kubernetes与不同的容器运行时(如Docker)交互。
  4. 网络:Kubernetes中的Pod被分配了它们自己的网络接口。这使得Pod能够互相通信并与外部世界交互。
  5. 存储:Kubernetes中的Pod可以连接到持久存储卷。这使得Pod可以存储数据,即使Pod被重启或删除,数据也能够持久化保存。

Pod的生命周期有:

  1. Pending:Pod已被创建,但尚未分配到节点上。
  2. Running:Pod已被分配到节点上,容器已经在运行中。
  3. Succeeded:Pod中所有容器都已成功地完成了其工作,已经退出。
  4. Failed:Pod中至少有一个容器已经退出,且已经达到了重试限制。
  5. Unknown:由于某种原因,Pod的状态无法确定。

Pod的初始化过程:

  1. 创建 Pod,当用户在 Kubernetes 中创建一个 Pod 时,API Server 会接收到请求,然后创建一个 Pod 的初始对象。
  2. 初始化容器,当 Kubernetes 创建了 Pod 对象后,每个容器都会在其所在的节点上被初始化。初始化容器是同步运行的,只有当所有的初始化容器都成功运行并退出后,才会启动普通的容器。初始化容器可以用来做一些在主容器启动之前必需的准备工作,例如为数据库准备必需的存储目录、下载数据源文件等。
  3. 运行容器启动健康状态监测,一旦所有的初始化容器都成功运行,Pod 就可以开始启动普通容器并检测容器是否启动正常。Pod 中的所有容器都可以同时运行,它们共享 Pod 的网络空间和文件系统,并可以使用 Kubernetes 中的资源管理器适当地 CPU 使用率和内存。
  4. 容器就绪探针,每个容器都有一个就绪探针,用于指示容器是否准备就绪。当容器就绪时,它会让其就绪探针变为 true。如果某个容器的就绪探针为 false,则 Kubernetes 认为该容器没有准备好,它将不会再次被调度或负载均衡器。因此,Pod 中所有容器的就绪探针都为 true 是非常重要的。
  5. Pod 初始化完成,当所有容器都就绪并准备好接收网络流量时,Pod 的初始化过程就完成了。Pod 将开始执行其核心业务逻辑,与本地或网络上的其他服务进行交互,并提供服务。Pod 将继续处理请求并处理容器的生命周期,直到 Pod 或容器终止或从 Kubernetes 中删除
  6. 定期进行存活监测和就绪监测,存活监测失败会导致容器重启,就绪状态监测失败会导致该pod从其属于的service对象中移除。

Pod的提交创建过程组件功能:

  1. 客户端:用户使用 Kubectl、API 网关或其他 Kubernetes 可用的客户端向 Kubernetes API  Server发送 Pod 创建请求。
  2. API Server:API Server 是 Kubernetes 的中央组件,它接收来自用户的请求并处理它们。当一个 Pod 创建请求到达 API Server 时,它将检查用户的请求,创建一个 Pod 对象并将信息存储到etcd。
  3. 调度器:一旦 调度器监测到API Server 创建了 Pod 对象,会负责选择一个合适的节点,并把结果信息发送给API Server。
  4. kubelet:kubelet监测到由调度器绑定到本节点的Pod后,根据配置信息拉取 Pod 所需的镜像并调用运行时,并确保 Pod 按照用户的要求进行管理。
  5. 容器运行时:一旦 kubelet 确定可以在节点上启动 Pod,则容器运行时(例如 Docker)将被用于启动 Pod 中的容器。
  6. etcd:有关 Pod 配置、调度及状态的信息将存储在 etcd 中,以确保此状态仅为集群中的所有节点所共享。

标签:容器,Kubernetes,节点,概念,API,pod,k8s,Pod,运行
From: https://www.cnblogs.com/bad-joker/p/17379288.html

相关文章

  • 还原k8s控制节点
    0、基础环境配置参照节点建立搭建配置1、从旧控制节点拷贝/opt/kubernets/usr/local/bin/kubectl/usr/lib/systemd/system/etcd.service/usr/lib/systemd/system/kube-apiserver.service/usr/lib/systemd/system/kube-controller-manager.service/usr/lib/systemd/system/ku......
  • 二进制部署K8S v1.27.x
    1.1系统环境系统:Rockylinux8.7x64cat/etc/hosts----172.16.10.81flyfish81172.16.10.82flyfish82172.16.10.83flyfish83172.16.10.84flyfish84172.16.10.85flyfish85-----本次部署为前三台Rockylinux8.6x64flyfish81做为master部署flyfish82......
  • jvm调优总结(从基本概念 到 深度优化)
    关键字:jvm调优总结(从基本概念到深度优化)JVM参数详解Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放......
  • 线程池的概念
    单位时间内必须处理数目巨大的连接请求,但处理时间却相对较短。传统多线程方案中,一旦接受到请求之后,即创建一个新的线程,由该线程执行任务。任务执行完毕后,线程退出。这就是即时创建,即时销毁的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务执行......
  • CGAL中的几个概念
    kernelThegeometricprimitives,likethepointtype,aredefinedinakernel.traitspredicates&constructionsBesidesthetypesweseepredicatesliketheorientationtestforthreepoints,andconstructionslikethedistanceandmidpointcomputa......
  • k8s sa
    serviceacount=sa创建sa,会自动创建一个token。root@myang-computer:~/yaml#kubectlcreatesamysaserviceaccount/mysacreatedroot@myang-computer:~/yaml#kubectlgetsaNAMESECRETSAGEdefault12d4hmysa114sroot@myang-comput......
  • k8s 建service
    root@myang-node:~/ingress-nginx#kubectlcreatedeploybackend-api--image=registry.cbeijing.aliyuncs.com/dotbalo/nginx:backend-api-nstudy-ingressdeployment.apps/backend-apicreatedroot@myang-node:~/ingress-nginx#kubectlexposedeploybackend-api-......
  • Spring相关概念
    Spring相关概念1、初识Spring在这一节,主要通过以下两个点来了解下Spring:1.1、Spring家族官网:https://spring.io,从官网我们可以大概了解到:Spring能做什么:用以开发web、微服务以及分布式系统等,光这三块就已经占了JavaEE开发的九成多。Spring并不是单一的一个技术,而是......
  • ubuntu 20 安装k8s 1.24 -3个组件
    搜索  阿里云源  开源镜像网站  找kubernetes  点进去,配置方式apt-getupdate&&apt-getinstall-yapt-transport-httpscurlhttps://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg|apt-keyadd-cat<<EOF>/etc/apt/sources.list.d/kubernetes.lis......
  • K8S:4种鉴权模块不知道怎么选?看看这篇你就懂了。
    鉴权模块在K8S中,鉴权模块有4种,分别是:Node、ABAC、RBAC、Webhook。功能分别如下:Node:验证节点的身份以确保其具有所需的权限来加入集群。ABAC:基于用户的属性(如用户名或组名)来控制其对集群资源的访问权限。RBAC:基于角色的权限来控制用户对集群资源的访问权限。Webhook:允许管理......