k8s--pod 介绍

网友投稿 635 2022-11-17

k8s--pod 介绍

k8s--pod 介绍

pod 概述

Pod 是 K8S 系统中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型,也是在 K8S 上运行容器化应用的资源对象,其它的资源对象都是用来支撑或者扩展 Pod 对象功能的,比如控制器对象是用来管控 Pod 对象的,Service 或者 Ingress 资源对象是用来暴露 Pod 引用对象的,PersistentVolume 资源对象是用来为 Pod 提供存储等等,K8S 不会直接处理容器,而是 Pod,Pod 是由一个或多个 container 组成。

Pod 是 Kubernetes 的最重要概念,每一个 Pod 都有一个特殊的被称为 “根容器”的 Pause 容器。Pause 容器对应的镜像属于 Kubernetes 平台的一部分,除了 Pause 容器,每个 Pod 还包含一个或多个紧密相关的用户业务容器

Pod基本概念

最小部署的单元Pod 里面是由一个或多个容器组成【一组容器的集合】一个 pod 中的容器是共享网络命名空间Pod 生命周期是短暂的每个 Pod 包含一个或多个紧密相关的用户业务容器

Pod存在的意义

创建容器使用 docker,一个 docker 对应一个容器,一个容器运行一个应用进程Pod 是多进程设计,运用多个应用程序,也就是一个 Pod 里面有多个容器,而一个容器里面运行一个应用程序

Pod 是在 K8S 集群中运行部署应用或服务的最小单元,它是可以支持多容器的。Pod 的设计理念是支持多个容器在一个 Pod 中共享网络地址和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务。同时 Pod 对多容器的支持是 K8S 中最基础的设计理念。在生产环境中,通常是由不同的团队各自开发构建自己的容器镜像,在部署的时候组合成一个微服务对外提供服务。

Pod 是 K8S 集群中所有业务类型的基础,可以把 Pod 看作运行在 K8S 集群上的小机器人,不同类型的业务就需要不同类型的小机器人去执行。目前 K8S 的业务主要可以分为以下几种

长期伺服型:long-running批处理型:batch节点后台支撑型:node-daemon有状态应用型:stateful application

Pod实现机制

主要有以下两大机制

共享网络共享存储

共享网络

容器本身之间相互隔离的,一般是通过 namespace 和 group 进行隔离,那么Pod里面的容器如何实现通信?

首先需要满足前提条件,也就是容器都在同一个namespace之间

关于Pod实现原理,首先会在Pod会创建一个根容器: pause容器,然后我们在创建业务容器 【nginx,redis 等】,在我们创建业务容器的时候,会把它添加到 info容器 中

而在 info容器 中会独立出 ip地址,mac地址,port 等信息,然后实现网络的共享

共享存储

Pod 持久化数据,专门存储到某个地方中

常用命令

# 查看所有的 pod 列表,-n 后面跟 namespace,查看指定的命名空间,-o wide 查看详细信息kubectl get podkubectl get pod -n kube-system # 查看 kube-system 命名空间下的 podkubectl get pod -o wide # 查看 pod 的详细信息,有 ip、node 节点等信息

kubectl get pod -o wide 的参数含义如下

name:自定义的名称,后面会加些数据READY:当前 pod 里的容器,pause 容器不算在里面,/ 前面的表示运行了几个,后面的数字表示一共有几个STATUS:当前的状态AGE:pod 存在的时长IP:pod 的 ip,这个只能在当前部署的机器上访问,外网是访问不了的 NODE:当前 pod 在哪个 node 上运行

# 显示 Node 的详细信息kubectl describe node dce-10-6-215-190 # node 后面的是 node名称

# 显示 Pod 的详细信息, 特别是查看 pod 无法创建的时候的日志kubectl describe pod web # web 是你创建 pod 时起的名称

# 根据 yaml 创建资源, apply 可以重复执行,create 不行kubectl create -f pod.yamlkubectl apply -f pod.yaml

# 删除所有 Podkubectl delete pod --all# 强制删除某个文件名命名节点 ,基于 pod.yaml 定义的名称删除 pod kubectl delete -f <文件名># 删除某个Pod命令节点 kubectl delete pod # 删除某个Replication Controller命名节点 kubectl delete rc kubectl delete deployment 名称# 删除某个服务命名节点 kubectl delete service # 删除所有Pod节点 kubectl delete pod --all

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:AtCoder Beginner Contest 133 E - Virus Tree 2(组合数学)
下一篇:AcWing 周赛13 3813. 最大路径权值(拓扑排序 DAG上dp)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~