Kubernetes
一、基础知识
1. 概念和术语
2. Kubernetes特性
3. 集群组件
4. 抽象对象
5. 镜像加速下载
二、安装部署kubeadm
1. 基础环境准备
2. 安装runtime容器(Docker)
3. 安装runtime容器(Contained)
4. Containerd进阶使用
5. 部署kubernets集群
6. 部署calico网络组件
7. 部署NFS文件存储
8. 部署ingress-nginx代理
9. 部署helm包管理工具
10. 部署traefik代理
11. 部署dashboard管理面板(官方)
12. 部署kubesphere管理面板(推荐)
12. 部署metrics监控组件
13. 部署Prometheus监控
14. 部署elk日志收集
15. 部署Harbor私有镜像仓库
16. 部署minIO对象存储
17. 部署jenkins持续集成工具
三、kubectl命令
1. 命令格式
2.node操作常用命令
3. pod常用命令
4.控制器常用命令
5.service常用命令
6.存储常用命令
7.日常命令总结
8. kubectl常用命令
四、资源对象
1. K8S中的资源对象
2. yuml文件
3. Kuberbetes YAML 字段大全
4. 管理Namespace资源
5. 标签与标签选择器
6. Pod资源对象
7. Pod生命周期与探针
8. 资源需求与限制
9. Pod服务质量(优先级)
五、资源控制器
1. Pod控制器
2. ReplicaSet控制器
3. Deployment控制器
4. DaemonSet控制器
5. Job控制器
6. CronJob控制器
7. StatefulSet控制器
8. PDB中断预算
六、Service和Ingress
1. Service资源介绍
2. 服务发现
3. Service(ClusterIP)
4. Service(NodePort)
5. Service(LoadBalancer)
6. Service(ExternalName)
7. 自定义Endpoints
8. HeadlessService
9. Ingress资源
10. nginx-Ingress案例
七、Traefik
1. 知识点梳理
2. 简介
3. 部署与配置
4. 路由(IngressRoute)
5. 中间件(Middleware)
6. 服务(TraefikService)
7. 插件
8. traefikhub
9. 配置发现(Consul)
10. 配置发现(Etcd)
八、存储
1. 配置集合ConfigMap
6. downwardAPI存储卷
3. 临时存储emptyDir
2. 敏感信息Secret
5. 持久存储卷
4. 节点存储hostPath
7. 本地持久化存储localpv
九、rook
1. rook简介
2. ceph
3. rook部署
4. rbd块存储服务
5. cephfs共享文件存储
6. RGW对象存储服务
7. 维护rook存储
十、网络
1. 网络概述
2. 网络类型
3. flannel网络插件
4. 网络策略
5. 网络与策略实例
十一、安全
1. 安全上下文
2. 访问控制
3. 认证
4. 鉴权
5. 准入控制
6. 示例
十二、pod调度
1. 调度器概述
2. label标签调度
3. node亲和调度
4. pod亲和调度
5. 污点和容忍度
6. 固定节点调度
十三、系统扩展
1. 自定义资源类型(CRD)
2. 自定义控制器
十四、资源指标与HPA
1. 资源监控及资源指标
2. 监控组件安装
3. 资源指标及其应用
4. 自动弹性缩放
十五、helm
1. helm基础
2. helm安装
3. helm常用命令
4. HelmCharts
5. 自定义Charts
6. helm导出yaml文件
十六、k8s高可用部署
1. kubeadm高可用部署
2. 离线二进制部署k8s
3. 其他高可用部署方式
十七、日常维护
1. 修改节点pod个数上限
2. 集群证书过期更换
3. 更改证书有效期
4. k8s版本升级
5. 添加work节点
6. master节点启用pod调度
7. 集群以外节点控制k8s集群
8. 删除本地集群
9. 日常错误排查
10. 节点维护状态
11. kustomize多环境管理
12. ETCD节点故障修复
13. 集群hosts记录
14. 利用Velero对K8S集群备份还原与迁移
15. 解决K8s Namespace无法正常删除的问题
16. 删除含指定名称的所有资源
十八、k8s考题
1. 准备工作
2. 故障排除
3. 工作负载和调度
4. 服务和网络
5. 存储
6. 集群架构、安装和配置
本文档使用 MrDoc 发布
-
+
home page
3. node亲和调度
# 一、概述 1. 基于节点上的自定义标签和Pod对象上指定的标签选择器将pod调度至node节点 2. 定义节点亲和性规则时有两种类型的节点亲和性规则:硬亲和性(required)和软亲和性(preferred)。 - 硬亲和性是强制性规则,它是Pod调度时必须要满足的规则,而在不存在满足规则的节点时,Pod对象会被置为Pending状态。 - 软亲和性是一种柔性调度限制,它倾向于将Pod对象运行于某类特定的节点之上,而调度器也将尽量满足此需求,但在无法满足调度需求时它将退而求其次地选择一个不匹配规则的节点。 3. 定义节点亲和规则的关键点有两个,一是为node配置合乎需求的标签,另一个是为Pod对象定义合理的标签选择器,从而能够基于标签选择出符合期望的目标节点。 4. 在Pod资源基于节点亲和性规则调度至某节点之后,节点标签发生了改变而不再符合此节点亲和性规则时,它仅对新建的Pod对象生效。调度器不会将Pod对象从此节点上移出。 5. 键值运算关系 | In | label 的值在某个列表中 | | --- | --- | | NotIn | label 的值不在某个列表中 | | Gt | label 的值大于某个值 | | Lt | label 的值小于某个值 | | Exists | 某个 label 存在 | | DoesNotExist | 某个 label 不存在 | 6. requiredDuringSchedulingIgnoredDuringExecution字段用于定义节点硬亲和性,由一到多个nodeSelectorTerm定义的对象组成,彼此间为“逻辑或”的关系。 7. nodeSelectorTerm用于定义节点选择器条目,由一个或多个matchExpressions对象定义的匹配规则组成,多个规则彼此之间为“逻辑与”的关系。 # 二、示例 1. 使用节点硬亲和规则定义,将当前Pod对象调度至拥有zone标签且其值为foo的节点之上。 ![未命名图片.png](/media/202406/12.3.15283990_image1.png) - 处于Pending阶段,这是由于强制型的节点亲和限制场景中不存在能够满足匹配条件的节点所致 ![未命名图片.png](/media/202406/12.3.15283990_image2.png) - 为node2节点设置标签zone=foo,使其满足条件 ![未命名图片.png](/media/202406/12.3.15283990_image3.png) - pod节点成功调度至node2 ![未命名图片.png](/media/202406/12.3.15283990_image4.png) 2. 定义了调度拥有两个标签选择器的节点挑选条目,zone=foo且设置ssd标签,两个标签选择器彼此之间为“逻辑与”的关系。 ![未命名图片.png](/media/202406/12.3.15283990_image5.png) - 处于pending状态,由于当前node只有zone=foo标签,还未设置ssd标签 ![未命名图片.png](/media/202406/12.3.15283990_image6.png) - 给node2设置ssd标签后,成功调度至node2 ![未命名图片.png](/media/202406/12.3.15283990_image7.png) 3. 定义节点软亲和性以选择运行在拥有zone=foo和ssd标签(无论其值为何)的节点之上,其中zone=foo是更为重要的倾向性规则,它的权重为60,ssd标签就没有那么关键,它的权重为30。 ![未命名图片.png](/media/202406/12.3.15283990_image8.png) - 将node2原来的zone=foo标签修改为aaa<br />`# kubectl label nodes node2 zone='aaa' --overwrite` - apply配置清单后查看pod信息。即便没有zone=foo的node,依然能成功调度 ![未命名图片.png](/media/202406/12.3.15283990_image9.png)
Nathan
June 22, 2024, 12:46 p.m.
转发文档
Collection documents
Last
Next
手机扫码
Copy link
手机扫一扫转发分享
Copy link
Markdown文件
PDF文件
Docx文件
share
link
type
password
Update password