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.yaml12345678# 修改镜像地址 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" ROOK_ ...
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
一, kubelet1 查看节点状态 NotReady1 ...
如何在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 部署
关闭 SEL ...
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 > ...
GitLab 备份与恢复
单节点1 备份1.1 备份前 gitlab 的项目如图所示
1.2 检查后台迁移任务
在升级到新的主要版本之前,请确保所有后台迁移已完全完成
这一点很重要。在后台迁移完成之前进行升级可能会导致数据损坏。
可在 http://{gitlaburl}/admin/background_jobs 中查看
1.3 停掉服务gitlab-ctl stop puma
gitlab-ctl stop sidekiq
1.4 进行备份1.4.1 全量备份
如果加 STRATEGY=copy 参数可以不需要停止服务,但是添加这个参数是增加一倍存储空间
gitlab-backup create
1.4.2 只备份数据库
gitlab data 要通过IaaS平台备份磁盘
gitlab-backup create SKIP=uploads,builds,artifacts,lfs,registry,pages,repositories
1.5 查看12345# pwd/data/gitlab-data/data/backups# ll -htotal ...