文章,博客
by
名称:Kaiiit即k4t。是我从0开始设计、开发的容器编排,自动运维系统。别名《ps1倚天剑》,《国产k8s》《ps1绣花针》。对标k8s,docker swarm。
轻量级,组减少,省cpu内存。模块化,开放式架构,系统极易定制。
单租户,无权限功能。
k4t对标谷歌kubernetes。k4t理念和原理 与 k8s 有较大差异。k4t用法和k8s大体相同。大概有60%—70%相同。
win,linux中,使用powershell辅助容器生命周期,来代替【helm】功能。并调用公司有云,建立删除虚拟机,任务计划,devops。
基于powershell和云账户的,跨多公有云临时租虚拟机。搜:“云服务器 竞价 实例 Spot”
基于powershell和云账户的,跨多公有云临时租ip。参见:“云服务器 弹性 公网 ip”
不用etcd,而用多层级配置文件,来保存元数据。为了保证数据安全,元数据备份在多个woker上,支持多个备份周期,支持自定义备份周期。全量+差异备份,卷快照等。 比etcd好,有多个时间备份。
每个配置文件,保存为一个目录。可以单独恢复一个编排(即单个目录)。单个目录损坏不影响其他编排,比etcd好。
支持win,linux通用:网关,dns,闹钟,k4t master。
不开监听端口,只使用winrm=5985/5986,sshd=22端口。
外接动态网关,dns。
本质上无集群,却比有集群强。【k4t2集群概念】对标【k8s集群联邦】。不需要 join/leave集群。不需要折腾集群证书。 无招胜有招,无集群胜有集群,详见【k4t2 集群】章节。
在一个k4t2虚集群内,在一个k4t2虚单元内,支持同时部署虚拟机,虚拟机应用
(单manager)跨多公私云(机房)编排。容器业务,应用/服务(短时间停机)跨多公私云(机房)移动容器业务。manager关机不影响worker。
跨多公私云调度流量,负载平衡。(只限元婴老祖管理)
应用存储支持 :nfs,samba,iscsi,ftp,webdav(http),公有云对象存储等
备份,恢复,manager,worker数据,物理机、虚拟机上的数据迁移机房,比k8s容易,基本有手就会。
使用excel文档,存储app单个应用配置信息。用文件目录 + 【app名.xlsx】,代替etcd+yaml。
每个容器一个虚拟机级别的ip。每node配200-1000左右ip。
容器互联,目前只做了vxlan。未来还会做:基于其他容器互联方法的版本。集群支持全内网ip,全外网ip。
未来将支持在虚拟机之间移动ip,从而达到【容器跨node移动,但ip不变】的目的。
支持在k4t集群外用zabbix监控监集群。甚至可以是从互联网来的监控。无需在【k4t集群内】安装prometheus,减轻集群负担。降低集群复杂性。
疯哥我发明并引领了,用电骡 上传/下载 docker image 镜像风潮。
1 电骡劣势:不能分层下载,只能下载整个tar包,占用空间更多。
2 电骡优势:win,linux,分布式p2p上传/下载,分布式p2p存储。
3 电骡优势:tar包分块(512kb—4mb)下载,自动校验,断点续传。这解决了docker pull的癌症。
癌症:docker pull 无法实现【单个镜像层】的断点续传
4 建立电骡私服很简单,只需要在k4t2 worker节点机上,运行电骡私服容器:
5 linux版电骡客户端软件:
MLDonkey:MLDonkey是一个多协议P2P客户端,支持多种协议,包括eD2k。
mlnet -exec “download
XMule:
https://sourceforge.net/projects/xmule/
xmulecmd -a “
AMule是一个跨平台的eMule兼容客户端:
http://www.amule.org/
https://github.com/amule-project/amule
amulecmd -c “add
5.1 Metalink: https://www.metalinker.org/ https://github.com/metalink-dev
支持【在应用目录中保存tar文件】方式的镜像下载,支持ftp,http(s),webdav,samba,nfs,高级版还支持rsync image。
和普通docker 官服,私-服,docker mirror。
不需要从官方和代理安装:kubeadm,kubelet,kubectl。
不需要从官方和代理安装:k8s容器,如:pause,kube-apiserver,等。
不需要从官方和代理安装:网络插件。如:flannel ,calico。k4t 目前只有vxlan插件
Node级别网络存储支持nfs,samba,iscsi,ftp,http,公有云对象存储等。
支持外网ip的存储。
基于以上,跨云,跨地区,跨机房,迁移容器数据容易。搭配rsync。
容器级别使用node本地目录的mount。不需要ceph,移走了容器另一座山。
支持从网络存储“拉”容器image,这样就基本不用搭建image私库。
三角恋:支持master机,node机,内外网存储。这三者之间任意复制文件。不需要在集群内,部署日志收集,减轻集群负担。降低集群复杂性。
k4t2 manager:Master组件和监控组件,支持分离。
部署完应用,k4t2 manager支持关机下线。
k4t2 manager虚拟机支持在公有云1,在公有云2,私有云3,之间任意移动。 场景:虚拟机迁移,会连带迁移,虚拟机内容器的存储卷。尤其是对私有云,直接搬机子,搬硬盘。
k4t2 manager支持更改ip为【任意内网ip】,【任意外网ip】,而不破坏集群。
k4t2 worker支持更改ip为【任意内网ip】,【任意外网ip】,而不破坏集群。机房、机柜迁移无忧矣!
k4t2 manager支持部署在内网,外网。k4t2 manager支持从外网穿透堡垒机管理worker。支持manager通过vpn到达worker编排应用。
在k4t2 worke被控机上,不起监听进程,不开监听端口。使用sshd22端口,安全无忧。
k4t2 worker:“边缘容器,边缘自治”,当worker节点与manager端,网络不稳定或者断连时,worker节点依旧可以正常运行,不影响已经部署的worker上的服务。
k4t2 worker高级版:支持worker分组使用。
支持使用相同的界面,管理虚拟机级别的应用(os含win,linux,freebsd)。(但需要另建立虚拟机。而不能部署在k4t2 worker中 )
打通单个集群内外:单个vpc组内,支持集群外虚拟机访问集群内(通过网关)。支持集群内应用访问集群外应用,如:虚拟机上的数据库。
跨集群部署应用,可以防止单集群损坏。
应用跨云,跨集群部署,迁移。
Master支持更改ip,支持通过vpn,把master,元数据,之一或全都放在远程。
支持master放在外网和外地。通过分卷+分时方式,支持单master服务多云,支持单master服务多租户,支持单master服务多集群。单master能带上百集群。
Node可以跨云,跨地区,跨机房部署: node1在公有云1,node2在公有云2,node3在私有云。少停机时间,在多云(多地区)间迁移应用,以达到多云容灾目的。
k4t2 集群跨多云同时编排。worker1在公有云1,woker2在公有云2,woker3在私有云1。
k4t2 新旧版本软件及集群,可以同时使用。这是k4t2软件自带的特性。
这么做的目的是:抹平&消除,k4t软件更新,带来的集群停机影响。
这意味着:在linux worker节点机中,同时存在新旧2套不同版本的软件及集群,并同时工作,互相无影响。
这有点像:在linux node节点机中,同时存在2套不同版本的k8s集群软件,并同时工作。
manager 主控机支持win,linux。Mac。
win,linux主控机,都支持单独元数据卷。
主控机是win的好处:支持图形界面,的各种报警。声音报警;视频报警;语音朗读【中英文文本】报警;桌面背景图片报警;win右下角气球报警。win terminal背景图片报警。
主控机是linux的好处:支持alpine linux作为master,支持iso光盘启动,启动时间在15—20秒。目的是节省master资源。使用0.6个master。
k4t2 manager主控机,调度完成后,可以睡眠(即关机)。
1 测试级(0.6 个 manager)即manager用完可以关机。
2 无冗余有风险级(单manager持续开机,不关机)
3 生产级(主备,或主备备,或多主)支持win+win双主。支持win+linux双主。支持linux+linux双主。
4 超大规模(百万woker节点以上),只需要增加双主节点即可。1主1备(或2主)作为一个分片,每个主备管理1个分片,共有多个分片。
单个分片可以跨机房,跨地区,跨多云。当然也可以设计为不跨,即单机房内、单地区内、单云内。
只要设定好元数据备份,则上述1,2无任何数据丢失风险。1只有调度慢的问题。
也就是说,大概率,只需要1台 manager 作为主即可。即基本不需要备(90%不需要,10%需要?)。
即可以用winpe,或linux live cd(或usb linux)也可以作为manager。
被控机只支持linux。
k4t2 worker 被控机,不需要通过join加入到集群,也不需要离开集群。
备份,恢复,物理机、虚拟机上的数据迁移机房,比k8s容易,基本有手就会。
某台k4t2 worker 被控机,可以同时存在于【2个 k4t2集群】,或【3个 k4t2集群】。即 某worker 可以被多个集群共用。 使用场景:n台gpu机子,被生产,测试集群共用。
k4t元数据副本:元数据支持同步到1-3台worker。元数据-master程序支持分离。元数据支持单独放在卷中,继而通过卷复制,卷快照,方式备份。支持外网远程卷。
n个节点k8s元数据的【时间!】副本(存档),只有1个。k4t2 默认有7个。还可以自定义存储周期。
k4t2 支持用卷,卷复制,卷快照方式备份。支持自定义备份脚本和软件。支持自己的备份方案。
k4t2 元数据卷支持存放在nfs,ceph,iscsi,甚至云存储等。元数据跨云(或机房)备份,恢复,迁移比k8s容易,基本有手就会。
k4t2 元数据,按照应用名,分别存储在子目录中,你可以单独恢复任意单个。而k8s只能整体恢复。
k4t2 元数据,默认备份在1—3台worker中,而不是manager中。
k4t2 会产生大量小文件,只占磁盘,不占内存。解决了etcd占用内存太多的问题。
win: c:\ProgramData\k4t\【k4t2m_11111】\apps\
linux: /etc/k4t/【k4t2m_11111】\apps\
其中,【k4t2m_11111】是版本号
k4t2 apps —》k8s pod k4t2 apps 对应一个 普通容器 container,只有一个container。默认不支持pod,除非你自己替换podman。
无双寿报 —》k8s daemon set
锁定副本ip端口容器:固定ip端口容器,支持mysql,redis集群,etcd集群等。powershell脚本可以控制 —》k8s 无对应 功能。
2027年将推出:powershell脚本 + k4t2设定 + 无双寿报 —》k8s 有状态 pod
所有容器启动时,限制为8核cpu,启动1分钟后自动按【app设定值】限制cpu。为 java 优化。
可以热更新 cpu 限制,而无需重启容器。
可以 热增加 容器内存限制,而无需重启容器。
不可以 热减少 容器内存限制。【app设定值】内降低内存限制值,应用后,将导致容器重启。
采用 linux 版 powershell ,为 linux下容器提供辅助。powershell比压马路(yaml)强很多。比如表达if-else,循环内套if等。支持把json,yaml文件,解析成ps哈希表对象(变量),树形式,继而读写,传值,而不是字符串找替。支持属性,方法,函数,支持多语言参数,ps1脚本内支持存储数据,支持数据变量化。支持对象序列化,反序列化。支持在win,linux中,读写各种数据库。
不支持!在linux 版 powershell中,调用各种linux本地脚本,并传值。如:py,perl等。
高级版考虑支持,在linux 版 powershell中,调用数据库,云服务等。
建立,调整,虚拟机,vps,云存储等各种参数。
基于powershell和云账户的,跨多公有云临时租虚拟机。搜:“云服务器 竞价 实例”(1年后开通)
通过脚本,支持【竞价 云服务器 偏好(偏心值)】【优先级】(相当于云服务器 比价 和 偏好)
基于powershell和云账户的,跨多公有云临时租ip。参见:“云服务器 弹性 公网 ip”(1年后开通)
支持相关devops工具软件,如gitlab,githook,jenkins等。
支持!在linux 版 powershell中,调用各种linux本地脚本,并传值。如:py,perl等。
支持任务计划。
主控机支持x64和arm cpu架构。支持多主控机,支持多主控机之间异构cpu。
被控机支持x64和arm cpu架构。支持:worker1 为x64,worker2 为arm。
其他架构被控机,如龙芯,risc-v也可以支持。只需要编译k4t2和powershell。或用qemu虚拟机也应该可以。
支持主控机,被控机之间,采用异构cpu。
被控机支持用x64+qemu,执行arm64 linux image。—beta
被控机支持用arm64+qemu,执行x64 linux image。—beta
被控机支持用【股沟 安全容器技术 gVisor】实现【linux 容器 虚拟机级别隔离】—beta
被控机支持用【kata-container】实现【linux 容器 虚拟机级别隔离】—beta
被控机支持用【firecracker-containerd】实现【linux 容器 虚拟机级别隔离】—beta
‘在node上平均寿报数量’
‘优先使用内存占用低的node’
‘优先使用cpu占用低的node’
‘按节点id顺序_让寿报填满cpu内存之一’
‘使用node权重百分比’
‘使用node节点上的sc自动伸缩脚本’
实现了node排斥应用,排斥优先。
实现了应用显式绑定worker(对标k8s node 亲和性),比k8s方便只直观简单很多。应用从worker1迁移到worker2容易。 —此特点深受集群类应用喜欢。如elasticsearch,redis等。
实现了应用排斥多个应用。
实现了应用1依赖应用2。
(网关)负载平衡器是独立的,多集群公用的。可以理解为网关跨k8集群使用。
不同k4t集群内Node上的容器,支持从单个、多个负载平衡器转发流量,即多网关。
目前k4t2【同时】支持2个网关:traefik,apisix。
这意味着:你可以同时从a,b,2台网关机子,向worker c 上的nodeport d,转发流量。
如果你不需要,可以关掉网关机a(或停止其进程),这样就只有b到c机d端口的流量。
结论:同时!支持双网关,企图解决下列问题:网关有些插件不灵,或者配置麻烦,或者插件是收费的,或者不支持gpu等。
假设你集群内有100个应用,99个走a网关,1个特殊应用走b网关。ab上网关软件不同。
网关不允许跨机房,跨地区,调度流量。不允许跨vpn调度流量。 98%以上应该调用,本公私云内部资源。 但总有少量跨云调用的必要性,必须由元婴老祖处理。(2年后开通)
非典型网关: 非典型网关可采用n台虚拟机。 可以绑定到,n台k4tworker。 可以绑定到,k4t的app级别(寿报)。
Dns是独立的,是多集群公用的。
不同k4t集群内Node上的容器,支持向单个、多个dns注册。从而达到跨集群的目的。
只需要控制vlan的隔离性,即可控制2集群隔离、多租户问题。超过4000个vlan的大规模集群,就需要交换机上的vxlan功能。
定时杀死最老容器(用大力丸解决容器亚健康状态)。
寿报下岗前等待时间(摘除负载均衡,和dns后。docker stop前的,等待时间。)
1 考虑放弃 容器生命周期中的滚动更新,回滚功能。
想让容器滚动更新版本=建立新编排
想让容器回滚=停止新编排
考量是:
要被滚动更新的新旧容器应用,处理image不同外,有可能还有其他差别:容器副本数,生存的k4tworker节点(node节点),内存设定等。
简单来说,是用网关的蓝绿发布(建立一个新编排)代替滚动更新。
这样简单、安全了很多。
k4t2中的滚动更新,是这个样子滴: 脚本: 1 精确控制滚动更新数量:在老应用中,减少副本数。在新应用中增加副本数。 2 通过网关:调整蓝绿发布,流量的百分比。可以ab两个版本,abc3个版本,abcd4个版本这样调整。 3 延时设定:上述1—2过程可以持续n天,n月。
不需要类似于k8s的namespace功能。
不需要rbac角色功能。轻量的容器管理软件,没必要搞账户和权限。也搞不好。
不需要管理ca,不需要制作tls证书,证书轮换。不需要join master。而使用ssh的ed25519秘钥。master通过ssh协议与node通信。
不需要ipvs,iptable,kube-proxy,flannel,calico。
内置的vxlan网络层,类似于flannel,不支持4层网络策略。而采用vpc,vlan,网络组限制4层通达。不支持7层网络策略,而采用【网关】实现策略。
项目作者: 『逆练k8s的欧阳疯』
“要打造比k8s更好的,容器自动编排管理框架”我想试试。
https://gitee.com/chuanjiao10/k4t2
https://gitee.com/chuanjiao10/k4t2/issues
QQ群号:722528388
tags: