Kubernetes Controller Manager解析
Kubernetes Controller Manager解析Controller Manager是Kubernetes中各种操作系统的管理者, 是集群内部的管理控制中心, 也是Kubernetes自动化功能的核心
Controller Manager内部包含Replication Controller、Node Controller、 ResourceQuota Controller、Namespace Controller、ServiceAccount Controller、 Token Controller、 Service Controller及Endpoint Controller这8种Controller, 每种Controller都负责一种特定资源的控制流程, 而Controller Manager正是这些Controller的核心管理者。
Replication Controller这里的Replication Controller(副本控制器)与资源对象Replication Controller并不相同,资源对象在下文被简称为RC。
Replication Co ...
Kubernetes API Server解析
Kubernetes API Server解析概述Kubernetes API Server的核心功能是提供Kubernetes各类资源对象(如Pod、 RC、 Service等) 的增、 删、 改、 查及Watch等HTTP Rest接口, 成为集群内各个功能模块之间数据交互和通信的中心枢纽,是整个系统的数据总线和数据中心。 除此之外它还是:集群管理的API入口 、资源配额控制的入口 、为集群提供了完备的集群安全机制 。
架构
API Server的架构从上到下可以分为以下四层 :
API层: 主要以REST方式提供各种API接口, 除了有Kubernetes资源对象的CRUD和Watch等主要API, 还有健康检查、 UI、日志、 性能指标等运维监控相关的API。
访问控制层: 当客户端访问API接口时, 访问控制层负责对用户身份鉴权, 验明用户身份, 核准用户对Kubernetes资源对象的访问权限, 然后根据配置的各种资源访问许可逻辑(Admission Control) , 判断是否允许访问。
注册表层: Kubernetes把所有资源对象都保存在注册表(Registr ...
mysql磁盘暴增问题
mysql磁盘暴增问题问题描述在排查容器存储的时候,忽然发现有部分mysql的数据库磁盘空间消耗极大,最高甚至飙升到22G左右。为了防止把应用分配的磁盘空间撑爆;开始对这几个数据进行问题排查和分析
问题分析首先怀疑是使用这几个数据的应用向数据库中写入了大量异常数据,并且还没有做定时清理的操作。经过在数据库中表格中的排查,发现实际在表格中存储的数据并不多
然后在检查数据库持久化文件夹的时候发现一大堆binlog日志,并且每个日志文件大小有差不多1G左右。这里基本上可以确认导致磁盘数据量剧增的原因就是这些binlog日志了
binlog基本概念binlog是Mysql sever层维护的一种二进制日志,与innodb引擎中的redo/undo log是完全不同的日志;其主要是用来记录对mysql数据更新或潜在发生更新的SQL语句,记录了所有的DDL和DML(除了数据查询语句)语句,并以事务的形式保存在磁盘中,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。
binlog的三种存储模式
Row优点:在row level模式下,bin-log中可以不记录执行的sql语句 ...
Lambda简化代码
Lambda简化代码Optional对空值的处理比如要取user中的一个多层次数据
12345678910111213141516171819public String getCity(User user) throws Exception{ if(user!=null){ if(user.getAddress()!=null){ Address address = user.getAddress(); if(address.getCity()!=null){ return address.getCity(); } } } throw new Excpetion("取值错误"); }// 可用lambda替换为public String getCity(User user) throws Exception{ return Opt ...
kubetnetes中新建应用的最佳实践
kubetnetes中新建应用的最佳实践1 基础规约1.1 尽量避免使用默认命名空间虽然为每个Kubernetes集群都创建了默认名称空间,但不建议将所有创建的资源添加到默认名称空间中,因为存在特权升级,资源名称冲突,随着资源扩展操作延迟以及Kubernetes对象管理不当的风险。
1.2 避免使用latest标签的镜像不建议将容器镜像与latest标签一起使用,也不要在镜像中未指定标签(默认为latest),因为这会导致所使用的镜像版本混乱
1.3 使用完整的镜像声明为了保持可移植性,建议使用完整的镜像名称。如果更改了运行的集群或者节点时,具有完整名称的镜像可确保应用程序不会中断。
1234567891011# 虽然可以正常使用但是尽量还是指定那个镜像仓库和项目避免出现歧义spec: containers: - name: mypod image: nginx:1.17.0# 修改后spec: containers: - name: mypod image: docker.io/nginx:1.17.0
1.4 尽量避免使用HostPath作为应用存储持久化 ...
go交叉编译不同平台的应用
go交叉编译不同平台的应用Golang 支持交叉编译,可以在一个平台上生成另一个平台的可执行程序
GOOS:目标平台的操作系统(darwin、freebsd、linux、windows)
GOARCH:目标平台的体系架构(386、amd64、arm)
交叉编译不支持 CGO 所以要禁用它
Linux 下编译 Mac 和 Windows 64位可执行程序12CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.goCGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
Windows 下编译 Mac 和 Linux 64位可执行程序123456789SET CGO_ENABLED=0SET GOOS=darwinSET GOARCH=amd64go build main.goSET CGO_ENABLED=0SET GOOS=linuxSET GOARCH=amd64go build main.go
Mac 下编译 Linux 和 Windows 64位可执行程序 ...
Harbor 调用Docker registry接口
Harbor 调用Docker registry接口 Harbor 是一个CNCF基金会托管的开源的可信的云原生docker registry项目,可以用于存储、签名、扫描镜像内容,Harbor 通过添加一些常用的功能如安全性、身份权限管理等来扩展 docker registry 项目,此外还支持在 registry 之间复制镜像,还提供更加高级的安全功能,如用户管理、访问控制和活动审计等,在新版本中还添加了Helm仓库托管的支持。
Harbor最核心的功能就是给 docker registry 添加上一层权限保护的功能,要实现这个功能,就需要我们在使用 docker login、pull、push 等命令的时候进行拦截,先进行一些权限相关的校验,再进行操作,其实这一系列的操作 docker registry v2 就已经为我们提供了支持,v2 集成了一个安全认证的功能,将安全认证暴露给外部服务,让外部服务去实现。
docker registry v2 认证
在命令行中docker login https://registry.demo.com为例来说明下认证流程:
...
ceph pool快照与回滚
ceph pool快照与回滚基本操作命令12345678910111213141516171819202122查询所有的poolceph osd pool ls创建快照ceph osd pool mksnap myfs-data0 myfs-data0-snapshot删除快照ceph osd pool rmsnap myfs-data0 myfs-data0-snapshot查看pool内的文件rados -p myfs-data0 ls列出快照rados lssnap -p myfs-data0恢复快照(只能指定对象恢复)rados -p myfs-data0 put testfile /etc/hostsceph osd pool mksnap myfs-data0 myfs-data0-snapshot001rados lssnap -p myfs-data0rados -p myfs-data0 rm testfilerados rollback -p myfs-data0 testfile myfs-data0-snapshot001rados -p myfs-data0 ...
cephfs快照与恢复
cephfs快照与恢复基本操作命令1234567891011121314列出创建的文件系统ceph fs ls开启快照ceph fs set myfs allow_new_snaps 1在myfs文件系统内 创建快照 实际上就是创建一个文件夹 由系统自动把文件复制进去 快照的速度非常快,秒级别的mkdir .snap/myfs-snap1 恢复快照cp -ra .snap/myfs-snap1/* ./删除快照rmdir .snap/myfs-snap1
参考cephfs-snapshots
rbd快照的导入导出等操作
rbd快照的导入导出等操作基本操作命令123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051查询镜像rbd showmapped创建快照rbd snap create {pool-name}/{image-name}@{snap-name}rbd snap create rbdpool/pvc-7a1dc5e3-0a6a-11ea-8b13-005056925f82@v1查询快照rbd snap ls {pool-name}/{image-name}rbd snap ls rbdpool/pvc-7a1dc5e3-0a6a-11ea-8b13-005056925f82回滚快照rbd snap rollback {pool-name}/{image-name}@{snap-name}rbd snap ...