k8s-搭建docker私服用于加速镜像访问
k8s-初始化集群
初始化机器
VMware 使用Centos7
初始化四台机器(2C4G)
1 | 192.168.1.101 k8s.master01 |
设置机器配置(一下使用root用户登录)
允许 iptables 检查桥接流量
1 | cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf |
Redis协议(RESP)说明
Redis-Strings命令说明
Redis-Cluster
Redis-cli监控相关命令
Redis-cli 是redis提供给我们的运维工具。其中包含一些运维的命令
一下命令都可以使用-i 0.1
来指定
stat
打印服务的相关统计, key数量,内存使用, 客户端数量等等
1 | redis-cli --stat |
latency
Redis大key和热点key会带来的问题与解决方案
redis大key
带来的问题
大key 那肯定就会redis保存的数据量会大,
- 增加服务和redis之间的数据传输压力
- 由于redis是单线程的所以会造成redis处理的时间过长而阻塞后续的请求。拖慢redis的请求处理速度
- 删除大key时也会造成阻塞
定位大key
使用redis-cli (内部使用scan实现)
1 | # -i 0.1 ,每隔100条就会休眠0,.1秒 |
解决方案
优化redis key的保存方案.尽量减少redis key的数据量.把一个key分割成多个分别保存到集群各个节点中
大key的删除方案
- 使用scan 类的命令分多次删除,每次值删除部分数据
- redis>=4.0 使用 unlink 异步删除
redis热点key
带来的问题
由于某一个key是保存在某个节点上。如果热点key就是访问量激增。造成大量的流量都打到某个特定的节点上。严重可能导致节点挂掉
定位热点key
- 业务预估,例如秒杀场景
- 在客户端做统计收集
- 如果redis集群是有前置proxy的话就可以在proxy层统计收集
- 使用
redis-cli --hotkeys -i 0.1
命令来统计
解决方案
- 本地缓存,做一个二级缓存,先查服务本地内存,然后没有再去redis查
1.1. 需要知道有哪些热点key
1.2. 本地服务内存容量有限
1.3. 可能会导致数据不一致的时间增加 - 多副本方案,再集群多个节点中都保存key,然后再key+random(N).N 为副本节点数量
Kubernetes组件说明
k8s提供了一些核心的组件概念.