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
2. ceph
# 一、ceph基本概念 ## 1. 功能 - Ceph是一个可靠、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备和文件系统服务。 ## 2. 优点 - 高性能:摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高,能够实现各类负载的副本放置规则,能够支持上千个存储节点的规模,支持TB到PB级的数据。 - 高可用性:副本数可以灵活控制。支持故障域分隔,数据强一致性。多种故障场景自动进行修复自愈。没有单点故障,自动管理,自动扩充副本数。 - 高可扩展性:去中心化。扩展灵活。随着节点增加而线性增长。 - 特性丰富:支持三种存储接口:块存储(得到的是硬盘)、文件存储(目录)、对象存储(对接的是一个挂载的目录,后端会把数据打散,采用键值对形式存储)。支持自定义接口,支持多种语言驱动。 ## 3. Ceph核心组件 ![1647888-20190617091304152-781044244.png](/media/202406/9.2.16859746_image1.png) - Monitors(管理服务):监视器,维护集群状态的多种映射,同时提供认证和日志记录服务,包括有关monitor 节点端到端的信息,其中包括 Ceph 集群ID,监控主机名和IP以及端口。并且存储当前版本信息以及最新更改信息,通过 "ceph mon dump"查看 monitor map。 - MDS(Metadata Server):Ceph 元数据,主要保存的是Ceph文件系统的元数据。注意:ceph的块存储和ceph对象存储都不需要MDS。 - OSD:即对象存储守护程序,但是它并非针对对象存储。是物理磁盘驱动器,将数据以对象的形式存储到集群中的每个节点的物理磁盘上。OSD负责存储数据、处理数据复制、恢复、回(Backfilling)、再平衡。完成存储数据的工作绝大多数是由 OSD daemon 进程实现。在构建 Ceph OSD的时候,建议采用SSD 磁盘以及xfs文件系统来格式化分区。此外OSD还对其它OSD进行心跳检测,检测结果汇报给Monitor - RADOS:Reliable Autonomic Distributed Object Store。RADOS是ceph存储集群的基础。在ceph中,所有数据都以对象的形式存储,并且无论什么数据类型,RADOS对象存储都将负责保存这些对象。RADOS层可以确保数据始终保持一致。 - librados:librados库,为应用程度提供访问接口。同时也为块存储、对象存储、文件系统提供原生的接口。 - RADOSGW:网关接口,提供对象存储服务。它使用librgw和librados来实现允许应用程序与Ceph对象存储建立连接。并且提供S3 和 Swift 兼容的RESTful API接口。 - RBD:块设备,它能够自动精简配置并可调整大小,而且将数据分散存储在多个OSD上。 - CephFS:Ceph文件系统,与POSIX兼容的文件系统,基于librados封装原生接口。 ## 4. Ceph 数据存储过程 ![11706687-69984801fd28704b.png](/media/202406/9.2.16859746_image2.png) - File : 用户需要存储或者访问的文件。当上层应用向RADOS存入size很大的file时,需要将file切分成统一大小的一系列object(最后一个的大小可以不同)进行存储。 - Object : 无论使用哪种存储方式(对象、块、文件系统),存储的数据都会被切分成Objects。每个对象都会有一个唯一的OID,由ino(文件的File ID,在全局唯一标识每一个文件)与ono(分片的编号,比如:一个文件FileID为A,它被切成了两个对象,那么这两个文件的oid则为A0与A1)生成。 - pool是ceph存储数据时的逻辑分区,它起到namespace的作用。其他分布式存储系统。每个pool包含一定数量的PG,PG里的对象被映射到不同的OSD上,因此pool是分布到整个集群的。除了隔离数据,我们也可以分别对不同的POOL设置不同的优化策略,比如副本数、数据清洗次数、数据块及对象大小等。 - PG(Placement Group):对object的存储进行组织和位置映射。PG和object之间是“一对多”映射关系。PG和OSD之间是“多对多”映射关系。 - OSD: 即object storage device,OSD的数量事实上也关系到系统的数据分布均匀性,因此其数量不应太少。 ## 5. Ceph中的寻址映射过程 - File -> object映射 - Object -> PG映射,hash(oid) & mask -> pgid(哈希算法) - PG -> OSD映射,CRUSH算法 ## 6. RADOS分布式存储相较于传统分布式存储的优势 - 将文件映射到object后,利用Cluster Map 通过CRUSH 计算而不是查找表方式定位文件数据存储到存储设备的具体位置。优化了传统文件到块的映射和Block MAp的管理。 - RADOS充分利用OSD的智能特点,将部分任务授权给OSD,最大程度地实现可扩展 ## 7. cephfs与ceph rbd对比 | | CephFS 文件存储 | Ceph RBD块存储 | | --- | --- | --- | | 优点: | <br />1. 读取延迟低,I/O带宽表现良好,尤其是block size较大一些的文件<br />2. 灵活度高,支持k8s的所有接入模式<br /> | 1. 读取延迟低,I/O带宽表现良好,尤其是block size较大一些的文件 1. I/O带宽表现良好<br />2. 灵活度高,支持k8s的所有接入模式 2. 读写延迟都很低<br />3. 支持镜像快照,镜像转储<br />4. 支持k8s动态供给 | | 缺点: | 写入延迟相对较高且延迟时间不稳定,不支持动态供给 | 不支持多节点挂载 | | 适用场景: | 适用于要求灵活度高(支持k8s多节点挂载特性),对I/O延迟不甚敏感的文件读写操作,以及非海量的小文件存储支持.例如作为常用的应用/中间件挂载存储后端. | 对I/O带宽和延迟要求都较高,且无多个节点同时读写数据需求的应用,例如数据库 | # 二、部署ceph集群 • github地址:[https://github.com/luckman666/deploy_ceph_cluster_luminous_docker](https://github.com/luckman666/deploy_ceph_cluster_luminous_docker) ## 1. 环境准备 | 主机名 | IP | 配置 | 磁盘空间 | | --- | --- | --- | --- | | ceph1 | 192.168.10.131 | 4C4G | sda(50G,安装系统)<br />sdb(50G,不格式化)<br /> sdc(50G,不格式化) | | ceph2 | 192.168.10.132 | 4C4G | sda(50G,安装系统) <br /> sdb(50G,不格式化)<br /> sdc(50G,不格式化) | | ceph3 | 192.168.10.132 | 4C4G | sda(50G,安装系统) <br /> sdb(50G,不格式化)<br /> sdc(50G,不格式化) | ## 2. clone项目脚本,赋予执行权限 `# git clone https://github.com/luckman666/deploy_ceph_cluster_luminous_docker.git && chmod -R 755 deploy_ceph_cluster_luminous_docker` ## 3. 配置base.config基本信息 ![未命名图片.png](/media/202406/9.2.16859746_image3.png)<br />![未命名图片.png](/media/202406/9.2.16859746_image4.png) ## 4. 执行安装脚本 `# ./ceph_luminous.sh` ## 5. 查看安装日志信息 `# tail -f setup.log` ## 6. 验证 `# ceph -s` # 三、k8s连接ceph ## 1. k8s所有节点安装ceph客户端 - 添加阿里云repo源 ```bash # vim /etc/yum.repos.d/ceph.repo [ceph-nautilus] name=ceph-luminous baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/ gpgcheck=0 [ceph-noarch] name=cephnoarch baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/ gpgcheck=0 ``` ## 2. 查看可用版本,与ceph服务端版本保持一致 `# yum list ceph --showduplicates | sort -r` ## 3. 安装指定版本ceph `# yum install -y ceph-common-14.2.6` ## 4. 添加配置文件,验证连接 - ceph进入到/data/ceph/etc目录将 ceph.client.admin.keyring和ceph.conf两个配置文件传送到ceph客户端服务器的/etc/ceph目录下 `# scp /data/ceph/etc/ceph.client.admin.keyring 192.168.10.101:/etc/ceph` <br /> `# scp /data/ceph/etc/ceph.conf 192.168.10.101:/etc/ceph` - k8s查看ceph信息 `# ceph -s`
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