目录
1.基本概念
2.pod和docker
3.pod实现机制
4.pod镜像拉取策略(imagePullPolicy)
5.pod资源限制
6.pod重启策略(restartPolicy)
7.pod状态
8.pod健康检查
9.pod调度,影响调度的4大因素
9.1.资源限制和节点选择器
9.2.节点亲和性
9.3.污点和污点容忍
1.基本概念
- pod是k8s系统中可以创建和管理的最小单元
- pod包含一个或者多个容器(一组容器的集合)
- pod容器共享网络命名空间,每一个 Pod 都有一个特殊的被称为”根容器“的 Pause 容器
- pod是短暂的
2.pod和docker
- docker是单进程的设计,创建容器使用的docker,一个docker容器对应一个应用进程
- pod是多进程设计,运行多个应用程序,换句话说一个pod有多个容器,一个容器里面运行一个应用程序
- pod存在为了亲密性应用,如下:
- 两个应用程序之间进行亲密交互;
- 网络之间的调用;
- 两个应用需要频繁调用
3.pod实现机制
pod内的容器实现共享网络?
- 容器之间本身是相互隔离的
- 每个 Pod 都是应用的一个实例,有专用的IP
- 一个pod内共享网络和存储资源,每个 Pod 中有一个 Pause 容器保 存所有的容器状态, 通过管理 pause 容器,达到管理 pod 中所有容器的效果。
- 每当创建一个新的应用容器时候,会加入到Pause 容器中,在同一个命名空间ns,共享ip地址,mac地址,端口port
示例如下:
pod内的容器实现共享存储?
- 引入数据卷,使用数据卷进行持久化存储
4.pod镜像拉取策略(imagePullPolicy)
5.pod资源限制
- 每个 Pod 都可以对其能使用的服务器上的计算资源设置限额。
- Kubernetes 中可以设置限额 的计算资源有 CPU 与 Memory 两种,
- 其中 CPU 的资源单位为 CPU 数量,是一个绝对值而非相对值;Memory 配额也是一个绝对值,它的单 位是内存字节数。
请最少 0.25 个 CPU 以及 64MiB 内存,在运行过程中容器所能使 用的资源配额为 0.5 个 CPU 以及 128MiB 内存
6.pod重启策略(restartPolicy)
Pod 的重启策略包括 Always、OnFailure 和 Never,默认值是 Always
7.pod状态
kubectl get pods
8.pod健康检查
- 容器检查:一般都是kubectl get pods,查看是否是Running状态,但不准确,比如java内存溢出,状态依旧是Running,但是已经不能提供服务了
- pod健康检查:livenessProbe(存活检查)和readinessProbe(就绪检查)
livenessProbe(存活检查):如果检查失败,将杀死容器,根据pod的restartPolicy来操作
readinessProbe(就绪检查):如果检查失败,k8s会把pod从service endpoints 中剔除
文件示例如下:
9.pod调度,影响调度的4大因素
pod创建流程
watch代表监控
------------------------------------------------------------------------------------------------------------------------------------------------------------------
影响pod调度的可能性如下:资源限制,节点选择器,节点亲和性,污点和污点容忍
9.1.资源限制和节点选择器
#给node1节点打标签env_role=prod
kubectl label node node1 env_role=prod
#查看node的所有标签
kubectl get pods node1 --show-labels
9.2.节点亲和性
节点亲和性:硬亲和性,软亲和性
9.3.污点和污点容忍
命令行如下:
#查看节点的污点情况
kubectl describe node k8smaster | grep Taint
#为节点k8snode1 添加污点
kubectl taint node k8snode1 env_role=yes:NoSchedule
#创建pod
kubectl create deployment web --image=nginx
#查看pod,就1个
kubectl get pods -o wide
#扩容5个pod
kubectl scale deployment web --replocas=5
#删除污点
kubectl taint node k8snode1 env_role:NoSchedule-
#查看节点的污点情况
kubectl describe node k8snode1 | grep Taint
上一章:kubernetes集群---yaml文件(三)
下一章:kubernetes集群核心技术---Controller(Deployment)(五)