目录

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是短暂的

cce容器集群 访问控制 容器和集群_Pod

2.pod和docker

  1. docker是单进程的设计,创建容器使用的docker,一个docker容器对应一个应用进程
  2. pod是多进程设计,运行多个应用程序,换句话说一个pod有多个容器,一个容器里面运行一个应用程序
  3. pod存在为了亲密性应用,如下:
  • 两个应用程序之间进行亲密交互;
  • 网络之间的调用;
  • 两个应用需要频繁调用

3.pod实现机制

pod内的容器实现共享网络?

  • 容器之间本身是相互隔离的
  • 每个 Pod 都是应用的一个实例,有专用的IP
  • 一个pod内共享网络和存储资源,每个 Pod 中有一个 Pause 容器保 存所有的容器状态, 通过管理 pause 容器,达到管理 pod 中所有容器的效果。
  • 每当创建一个新的应用容器时候,会加入到Pause 容器中,在同一个命名空间ns,共享ip地址,mac地址,端口port

cce容器集群 访问控制 容器和集群_重启_02

示例如下:

cce容器集群 访问控制 容器和集群_重启_03

pod内的容器实现共享存储?

  • 引入数据卷,使用数据卷进行持久化存储

cce容器集群 访问控制 容器和集群_重启_04

4.pod镜像拉取策略(imagePullPolicy)

cce容器集群 访问控制 容器和集群_Pod_05

5.pod资源限制

  • 每个 Pod 都可以对其能使用的服务器上的计算资源设置限额。
  • Kubernetes 中可以设置限额 的计算资源有 CPU 与 Memory 两种,
  • 其中 CPU 的资源单位为 CPU 数量,是一个绝对值而非相对值;Memory 配额也是一个绝对值,它的单 位是内存字节数。

cce容器集群 访问控制 容器和集群_重启_06


请最少 0.25 个 CPU 以及 64MiB 内存,在运行过程中容器所能使 用的资源配额为 0.5 个 CPU 以及 128MiB 内存


 


6.pod重启策略(restartPolicy)


Pod 的重启策略包括 Always、OnFailure 和 Never,默认值是 Always



 




cce容器集群 访问控制 容器和集群_重启_07


7.pod状态

kubectl get pods

cce容器集群 访问控制 容器和集群_docker_08

8.pod健康检查

  • 容器检查:一般都是kubectl get pods,查看是否是Running状态,但不准确,比如java内存溢出,状态依旧是Running,但是已经不能提供服务了
  • pod健康检查:livenessProbe(存活检查)和readinessProbe(就绪检查)

livenessProbe(存活检查):如果检查失败,将杀死容器,根据pod的restartPolicy来操作

readinessProbe(就绪检查):如果检查失败,k8s会把pod从service endpoints 中剔除

cce容器集群 访问控制 容器和集群_Pod_09

文件示例如下:

cce容器集群 访问控制 容器和集群_cce容器集群 访问控制_10

9.pod调度,影响调度的4大因素

pod创建流程

cce容器集群 访问控制 容器和集群_重启_11


watch代表监控

------------------------------------------------------------------------------------------------------------------------------------------------------------------

影响pod调度的可能性如下:资源限制,节点选择器,节点亲和性,污点和污点容忍

9.1.资源限制和节点选择器

 

cce容器集群 访问控制 容器和集群_cce容器集群 访问控制_12

cce容器集群 访问控制 容器和集群_重启_13

#给node1节点打标签env_role=prod
kubectl label node node1 env_role=prod
#查看node的所有标签
kubectl get pods node1 --show-labels

cce容器集群 访问控制 容器和集群_cce容器集群 访问控制_14

9.2.节点亲和性

节点亲和性:硬亲和性,软亲和性

cce容器集群 访问控制 容器和集群_docker_15

9.3.污点和污点容忍

cce容器集群 访问控制 容器和集群_Pod_16

cce容器集群 访问控制 容器和集群_cce容器集群 访问控制_17

命令行如下:

#查看节点的污点情况
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)(五)