【kubernetes】--pod
文章目录
- 1、pod 概念
- 2、pod意义
- 3、pod实现网络共享的机制
- 4、pod实现数据存储卷
- 5、pod镜像拉取策略
- 6、pod资源限制
- CPU 资源限制
- 7、pod重启机制
- 1). 重启限制机制
1、pod 概念
(1)最小的可部署和管理单元,也是调度和执行容器化应用的基本单位
(2)包含多个容器(一般一个pod一个容器)
(3)同一个pod内的容器共享网路命名空间
(4)pod是暂时的 由控制器(deployment)管理生命周期
2、pod意义
(1)可以实现多进程(虽然docker也可以,但是docker实现多进程很麻烦),一个pod有多个容器
(2)提高了容器内应用进行交互的亲密性
- 程序和数据库之间频繁调用(curd)
- 网络之前的调用(prometheus)
3、pod实现网络共享的机制
-
每个 Pod 都有一个特殊的"pause"容器(也称为 infra 容器),它只做一件事 - 持有网络命名空间
-
其他容器:Pod 中的业务容器通过 --net=container: 方式加入到 pause
容器的网络命名空间中 -
网络配置流程
- Pod 创建时:Kubernetes 先创建 pause 容器,pause 容器创建并持有网络命名空间
- CNI 插件为 pause 容器配置网络(分配 IP、设置路由等)
- 业务容器加入:业务容器创建时加入 pause 容器的网络命名空间,所有容器共享 pause 容器的网络栈
4、pod实现数据存储卷
apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: writeimage: centos:7command: ["bash", "-c", "for i in {1..100}; do echo $i >> /data/hello; sleep 1; done"]volumeMounts:- name: datamountPath: /data- name: readimage: centos:7command: ["bash", "-c", "tail -f /data/hello"]volumeMounts:- name: datamountPath: /datavolumes:- name: dataemptyDir: {}
5、pod镜像拉取策略
spec.containers.imagePullPolicy
apiVersion: v1
kind: Pod
metadata:name: myapp-pod
spec:containers:- name: myapp-containerimage: my-registry/my-app:1.0imagePullPolicy: Always # 设置拉取策略
-
IfNotPresent (默认策略)
- 只有当本地不存在该镜像时才会拉取
- 如果节点上已有该镜像,则直接使用本地镜像
-
Always
-
每次创建 pod 时都会尝试拉取镜像
-
即使本地已有该镜像也会重新拉取
-
-
Never
- 只使用本地镜像
如果本地不存在所需镜像,则会导致容器启动失败
如果省略 imagePullPolicy 且镜像标签为 :latest 或未指定标签,则默认为 Always
如果省略 imagePullPolicy 且指定了具体镜像标签(如 :v1.2.3),则默认为 IfNotPresent
6、pod资源限制
- spec.containers.resources.requests
- spec.containers.resources.limits
请求(Requests):容器运行所需的最小资源量
限制(Limits):容器可以使用的最大资源量
apiVersion: v1
kind: Pod
metadata:name: frontend
spec:containers:- name: appimage: images.my-company.example/app:v4resources:requests:memory: "64Mi"cpu: "250m"limits:memory: "128Mi"cpu: "500m"- name: log-aggregatorimage: images.my-company.example/log-aggregator:v6resources:requests:memory: "64Mi"cpu: "250m"limits:memory: "128Mi"cpu: "500m"
CPU 资源限制
- 单位表示
-
整数表示:1 表示 1 个 CPU 核心(在云提供商上通常是 1 个 vCPU)
-
小数表示:0.5 表示半个 CPU 核心
-
毫核表示:100m 表示 100 毫核(即 0.1 个 CPU 核心)
-
resources:requests:memory: "64Mi" # 请求64MB内存cpu: "0.5" # 请求半个CPU核心limits:memory: "128Mi" # 限制最多使用128MB内存cpu: "1" # 限制最多使用1个CPU核心
7、pod重启机制
spec.restartPolicy
- Always:容器退出时总是重启(默认值)
- OnFailure:容器异常退出(退出码非0)时重启
- Never:从不重启
apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-containerimage: my-imagerestartPolicy: OnFailure
1). 重启限制机制
为了防止容器频繁崩溃导致无限重启,Kubernetes 实现了指数退避延迟机制:
- 第一次崩溃:立即重启
- 后续崩溃:延迟时间按 10s、20s、40s… 逐渐增加,直到 5 分钟上限
- 成功运行 10 分钟后,重置退避计时器