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

Pod 介绍

文章目录

    • 一、什么是 Pod
    • 二、Pod 的网络
    • 三、Pod 的用法
    • 四、Pod 定义文件

一、什么是 Pod

Pod 是 kubernetes 集群中最小的部署和管理的基本单元,协同寻址,协同调度。

Pod 是一个或多个容器的集合,是一个或一组服务(进程)的抽象集合。

Pod 中可以共享网络和存储(可以简单理解为一个逻辑上的虚拟机,但并不是虚拟机)。

Docker 是目前 Pod 最常用的容器环境,但仍支持其他容器环境。

我们可以看到,当我们启动一个 Pod 以后,每个 Pod 内都会有一个 Pause 的容器

每个 Pod 里运行着一个特殊的被称之为 Pause 的容器,其他容器则为业务容器,这些业务容器共享 Pause 容器的网络栈和 Volume 挂载卷,因此他们之间通信和数据交换更为高效,在设计时我们可以充分利用这一特性将一组密切相关的服务进程放入同一个 Pod 中。同一个 Pod 里的容器之间仅需通过 localhost 就能互相通信。

二、Pod 的网络

  • 每个Pod被分配了唯一的IP地址,该Pod内的所有容器共享一个网络空间,包括IP和端口。
  • 同个Pod不同容器之间通过localhost通信,Pod内端口不能冲突。
  • 不同Pod之间的通信则通过IP+端口的形式来访问到Pod内的具体服务(容器)。

三、Pod 的用法

Pod 实际上是容器的集合,在 kubernetes 中对运行容器的要求为 “容器的主程序需要一直在前台运行,而不是后台运行“ 当多个应用之间是紧耦合的关系时,可以将多个应用一起放在一个Pod中,同个Pod中的多个容器之间互相访问可以通过localhost来通信。

相关命令:

操作命令
创建kubectl create -f 文件名.yaml
查询运行状态kubectl get pods -n 空间名称,如果不指定则默认显示default空间内的 pod
查询详情kebectl describe pod Pod名称 -n 空间名称,如果不指定则默认显示default空间内的 pod
删除kubectl delete pod Pod名称 / kubectl delete pod --all
更新kubectl replace 文件名.yaml

四、Pod 定义文件

在 kubernetes 中,一般使用 yaml 格式的文件来创建符合我们预期期望的 pod

基本语法为:

  • 缩进时不允许使用Tab键,只允许使用空格
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • #标识注释,从这个字符一直到行尾,都会被解释器忽略

这样的 yaml 文件我们一般称为资源清单,如下表所示:

必选字段:apiVersion: v1       		        #必选,版本号,例如v1
kind: Pod       			#必选,资源类别
metadata:       			#必选,元数据name: string       		        #必选,Pod名称namespace: string    	                #创建资源所属于的命名空间,不写的话默认创建在default空间labels:      				#自定义标签- name: string     	                #自定义标签名称
spec:         				#必选,Pod中容器的详细定义containers:      			#必选,Pod中容器列表- name: string     		        #必选,容器名称image: string    		        #必选,容器的镜像名称

示例文件:

apiVersion: v1
kind: Pod
metadata:name: nginxlabels:app: web
spec:containers:- name: nginximage: docker.io/nginxports:- containerPort: 80

完整资源清单详情示例:

apiVersion: v1       					#必选,版本号,例如v1
kind: Pod       					#必选,Pod
metadata:       					#必选,元数据name: string       					#必选,Pod名称namespace: string    					#创建资源所属于的命名空间,不写的话默认创建在default空间labels:      						#自定义标签- name: string     		                        #自定义标签名字annotations:       					#自定义注释列表- name: string
spec:         						#必选,Pod中容器的详细定义containers:      					#必选,Pod中容器列表- name: string     			                #必选,容器名称image: string    			                #必选,容器的镜像名称imagePullPolicy: [Always | Never | IfNotPresent]    #获取镜像的策略 Alawys表示下载镜像 IfnotPresent表示优先使用本地镜像,否则下载镜像,Nerver表示仅使用本地镜像command: [string]    				#容器的启动命令列表,如不指定,使用打包时使用的启动命令args: [string]     					#容器的启动命令参数列表workingDir: string    				#容器的工作目录volumeMounts:    					#挂载到容器内部的存储卷配置- name: string     		                        #引用pod定义的共享存储卷的名称,需用volumes[]部分定义的的卷名mountPath: string   				#存储卷在容器内mount的绝对路径,应少于512字符readOnly: boolean   				#是否为只读模式ports:       					#需要暴露的端口库号列表- name: string     		                        #端口号名称containerPort: int  				#容器需要监听的端口号hostPort: int    					#容器所在主机需要监听的端口号,默认与Container相同protocol: string    				#端口协议,支持TCP和UDP,默认TCPenv:       						#容器运行前需设置的环境变量列表- name: string     		                        #环境变量名称value: string    					#环境变量的值resources:       					#资源限制和请求的设置limits:      					#资源限制的设置cpu: string    					#Cpu的限制,单位为core数,将用于docker run --cpu-shares参数memory: string    				#内存限制,单位可以为Mib/Gib,将用于docker run --memory参数requests:      					#资源请求的设置cpu: string    					#Cpu请求,容器启动的初始可用数量memory: string    				#内存清楚,容器启动的初始可用数量livenessProbe:     					#对Pod内个容器健康检查的设置,当探测无响应几次后将自动重启该容器,检查方法有exec、httpGet和tcpSocket,对一个容器只需设置其中一种方法即可exec:      					#对Pod容器内检查方式设置为exec方式command: [string] 				#exec方式需要制定的命令或脚本httpGet:       					#对Pod内个容器健康检查方法设置为HttpGet,需要制定Path、portpath: stringport: numberhost: stringscheme: stringHttpHeaders:- name: stringvalue: stringtcpSocket:     					#对Pod内个容器健康检查方式设置为tcpSocket方式port: numberinitialDelaySeconds: 0  				#容器启动完成后首次探测的时间,单位为秒timeoutSeconds: 0  				#对容器健康检查探测等待响应的超时时间,单位秒,默认1秒periodSeconds: 0   				#对容器监控检查的定期探测时间设置,单位秒,默认10秒一次successThreshold: 0failureThreshold: 0securityContext:privileged:falserestartPolicy: [Always | Never | OnFailure]		#Pod的重启策略,Always表示一旦不管以何种方式终止运行,kubelet都将重启,OnFailure表示只有Pod以非0退出码退出才重启,Nerver表示不再重启该PodnodeSelector: obeject 				#设置NodeSelector表示将该Pod调度到包含这个label的node上,以key:value的格式指定imagePullSecrets:    				#Pull镜像时使用的secret名称,以key:secretkey格式指定- name: stringhostNetwork:false     				#是否使用主机网络模式,默认为false,如果设置为true,表示使用宿主机网络volumes:       					#在该pod上定义共享存储卷列表- name: string     		                        #共享存储卷名称 (volumes类型有很多种)emptyDir: {}     					#类型为emtyDir的存储卷,与Pod同生命周期的一个临时目录。为空值hostPath: string   				#类型为hostPath的存储卷,表示挂载Pod所在宿主机的目录path: string     				#Pod所在宿主机的目录,将被用于同期中mount的目录secret:      					#类型为secret的存储卷,挂载集群与定义的secre对象到容器内部scretname: string  items:     - key: stringpath: stringconfigMap:     					#类型为configMap的存储卷,挂载预定义的configMap对象到容器内部name: stringitems:- key: stringpath: string
http://www.dtcms.com/a/431971.html

相关文章:

  • 全国商城网站建设石大网页设计与网站建设客观题
  • 广西钦州有人帮做网站的公司吗wordpress必须安装php吗
  • 深入解析Kerberos协议攻击手法:从基础到高级攻防实战
  • 现在网站建站的主流语言是什么东莞品牌网站建设费用
  • NO.10数据结构图|Prim算法|Kruskal算法|Dijkstra算法|Floyd算法|拓扑排序|关键路径
  • 深圳市西特塔网站建设工作室wordpress 本地访问慢
  • 网站制作的发展趋势网站文件目录
  • 旅游公网站如何做室内设计效果图怎么画
  • Acrobat DC 文本域表单验证中的 js 使用
  • 商务网站开发代码h网站建设
  • 动态规划完整入门
  • 网站怎么做端口映射想访问国外网站 dns
  • 【Linux系列】并发世界的基石:透彻理解 Linux 进程 —— 从调度到通信的深度实践
  • 专业设计网站排名网站建设忄金手指快速
  • 怎么申请自己的网站网址网站建设响应
  • 西部数码网站管理助手serv-u默认密码杭州seo网站推广排名
  • 好的网站具备什么条件网站运营建设方案
  • 简单好看个人主页网站模板建设方案模板
  • gRPC从0到1系列【11】
  • 自助建站系拟采用建站技术
  • 如何做网站推广优化好的漂亮的淘宝客网站
  • 沈阳市做网站的公司准备建网站该怎么做
  • 多线程—阻塞队列的练习
  • C#基础10-结构体和枚举
  • 网站建设 福田东莞推广系统怎么做
  • 怎么做免费域名网站wordpress 图片库
  • 全网营销公司洛阳seo网络推广
  • git知识点
  • 制作网站要钱吗oppo开放平台
  • AI 伦理困局:参与式治理如何破解技术狂飙