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
4. 自动弹性缩放
# 一、HPA 1. HPA作为Kubernetes<br />API资源和控制器实现,它基于采集到的资源指标数据来调整控制器的行为,控制器会定期调整ReplicaSets或Deployment控制器对象中的副本数,以使得观察到的平均CPU利用率与用户指定的目标相匹配。 2. HPA自身是一个控制循环(control loop)的实现,其周期由controller-manager的--horizontal-pod-autoscaler-sync-period选项来定义,默认为30秒。在每个周期内,controller-manager将根据每个HPA定义中指定的指标查询相应的资源利用率。controller-manager从资源指标API(针对每个Pod资源指标)或自定义指标API(针对所有其他指标)中获取指标数据。 3. HPA控制器可以通过两种不同的方式获取指标:Heapster和REST客户端接口。使用直接Heapster获取指标数据时,HPA直接通过API服务器的服务代理子资源向Heapster发起查询请求,因此,Heapster需要事先部署在群集上并在kube-system名称空间中运行。使用REST客户端接口获取指标时,需要事先部署好资源指标API及其API Server,必要时,还应该部署好自定义指标API及其相关的API Server。 4. HPA是Kubernetes<br />autoscalingAPI群组中的API资源,当前的稳定版本仅支持CPU自动缩放,它位于autoscaling/v1群组中。而测试版本包含对内存和自定义指标的扩展支持,测试版本位于API群组autoscaling/v2beta1之中。 # 二、HPA(v1)控制器 1. HPA也是标准的Kubernetes<br />API资源,其基于资源配置清单的管理方式同其他资源相同。它还有一个特别的“kubectl autoscale”命令用于快速创建HPA控制器 2. 示例 - 创建一个名为myapp-deploy的Deployment控制器 ![未命名图片.png](/media/202406/14.4.15284943_image1.png) - 创建一个同名的HPA控制器自动管控其Pod副本规模:<br />`# kubectl autoscale deployment myapp-deploy --min=2 --max=5 --cpu-percent=60` - 查看HPA控制器信息 ![未命名图片.png](/media/202406/14.4.15284943_image2.png) - 向myapp-svc的NodePort发起持续性的压力测试式访问请求,各Pod对象的CPU利用率将持续上升,直到超过目标利用率边界的60%,而后触发增加Pod对象副本数量。 # 三、HPA(v2)控制器 1. HPA(v2)控制器支持基于核心指标CPU和内存资源以及基于任意自定义指标资源占用状态实现应用规模的自动弹性伸缩,它从metrics-server中请求查看核心指标,从k8s-prometheus-adapter一类的自定义API中获取自定义指标数据。 ![未命名图片.png](/media/202406/14.4.15284943_image3.png) 2. spec字段主要嵌套使用如下几个字段。 | minReplicas | integer | 自动伸缩可缩减至的Pod副本数下限 | | --- | --- | --- | | maxReplicas | integer | 自动伸缩可扩展至的Pod副本数上限,其值不能低于min-Replicas属性值 | | scaleTargetRef | object | 要缩放的目标资源,以及应该收集指标数据并更改其副本数量的Pod对象,引用目标对象时,主要会用到三个嵌套属性——apiVersion、kind和name | | metrics | object | 用于计算所需Pod副本数量的指标列表,每个指标单独计算其所需的副本数,将所有指标计算结果中的最大值作为最终采用的副本数量。 | 3. metrics字段值是对象列表,它由要引用的各指标的数据源及其类型构成的对象组成。 | external | 用于引用非附属于任何对象的全局指标,甚至可以基于集群之外的组件的指标数据,如消息队列的长度等 | | --- | --- | | object | 引用描述集群中某单一对象的特定指标,如Ingress对象上的hits-per-second等 | | pods | 引用当前被弹性伸缩的Pod对象的特定指标,如transactions-processed-per-second等 | | resource | 引用资源指标,即当前被弹性伸缩的Pod对象中容器的requests和limits中定义的指标(CPU或内存资源) | | type | 表示指标源的类型,其值可为Objects、Pods或Resource |
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