Pod相关介绍技术属性解释
k8s核心技术——pod
1. pod基本概念和意义
- 基本概念
- 1.最小的部署单元
- 2.包含多个容器(一组容器的集合)
- 3.一个pod中容器共享网络命名空间
- 4.pod是短暂的
- 5.每个pod都有一个根容器“Pause容器”和一个或多个紧密相关的用户业务容器
- Pod存在的意义
- 1.创建容器使用docker,一个docker 对应一个容器,一个容器一个进程运行一个应用程序
- 2.Pod是多进程设计,运行多个应用程序
- 一个Pod有多个容器,一个容器里面运行一个应用程序
- 3.Pod存在亲密性应用
- 两个应用之间进行交互
- 网络之间调用
- 两个应用需要频繁互相调用
2. Pod的实现机制
-
共享网络
前提:在同一个ns(namespace)下面
通过Pause容器,把其他业务容器加入到Pause容器里面,让所有业务容器在同一个名称空间(namespace)中,可以实现网络共享。
-
共享存储
引入数据卷概念Volume,使用数据卷进行持久化存储
3. Pod镜像拉取策略
- InNotPresent:默认值,镜像在宿主机上不存在时才拉取
- Always:每次创建Pod都会重新拉取一次镜像
- Nerver:Pod永远不会主动拉取这个镜像
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: nginx
image: nginx:1.18
# 镜像拉取策略为每次创建pod都会重新拉取一次镜像
imagePullPolicy: Always
4. Pod资源限制
-
调度:
requests:
memory:”64Mi”
cpu: “250m”
-
最大:
limits:
memory: “128Mi”
cpu: “500m”
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
5. Pod重启机制
- Always: 当容器终止退出以后,总是重启容器,默认策略。
- onFailure:当容器异常退出(退出状态码非0)时,才重启容器。
- Nerver:当容器终止退出,从不重启容器。
restartPolicy: Nerver
6. Pod健康检查
-
livenessProbe(存活检查)
如果检查失败,将杀死容器,根据Pod的restartPolicy来操作。
-
readinessProbe(就绪检查)
如果检查失败,Kubernetes会把Pod从service endpoints中剔除。
Probe支持以下三种检查方法:
- httpGet:发送HTTP请求,返回200-400范围状态码为成功。
- exec:执行Shell命令返回状态码是0为成功。
- tcpSocket:发起TCP Socket建立成功。
# 存活检查
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5