Pod基本概念
1最小部署单元
2包含多个容器
3一个pod中容器共享命名空间
4pod是短暂的
Pod存在的意义
1创建容器使用docker,一个docker对应一个容器,一个容器有进程,一个容器运行一个应用程序
2Pod是多进程设计,运行多个应用程序,一个Pod有多个容器,一个容器里面运行一个应用程序
3Pod存在为了亲密性应用
*两个应用之间交互
*网络之间调用
*两个应用需要频繁调用
Pod实现机制
1共享网络
2共享存储
共享网络
通过Pause容器,把其他业务容器加入Pause容器中,让所有业务容器在同一个名称空间中,可以实现网络共享
共享存储
引入数据卷的概念Volume,使用数据卷进行持久化存储
Pod镜像拉取策略
IfNotPresent
默认值,镜像在宿主机上不存在时才拉取
Always
每次创建Pod都会重新拉取一次镜像
Never
Pod永远不会主动拉取这个镜像
Pod资源限制
request为调度资源限制 limits为最大资源限制
Pod重启机制
例如
restartPolicy:Never
- Always当容器终止退出后,总是重启容器,默认策略
- OnFailure当容器异常退出(退出状态码为非0)时,才重启容器
- Never当容器终止退出,从不重启容器
Pod健康检查
livenessProbe存活检查
如果检查失败,将杀死容器,根据Pod的restartPolicy来操作
readinessProbe就绪检查
如果检查失败,Kubernetes会把Pod从service endpoints中剔除
Pod支持三种检查方法
httpGet
发送HTTP请求,返回200-400范围状态码为成功
exec
执行shell命令返回状态码是0为成功
tcpSocket
发起TCP Scoket建立成功
Pod调度策略
创建pod完整流程
1.master节点的createpod-进入apiserver进行创建-行为信息存储到etcd
2.master节点的scheduler-进入apiserver监听到新pod创建-通过apiserver读取etcd-通过调度算法把pod分配到某个节点中-最终结果返回apiserver-存储etcd
3.node节点的kubelet组件-访问apiserver-读取etcd拿到分配给当前节点的pod-通过docker创建容器-状态返回apiserver-etcd中进行存储
影响调度的属性
1.Pod资源限制对Pod调用产生影响
根据request找到足够应付资源大小的node进行调度
2.节点选择器nodeSelector标签影响Pod调度
nodeSelector:
env_role:dev
首先对节点创建标签
kubectl label node k8snode1 env_role=dev
查看
kubectl get node k8snode1 --show-labels
3.节点亲nodeAffinity和性影响Pod调度
- 硬亲和性
requiredDuringSchedulingIgnoredDuringExecution
约束条件必须满足,不满足则等待 - 软亲和性
preferedDuringSchedulingIgnoredDuringExecution
尝试满足,不保证绝对满足
支持的常用操作符
In NotIn Exists Gt Lt DoseNotExists
nodeSelector和nodeAffinity是Pod的属性
4.污点Taint影响Pod调度
污点Taint里的节点不做普通的调度做一些特别处理,污点本身不是Pod中的属性而是节点里的属性
应用场景 1专用节点 2配置特定的硬件的节点 3基于Taint驱逐(本身不分配、分配到本身以外的节点中去)
# 查看污点
kubectl describe node k8smaster|grep Taint
污点的值有三个
1NoSchedule一定不被调度
2PreferSchedule尽量不被调度(有调度的几率)
3NoExecute不会调度并且还会驱逐Node已有Pod
# 为节点添加污点
kubectl taint node k8snode1 env_role=yes:NoSchedule
kubectl create deployment web --image=nginx
kubectl get pods -o wide
kubectl scale deployment web --replicas=5
kubectl get pods -o wide
# 删除污点
kubectl describe node k8snode1 |grep Taint
kubectl taint node k8snode1 env_role:NoSchedule-
5.污点容忍tolerations影响Pod调度
网友评论