Create your Gitee Account
Explore and code with more than 5 million developers,Free private repositories !:)
Sign up
Clone or download
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README.md

k4t

kubernetesr入门门槛较高,运维复杂。本项目致力于降低安装、运维、使用复杂度。让客户专注于业务,解放生产力。

我用powershell开发的,号称比k8s简单10倍,功能强1倍的,稳定1倍的,轻量容器集群的自动化部署、扩容以及运维的平台。(国产k8s)全功能的哦

目前基于docker,后续可能会增加容器。


项目名称,图标,官方群。

k4t

k4t即:《kaiiit》

中文名:《海贼帝·优秀的怕被沽沟暗杀·黑毛腿》

中文别名:《ps1倚天剑》

这是一套基于《卡死你3000》打造的,全功能,容器集群的自动化部署、扩容以及运维的平台。(国产k8s)。它采用开放式架构,具有网络简单稳定,使用简单,脚本操控灵活的特点。

powershell传教士 作品

群名称:k4t官方1群

这个群目前没啥人,以后将人满。将收费。

群 号:722528388

这个项目可以出售,欢迎云厂商,容器厂商与我联系合作。1328486072(我email)qq.com


问:完美版的k4t项目,由哪几部分组件构成?

答:

1 master端。

正在开发中。

2 node端。

已经开发完成,并部分开源免费成为雏形版。

3 动态负载均衡api网关。(外部)

用于给一组容器应用,形成统一的ip。

目前基于我编写的envoy后端增删脚本。你也可diy,改成自己喜欢的。

4 动态dns。(外部)

用于给一组容器应用,形成统一的服务名字。

目前基于未激活的无图win2019。你也可diy,改成自己喜欢的。


问:完美版的k4t项目,将实现百分之多少,k8s的功能?

答: 101%

我认为,我用powershell代码开发了,70%的功能。这些功能是和k8s雷同的。

有10%k8s的功能,被我当糟粕丢掉了。这部分详见主页---》将来应该永远不会有的功能。

有11%的【无双寿报】功能,是我独创发明的。这些功能k8s没有。

有10%的k8s功能,是dns和dns注册。k4t有dns注册接口,没有开发dns功能。而是通过安装,搭建,来实现的。你可以选择不同的dns来搭建。

有10%的k8s功能,是ip负载均衡和ip注册。k4t有ip注册接口,没有开发ip负载均衡功能。而是通过安装,搭建,来实现的。你可以选择不同的【负载均衡器】来搭建。

100% - 10%糟粕 - 10%dns - 10%负载均衡 = 70% + 11%独创的无双寿报代码 = 最终我开发的k4t,相当于81%的k8s功能。

说明

1 这里说的是【k4t全功能旗舰版】。因为【k4t雏形版】的功能几乎被我删除光了。

2 很多功能还在开发中。并不是说现在已经实现,而是说要项目想要实现。具体来讲,请看旗舰版v1---v4要实现的功能。


雏形版。 (已经发布)

下载: git clone https://gitee.com/chuanjiao10/k4t.git

雏形版功能不全,因为我在里面只放了,少量最简单的功能模块

雏形版是用来测试,和演示架构原理。鉴于目前总有人质疑k4t,我发布雏形版的目的是:

1演示k4t网络原理。

2演示k4t的三级元数据架构(文件目录)。

感觉k4t靠谱的,请入官方群,找我要 【标准版】或【旗舰版】 ,必须进行内测培训。

雏形版使用教程

https://gitee.com/chuanjiao10/k4t/blob/master/docs/k4t%e9%9b%8f%e5%bd%a2%e7%89%88readme.md

雏形版更新日志:

2020-08-05 首次上传代码。

2020-08-27 陆续上传代码。

2020-09-01 发布第一版,雏形版软件。


标准版。(3月后,将发布)

都是ps1脚本,以源码方式运行。

计划2021-01-01之前发布标准版。本项目官方群内,找我要,免费。


全功能旗舰版,使用教程:

https://gitee.com/chuanjiao10/k4t/blob/master/docs/k4t旗舰版readme.md

全功能旗舰版。项目进度。 roadmap

本项目官方群内,找我要,收少许培训费。都是ps1脚本,以源码方式运行。

V1

v1具有下述特性内的所有功能,但不含v2,v3,新增功能。

V2

v2未来将新增:

node根据cpu,内存,的占用率,自动伸缩功能。这是k4t_server的功能。

从主控机到nfs复制文件,从nfs到主控机复制文件。

计划2021-04-01发布v2 alphi1版。

V3

v3未来将新增:“无双寿报”功能。这是k4t_client的功能。

计划2021-08-01发布v3 alphi1版。

V4

v4未来将新增:gpu支持。这是k4t_client的功能。这是k4t_server的功能。

计划发布时间:未知。


项目口号

跪拜轻量级的主从,唾弃复杂的【拜占庭问题】。

【拜占庭】是历史真人。【拜占庭问题】是数学家提出的,关于分布式的虚拟问题。

拳打k8s,脚踢docker swarm,引领docker使用潮流。

每个node可配250---750个ip。ip还可以绑定容器,ip随容器在node间移动!

别去学yaml关键字,k4t让linux的文件目录再次伟大!

image


k4t 功能特色

一 、k4t最大的好处:

在k8s集群,或docker swarm上,搭建应用集群,如redis集群,一直比较困难。

其根本原因是在node上暴露端口困难,而nodeport又和内层ip路由纠缠不轻,导致了痛点。Statefulset根本不灵,需要开发xxx-operator解决。

而k4t从根本上就没有这种问题。请记住: “k4t专为构建container集群应用”打造!k4t专门为解决Statefulset骗局而生 比如mysql5.6的主从。欢迎用docker构建集群用户使用。

二 、元数据存储的特色:(国产etcd)

master上使用【目录+文件】保存元数据。etcd其实也是目录文件。好处是:

1 哪怕元数据的数据库达到100gb,也不占内存。

2 不依赖master。99%基本只需要1个master,而不需要主备高可用。

master挂了1---2分钟无所谓。master重启1---2分钟无所谓。

比如10个node,

那么接上网线10秒,同步数据。断开网线2分钟,数据同步出错。

那么接上网线10秒,同步数据。断开网线2分钟,数据同步出错。

master长时间挂了,毫不影响node上容器的工作,毫不影响网络。

用户 ---》跟k4t无关的外部负载均衡器,或反向代理,或dns ---》node节点

3 高可用的话,需要2个master。

两个master之间同步数据,对于win,linux,可以使用卡死你3000的文件定时复制。

若两个master都是linux,用rsync也行。

结论:

从分布式角度来讲,etcd选择了强一致数据库,而k4t选择了不一致数据库,和间隔20---120秒同步一次数据库。

4 k4t master基本不占用cpu、内存、资源,但占用网络,io资源。每台master带50台node的话,容易之极。带100---200台node是正常。千台是极限。当然这是我设想的,没经过验证。

三 、master的特色

  • 让k4t管理员控制,寿报负载均衡算法。

  • 让k4t管理员控制,寿报负载均衡周期。

四 、master和node通信的特色

master-node通信采用ssh协议,而不是https协议,无需制作证书。

无需折腾ca,cn,域名绑定ip等。

没有证书问题。不必受k8s证书1年限制。

只需要制作,分发秘钥对。既简单又安全。谁敢说ssh秘钥对,不如tls证书安全。

而且不需要join master。

ssh客户端和sshd都是现成的,无需重复造轮。

无需另开端口,无需另开放防火墙,无需另起进程监听。

五 、 node节点工作特色

node节点上的container容器的工作,依赖【从主控机复制到本地磁盘】上的元数据,而不依赖主控机上的元数据。

master长时间挂了,毫不影响node上容器的工作,毫不影响网络。

用户 ---》跟k4t无关的外部负载均衡器,或反向代理,或dns ---》node节点

六 、外部的,dns注册,反向代理,的特色

  • 让k4t管理员从外部,通过配置dns,算法,时间。来达到应用限流,控制负载均衡的目的。

  • 让k4t管理员从外部,通过配置反向代理,算法,时间。来达到应用限流,控制负载均衡的目的。

七 、k4t资源占用低。云计算用k4t,能给你省钱!!!

  • master默认会由管理者起1个powershell进程,作为终端。最多再起一个powershell进程,用于多线程推送元数据。总共占用最多不超过400MB内存。

最少的话,100mb左右内存,起1个powershell进程。临时推送完元数据后,后即可退出。

  • node默认会起1个powershell进程。占用内存不超过150MB。

k4t功能列表 m=master,n=node。a=应用。 x=貌似k8s没有的新功能。

master节点功能:

master节点最主要的功能是: 推送元数据库,负载均衡算法!

  • (这个功能k8s应该没有)根据每个应用设定的不同,自动在linux节点机之间,根据cpu,内存监控等结果,负载均衡容器。#'在node上平均寿报数量','优先使用内存低的','优先使用cpu低的','按节点id顺序_让寿报填满cpu内存之一','使用权重百分比','使用node节点上的sc自动伸缩脚本'

k8s在node上负载均衡pod,有一套内置算法。不受用户控制,不能单独对每个servcie设置。

  • (这个功能k8s应该没有)允许管理员在master上,手动用命令强制根据cpu,内存监控等结果,负载均衡容器。(因为主动负载均衡,会杀死容器,会导致容器内业务中断,会导致应用网络和功能的波动)

  • (这个功能k8s应该没有)部署那些k8s不好支持的,集群应用!

  • 选项功能。推送master上的所有元数据,到某个指定的N个node节点。以达到备份元数据的目的。每分钟copy1次,循环copy10个副本。


node节点功能:

  • 应用滚动更新

  • 驱逐点标记。

  • 污点标记。

  • node排斥某个应用,删除排斥。这可以理解为临时性排斥某应用。

  • (这个功能k8s应该没有)container数量限制

  • node最小保留内存_MB = 120

  • node最小保留cpu_百分比 = 5


从master到node功能:

  • (这个功能k8s应该没有)推送【应用挂载目录】

【master机/etc/kasini3000/k4t_server/shoubao_server/【你的应用名】/mnt1/】


应用(寿报)的功能属性。

  • (ax) 从master到node:分发应用的image。1用户pull一个image。2docker save到【master机/etc/kasini3000/k4t_server/shoubao_server/【你的应用名】/image/】

  • (mn) 限制每node节点上,container固定副本数。或最小,最大副本数。在master上设定所有node的应用副本数总和。

  • (an) 限制container的cpu,内存。支持热更新container的cpu,内存限制。对应docker的--cpus,--memory。

  • (m) 限制应用建立在哪些node节点,这可以理解为永久性排斥某应用。

  • (a) 设定应用,排斥另外多个应用。node已经有应用a,则本应用b不会运行。

  • (m) (这个功能k8s应该没有)设定每应用的负载均衡规则:'在node上平均寿报数量','优先使用内存低的','优先使用cpu低的','按节点id顺序'

  • (a) 每应用独立的,挂载目录。 /etc/kasini3000/k4t_client/shoubao/【你的应用名】/mnt1

  • (na) (k8s service的lb在摘除pod流量前,单独的等待时间,.spec.terminationGracePeriodSeconds)每应用独立的,寿报下岗等待时间。支持node全局等待时间。

每应用独立的,脚本接口(类似于k8s的钩子)

  • (a) 探活脚本接口。/etc/kasini3000/k4t_client/shoubao/【你的应用名】/running_check/rc.ps1

  • (a) docker pull需要的proxy,login,logout脚本接口

/etc/kasini3000/k4t_client/shoubao/【你的应用名】/pull_image_before/docker_login.ps1

/etc/kasini3000/k4t_client/shoubao/【你的应用名】/pull_image_after/docker_logout.ps1


  • (a) 监控脚本接口。给监控平台返回监控信息。

/etc/kasini3000/k4t_client/shoubao/【你的应用名】/monitor/m.ps1


  • (a) url注册,反注册接口。反向代理注册,反向代理反注册。

/etc/kasini3000/k4t_client/shoubao/【你的应用名】/url_register/reg.ps1

/etc/kasini3000/k4t_client/shoubao/【你的应用名】/url_unregister/unreg.ps1


  • (a) dns注册,反注册接口。

DNS注册特点:有一定的延时

/etc/kasini3000/k4t_client/shoubao/【你的应用名】/dns_register/reg.ps1

/etc/kasini3000/k4t_client/shoubao/【你的应用名】/dns_unregister/unreg.ps1


  • (a) 监控脚本接口。根据对container内(连接数)监控信息,变更container副本数。以达到自动扩、缩container副本数量。副本数的扩缩不依赖master。

/etc/kasini3000/k4t_client/shoubao/【你的应用名】/scalable_copies/sc.ps1


  • (a) 容器启动后,脚本接口。

/etc/kasini3000/k4t_client/shoubao/【你的应用名】/after_start/as.ps1


  • (a) 容器停止前,脚本接口。

/etc/kasini3000/k4t_client/shoubao/【你的应用名】/before_stop/bt.ps1


根据k4t功能,延伸出来的使用方法。

  • 基于【外部dns的】蓝绿发布,基于【外部dns的】灰度发布。

  • 基于【外部反向代理】的蓝绿发布,基于【外部反向代理】的灰度发布。


将来应该永远不会有的功能。

  • 不需要类似于k8s的namespace功能。

  • 不需要rbac角色功能。轻量的容器管理软件,没必要搞账户和权限。也搞不好。

  • 不需要管理ca,tls证书,证书轮换。

  • 不需要join master。

  • 不用calico,不用flannel,用我独创的node上ip地址池方法。

  • 不用istio没有限流。使用外部反代来限流。

  • 没有内置dns,但必须要有外部dns。dns算项目外。

  • 没有内置反向代理如nginx ingress。但必须使用外部反向代理。反向代理算项目外。

  • 没有web图形。k8s不也是只有命令行吗?dashboard是外部项目。欢迎【ASP.NET Core Blazor WebAssembly】开发者前来合作。合作搞k4t的web。

  • k4t引擎没有实现crontab。用卡死你3000的crontab引擎可以实现crontab。相当于用master上用定时任务,调用kubectl apply。

  • 没有etcd。也不需要apiserver这个rest的http服务器。

  • 没有繁琐的yaml。

结论:取其精华,弃其糟粕,是也。


这个项目怎么样?听我给你吹~~~

  • (这个功能k8s应该没有)k4t基于docker,docker支持开启swap,支持容器使用swap。而kubelet和pod不支持swap。

使用ssd硬盘建立swap,可以极大的扩充内存,不管你用云服务器,还是自购服务器,加ssd都比内存便宜。

ssd的swap是对冷数据较多,但占内存巨大的docker容器,比如es,尤其好。

  • 脚本中容易保存,计算变量。yaml不行,还得靠额外的脚本代码。

  • 脚本灵活,方便自定义。k8s的yaml定义固定。任何使用“yaml关键字定义”的用户,都必须严格遵守【对方的yaml定义】,简称【用户是奴隶】。而任何使用“基于脚本代码的”【用户是主人】。

  • 脚本简单,yaml定义繁琐。

  • 任何基于yaml东西,的都有个麻烦:“表达foreach麻烦”。 aws工程师提到“YAML是一种很好的格式,用于描述集群的所需状态,但是它没有用于表达逻辑和可重用抽象的原语。” -----这个大家认同吗?

AWS的cdk8s工具包通过使用流行的TypeScript、Python、Java和.NET编程语言来处理框架,从而解决了这个问题。使用这些语言的高级功能,工程师可以编写比YAML支持的更复杂的配置逻辑来自动执行手动任务。这减少了需要编写的样板代码的数量,对于有高级需求的公司来说,它提供了在Kubernetes之上创建多层软件逻辑以抽象其复杂性的能力。

基于powershell的k4t不也是,这样去解决yaml的问题吗?

原文在此: http://www.diglog.com/story/1002026.html

  • 没有etcd,帮你省2台机子钱!除os内核外,只需占用不到1gb内存,又帮你省半台机子钱!最新的etcd随机丢数据bug,还无日志。k4t没有

  • k8s有时候命名空间删不掉,k4t没有。

  • 需要扶梯?不。

  • 二进制安装折腾证书?k4t不需要

  • 内网的内网,网络插件不稳定?k4t稳定,性能高。

  • coredns偶尔解析无返回,基本上必须要安装缓存?k4t不需要

  • k4t基于脚本,脚本复制文件目录容易。从master复制【docker映射的路径/mnt】到node,从master分发image到node,从node回收log到master等比k8s容易。 所有镜像只从master上pull然后推到node即可,不香吗?

  • k4t支持zabbix监控,可以在k4t集群外。甚至可以是从互联网来的监控。无需在【k4t集群内】安装prometheus,减轻集群负担。降低集群复杂性。

k4t项目,如何减缓容器的网络存储,这座大山。

目前:

  • 从master到node,推送image。

  • 从master到node,推送,mnt1,mnt2,目录。

将来:

  • 计划设计【c:\ProgramData\kasini3000\k4t_server\shoubao_server\【应用名】\before_start\bs.ps1】

计划从主控机执行复制命令。从nfs到被控机复制文件。

  • 计划设计【c:\ProgramData\kasini3000\k4t_server\shoubao_server\【应用名】\after_stop\as.ps1】

计划从主控机执行复制命令。从被控机到nfs复制回文件。


这个项目缺点是啥?我也不瞒着。

  • 当前启动容器的副本总数,需要master定时循环到node上去摘取,汇总。

  • master访问node有可能会有超时,失败。(kubelet watch etcd也有可能失败)。访问失败,这是分布式必然存在的问题。

  • k4t占用网络资源,若node超过20台,则需要好的路由器,则必须使用vlan技术。


k4t的最大缺点: 必须有的功能,用户必须自己搭建。但是是外部功能,和k4t无关。

dns服务器。用于注册容器。

网关,或反向代理。用户流量转发,限流。建议使用nginx,tengine,kaproxy,kong等。

一篇kong教程: https://www.cnblogs.com/pingyeaa/p/12902454.html

envoy:

traefik v2:

haproxy:

ocelot:


可有可无的功能。但是是外部功能,和k4t无关。

linux的node上的dns缓存。


项目由来

最开始的灵感,大概是在2020年4月10日左右出现的。当时我怀疑我是不是疯了?但心底里有个声音告诉我,这是可行的。

5天左右之后,我就开始把这个想法告诉了大家(开吹)。也有很多人觉得我疯了。

其实,不信正常。这是惊天之举,简直让人难以置信。我自己都不是很肯定能搞出来,我自己都不太信我自己。

你问:你为什么会开发这个项目?

我答:

  • 我也曾夜里坐床学k8s,参悟etcd。但学不会,越学越头昏脑涨,感觉这玩意太麻烦,甚至错了。

  • 心底里有个声音告诉我,能成。

  • 这个项目能否成功,还是成为笑话,我心里没底,但我想试试。

我问:如果k4t项目失败了,我应该被嘲笑吗?

Give Me Some Sunshine给我些阳光

Give Me Some Rain给我些雨露

Give Me Another Chance再给我次机会

let insolent talker 滚!

这世界天生瞧不起你的人太多了,包括每个人的爹妈,他们从你小时候就开始瞧不起你,而不是扶上马送一程。

你不得不从小开始面对鄙视,dissing。而你也继承了“天生瞧不起别人”的这个特性。

  • 世界上第一个吃螃蟹的人,应该被人笑是傻瓜吗?

  • 世界上第一个怀疑“地球并不是宇宙中心”的人,应该被火烧死吗?

  • 世界上第一条上岸探索的鱼,应该被鱼群嘲笑吗?它注定能成功进化出腿,从而适应陆地生活吗?

  • 世界上本就没有必然的成功。就算不成功,作为前浪,也给后浪踏出一步探索的路。

image

中国人总是在外国人基础上修修补补2次开发,缺乏质疑的勇气,和探索的精神。我对k8s的质疑,和探讨,总被视为叛逆,总想要diss我。

想都不敢,那样不是注定被(以美国为首)的外国人,牵着鼻子走吗?

这和 “谁要说地球不是宇宙中心的人,都将被火烧死” 有啥区别?

你问:我看你不太会k8s?

我答: 是的。

1 主要由于k8s的yaml定义麻烦。学的我头昏脑涨。

2 我对k8s的了解不太全面,有些没用到的,就偷懒没仔细研究。

你问:你连k8s都一知半解,谈何超越?

我答:

=====我不怎么会sed,也能写出比sed更好用的工具哦!======

我学不会sed,费劲学会一点点,却记不住sed,为了治疗我的这个病症,我写了一个小脚本《ps找算替.ps1》,

它用起来很简单;还win,linux通用;还不支持正则;还不需要转义字符;竟然可以99%枪毙linux下的sed。

口号=简单死你!专治学不会,记不住sed的人。解决了sed难学难用的痛点。

脚本下载地址:

https://pan.baidu.com/s/1yuqUOhY9lEw65vJ-vceg4w

手册&例子:下载地址内---》ps找算替_v3_readme.html

=====我不怎么会ansible,也能写出比它更好用的《卡死你3000》哦!======


为什么是用powershell开发?

你道:“你用什么计算机语言?开发国产k8s”

我道:“powershell”

你道:“我学了go语言2-3年,还不敢说没开发出山寨版k8s,最次也得是用python开发呀。 你powershell什么破烂玩意?也敢说开发k8s?”

我道:“用powershell从主控机,远程连接linux被控机,用ssh协议+keyfile,这不奇怪吧?”

你道:“怎么了?”

我道: “主控机-被控机通信采用ssh协议,而不是https协议,无需制作证书。 无需折腾ca,cn,域名绑定ip等。 没有证书问题。不必受k8s证书1年限制。 只需要制作,分发秘钥对。既简单又安全。谁敢说ssh秘钥对,不如tls证书安全。 而且不需要join master。 ssh客户端和sshd都是现成的,无需重复造轮。 无需另开端口,无需另开放防火墙,无需另起进程监听, 这不是天生要比go,起进程监听,制作证书,证书绑定ip,简单10倍吗? ”

你问:powershell中有什么?

我答: 1 能建立文件目录。能打开文件,读写数据。这很伟大! 2 能ssh远程执行命令。 3 能复制文件。

你道:这伟大个p呀?! 20年前的shell都有这些功能好不?

你问:你开发k4t,使用了什么先进技术啊?

我答: 基本没用什么先进技术。用shell其实照样能开发出一套山寨k8s。

我用powershell可以开发出这套国产k8s系统。你照样可以用shell模仿powershell,实现这套k8s系统。

你用shell照样可以,开发出一套寨版k8s!并不难!

你道:你绝对疯了!

我道:莫急,且听我慢慢道来。

如何用powershell制作(国产etcd)。

首先,需要肯定的是,容器编排系统,必然是master和node这种一主多从架构。

我用powershell加ssh,实现了主从传递消息。当然了,你用shell也能实现。

从这一步开始,我教大家实现etcd。

主从消息传递,有推,拉,两种方式。k8s使用kubelet去watch etcd的键值对,目录。

拉这种方式是错的,导致k8s今天的模样。我开发的k4t摒弃了k8s的架构,而使用从master推到node的方式。

master上使用【目录+文件】保存元数据。etcd其实也是目录文件。好处是:

1 不占内存。

2 不依赖master。master挂了1---2分钟无所谓。基本只需要1个master。

3 高可用的话,需要2个master。

两个master之间同步数据,对于win,linux,可以使用卡死你3000的文件定时复制。

若两个master都是linux,用rsync同步文件也行。

不过这种方案也有坏处,就是让开发复杂了少许。


系统需求

node暂时只支持linux,容器暂时只支持docker。

master支持 : win10,win2016,win2019,alpine3.9---3.11,centos7,centos8,debian9,debian10,ubuntu1604,ubuntu1804,ubuntu2004,

node支持:centos7,centos8,debian9,debian10,ubuntu1604,ubuntu1804,ubuntu2004,(计划支持alpine,但目前有个技术问题搞不定)

不支持:不支持centos6

master上必须安装卡死你3000。 https://gitee.com/chuanjiao10/kasini3000

node上必须安装卡死你3000的agent。 https://gitee.com/chuanjiao10/kasini3000_agent_linux


k4t网络架构(重要)

网络图

k4t建议使用nginx,tengine,haproxy,反向代理网络流量。支持nginx注册。

k4t建议使用dns解析网络流量。支持dns注册。

k4t建议使用路由器转发网络流量。


程序在哪?

答:

master上的k4t程序,在【k4t_server】目录。

node上的k4t程序,在【k4t_client】目录。

目录内的程序,都是ps1脚本。以源码形式运行。

9月1日后,暂不向大众开源。只向客户开放源码。

为什么你要先吹,几个月后,才发布代码?

声明作者是我呀。就怕我先给你代码后,你拿着代码向人吹是你发明的,是你写的。


安装


安装 k4t 的dns

一安装win2019

先安装有图版,熟练后安装无图版,无图版win+dnsd总共占用内存800mb左右。可以不用激活。不激活使用半年,半年后重装。

二从客户机管理win2019

有图版win2019管理略。

无图版win2019,可以通过在win10上安装WindowsAdminCenter,然后安装wac的dns插件,然后添加win2019服务器的ip,然后从客户端用wac的web图形管理win2019。

无图版win2019,还可以通过在win10上通过powershell远程管理。

win10启用本地winrm:

Enable-PSRemoting

从客户机,信任服务器

Set-Item WSMan:\localhost\Client\TrustedHosts * -Force

从本地win,连接远程win2019

Enter-PSSession 远程ip -Credential (Get-Credential)

在远程win2019上,更改ip。更改成功后会卡死,需要重新用新ip连接win2019。

(Get-NetAdapter)[-1] | New-NetIPAddress -AddressFamily IPv4 -IPAddress 192.168.11.220 -PrefixLength 8

设定dns

(Get-NetAdapter)[-1] | Set-DNSClientServerAddress -ServerAddresses 192.168.11.1,114.114.114.114

图形安装dns服务器:

1 dns服务器 2 远程服务器管理工具---》角色管理工具---》adds工具,和adlds工具---》dns服务器工具

对于无图版win2019,用下列powershell命令远程安装dns服务器:

远程登录到win2019后用: Install-WindowsFeature dns,RSAT-DNS-Server

三用powershell命令管理win2019的dns域

获取dns域信息: Get-DnsServerZone Get-DnsServerResourceRecord -ZoneName v1.k4t

创建dns域: Add-DnsServerPrimaryZone -Name v1.k4t -ZoneFile v1.k4t.dns

添加主机和ip: Add-DnsServerResourceRecordA -Name ng -IPv4Address 192.168.12.11 -ZoneName v1.k4t -TimeToLive 00:03:00 Add-DnsServerResourceRecordA -Name ng -IPv4Address 192.168.12.12 -ZoneName v1.k4t -TimeToLive 00:03:00

从客户机查询: Resolve-DnsName ng.v1.k4t -Type a -Server 192.168.11.220

删除主机和ip: Remove-DnsServerResourceRecord -Name ng -RecordData '192.168.12.11' -ZoneName v1.k4t -RRType A -Force

四用win2019上的dns,作为k4t的名字服务。

原理:应用内的容器启动成功后,会运行这个文件:

被控机/etc/kasini3000/k4t_client/shoubao/你的应用名/dns_register/reg.ps1 然后运行 被控机/etc/kasini3000/k4t_client/_建立dns_session文件.ps1 然后向win2019的dns服务器上注册【应用名】【应用ip】dns的A记录。

  • k4t的应用名,为1-16个英文或汉字,可以作为k4t的域名的主机名部分,支持汉字。

  • 域名为v1.k4t。

  • 支持ipv4的ip。原则上支持ipv6的ip,但需要修改下这2个脚本: 【主控机c:\ProgramData\kasini3000\k4t_server\default\dns_register\reg.ps1】 【主控机c:\ProgramData\kasini3000\k4t_server\default\dns_unregister\unreg.ps1】

  • 在win2019上运行【Add-DnsServerPrimaryZone -Name v1.k4t -ZoneFile v1.k4t.dns】

  • 把这两个文件中的【return $true】注释掉: c:\ProgramData\kasini3000\k4t_server\shoubao_server\你的应用名\dns_register\reg.ps1 c:\ProgramData\kasini3000\k4t_server\shoubao_server\你的应用名\dns_unregister\unreg.ps1

  • 在每台node中,更改这个文件: /etc/kasini3000/k4t_client/_建立dns_session文件.ps1 更改其中的:

$private:PSRemoting服务器ip = '1.2.3.4'
$private:密码明文 = '你的密码'

改成win2019的dns服务器的ip和密码。

测试:

假设你的应用名为【张三】,寿报启动成功后 :

Resolve-DnsName 张三.v1.k4t -Type a -Server 你的win2019dns服务器ip地址

会返回n个a记录。每个ip,对应一个容器。当容器停止,则ip被删除。


名词解释

主控机:master。master上有k4t_server引擎。

linux节点机:node。node上有k4t_client引擎。对标kubelet。

1级数据库(别名:服务器应用):位于win,linux的master上。建立一个【应用名】的文件夹,内有xml文件。

2级数据库(别名:节点机应用):位于linux的node上。xml文件。

3级数据库(别名:寿报):位于linux的node上。是n个txt文件。每个文件对应一个docker的container,负责单个容器的生命周期。

无双寿报:即副本为1的寿报。即k8s的daemon set。

容器下岗后存活时间:应用的反代反注册后,dns反注册后,则容器下岗。从容器下岗后,到杀死容器前,这段时间就是容器下岗后存活时间。 有两个值,node全局。应用。应用优先。

容器灵:

【道阶法宝】有人听说过吗?这种超级法宝,有一定几率诞生“器灵”。

k4t中,我给容器,发明了“容器灵”!!!用于管理容器。嘎嘎,我简直要赞美我自己!

现有的容器灵有:

  • 呼吸机
  • 口罩
  • 烂香蕉皮
  • 臭鸭蛋
  • 熔喷布
  • 细胞因子风暴
  • 烂西瓜
  • 苹果核
  • 鲱鱼罐头
  • 卡苏马苏
  • bug
  • 喵帝驾崩
  • 瑞德韦东

k4t用户手册 document

master安装:

https://gitee.com/chuanjiao10/k4t/blob/master/docs/master安装_cn.md

node安装:

https://gitee.com/chuanjiao10/k4t/blob/master/docs/node安装_cn.md

k4t 旗舰版readme:

https://gitee.com/chuanjiao10/k4t/blob/master/docs/k4t旗舰版readme.md

k4t日志位置:

  • master: /etc/kasini3000/k4t_server/k4ts_log.txt 或 c:\ProgramData\kasini3000\k4t_server\k4ts_log.txt

  • node: /etc/kasini3000/k4t_client/k4t_log.txt

用户应用日志位置:

  • master:

/etc/kasini3000/k4t_server/shoubao_server/【你的应用名】/shoubaos_log.txt

c:\ProgramData\kasini3000\k4t_server\shoubao_server/【你的应用名】/shoubaos_log.txt

  • node:

/etc/kasini3000/k4t_client/shoubao/【你的应用名】/shoubao_log.txt

亲和性调度原理图

k4t


k4t常见问题

问:每个寿报中有几个容器?

答:1个。

问:master,node可以安装在同一台机子上吗?

答:不可以。

问:k4t元数据从master推送到node完毕后。也不想更新元数据,也不想停止应用,只想维持现有应用。那么k4t的master端,可以关机吗?

答:可以。以后想【更新元数据】,【新建应用】,【删除应用】时,再开机master即可。

问:我的容器启动较慢(比如redis),如何预热?

答:k4t寿报启动后,就要进行探活操作。使用较慢的探活,和允许更多的探活出错次数即可。具体是修改这个脚本:

c:\ProgramData\kasini3000\k4t_server\shoubao_server\【你的应用名】\running_check\url探活慢.ps1

也可以自己写脚本逻辑,嵌入到探活主脚本【rc.ps1】中。

问:寿报的cpu限制,内存限制,提供热更新吗?

答:提供。

问:寿报的环境变量,提供热更新吗?

答:

k4t不提供寿报的环境变量热更新。要想更新环境变量,需要:1编辑node上寿报配置文件,写入环境变量。2在node上,触发寿报滚动更新,这将重启所有容器。

用户可以自行用docker的exec,去更改单个container的环境变量设定。但重启container后,设定的环境变量会丢失。

问:使用vlan后,寿报的ip可以相同吗?

答:不可以!相同的ip,无法注册url,反向代理。


关于培训

计划下列培训

1 用户级培训。少许收费。面向k4t用户,k8s用户,docker用户,运维人员。

2 大众讲座。免费。将在k4t官方群内以语音聊天,qq文字聊天方式提供。听众有义务听我吹k4t,主要内容为k4t特性,安装卡死你3000,和k8s的对比等。


关于(国产k8s)。

我说k4t是“国产k8s”,“或山寨k8s”,是通俗易懂的说法。也是我拉大旗作虎皮的说法。也是往k8s脸上贴金的说法。

实际上,k4t是我从0开始,设计、开发的软件。从原理,到细节,和docker swarm,和k8s都有很大的不同。

我这是原创发明好不好? 世界上懂k8s的人太多了,连谷歌都不认为我是山寨。

我的软件:

1 没用etcd,而用文件目录。

2 没用虚拟网络。

3 没用拉,而用推的办法。处理元数据。元数据分3级,etcd有吗?而元数据的处理细节,也比较麻烦,用了我发明的“容器灵”。etcd根本不需要这么麻烦。

4 没用tls,没用https。而用ssh。

5 没用yaml关键字定义,而用脚本。

6 功能列表中有些功能,是k8s不具备的,我设计出来的。


后记:

k4t如此简单;k4t如此优秀;k4t如此节省资源。谷歌,阿里云会不会怀恨在心,派人来暗杀我?为此我每日担惊受怕,夜里吓得我睡不着觉 ^_^



license

本项目采用自定义license。详见【LICENSE】

This project uses custom LICENSE. The specific LICENSE in this file: LICENSE.

Comments ( 4 )

Sign in for post a comment

About

我用powershell开发的,号称比k8s简单10倍,功能强1倍的,稳定强1倍的,轻量容器编排系统。全功能国产k8s spread retract
PowerShell
Cancel

Releases

No release

Contributors

All

Activities

load more
can not load any more