尼恩技术圣经+高并发系列,帮你 实现技术自由,完成职业升级, 薪酬猛涨!
40岁老架构师尼恩 温馨提示:
现在拿到offer超级难,甚至连面试电话,一个都搞不到。
尼恩的技术社群中(50+),很多小伙伴凭借 “左手云原生+右手大数据 +SpringCloud Alibaba 微服务“三大绝活,拿到了offer,并且是非常优质的offer,据说年终奖都足足18个月 ,非常令人羡慕。
问题是:“左手云原生+右手大数据 +SpringCloud Alibaba 微服务“ 内容非常多,实操的环境非常复杂,底层原理很深。
饭要一口一口的吃,不能急。在这里,尼恩从架构师视角出发,左手云原生+右手大数据 +SpringCloud Alibaba 微服务 核心原理做一个宏观的介绍。
尼恩 高并发三部曲
免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备
免费赠送 经典图书:《Java高并发核心编程(卷1)加强版》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领
免费赠送 经典图书:《Java高并发核心编程(卷2)加强版》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领
免费赠送 经典图书:《Java高并发核心编程(卷3)加强版》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领
免费赠送 经典图书:《尼恩Java面试宝典》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领
免费赠送 资源宝库: Java 必备 百度网盘资源大合集 价值>10000元 加尼恩领取
尼恩 技术圣经 系列
由于内容确实太多, 所以写多个pdf 电子书:
(1) 《 Docker 学习圣经 》PDF (V1已经完成)
(2) 《 SpringCloud Alibaba 微服务 学习圣经 》PDF (V2已经完成)
(3) 《 K8S 学习圣经 》PDF (V1已经完成)
(4) 《 flink + hbase 学习圣经 》PDF (planning ......)
以上学习圣经,并且后续会持续升级,从V1版本一直迭代发布。 就像咱们的《尼恩 Java 面试宝典》一样, 已经迭代到V60+啦。
40岁老架构师尼恩的掏心窝: 通过一系列的学习圣经,带大家穿透“左手云原生+右手大数据 +SpringCloud Alibaba 微服务“ ,实现技术 自由 ,走向颠覆人生,让大家不迷路。
以上学习圣经的 基础知识是 尼恩的 高并发三部曲,建议在看 学习圣经之前,一定把尼恩的 Java高并发三部曲过一遍,切记,切记。
(1) 《 Docker 学习圣经 》PDF
Docker圣经:大白话说Docker底层原理,6W字 实现Docker自由
免费领取方式:请在《技术自由圈》公众号发送“领电子书”
《 Docker 学习圣经 》封面
《 Docker 学习圣经 》目录
- 说在前面:
- 《 Docker 学习圣经 》PDF 封面
- Docker基础
- Docker 巨大的价值
- Docker 的本质:
- Docker的广泛应用场景:
- Docker的在DevOps(开发、运维)场景的应用
- Docker 的历史
- Docker 的入门知识
- Docker Engine
- Docker Platform
- 到底什么是docker:
- 什么是容器?
- docker基本组成
- Docker 与虚拟机有何区别
- docker和kvm都是虚拟化技术,它们的主要差别:
- 与传统VM特性对比:
- docker 与操作系统比较
- Docker 的安装
- 环境准备
- docker安装的三种方式
- 方式一 :离线安装docker
- 方式二 :在线安装docker
- 方式三 :用现成的 (大大的省事)
- Docker Container概述
- 什么是Container 容器
- 容器与镜像的关系
- Docker本地容器相关的操作
- Container相关命令
- 创建容器
- 查看活跃容器 docker ps
- 查看全部容器
- 停止容器
- 删除容器
- 查看容器的进程信息
- 如何查找容器名称?
- docker最为常用的几个命令
- docker的守护进程查看
- docker 镜像查看
- docker 容器查看
- Docker Registry配置和查看
- null
- Docker容器进入的4种方式
- 方式1:使用docker attach进入Docker容器
- 方式2:使用SSH进入Docker容器
- 方式3:使用nsenter进入Docker容器
- 1 什么是nsenter?
- 2、nsenter安装
- 3、nsenter的 使用
- docker隔离应用应用涉及到的六大名称空间
- 1、pid 命名空间(进程ID)
- 2、net 命名空间(网络)
- 3、ipc 命名空间(进程间通信)
- 4、mnt 命名空间(挂载文件系统)
- 5、UTS 命名空间(主机名/域名)
- 6、user 命名空间(用户)
- nsenter查看docker的连接
- 方式4:使用docker exec进入Docker容器
- 在容器内部和宿主机中查看容器中的进程信息
- 查看其父进程信息
- 查看子进程信息
- 总计三个命令
- Docker本地镜像载入与载出
- 两种办法
- 拉取镜像
- 保存镜像
- 载入镜像
- 打个tag
- 保存镜像
- 载入镜像
- Harbor私有镜像仓库
- Harbor安装
- 1 下载 Harbor的压缩包;
- 2 上传压缩包到虚拟机,并解压;
- 3 创建harbor访问域名证书
- 4 配置harbor
- 5 ./prepare 准备
- 6 ./install.sh
- 访问
- 7 停止或者重启 Harbor
- 修改docker配置文件,使docker支持harbor
- Harbor使用
- 什么是含有SAN的证书
- SSL证书格式
- 生成含有SAN的证书
- 1.生成CA证书私钥。
- 2、生成CA证书
- 3、生成服务器证书
- 生成证书签名请求(CSR)
- 4、使用该v3.ext文件为Harbor主机生成证书cdh1.crt
- 5、转换cdh1.crt为cdh1.cert,供Docker使用
- 6 运行prepare脚本以启用HTTPS
- 7 运行install.sh脚本来启动harbor
- 证书复制到 docker 并且启动后登录
- hostname push失败
- 以下为解决方法:
- 推送镜像到Harber
- Docker 推送命令
- 需要生成证书
- 推送成功
- Harbor安装
- Docker Image概述
- 什么是Image
- Image的获取
- 如何做一个自己的Base Image
- 构建自己的Docker镜像
- Dockerfile语法
- 镜像发布
- Docker进程与宿主机进程的对应关系
-
- Linux通过进程ID查看文件路径
- 容器的PID namespace(命名空间)
- 找出容器ID
- 查看容器信息
- 进入相应目录
- 查看容器目录里的进程号
- 启动一个进程
- 查看容器目录里的进程号
- docker daemon (docker守护进程)
- Docker文件目录和容器内部操作
-
- Docker Daemon 底层原理
- 演进:Docker守护进程启动
- OCI(Open Container Initiative)
- image spec
- runtime spec
- Docker CLI客户端工具
- Docker Daemon守护进程 (dockerd)
- Containerd
- docker-shim 容器进程
- runc (OCI reference implementation)
- Docker、containerd, containerd-shim和runc之间的关系
- 通过runc来启动一个container的过程
- 查看进程信息
- 查看父进程信息
- 查看进程树
- CRI 运行时接口
- Docker的技术底座:
- 底层技术支持
- UnionFS 联合文件系统
- 什么是镜像
- UnionFS 与AUFS
- 什么是 Docker 镜像分层机制?
- Docker Image 如何而来呢?
- Namespaces
- 进程隔离
- 网络隔离
- Libnetwork
- Chroot
- CGroups物理资源限制分组
- 总之:dockers=LXC+AUFS
- 深入解读docker网络
- docker网络理论部分
- Docker网络模式
- bridge模式
- host模式
- Container网络模式
- none模式
- overlay 网络模式
- macvlan 网络模式
- 网络实操
- bridge网络
- docker0详解
- 多容器之间通讯
- link容器
- 新建bridge网络
- 把一个运行中容器连接到lagou-bridge网络
- none网络
- host网络
- 网络命令汇总
- 查看网络
- 创建网络
- 网络删除
- 查看网络详细信息
- 使用网络
- 网络连接与断开
- Docker-Compose 简介
- Docker-Compose 用来实现Docker容器快速编排
- Docker-compose模板文件简介
- eg:
- Docker-Compose 的编排处出来的部署架构
- Docker-Compose 用来实现Docker容器快速编排
- docker-compose 快速编排
- Docker-Compose 的编排结构
- YAML模板文件语法
- docker-compose.yml 语法说明
- 1、image
- 2、build
- 3、command
- 4、links
- 5、external_links
- 6、ports
- 7、expose
- 8、volumes
- 9、volunes_from
- 10、environment
- 11、env_file
- 12、extends
- 13、net
- 14、pid
- 15、dns
- 16、cap_add,cap_drop
- 17、dns_search
- 18、healthcheck
- 19、depends_on
- 20、deploy
- docker-compose.yml实例
- YAML 文件格式 及 编写注意事项
- Docker-compose常用命令
- 1、Docker-Compose
- 2、docker-compose up
- 3、docker-compose ps
- 4、docker-compose stop
- 5、docker-compose -h
- 6、docker-compose down
- 7、docker-compose logs
- 8、docker-compose build
- 9、docker-compose pull
- 10、docker-compose restart
- 11、docker-compose rm
- 12、docker-compose start
- 13、docker-compose run
- 14、docker-compose scale
- 15、docker-compose pause
- 16、docker-compose kill
- 17、dokcer-compose config
- 18、docker-compose create
- 19、docker-compose exec
- 20、docker-compose port
- 21、docker-compose push
- 22、docker-compose unpause
- 23、docker-compose version
- docker-compose logs 查看日志
- 全屏滚到底部结束
- 全屏滚到底部并继续持续输出日志
- 全屏滚到底部并继续持续输出日志并显示时间戳
- 全屏滚到底部显示最后N行并继续持续输出日志并显示时间戳
- 说在后面
- 参考资料
(2)《 SpringCloud Alibaba 微服务 学习圣经 》PDF
SpringCloud Alibaba 学习圣经,10万字 实现 SpringCloud 自由
免费领取方式:请在《技术自由圈》公众号发送“领电子书”
《 SpringCloud Alibaba 微服务 学习圣经 》封面
《 SpringCloud Alibaba 微服务 学习圣经 》目录
- 40岁老架构师尼恩的掏心窝:
- 《 SpringCloud Alibaba 微服务 学习圣经 》PDF 封面
- 《 SpringCloud Alibaba 微服务 学习圣经 》目录
- 当前版本V1
- 一键导入 SpringCloud 开发环境 (地表最强)
- 环境准备
- 一键导入OR自己折腾
- 随书源码 crazy-springcloud 脚手架涉以及基础中间件
- 微服务 分布式系统的架构12次演进
- 微服务 分布式系统的几个基础概念
- 架构演进1:单机架构
- 架构演进2:引入缓存架构
- 架构演进3:接入层引入反向代理实现负载均衡
- 架构演进4:数据库读写分离
- 架构演进5:数据库按业务分库
- 架构演进6:使用LVS或F5接入层负载均衡
- 架构演进7:通过DNS轮询实现机房间的负载均衡
- 架构演进8:引入NoSQL数据库和搜索引擎等技术
- 架构演进9:大应用拆分为微服务
- 架构演进10:引入企业服务总线ESB对微服务进行编排
- 架构演进11:引入容器化技术实现动态扩容和缩容
- 架构演进12:以云平台承载系统
- 架构演进的涉及的核心知识
- SpringCloud netflix 入门
- SpringCloud 开发脚手架
- 启动Eureka Server 注册中心
- 启动Config 配置中心
- config-server 服务
- 微服务入门案例
- uaa-provider 微服务提供者
- uaa-provider 实现一个Rest接口
- uaa-provider的运行结果
- demo-provider 完成RPC远程调用
- REST服务的本地代理接口
- 通过REST服务的本地代理接口,进行RPC调用
- 启动demo-provider
- 通过swagger 执行RPC操作
- SpringCloud Eureka 服务注册
- SpringCloud Config 统一配置
- Nacos 服务注册+ 统一配置
- 1、Nacos 优势
- 1.1 与eureka对比
- 1.2 与springcloud config 对比
- 三大优势:
- 2、Spring Cloud Alibaba 套件
- Spring Cloud Alibaba 套件和Spring Cloud Netflix套件类比
- 3、Nacos 的架构和安装
- 3.1 Nacos 的架构
- 3.2 Nacos Server 的下载和安装
- 4、Nacos Server 的运行
- 4.1两种模式
- 4.2 standalone 模式
- 4.3 cluster 模式
- cluster 模式需要依赖 MySQL,然后改两个配置文件:
- 4.4 Nacos Server 的配置数据是存在哪里呢?
- 5、实战1:使用Nacos作为注册中心
- 实战的工程
- 5.1 如何使用Nacos Client组件
- 首先引入 Spring Cloud Alibaba 的 BOM
- 5.2 演示的模块结构
- 5.3 provider 微服务
- step1:在 provider 和 consumer 的 pom 添加以下依赖:
- step2:启动类
- step3:服务提供者的 Rest 服务接口
- step4:配置文件
- step5:启动之后,通过swagger UI访问:
- 5.4 Consumer 微服务演示RPC远程调用
- 消费者的controller 类
- 消费者配置文件
- 通过swagger UI访问消费者:
- 5.5涉及到的演示地址:
- 5.6 Nacos Console
- 6、实战2:使用Nacos作为配置中心
- 6.1 基本概念
- 1)Profile
- 2)Data ID
- 3)Group
- 6.2 通过Nacos的console 去增加配置
- 1)nacos-config-demo-dev.yaml
- 2)nacos-config-demo-sit.yaml
- 6.3 使用Nacos Config Client组件
- 1)加载nacos config 的客户端依赖:
- 启动类
- 控制类:
- 2)bootstrap配置文件
- 6.4 测试结果
- 6.4 可以端如何与服务端的配置文件相互对应
- 6.1 基本概念
- 7、配置的隔离
- 8、nacos集群搭建
- IP规划
- 集群的使用
- 1、Nacos 优势
- Nacos 高可用架构与实操
- 客户端高可用
- 客户端高可用的方式一:配置多个nacos-server
- Nacos Java Client通用参数
- 客户端高可用的方式二:本地缓存文件 Failover 机制
- 本地缓存文件 Failover 机制
- 客户端Naming通用参数
- Nacos两种健康检查模式
- agent上报模式
- 服务端主动检测
- 临时实例
- 注册实例支持ephemeral字段
- 临时实例和持久化实例区别
- Nacos Server运行模式
- Nacos CP/AP模式设定
- Nacos CP/AP模式切换
- AP/CP的配套一致性协议
- AP模式下的distro 协议
- CP模式下的raft协议
- 集群内部的特殊的心跳同步服务
- 集群部署模式高可用
- 节点数量
- 多可用区部署
- 部署模式
- 高可用nacos的部署架构
- 高可用nacos的部署实操
- 总结
- 客户端高可用
- SpringCloud Feign 实现RPC 远程调用
- SpringCloud + Dubbo 实现RPC 远程调用
- 大背景:全链路异步化的大趋势来了
- SpringCloud + Dubbo 完成 RPC 异步
- Dubbo3应用的宏观架构
- Dubbo3 应用架构的核心组件
- SpringBoot整合Dubbo3.0基础准备
- SpringCloud+Nacos+Dubbo3.0
- 版本说明
- 项目结构介绍
- 1、dubbo的依赖的坐标
- 2、 注册中心的依赖的坐标
- SpringBoot整合Dubbo3.0大致步骤
- 模块结构
- Dubbo微服务注册发现的相关配置
- 命名空间隔离
- 微服务yml配置
- common-service 模块
- 服务提供者实操:dubbo-provider 服务
- pom依赖
- 服务实现类
- dubbo和Feign的一个不同
- Provider的Dubbo+Nacos配置文件
- 启动类 加上@EnableDubbo 注解
- 启动、体验Provider
- 在Nacos查看Dubbo服务的注册情况
- 服务消费者实操:dubbo-consumer 服务
- consumer模块
- 消费者实现类
- 消费者Dubbo+Nacos配置文件
- 启动类 加上@EnableDubbo 注解
- 启动、体验 Consumer
- 在Nacos查看Dubbo服务的注册情况
- Feign+Dubbo性能的对比测试
- Dubbo比Feign高10倍以上的本质
- Dubbo 与 SpringCloud 的通信 Openfeign的区别
- 1、协议支持方面
- 2、通信性能方面
- 3、线程模型方面
- SpringCloud + Dubbo RPC 的集成价值
- hystrix 服务保护
- Sentinel 服务保护
- sentinel 基本概念
- 1、什么是Sentinel:
- Sentinel 具有以下特征:
- Sentinel主要特性:
- Sentinel 的使用
- Sentinel中的管理控制台
- 1 获取 Sentinel 控制台
- 2 sentinel服务启动
- 客户端能接入控制台
- Sentinel与Hystrix的区别
- 2、使用 Sentinel 来进行熔断与限流
- 1)定义资源
- 资源注解@SentinelResource
- @SentinelResource 注解
- fallback 函数签名和位置要求:
- defaultFallback 函数签名要求:
- 2)定义规则
- 1)定义资源
- 3、sentinel 熔断降级
- 1)什么是熔断降级
- 2)熔断降级规则
- 3)几种降级策略
- 4)熔断降级代码实现
- 5)控制台降级规则
- 6)与Hystrix的熔断对比:
- 4、Sentinel 流控(限流)
- 基本的参数
- 流控的几种 strategy:
- 4.1 直接失败模式
- 使用API进行资源定义
- 代码限流规则
- 网页限流规则配置
- 测试
- 4.2 关联模式
- 使用注解进行资源定义
- 代码配置关联限流规则
- 网页限流规则配置
- 测试
- 4.3 Warm up(预热)模式
- 使用注解定义资源
- 代码限流规则
- 网页限流规则配置
- 通过jmeter进行测试
- 4.4 排队等待模式
- 示例
- 使用注解定义资源
- 代码限流规则
- 网页限流规则配置
- 通过jmeter进行测试
- 4.5 热点规则 (ParamFlowRule)
- 自定义资源
- 限流规则代码:
- 网页限流规则配置
- 5、Sentinel 系统保护
- 系统保护的目的
- 系统保护规则的应用
- 网页限流规则配置
- 6、黑白名单规则
- 访问控制规则 (AuthorityRule)
- 7、如何定义资源
- 方式一:主流框架的默认适配
- 方式二:抛出异常的方式定义资源
- 方式三:返回布尔值方式定义资源
- 方式四:注解方式定义资源
- 方式五:异步调用支持
- 8、核心组件
- Resource
- Context
- Context的创建与销毁
- Entry
- DefaultNode
- StatisticNode
- 9、插槽Slot
- NodeSelectorSlot
- 调用链树
- 构造树干
- 创建context
- 创建Entry
- 退出Entry
- 构造叶子节点
- 保存子节点
- ClusterBuilderSlot
- StatistcSlot
- SystemSlot
- AuthoritySlot
- FlowSlot
- DegradeSlot
- DefaultProcessorSlotChain
- slot总结
- 10、sentinel滑动窗口实现原理
- 1)基本原理
- 2)sentinel使用滑动窗口都统计啥
- 3)滑动窗口源码实现
- 3.1)MetricBucket
- 3.2)WindowWrap
- 3.3)LeapArray
- Zuul 微服务网关
- Webflux 响应式编程
- WebFlux 学习前言
- WebFlux 增删改查完整实战 demo
- Dao层 (又称 repository 层)
- entity(又称 PO对象)
- Dao 实现类
- Service服务层
- Controller控制层
- Mono
- Flux
- 使用配置模式进行WebFlux 接口开发
- 处理器类 Handler
- 路由配置
- WebFlux集成Swagger
- maven依赖
- swagger 配置
- WebFlux 测试
- 配置模式的 WebFlux Rest接口测试
- 注解模式的WebFlux Rest接口测试
- swagger 增加界面
- 配置大全
- 静态资源配置
- WebFluxSecurity配置
- WebSession配置
- 文件上传配置
- WebFlux 执行流程
- WebFlux学习提示
- Spring Cloud Gateway 微服务网关
- 1、SpringCloud Gateway 简介
- 1.1 本文姊妹篇 《Flux 和 Mono 、reactor实战 (史上最全)》
- 1.2 SpringCloud Gateway 特征
- 1.3 SpringCloud Gateway和架构
- 1)SpringCloud Zuul的IO模型
- 2)Webflux 服务器
- 3)Spring Cloud Gateway的处理流程
- 2、路由配置方式
- 2.1 基础URI路由配置方式
- 2.2 基于代码的路由配置方式
- 2.3 和注册中心相结合的路由配置方式
- 3、路由 匹配规则
- 说明:
- 3.1 Predicate 断言条件(转发规则)介绍
- 1)通过请求参数匹配
- 2)通过 Header 属性匹配
- 3)通过 Cookie 匹配
- 4)通过 Host 匹配
- 5)通过请求方式匹配
- 6)通过请求路径匹配
- 7)通过请求 ip 地址进行匹配
- 8)组合使用
- 3.2 过滤器规则(Filter)
- 过滤器规则(Filter)
- PrefixPath
- RedirectTo
- RemoveRequestHeader
- RemoveResponseHeader
- RemoveRequestParameter
- RewritePath
- SetPath
- SetRequestHeader
- SetStatus
- StripPrefix
- RequestSize
- Default-filters
- 3.3 通过代码进行配置
- 3.2 实现熔断降级
- 4、高级配置
- 4.1 分布式限流
- 4.2 健康检查配置
- maven依赖
- 配置文件
- 4.3 统一配置跨域请求:
- 5、整合Nacos
- maven依赖
- 服务发现配置:从Nacos获取微服务提供者清单
- nacos实现动态配置
- 服务发现路由predicates和filters的自定义定义
- 为注册中心路由配置断言和过滤器
- 6、整合Swagger聚合微服务系统API文档
- maven依赖
- 配置文件
- 效果:
- 7、Gatway 网关的过滤器开发
- 7.1 过滤器的执行次序
- 7.2定义全局过滤器
- 7.3定义局部过滤器
- 8、整合Sentinel完成流控和降级
- maven依赖
- 配置文件
- 限流规则通用配置
- 限流规则设置
- 网关限流参数
- 1、SpringCloud Gateway 简介
- SpringBoot Admin 进行微服务实例的监控
- 使用SpringBoot Admin 进行日志的记录
- 1、SpringBoot Admin 简介
- 2、使用 SpringBoot Admin 监控服务
- 2.1 导入依赖
- 2.2 配置yml
- 2.3 集成spring security
- 2.4 启动器类
- 2.5、测试
- 3、actuator 启用和暴露端点
- 3.1 启用端点
- 3.2 暴露端点
- 4、微服务Provider改造
- 4.1 导入依赖
- 4.2 配置yml
- 使用context-path
- 加上spring security密码
- 5、admin实现在线日志查看
- 5.1、添加jar包
- 5.2 在application.yml平级文件夹中添加logback-spring.xml配置文件
- 5.3 log.path 如何使用环境变量呢?
- 5.4 actuator的配置
- 测试结果
- 1.不暴露端点 测试
- 2.正常情况
- 6、admin与Nacos(或Eureka)结合的好处
- ELK日志平台(elasticsearch +logstash+kibana)原理和实操
- ELK的关系
- ELK优点
- 简单的ELK日志平台
- ELK改进之引入Filebeat
- ELK的应用场景
- ELK的不足
- es的资源占用
- Elasticsearch概述
- logstash概述
- logstash作用:
- logstash的架构:
- Input(输入):
- Filter(过滤器)
- Output(输出):
- Logstash的角色与不足
- filebeat介绍
- filebeat和beats的关系
- Filebeat是如何工作的
- Filebeat下载页面
- Filebeat文件夹结构
- Filebeat启动命令
- 配置inputs
- Log input
- 配置项
- 管理多行消息
- 配置Logstash output
- 一键安装 es+logstash+ kibana
- 对应的镜像版本
- docker编码文件
- 访问kibana
- 读取filebeat-输出到es集群
- 在kibana显示的效果
- 使用filebeat发送日志
- 制作filebeat镜像
- 制作基础的unbantu镜像
- 推送镜像到dockerhub
- 制作filebeat镜像
- dockerfile
- 推送镜像到dockerhub
- example-application微服务的filebeat配置:
- filebeat.yml的参考配置:
- input.yml配置:
- 修改dockerfile
- 一键发布
- 启动之后
- message-dispatcher微服务的日志
- 查看日志索引
- logstash 详解
- stash第一个事件
- Logstash的核心流程的三个环节
- logstash数值类型
- logstash 条件判断
- logstash 比较运算符
- 数据输入环节
- stdin
- file
- syslogs
- beats
- kafka
- stash第一个事件
- 数据处理环节
- grok解析文本并构造
- date日期解析
- mutate字段转换
- covert类型转换
- split
- merge
- rename
- remove_field:移除字段
- join
- geoip
- ruby
- urldecode
- kv
- useragent
- 数据输出
- stdout
- file
- kafka
- elasticseach
- Kibana查看应用日志
- 1 查看应用日志
- 2 如何搜索日志
- 3 如何查看指定时间的应用日志
- 4 如何定位错误日志
- 5 如何展开显示日志
- es的安全认证
- 配置 elk的ElastAlert 预警插件
- ELK的关系
- Prometheus+Grafana 检测预警
- 什么是性能可观测
- 系统监控的核心指标
- 系统性能指标
- 资源性能指标
- 系统监控的核心指标
- 什么是prometheus
- prometheus的运行原理
- prometheus主要特点
- 什么是 Grafana
- Prometheus的体系结构
- Prometheus+Grafana分层架构
- Promcthcus体系涉及的组件
- 如何收集度量值
- 指标类型
- 计数器
- 仪表盘
- 直方图
- Summary
- 指标摘要及聚合
- 指标摘要
- 指标聚合
- 一键安装 prometheus
- bridge网络管理
- 创建库
- docker编排文件
- 一键安装 prometheus的脚本
- 进入 prometheus
- 进入 grafana
- Prometheus+Grafana监控SpringBoot项目JVM信息
- SpringBoot项目配置JVM采集
- Prometheus配置
- 配置grafana监控Linux系统
- 使用 Exporter 收集指标
- inux直接安装node_exporter
- 使用Docker容器安装node_exporter
- 创建一个任务定时扫描暴露的指标信息
- 创建仪表盘grafna
- 导入Dashboard
- 选择数据源为Prometheus
- 配置grafana监控SpringBoot应用
- 主要步骤
- 找jvm的 dashboard
- JVM Quarkus 面板
- Prometheus数据模型
- time-series 时间序列值
- Sample样本值
- metrics name指标名称
- label标签
- Notation(符号)
- TSDB时序数据库
- 度量指标类型
- Counter(计数器)类型
- Gauge(计量器、测量器)
- Histogram(柱状图、直方图)
- Summary
- Summary 和 Histogram 的区分
- 学习 PromQL
- 数据模型
- PromQL 入门
- HTTP API
- 告警和通知
- 配置告警规则
- 使用 Alertmanager 发送告警通知
- 服务发现
- 为什么需要服务发现
- prometheus目前支持的服务发现类型
- 基于文件的服务发现方式
- file_sd_configs
- 基于consul 的服务发现
- 什么是基于consul的服务发现
- Prometheus配置
- 基于eureka的服务发现
- eureka 客户端暴露出 prometheus 端口
- prometheus配置文件
- 基于nacos的服务发现
- docker 编排文件
- 生产的配置文件
- 修改prometheus配置文件
- 修改springboot项目配置文件
- 什么是性能可观测
- 全方位 Springcloud 性能调优
- Servlet 容器 优化
- Zuul配置 优化
- Feign 配置优化
- hystrix配置 优化
- ribbon 优化
- 高质量实操:SpringCloud 高并发实战案例
- 1、超高并发10Wqps秒杀实操
- 2、超高并发100Wqps车联网实操
- 3、N多其他的超高并发实操项目
(3) 《 K8S 学习圣经 》PDF
《 K8S 学习圣经 》封面
《 K8S 学习圣经 》目录
- 学习 Kubernets 的相关资料
- 说在前面:
- 《K8S学习圣经》的组成
- 本书目录
- 第1部分:云原生(Cloud Native)的原理与演进
- 1、什么是云原生(Cloud Native)?
- 云原生的四要素:
- 2、云原生发展历史时间轴
- 2.1 从微服务到服务网格
- 2.2 微服务架构的问题
- 解决方案:
- 2.3 SideCar 旁车模式(边车模式)
- 3、2018 年云原生被CNCF重新定义
- 3.1 服务网格 (Service Mesh)
- 3.2 不可变基础设施(Immutable Infrastructure)
- 3.3 声明式API ( declarative APIs)
- 4、CNCF云原生组织发展和介绍
- 什么是CNCF
- CNCF解决了什么问题
- 介绍几个常用的已经毕业的云原生项目
- 孵化中的项目
- 5、从微服务演进到Service Mesh(服务网格)的过程
- 5.1 单体服务时代
- 5.2 微服务时代
- 5.3 服务网格新时期 (service mesh)
- 6、服务网格(service mesh)原理和价值
- 什么是服务网格(service mesh)
- Service Mesh的价值
- Linkerd
- istio
- 国内兴起的服务网格
- 7、云原生应用和传统应用的区别
- 8、云原生涉及的核心项目
- 1、什么是云原生(Cloud Native)?
- 第2部分:穿透K8S的8大宏观架构
- 尼恩的K8S的独特视角:不是普通的视角
- K8S的核心价值:带领大家从 容器管理的石器时代,进入工业时代
- 图0:K8S 的宏观组件架构图
- 图1:K8S 业务架构图
- 图2:K8S 元数据架构图
- 图3:K8S 容器管理流程架构
- 图4:容器元数据的数据传输架构
- 图5:容器对外暴露架构图
- 图6:总的架构图
- 图7:master 上APIServer 内部架构图
- 图8:worker上 kubelet内部架构图
- 学习 云原生+ 微服务的神器
- 第3部分:K8s运行时 实操
- 什么是minikube
- minikube 背景
- Kubernetes集群架构 与minikube架构对比
- 1、Kubernetes集群架构
- 2、Minikube架构
- minikube安装前准备
- docker安装和环境检查
- docker 版本要求
- 关闭虚拟机swap、selinux、firewalld
- 编辑虚拟机hosts文件
- 登录阿里云
- 创建用户,加入docker用户组
- 让用户minikube获得root权限
- 安装与启动minikube
- 软件版本说明
- 安装minikube
- 启动minikube
- 命令清单:血泪的安装史,尼恩用过的 命令list
- minikube start 参数
- 示例
- --vm-driver=kvm2
- --vm-driver=hyperv
- --vm-driver=none
- 解决拉取镜像的问题
- 错误日志查看
- Q1:解决minikube拉取镜像速度缓慢的问题
- 解决 minikube
start
过程中拉取镜像慢的问题
- 解决 minikube
- Q2:基础镜像拉不下来
- 错误日志查看
- 基础镜像拉不下来
- 指定镜像启动
- 终于开始创建容器,开始启动了
- Q3:新的问题来了:coredns 镜像找不到
- Q4:继续下载镜像
- Q5:使用阿里云代理http://k8s.gcr.io镜像仓库
- Virtual Box 使用的问题
- Q1:嵌套虚拟化问题
- 什么是嵌套 虚拟化特性?
- 虚拟机启用嵌套VT-x/AMD-V
- Q2:conntrack依赖
- Q3:依赖kubectl、kubelet
- Q4:桥接问题
- Q5:初始化失败报错,升级内核
- 启动Dashboard
- 终于全部启动了
- 如何从宿主机也就是我们的Windows中访问dashborad呢
- 直接使用minikube
- minikube重建
- Q1:嵌套虚拟化问题
- docker-compose to minikube
- 部署minikube 遇到的问题
- 外部访问问题
- pull image问题
- POD 容器的问题
- K8s的常用命令
- 查看所有的pod,看看哪些有问题
- storage-provisioner 的ImagePullBackOff 状态
- 启动minikube时指定harber仓库
- minikube 复制证书
- 进入minikube虚拟机
- 增加私仓地址配置
- 重启虚拟机的Docker
- 测试
- 命令清单:尼恩用过的 启动 命令清单 (都是血和泪)
- minikube常用命令
- 一、基本命令
- 二、镜像命令
- 三、配置和管理命令
- 四、网络和连接命令
- 五、高级命令
- 六、疑难解答命令
- 七、其它命令
- 启动minikube完整的命令清单
- Helm 的原理、安装、使用
- Helm 组件及相关术语
- Helm 工作原理
- 安装Helm
- 第4部分:Kubernetes 基本概念
- 1、基础概念理解
- K8S集群
- Node的核心组件
- Pod
- Label
- Deployment
- Service
- Addons
- DNS
- Web UI (Dashboard)
- 2、k8s对象(kubernetes Objects)
- 对象的yaml结构
- 关于 yaml文件的分割
- 2.1 一个简单的Kubernetes API 对象
- 2.1 什么是k8s 资源对象
- kubernetes 对象必需字段
- 2.2 kubernetes API的版本
- 一、查看apiversion 可用版本
- 二、各种apiVersion的含义
- 2.3 获取各个属性字段的含义
- 方式1:从命令行获取方式
- 方式2:官方 API 文档方式
- 2.4、管理k8s对象
- 1、命令式
- 2、指令性
- 3、声明式
- 2.5、对象名称与ID
- Names
- UID
- 2.6 对象规约(Spec)与状态(Status)
- 对象规约(Spec)与状态(Status)
- spec 规约
- status 状态
- 2.7、名称空间
- 名称空间的使用参考:
- 如何访问其他名称空间的东西?
- 查看名称空间
- 在执行请求的时设定namespace
- 设置名称偏好
- 名称空间与DNS
- 名称空间的作用
- 并非所有对象都在命名空间中
- 2.8 、标签和选择器
- 2.9、注解annotation
- 2.8、字段选择器
- 2.10、认识kubectl 客户端命令
- kubectl的所有命令参考:
- 2.11、自动补全
- 2.12、给idea安装kubernetes插件
- 1、plugins kubernetes
- 2、快速生成kubernetes 资源文件模板
- 3、输入
k
即可触发自动命令提示
- 1、基础概念理解
- 第5部分:Kubernetes 工作负载
- 什么是Workloads?
- Pod的原理与生命周期
- 1、什么是Pod
- 2、Pod使用
- 3、Pod生命周期
- “根容器” : Pause 容器
- Pod中容器也有分类
- Pod生命周期的 两个阶段
- Pod的Init 初始化容器 (附Demo)
- Pod 钩子Hook方法 (附Demo)
- Pod 健康检查(探针)机制
- Pod 的状态和重启策略
- Pod 常见的状态
- Pod重启策略
- Pod常见状态转换场景
- 临时容器:线上排错
- 使用方法:
- 通过临时容器查看Java容器log日志
- 临时容器的参数说明:
- 使用临时容器进行 dump 转储
- 基于制作Java Debug 镜像
- 临时容器不能用jmap、jps而只能用jattach
- jattach指令集:
- 临时容器的配置
- 临时容器的使用场景
- 静态Pod
- 如何找到 静态pod 的文件路径
- 静态Pod实操
- Pod 资源需求和限制
- Pod的Probe 探针机制(健康检查机制)
- Probe 探针 背景
- K8S 的3种探针
- livenessProbe和readinessProbe 的区别
- (1)livenessProbe
- (2)readinessProbe
- (3)就绪、存活两种探针的区别
- 存活探针 (liveness)的三种探测方法
- exec 方式示例
- httpGet 方式示例
- TCP 方式示例
- 使用命名的端口
- 就绪探针 (readiness)
- ReadinessProbe 探针使用示例
- ReadinessProbe + LivenessProbe 配合使用示例
- 以上案例中存活探针 参数意思:
- 以上案例中就绪探针 参数意思:
- startupProbe探针
- 1、startupProbe探针介绍
- 2、startupProbe探针与另两种区别
- 3、startupProbe探针方法、属性
- 4、为什么要使用startupProbe、使用场景
- 第6部分:Kubernetes 的资源控制
- 动态的扩容缩容的重要性
- 1:Deployment 资源对象
- Deployment的创建
- Deployment 资源、replicaset资源、Pod资源 三者之间的关系
- Deployment 基本操作
- 副本扩容
- 副本缩容
- Deployment 更新机制
- 准备:升级镜像
- 在线修改yaml
- 滚动机制相关的命令
- 暂停和恢复
- 回滚策略
- 记录保留
- 滚动更新数量
- 使用Deployment 进行灰度发布
- 2:副本资源 RC、副本集RS 资源对象
- RC(Replication Controller)
- RS(Replication Set)
- ReplicatSet的三个部分
- RS扩容缩容
- 3:DaemonSet 守护集
- DaemonSet 组成结构详解
- 调度节点的选择
- 方式一:nodeSelector方式
- 方式二:nodeAffinity方式
- 方式三:podAffinity方式
- Toleration
- 4:StatefulSet 有状态集
- StatefulSet 使用场景
- StatefulSet的一些限制和要求
- StatefulSet示例
- DNS解析
- StatefulSet 的几个要点
- (1)pod管理策略(podManagementPolicy)
- (2)updateStrategy: 更新策略
- (3)对应的headless service
- 5:Job 任务、CronJob 定时任务
- Job 任务
- 并行 job 示例
- CronJob 定时任务
- CronJob示例
- 6:HPA(Horizontal Pod Autoscaling)水平自动伸缩
- 收集指标插件
- Metrics API
- 前置条件: 开启聚合路由
- metrics安装方式一:minikube 中启用指标服务器作为插件
- metrics server安装方式二:手动安装
- 执行安装和检查
- 执行安装的命令清单
- 7:使用HPA对SpringCloud微服务进行自动伸缩
- autoscale命令
- Metrics支持的指标
- 创建hpa、查看hpa、删除hpa
- HPA扩容实操
- 基于自定义指标的自动扩容
- 扩展阅读: GC机制
- 什么是垃圾回收
- 什么是OCI、CRI、CNI、CSI
- OCI、CRI、CNI、CSI、CRD、CNM规范基本概念:
- 实现OCI、CRI、CNI、CSI组件介绍
- 1、OCI、CRI组件
- 2、CNI组件
- CNI 和 CNM 的对比:
- 3、CSI组件
- CRI、OCI的关系
- CRD是什么
- CR是什么
- CRD与CR的关系
- CRD在API Server中的设计和实现机制
- 如何创建 CRD?
- 第7部分:SVC负载均衡底层原理
- Pod的IP 漂移问题
- service 概念
- 四大service 类型
- kubernetes暴露端口的方式
- 1:集群内部实现访问:Clusterip
- 2:集群外部方式访问:NodePort
- 3: LoadBalancer
- 4: Ingress
- DNS解析案例
- 案例
- SVC 流量分发的底层原理
- VIP 和 Service 代理
- 代理模式分类
- Ⅰ、userspace 代理模式
- Ⅱ、Iptables 代理模式
- Ⅲ、ipvs 代理模式
- ipvs为负载均衡提供算法:
- ipvs 对比 iptables
- iptables/netfilter 介绍
- 1,iptables/netfilter介绍
- 2,iptables 基础:
- 3,链的概念:
- 4,表的概念:
- 5,数据经过防火墙的流程图:
- 6,规则:
- 总结: iptables包含4个表,5个链
- iptables 在 K8s 中的应用剖析
- 路由的流程分析:
- service 的路由分析实例
- 先看iptables 中的DNAT
- 再看SNAT
- 基于客户端地址的会话保持模式的svc负载分发策略
- k8s集群中service的域名解析、pod的域名解析
- service的域名
- 1、创建namespace.yaml文件
- 2、创建deployment.yaml文件
- 3、创建service.yaml文件
- 4、测试
- 总结
- service的域名
- 应用持久化存储(PV和PVC)
- 1、Volume
- 1.1、emptyDir
- 1.2、hostPath
- 1.3、外部存储(以NFS为例)
- 2、PV与PVC
- 持久卷的存储插件类型
- 2.1、Static PV
- 1)先搭建好NFS服务器(192.168.100.172)
- 2)创建PV
- 3)创建PVC
- 4)创建Pod
- 2.2、Dynamic PV
- Dynamic PV属于PV的自动化:
- 什么是StorageClass
- 为什么需要StorageClass
- StorageClass案例
- 运行原理
- 1、Volume
- 第8部分:K8S Ingress原理和实操
- 背景:
- svc的作用与不足
- Ingress 的来源
- Ingress的构成
- 什么是Ingress Controller?
- Ingress 资源对象
- ingress-controller组件
- nginx-ingress-controller
- 什么是Ingress Controller?
- 部署ingress-controller
- Minikube安装Ingress
- 手工部署ingress-controller pod及相关资源
- ingress版本的问题
- 调整RBAC api-versions 版本
- 部署 ingress-nginx
- 配置ingress资源
- 报错 failed calling webhook
- 获取 ingress 启动的svc
- 加上本地的host
- 测试访问
- 实操的善后工作
- k8s ingress的工作原理
- (1)Ingress Controller 控制器
- (2) Ingress 资源对象
- 详解ingress资源
- ingress规则
- DefaultBackend
- 资源后端
- 路径类型
- 路径类型示例
- 路径多重匹配
- 主机名通配符
- ingress类
- 名字空间域的参数
- 默认ingress类
- ingress部署的三种模式
- 模式一:NodePort模式的Service
- 模式二:DaemonSet+nodeSelector+HostNetwork
- 模式三:Deployment+LoadBalancer模式的Service
- 模式一的问题:service暴露服务的问题
- DaemonSet+HostNetwork+nodeselector 实操
- nodePort的NAT性能问题
- 指定nginx-ingress-controller运行的node节点
- 修改Deployment为Daemonset,指定节点运行,并开启 hostNetwork
- 启动nginx-ingress-controller
- 查看pod的IP和端口
- 配置ingress资源
- 命令清单
- 生产环境 LVS+keepalive 做高可用和负载均衡
- 边缘节点
- 生产环境可以使用 HA + LB + DaemonSet hostNetwork 架构
- 四种port底层原理:nodePort、port、targetPort、containerPort 的核心
- 1、nodePort
- 2、port
- 3、targetPort
- 4、containerPort
- Ingress 动态域名配置底层原理
- ingress生产建议
- ingress总结
- K8s的常用命令
- kubectl命令 要求
- 背景:
- 第9部分:蓝绿发布、金丝雀发布、滚动发布、A/B测试 原理和实操
- 背景:
- 蓝绿发布、金丝雀发布、滚动发布、A/B测试 核心原理
- 蓝绿发布(Blue-green Deployments) 核心原理
- 金丝雀发布(anCanary Releases) 核心原理
- 滚动发布的 核心原理
- A/B测试(A/B Testing) 核心原理
- 蓝绿发布、金丝雀发布、滚动发布实操
- spring cloud 灰度实操
- 反向代理网关灰度实操
- Kubernetes 中的灰度策略
- Deployment金丝雀部署:按照流量比例
- step1 :启动 V1 服务,查看服务是否正确,然后观察一下服务。
- step2:启动 V2 的服务版本:1 个复本
- step3:观察 V2 流量正常的情况的话,那么启动 V2 的 2 个复本。
- step4:删除 V1 的 2 个复本,流量全部到 V2 上。
- 实操总结
- Deployment实现滚动发布
- step1:启动 V1 服务,查看服务是否正确,然后观察一下服务。
- step2:启动 app-v2-rolling 进行滚动发布
- step3:观察所有容器版本变为 V2 版本
- 实操总结
- Deployment实现蓝绿部署
- step1 :启动 V1 服务,查看服务是否正确,然后观察一下服务。
- step2:启动 V2 的服务版本
- step3:将版本 1 服务切换到版本 2,观察服务情况
- patch
- 实操总结
- Ingress Annotations实现金丝雀发布
- Ingress Annotations实现金丝雀发布 实操
- 华为云的金丝雀发布
- 参考
- 第10部分:服务网格Service Mesh 宏观架构模式
- 第1大模式:Sidecar (边车)模式 架构
- sidecar的(边车)负责的功能
- sidecar模式好处、坏处
- 如何解决依赖的复杂性和性能问题呢?
- 优化之后的sidecar模式优点:
- 第2大模式:代理模式
- 服务网格 istio 框架微服务与SpringCloud 对比
- SpringCloud 和 istio 中间组件的对比
- 云原生Sidecar分体架构微服务Provider一体架构对比
- 两大基础组件的对比
- 角色sidecar 对应到啥组件?
- 小结:
- Istio 架构
- 控制平和数据面
- Istio 的运转流程
- (1)Sidecar自动注入:
- (2)流量拦截:
- (3)服务发现:
- (4)负载均衡:
- (5)流量治理:
- (6)访问安全:
- (7)服务遥测:
- (8)策略执行:
- (9)外部访问:
- Istio组件介绍
- 2.1 Pilot
- 2.2 Mixer
- 2.3 Citadel
- 2.4 Galley
- 2.5 Sidecar-injector
- 2.6 Proxy(Envoy)
- 2.7 Ingress gateway
- 2.8 其他组件
- Istio安装
- 在本地搭建Istio环境
- Kubernetes集群环境
- 安装Istio
- 快速部署Istio
- 初步感受istio
- 手动注入
- 自动注入sidecar
- istio项目案例:bookinfo
- 什么是bookinfo
- sidecar自动注入到微服务
- 启动bookinfo
- 通过ingress方式访问
- 通过istio的ingress gateway访问
- 确定 Ingress 的 IP 和端口
- 第1大模式:Sidecar (边车)模式 架构
- 第11部分:使用K8S+Harber 手动部署 SpringCloud 应用
- 启动minikube时指定私有仓库
- minikube 复制证书
- 进入minikube虚拟机
- 增加私仓地址配置
- 重启虚拟机的Docker
- 测试
- 完整的命令清单
- Docker构建镜像后通过K8S部署
- 镜像与容器关联
- Docker构建镜像并且推送Harber
- 前提:停止或者重启 Harbor
- 创建Dockerfile
- 镜像构建:将本地镜像打包
- docker build语法
- 镜像打tag:镜像添加版本号
- 镜像推送:镜像推送到远程仓库
- 测试
- 完整的命令清单
- Docker构建镜像并且推送Harber
- k8s的Secrets:
- 创建一个k8s的Secrets:
- 1.Secret对象配置过程
- 2.容器镜像拉取的两种策略
- 2.1 ImagePullPolicy
- 2.2 ImgaePullSecrets
- k8s的configMap对象
- Pod可以通过三种方式来使用ConfigMap,分别为:
- configMap是什么
- 1.单pod使用configmap示例图
- 2.多pod使用configmap示例图
- configmap来配置环境变量
- 步骤1:创建configmap
- 方法1:yaml档来设定configmap
- 方法1:命令行设定configmap
- 步骤3:使用configmap来配置
- 步骤1:创建configmap
- docker-compose to minikube
- 简单案例
- 实操案例
- 参考的原始的docker-compose编排文件
- 设置env环境变量
- k8s向etc/hosts里添加内容
- k8s默认被重写/etc/hosts
- Dockerfile里的配置被覆盖
- 将你的配置写到k8s yml里
- Kubernetes volume hostPath explained with examples
- hostPath
- Example
- 部署和创建服务
- ImagePullBackOff错误排查
- 解决问题:停止后重启 Harbor
- CrashLoopBackOff 错误
- 坑1:镜像拉取是ok,但是依赖包没有
- 坑2:java 进程异常结束了
- 坑3:minikube是套娃虚拟机,套娃里边没有映射目录,远程复制
- 坑4:检查域名和环境变量
- 解决问题有感
- ImagePullBackOff错误排查
- 完整的命令清单
- openresty 镜像
- dockerfile
- 第12部分:SpringCloud+Jenkins+ K8s Ingress 自动化灰度发布
- 如何进行SpringCloud+Jenkins+ K8s Ingress 灰度发布?
- 回顾Nginx-ingress 架构和原理
- 灰度实操之前的准备
- 部署和测试 stable 版本的 deployment 和 svc
- 部署和测试 canary版本 的 deployment 和 svc
- 基于用户的灰度场景
- 接下来,开始基于 用户的灰度实操
- 基于权重的灰度场景
- 基于权重的 Canary 规则
- 基于权重的发布实操
- 如何进行自动化灰度?
- jenkins安装和pipeline 流水线的使用
- 下载和启动jenkins
- 登录jenkins
- 使用pipeline插件
- 安装Pipeline 插件
- pipeline 的hello world
- pipeline 语法介绍
- Jenkins插件SSH Pipeline Steps
- sshCommand 在远程节点上执行给定的命令并响应输出
- sshGet 从远程主机获取文件或目录
- sshPut 将文件或目录放入远程主机
- sshRemove 删除远程主机上的文件或目录
- sshScript 在远程节点上执行给定的脚本(文件)并响应输出
- 结合 withCredentials 从 Jenkins 凭证存储中读取私钥
- pipeline支持的指令
- ingress 灰度发布流水线设计
- CICD流水线预览
- step1:自动化的制品发布
- 1、克隆 springboot代码项目到本地
- 2、maven构建springboot代码项目
- 3、构建docker镜像
- 4、推送docker镜像到harber上,完成制品发布
- step2:生产环境进行 A/B 测试
- AB测试原理:
- step3:生产环境进行 A/B 测试
- step4:生产环境进行版本正式切换
- 最后总结一下
- 第13部分:springboot 基于 qps 动态扩缩容
- 步骤
- 1、springboot安装prometheus依赖并获取metric
- 2、安装prometheus operator 实现 kubernetes的监控指标
- 2.1 helm安装prometheus operator、prometheus adapter(custom metric)
- 2.2 kubernetes的监控指标
- Prometheus Operator 极简配置Prometheus 监控
- Operator
- Operator介绍
- Prometheus Operator vs. kube-prometheus vs. community helm chart
- Prometheus Operator CRD介绍
- 命令清单: 安装的Prometheus
- 查看安装后的CRD、svc、pods:
- 从外部访问promethus
- 访问Prometheus
- 访问Alertmanager
- 访问Grafana
- 移除kube-prometheus
- 解决prometheus-adapter创建失败的问题
- 查看 安装文件
- 解决kube-state-metrics 创建失败的问题
- 解决namespace 删除不来
- 解决prometheus-adapter创建失败的问题
- 配置prometheus -adapter获取应用qps
- prometheus采集到的metrics适配给kubernetes用
- K8s中 kubernetes的监控指标分为两种:
- Metrics-Server 简介
- prometheus-adpater
- 获取 metrics 定制化指标
- checkout 仓库 k8s-prometheus-adapter
- 脚本进行部署 k8s-prometheus-adapter
- 请求metrics.k8s.io的 api
- 直接访问 api 的方式来测试部署是否 ok
- 排错 no matches for kind "APIService" in version "apiregistration.k8s.io/v1
- 查看版本 kubectl api-versions
- Prometheus adapter 的文件介绍
- 配置文件
- resource metrics API
- 命令清单
- 自定义alertmanager的PrometheusRule
- 配置prometheus及adapter获取应用qps
- 启动springboot应用
- 添加自定义指标
- 架构图原理
- 添加一个自定义监控的步骤
- 部署prometheus-adapter
- custom-metrics-server 规则配置
- 指标发现和配置展示(Metrics Discovery and Presentation Configuration)
- http_requests(每秒请求数QPS)监控指标
- 坑: /metrics 路径的定制化修改
- 查询与 http_requests 相关的指标
- 自定义metric rules、配置HPA
- 配置自定义prometheus-adapter-config配置
- 配置 qps 请求量指标
- 查看 "pods/http_server_requests_per_second" 指标
- HPA配置
- 基于Pod做HPA
- 基于cpu或者memory做HPA
- 启动HPA的伸缩控制器
- hpa验证测试
- 配置grafana展示qps监控数据
- hpa命令清单
- 高阶知识:Adapter 的Discovery规则如何配置?
- 以获取Per-pod HTTP Requests为例
- 1 demo问题场景
- 2 配置适配器
- 3 查询api
- 以获取Per-pod HTTP Requests为例
- prometheus operator 不足之处
- 数据持久化
- tsdb 保留天数
- 告警方式不方便
- 加监控target也不方便
- 第14部分:k8s生产环境容器内部JVM参数配置解析及优化
- Java Heap基础知识
- 容器环境的Java Heap
- UseContainerSupport
- 最佳实践
- 常用容器内存大小对应的jvm内存配置
- 容器启动常用配置
- 配置项的具体介绍
- 1.堆总内存初始化大小分配和最大值分配
- 2.非堆总内存初始化大小分配和最大值分配(1.8为metaspace)
- 3.堆内存之年轻代年老代大小设置
- 4.线程栈大小
- 5.GC日志输出
- 6.每个线程堆栈大小
- 常用容器内存大小对应的jvm内存配置
- Kubernetes(k8s)配置Java服务自动Dump
- 参考:Go语音解决 java 内存溢出时候 dump 文件的存储问题
- 问题
- 方案
- 其他
- 参考文献
(4) 《 flink + hbase 学习圣经 》PDF
《 flink + hbase 学习圣经 》封面
(planning ......)
《 flink + hbase 学习圣经 》目录
(planning ......)
技术自由的实现路径:
实现你的 架构自由:
《阿里二面:千万级、亿级数据,如何性能优化? 教科书级 答案来了》
《峰值21WQps、亿级DAU,小游戏《羊了个羊》是怎么架构的?》
… 更多架构文章,正在添加中
实现你的响应式 自由:
这是老版本 《Flux、Mono、Reactor 实战(史上最全)》
实现你的 spring cloud 自由:
《spring cloud Alibaba 学习圣经》 PDF
《Springcloud gateway 底层原理、核心实战 (史上最全)》
《分库分表 Sharding-JDBC 底层原理、核心实战(史上最全)》
《一文搞定:SpringBoot、SLF4j、Log4j、Logback、Netty之间混乱关系(史上最全)》
实现你的 linux 自由:
实现你的 网络 自由:
《网络三张表:ARP表, MAC表, 路由表,实现你的网络自由!!》
实现你的 分布式锁 自由:
实现你的 王者组件 自由:
《队列之王: Disruptor 原理、架构、源码 一文穿透》
《缓存之王:Caffeine 源码、架构、原理(史上最全,10W字 超级长文)》
《Java Agent 探针、字节码增强 ByteBuddy(史上最全)》