Nginx 调优
1 核心配置找到 Nginx 安装目录下的 conf 目录下 nginx.conf 文件,Nginx 的基本功能配置是由它提供的。
1 1.1 配置文件结构Nginx 的配置文件 (conf/nginx.conf) 整体上分为如下几个部分:
区域
职责
全局块
配置和 Nginx 运行相关的全局配置
events 块
配置和网络链接相关的配置
http 块
配置代理、缓存、日志记录、虚拟主机等配置
server 块
配置虚拟主机的相关参数,一个 http 快中可以有多个 server 块
location 块
配置请求的路由,以及各种页面的处理情况
配置层级如下所示。
123456789101112131415161718events {}http { server { server_name a; location / { } location ~*^.+$ { } & ...
k8s收集审计日志
工作中经常遇到不知道谁修改资源导致服务出现故障,配合 k8s 自带的 RBAC 实现用户级别的审计日志
RBAC 配置参考: Kubernetes自定义权限
审计日志记录功能会增加 API server 的内存消耗,因为需要为每个请求存储审计所需的某些上下文。
原理
Kube-apiserver 执行审计。每个执行阶段的每个请求都会生成一个事件,然后根据特定策略对事件进行预处理并写入后端。
每个请求都可以用相关的 “stage” 记录。已知的 stage 有:
RequestReceived - 事件的 stage 将在审计处理器接收到请求后,并且在委托给其余处理器之前生成。
ResponseStarted - 在响应消息的头部发送后,但是响应消息体发送前。这个 stage 仅为长时间运行的请求生成(例如 watch)。
ResponseComplete - 当响应消息体完成并且没有更多数据需要传输的时候。
Panic - 当 panic 发生时生成。
策略
审计政策定义了关于应记录哪些事件以及应包含哪些数据的规则。处理事件时,将按顺序与规则列表进行 ...
面试题记录
以前面试重来不做笔记,每次都在网上搜题,毕竟不是自己总结的,记录下遇到面试遇到与以及感觉可能会问到的问题
一, mysql1 备份1.1 mysql 5.5
不支持事务 id
备份磁盘,binlog server,XtraBackup 备份,8.0 之前 mysql 默认库所表都是 MyISAM 引擎的表之前版尽量不使用,因为会出现锁表问题: 主从切换后 binlog server 无法继续使用,因为每个节点的 binlog 位置不一样,还原数据需要新建个实例对比新切换的 master 节点数据进行还原
1.2 mysql 5.6支持事务 id,通过事务 id 同步备份: 备份磁盘,binlog server,XtraBackup 备份,8.0 之前 mysql user 表是 MyISAM 引擎的表,能会出现锁表问题: 主从切换后 binlog server 可以继续使用,因为事务 id 是一样的,可以写脚本实现自动切换 master 节点,这里我们借鉴 Orchestrator 自己研发的 mysql 管理工具
1.3 mysql 5.7
支持事务 id,组提交
备份磁盘, ...
RookCeph安装
一, 安装
安装参考文档:
配置参考
1 下载代码
1git clone --single-branch --branch v1.10.0 https://github.com/rook/rook.git
2 修改配置文件
2.1 operator.yaml
12345678# 修改镜像地址 ROOK_CSI_CEPH_IMAGE: "quay.io/cephcsi/cephcsi:v3.6.2" ROOK_CSI_REGISTRAR_IMAGE: "ccr.ccs.tencentyun.com/ccops/csi-node-driver-registrar:v2.5.1" ROOK_CSI_RESIZER_IMAGE: "ccr.ccs.tencentyun.com/ccops/csi-resizer:v1.4.0" ROOK_CSI_PROVISIONER_IMAGE: "ccr.ccs.tencentyun.com/ccops/csi-provisioner:v3.1.1&quo ...
RookCeph管理
默认命名空间 rook-ceph,主要修改成自己的
建议镜像上传到私有仓库或拉取后部署
部署参考: RookCeph安装
一, 检查1 pod 状态
pod 都是Running与Completed状态
1kubectl get pod -n rook-ceph |grep -v 'Running\|Completed'
2 集群状态
请注意以下状态,表明群集处于正常状态:
群集运行状况:群集整体状态为HEALTH_OK,并且没有显示警告或错误状态消息。
Monitors(mon):所有监视器都包含在quorum列表中。
Manager(mgr):Ceph mgr 处于active状态。
OSDs(osd):所有 osd 都是up与in状态。
Placement groups(pgs):所有 PG 都处于active+clean状态。
Ceph 文件系统元数据服务器(mds):所有 MDS 都处于up状态
Ceph 对象存储 RADOS 网关 (rgw):所有 rgw 都是active状态
123456789101112131415161718kubec ...
记录kubelet问题
记录遇到的问题,后面会一点点补充
Kubernetes使用到的端口
服务名
备注
需要的端口
kube-scheduler
调度服务
10251 tcp
etcd
2379端口API 服务,2380端口peer 通信
2379,2380 tcp
kube-controller-manager
容器管理
10252 tcp
kube-apiserver
apiserver
443 tcp 此端口随配置而变化
calico-typha
管理calico
5437 tcp
kubelet
认证API
10250 tcp
bird bgp通信
179 tcp
kube-proxy
10249:对外提供 /metrics; 10256:对外提供 /healthz 的访问。
10249,10256 tcp
calico-node
网络接口管理和监听、路由、ARP 管理、ACL 管理和同步、状态上报
9099 tcp
vxlan
vxlan协议端口
4789 udp
一, kubelet
1 查看节点状态 NotReady
1.1 ...
如何在Kubernetes里使用SMB存储
1 部署驱动
参考官网的,需要自己改镜像
12345678helm install smb-csi . -n kube-systemkubectl get pod -n kube-systemNAME READY STATUS RESTARTS AGEcsi-attacher-smb-0 1/1 Running 0 16hcsi-provisioner-smb-0 2/2 Running 0 16hcsi-smb-2dfnn 2/2 Running 0 16hcsi-smb-nn5pp 2/2 Running 0 16hcsi-smb-q9pln 2/2 Running 0 16h
2 Storageclass创建 Secret
1kubectl create secret -n kube-system gene ...
如何优雅的实现数据同步
简介
鉴于 inotify 存在一定问题,不满足 gitlab 数据同步需求,后续调研了 sersync ,sersync 克服了 inotify 的几个缺点。
inotify 最大的不足是会产生重复事件,或者同一个目录下多个文件的操作会产生多个事件(例如,当监控目录中有 5 个文件时,删除目录时会产生 6 个监控事件),从而导致重复调用 rsync 命令。
vim 文件时,inotify 会监控到临时文件的事件,但这些事件相对于 rsync 来说是不应该被监控的。
inotify 只能记录下被监听的目录发生了变化(增,删,改)并没有把具体是哪个文件或者哪个目录发生了变化记录下来;
rsync 在同步的时候,并不知道具体是哪个文件或目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync 要对整个目录遍历查找对比文件),因此效率很低;rsync 在同步时,只同步发生变化的文件或目录(每次发生变化的数据相对整个同步目录数据来说很小,rsync 在遍历查找对比文件时,速度很快),因此效率很高。
server 端
1 rsync ...
Helm学习笔记
Helm 常用命令
命令
描述
create
创建一个 chart 并指定名字
dependency
管理 chart 依赖
get
下载一个 release。可用子命令:all、hooks、manifest、notes、values
history
获取 release 历史
install
安装一个 chart
list
列出 release
package
将 chart 目录打包到 chart 存档文件中
pull
从远程仓库中下载 chart 并解压到本地 helm pull stable/mysql --untar
repo
添加,列出,移除,更新和索引 chart 仓库。可用子命令:add、index、list、remove、update
rollback
从之前版本回滚
search
根据关键字搜索 chart。可用子命令:hub、repo
show
查看 chart 详细信息。可用子命令:all、chart、readme、values
status
显示已命名版本的状态
template
本地呈现模板 ...
如何优雅的使用Calico 路由反射模式
1 原理
[!info]同一集群内的客户机只需要与该集群的 RR 直接交换路由信息,因此客户机只需要与 RR 之间建立 IBGP 连接,不需要与其他客户机建立 IBGP 连接,从而减少了 IBGP 连接数量。并采用独有的 Cluster_List 属性和 Originator_ID 属性防止路由环路。RR 向 IBGP 邻居发布路由规则如下:
从非客户机学到的路由,发布给所有客户机。
从客户机学到的路由,发布给所有非客户机和客户机(发起此路由的客户机除外)。
从 EBGP 对等体学到的路由,发布给所有的非客户机和客户机。
2 配置 Calico2.1 关闭 node-to-node BGP 网络
[!info]为保证 IBGP 对等体之间的连通性,需要在 IBGP 对等体之间建立全连接关系。假设在一个 AS 内部有 n 台设备,那么建立的 IBGP 连接数就为 n(n-1)/2。当设备数目很多时,设备配置将十分复杂,而且配置后网络资源和 CPU 资源的消耗都很大。Calico 默认是 Full-mesh 全互联模式,需要关闭
1234567891011cat > ...