文章,博客
by
设软件目录为:c:\ProgramData\k4t\k4t2m_11111,则此目录为项目当前目录【~】 ~\mlog.txt
~\apps\【应用名】\malog.txt
#### 主控机 workers log:
~\apps\【应用名】\workers\mwlog.txt
设软件目录为:/etc/k4t/k4t2w_11111/wlog.txt,
则此目录为项目当前目录【~】 , ~/wlog.txt
~/apps/【应用名】/walog/*.txt
journalctl -u k4t2workerd.service #查看进程日志
#设你的应用名为:abc则 ps >
Get-ChildItem /etc/k4t/k4t2w_11111/apps/abc/walog/* | Sort-Object LastWriteTime -Descending | get-content
注意:试用版只有x64 + win版。正式版有x64 + linux版。
https://github.com/PowerShell/PowerShell/releases/download/v7.4.7/PowerShell-7.4.7-win-x64.msi
Remove-Item -Force -LiteralPath 'c:\ProgramData\kasini3000' #备份后,删除旧版
cd C:\ProgramData
git clone https://gitee.com/chuanjiao10/kasini3000.git
1 建立程序目录:c:\ProgramData\k4t
2 解压,复制从:k4t/manager/win_x64/k4t2m_11111
到:c:\ProgramData\k4t
3 检查,确保有此目录:c:\ProgramData\k4t\k4t2m_11111
答:k4t2 主控机命令行程序=k4m,它生成配置文件。
答:
1 向混合云(多公有云,私有云)建立虚拟机,建立vpc网络。
2 加载转换各种文件。如:json,yaml,toml,csv,从各种数据库读写。
3 基于主控机任务计划。
4 连接win,linux被控机。
5 mail,微信,钉钉,朗读声音,桌面壁纸填字,win terminal 壁纸&动图 报警。
6 git ,ci/cd 等。
答:
1 向被控机推送 & 删除 k4t配置文件。
2 实现水平自动负载平衡。
3 监控 worker上,各linux cpu,内存,磁盘等。
4 辅助实现 k4t2 逻辑。
openEuler 22.03 LTS SP4 及以上。openEuler 24.03 LTS sp1及以上。
rocky linux 9.5 及以上。8.10 及以上。
alma linux 9.5 及以上。8.10 及以上。
* debian 12,即将支持。
* ubuntu 24.04 lts,即将支持。
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
#关闭selinux后,必须重启 1次 linux 系统
mkdir /etc/k4t
cd /etc/k4t
git clone https://github.com/kasini3000/k4t2_worker_x64_test --branch main --depth=1 --single-branch --verbose
cp /etc/k4t/k4t2w_11111/k4t2workerd.service /usr/lib/systemd/system/k4t2workerd.service
chmod 755 /etc/k4t/k4t2w_11111/k4t2workerd
systemctl daemon-reload
systemctl enable k4t2workerd
rocky9 ,alma9 :
curl -L https://gitee.com/chuanjiao10/kasini3000_agent_linux/raw/master/rhel9_install_powershell.bash | /usr/bin/bash
欧拉 22.03 ,24.03 :
curl -L https://gitee.com/chuanjiao10/kasini3000_agent_linux/raw/master/openeuler_install_powershell.bash | /usr/bin/bash
答:
1 辅助管理容器生命周期。
2 给网关,去读写etcd,以达到增删路由,后端的目的。(对标k8s的ingress)
3 给dns,去读写etcd,以达到增删a记录,aaaa记录,cname的目的。(对标k8s的服务发现)
#防火墙:
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
#关闭selinux后,必须重启 1次 linux 系统
iptables -P FORWARD ACCEPT
systemctl disable firewalld
#内核:
vi /etc/sysctl.d/sysctl.conf #ubuntu /etc/sysctl.conf
#net.bridge.bridge-nf-call-ip6tables = 1
#net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
sysctl -p /etc/sysctl.d/sysctl.conf
#从华为mirror 装 docker-ce
cat <<EOF > /etc/yum.repos.d/docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable x86_64
baseurl=https://repo.huaweicloud.com/docker-ce/linux/centos/9/x86_64/stable/
enabled=1
gpgcheck=1
gpgkey=https://repo.huaweicloud.com/docker-ce/linux/centos/gpg
EOF
dnf install docker-ce-24.0.9-1.el9
# 重载 docker 的配置文件
systemctl enable docker
systemctl daemon-reload
# 配置docker代理。重要!否则无法docker pull image
# 略
# 重启 Docker
systemctl restart docker
#安装vxlan
dnf -y install bridge-utils iproute
#给防火墙,添加vxlan端口4798
firewall-cmd --permanent --add-port=4789/udp
firewall-cmd --reload
1 k4t2试用版,k4t2正式版,暂时只支持 traefik,apisix网关。
2 k4t2正式版:
3 k4t2试用版:
4 traefik:
版本需要 3.0 及以上。
支持win下部署。支持linux下部署。支持docker部署,但不建议。
支持 某子目录中,多个 toml 动态配置文件部署。(win,linux)
支持 etcd k-v 部署。(win,linux)
支持 有/无 dashboard。(win,linux)
5 apisix:
版本需要 3.9 及以上。
支持linux下部署。支持docker部署,但不建议。
支持 etcd k-v 部署。(linux)
支持 有/无 dashboard。(linux)
2.1 目的: 清空测试机子上,旧的 dashboard 卷。 docker system prune –volumes -f #注意!上面命令,会删除所有docker volume ls 显示的卷。
2.2 目的:编辑文件:/apisix-docker/example/dashboard_conf/conf.yaml
etcd:
endpoints: # supports defining multiple etcd host addresses for an etcd cluster
- "http://etcd:2379"
prefix: "/api6/k4t2w_11111/g1"
2.3 目的:编辑文件: /apisix-docker/example/apisix_conf/config.yaml
etcd:
host: # it's possible to define multiple etcd hosts addresses of the same etcd cluster.
- "http://etcd:2379" # multiple etcd address
prefix: "/api6/k4t2w_11111/g1" # apisix configurations prefix
2.4 目的:启动 docker-compose版apisix: cd /apisix-docker/example docker compose up -d
2.5 目的:查看dashboard 初始化情况 ./list-etcdkey.ps1 -endpoints 你的etcdip:2379 出现下列key,即正常初始化 /api6/k4t2w_11111/g1/consumer_groups/ /api6/k4t2w_11111/g1/consumers/ /api6/k4t2w_11111/g1/data_plane/server_info/4a3a7f9a-4f77-4123-9ddf-ab293c3a7f4d /api6/k4t2w_11111/g1/global_rules/ /api6/k4t2w_11111/g1/plugin_configs/ /api6/k4t2w_11111/g1/plugin_metadata/ /api6/k4t2w_11111/g1/plugins/ /api6/k4t2w_11111/g1/protos/ /api6/k4t2w_11111/g1/routes/ /api6/k4t2w_11111/g1/secrets/ /api6/k4t2w_11111/g1/services/ /api6/k4t2w_11111/g1/ssls/ /api6/k4t2w_11111/g1/stream_routes/ /api6/k4t2w_11111/g1/upstreams/
1 k4t2正式版:
支持 双 dns,多dns。
暂时只支持coredns(1.11及以上),win server dns-server(win server 2016及以上,需要更新到最新补丁),Technitium DNS Server (12.2及以上)
2 k4t2试用版:
只支持单dns。
暂时只支持coredns。
1 上述文章,讲的是双dns,【双dns】和【单dns】道理相同。
问:服务发现,对于容器微服务的意义是什么? 答:
设应用名字为:nginx01 则域名为:nginx01.g1.k4t2w_11111 (k4t2版本号)
更多细节,关注k4t官网。
1 检查文件:
c:\ProgramData\k4t\k4t2_11111\apps\nginx01\这里很多文件,子目录
manager 主控机 os: win10,win11,win2016及以上
manager 主控机 ip: 192.168.2.5
worker 被控机os :openEuler 24.03 sp1 (我用的)
worker 被控机 网卡 主ip :192.168.2.11 # 雏形版1 必须设定为 此ip
worker 被控机 池ip 默认:10.0.0.1—10.0.3.254/255.255.252.0
worker 被控机 组ip 默认:100.65.2.1—100.65.2.254/255.255.255.0
应用在 /etc/k4t/k4t2w_11111/apps 目录下,有一个“abc”,你可以把这个目录复制+粘贴1下,并命名为“a2哈”。
这样就会在1个服务器上,共启动4个容器副本。
在 /etc/k4t/k4t2w_11111/apps/abc/image/nginx.tar 为 : 【nginx:1.18.0-alpine】
k4t2 会自己下载容器副本,前提是你在 /etc/docker/daemon.json 中配置好了mirror。
除了这个传统用法外,k4t v2 还支持 自动导入【应用目录下】 /image/ 的多个*.tar 文件。
你可以从k4t manager ,或者从 ftp/http/nfs/samba(微软文件共享)/rsync server 等,推送文件到worker机。
image文件被导入后,*.tar会被删除。
/etc/k4t/k4t2w_11111/apps/abc/wa.enable
每个应用下必须有 wa.enable 文件,应用才能启动。 应用启动后 ,删除 wa.enable ,应用的【停止操作】就会开始。 至少有1个应用目录下含有 wa.enable 文件。如果删除所有 wa.enable 文件 ,则 k4t2workerd 将会无法启动。
/etc/k4t/k4t2w_11111/apps/abc/wa.stopped
当应用安全彻底停止,应用目录下将建立 wa.stopped 文件。 当应用有 wa.enable 文件 ,并开始启动后,将删除 wa.stopped 文件。 在应用容器停止后,k4tv2 会执行【停止后powershell脚本】进行上传数据,收尾等操作, 所以有可能你发出停止命令后,半小时也没发现 建立 wa.stopped 文件。
/etc/k4t/k4t2w_11111/k4t2workerd
这个程序目前16mb,以后可能会达到200mb。这也是我在github上托管的原因。github支持 lfs。
6.1 win上启动etcd
c:\ProgramData\k4t\etcd_3.5\d单机,http,无认证.ps1
6.2 win上启动coredns 编辑 :c:\ProgramData\k4t\coredns_1.12\y有etcd,虚拟机1.txt 写入你 etcd server ip
etcd {
endpoint http://127.0.0.1:2379 #<----改这里
执行:
c:\ProgramData\k4t\coredns_1.12\y有etcd,虚拟机1.ps1
6.3 linux上启动apisix
cd /apisix/example
docker compose up -d
6.4 worker机上,配置etcd server:
vi /etc/k4t/etcdserver.txt
写上你的etcd server如: 192.168.2.3:2379, 192.168.4.5:2379
6.5 worker机上,启动k4tv2
systemctl start k4t2workerd
6.6 win上验证dns:
Resolve-DnsName abc.g1.k4t2w_11111 -Server 你coredns的ip
c:\ProgramData\k4t\coredns_1.12\qkdns.ps1 -Domaina a2哈.g1.k4t2w_11111 -dnsserver 你coredns的ip
6.7 win上验证apisix:网址最后的“/” 必须保留
浏览器:
http://你apisixip:9080/g1/abc/
http://你apisixip:9080/g1/a2哈/
你看到的k4t2首页(独眼龙黑猫),来自于此mount: /etc/k4t/k4t2w_11111/apps/abc/mnt1
6.8 注意: 你可以使用apisix dashboard 观看路由和上游,但禁止使用!!! apisix dashboard 设定上游,和upstream。 因为k4t v2 中设定有额外的json字段。你用 dashboard 编辑上游会破坏并丢失这些字段。导致k4t v2 无法正常工作。 你可以使用【手搓etcd for apisix】中的powershell脚本观察,编辑这些字段。
https://gitee.com/chuanjiao10/powershell/tree/master/gateway_client/apisix
list-etcdkey.ps1 get-etcdkey.ps1 get-etcdkey2.ps1
6.9 node亲和性调度功能。支持:
1 worker排斥本应用。
touch /etc/k4t/k4t2w_11111/data1/ab360388-3595-48ac-a9a3-d2a6ad3e2d94
2 支持定义的【n个其他应用,排斥本应用】。
touch /etc/k4t/k4t2w_11111/data2/bed892d9-ea81-415e-baf9-5844c568a0d5
具体欢迎入官方群,商务咨询。
6.10 25-05-21 新增支持traefik:
6.10.1 按照 6.1 启动etcd
6.10.2 按照 6.5 运行k4t2
6.10.3 编辑配置文件:更改etcd 服务器ip c:\ProgramData\k4t\traefik_3.4\traefik.toml
6.10.4 运行win版traefik:
c:\ProgramData\k4t\traefik_3.4\y1有dashboard,无监视目录,有etcd.ps1
6.10.5 打开 win版traefik dashboard 查看 路由配置: http://你的winip:8080/dashboard 免费版只能看,不能改。收费版向 traefik 公司购买。
6.10.6 win上验证traefik:网址最后的“/” 必须保留
浏览器:
http://你win_ip/abc/
http://你win_ip:/a2哈/
6.11 worker机上,停止应用abc
rm /etc/k4t/k4t2w_11111/apps/abc/wa.enable
6.12 关闭k4t2:
systemctl stop k4t2workerd
6.13 停用k4t2:
systemctl disable k4t2workerd
雏形版(或试用版)演示了,下列 k4t v2 特色:
1 推送tar文件到被控机。导入tar文件,而无需下载。
2 支持容器经 nodeport 注册到 apisix 网关。
3 不需要像k8s那样,需要从mirror下载,并启动几个容器,k4t更轻量。更省内存。
4 不需要像k8s那样创建集群。此处无群胜有群。不需要折腾证书,过期等。不需要配置pause容器下载地址等。
5 应用名支持unicode(含中文)支持10个汉字。dns支持unicode(含中文)。网关路径支持unicode(含中文)
6 目前容器通过mount使用 linux 本地路径,nfs局域网存储。未来通过powershell脚本,支持云存储,iscsi,rsync,ftp等。
1 支持从多worker机 注册到 apisix 网关。浏览器 查看 某 url路径,能够 负载均衡访问容器。
2 支持从多worker机 注册到 coredns。
3 容器 经 vxlan 跨主机互联,使用linux内核中的vxlan功能,和linux vxlan管理命令。不需要启动flannel,calico。
4 未来会支持更多网络插件,云网络插件,可能会启动 网络进程。
5 因为 k4t2 worker 机,自身只开启 sshd 和vxlan端口。通过 动态调整 sshd 和vxlan 端口,即可 支持外网 ip worker。
我认为k4t2 外网ip worker 比k8s要好,开端口更少,还可以动态调整端口,相对来讲更安全。
6 支持污点,停服点。node保留最小cpu,内存。
7 令我痛恨的是:linux 和 docker 支持 容器使用 swap 虚拟内存。但k8s中,遮遮掩掩,各种限制和不灵。
在此我建议,使用:最新内核linux发行版 + k4t v2 + docker + 至少 1 gb ssd 硬盘做swap。
参考:
腾讯工程师 Kairui Song 提交 kernel swap 补丁,提升 swap 30% 性能。
https://lore.kernel.org/lkml/20250514201729.48420-1-ryncsn@gmail.com/
1 围观 k4t v2 app 配置文件:
/etc/k4t/k4t2w_11111/apps/abc/k4t2_app_11111.xlsx
2 监控:
支持使用监控 docker 容器的软件。如: portainer ,docker ui
近半年主要目的是:打磨 k4t2 项目的基本功能,使之更健壮。
k4t2有很多优势和特色,这里只是冰山一角,我会陆续放出,敬请关注。
欢迎加入 k4t2 官方qq群,了解更多信息。
1 免责声明。k4t2是生产级 & 企业级软件。但由于目前是消除bug试用期,不建议用于生产,出现任何后果概不负责。
项目作者: 『逆练k8s的欧阳疯』 顺则凡逆则仙,仙凡只在一念间
“要打造比k8s更好的,容器自动编排管理框架”我想试试。
https://gitee.com/chuanjiao10/k4t2
https://gitee.com/chuanjiao10/k4t2/issues
QQ群号:722528388
tags: