kasini3000

文章,博客

View My GitHub Profile

11 August 2024

K4t2试用版安装教程

by

k4t2试用版安装、使用教程


k4t2 log文件位置:

主控机 k4m log:

设软件目录为:c:\ProgramData\k4t\k4t2m_11111,则此目录为项目当前目录【~】 ~\mlog.txt

主控机 apps log:

~\apps\【应用名】\malog.txt

#### 主控机 workers log:

~\apps\【应用名】\workers\mwlog.txt

被控机 k4w log:

设软件目录为:/etc/k4t/k4t2w_11111/wlog.txt,

则此目录为项目当前目录【~】 , ~/wlog.txt

被控机 apps log:

~/apps/【应用名】/walog/*.txt

雏形版1 查看日志 apps log:

journalctl -u k4t2workerd.service #查看进程日志

#设你的应用名为:abc则 ps >

Get-ChildItem /etc/k4t/k4t2w_11111/apps/abc/walog/* | Sort-Object LastWriteTime -Descending | get-content

主控机安装 (k4t2 雏形版暂时没有主控机部分)

1系统需求:

注意:试用版只有x64 + win版。正式版有x64 + linux版。

1(动作)安装 powershell 7.4.x:

https://github.com/PowerShell/PowerShell/releases/download/v7.4.7/PowerShell-7.4.7-win-x64.msi

2(动作)安装 kasini3000:

Remove-Item -Force -LiteralPath 'c:\ProgramData\kasini3000' #备份后,删除旧版
cd C:\ProgramData
git clone https://gitee.com/chuanjiao10/kasini3000.git

3(动作)安装 k4t2 主控机:

1 建立程序目录:c:\ProgramData\k4t

2 解压,复制从:k4t/manager/win_x64/k4t2m_11111

到:c:\ProgramData\k4t

3 检查,确保有此目录:c:\ProgramData\k4t\k4t2m_11111

4(目的)问:【k4t2 主控机 golang】起什么作用?

答:k4t2 主控机命令行程序=k4m,它生成配置文件。

5(目的)问:【kasini3000 主控机】起什么作用?

答:

1 向混合云(多公有云,私有云)建立虚拟机,建立vpc网络。

2 加载转换各种文件。如:json,yaml,toml,csv,从各种数据库读写。

3 基于主控机任务计划。

4 连接win,linux被控机。

5 mail,微信,钉钉,朗读声音,桌面壁纸填字,win terminal 壁纸&动图 报警。

6 git ,ci/cd 等。

6(目的)问:【k4t2 主控机 powershell 脚本】 起什么作用?

答:

1 向被控机推送 & 删除 k4t配置文件。

2 实现水平自动负载平衡。

3 监控 worker上,各linux cpu,内存,磁盘等。

4 辅助实现 k4t2 逻辑。


被控机安装

1系统需求:

* debian 12,即将支持。

* ubuntu 24.04 lts,即将支持。

2(动作)安装 k4t2被控机:

注意:k4t2被控机只支持linux。只支持 部分 linux 服务器 发行版。

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

3(动作)安装 linux版powershell: (k4t2 雏形版 powershell 功能暂时没做完)

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

4 (目的)问:【k4t2 被控机 powershell 脚本】 起什么作用?

答:

1 辅助管理容器生命周期。

2 给网关,去读写etcd,以达到增删路由,后端的目的。(对标k8s的ingress)

3 给dns,去读写etcd,以达到增删a记录,aaaa记录,cname的目的。(对标k8s的服务发现)

5(动作)安装 docker-ce

#防火墙:
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系统需求:

1 k4t2试用版,k4t2正式版,暂时只支持 traefik,apisix网关。

2 k4t2正式版:

3 k4t2试用版:

4 traefik:

5 apisix:

2(动作)网关安装:

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/

3(动作)网关测试:略


dns安装

1系统需求:

1 k4t2正式版:

2 k4t2试用版:

2(动作)dns安装:略

3(动作)dns测试:略

4(目的)讲解:

用coredns加etcd,搭建跨平台动态服务发现

1 上述文章,讲的是双dns,【双dns】和【单dns】道理相同。

5 结论:

问:服务发现,对于容器微服务的意义是什么? 答:

设应用名字为: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


雏形版1 使用教程:

1 雏形版1 只支持在 1台 linux worker 上部署。默认启动1个应用=nginx(含2个容器副本)。

应用在 /etc/k4t/k4t2w_11111/apps 目录下,有一个“abc”,你可以把这个目录复制+粘贴1下,并命名为“a2哈”。

这样就会在1个服务器上,共启动4个容器副本。

2 image:

在 /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会被删除。

3 应用启停 开关文件:wa.enable

/etc/k4t/k4t2w_11111/apps/abc/wa.enable

每个应用下必须有 wa.enable 文件,应用才能启动。 应用启动后 ,删除 wa.enable ,应用的【停止操作】就会开始。 至少有1个应用目录下含有 wa.enable 文件。如果删除所有 wa.enable 文件 ,则 k4t2workerd 将会无法启动。

4 应用已停止状态文件 wa.stopped

/etc/k4t/k4t2w_11111/apps/abc/wa.stopped

当应用安全彻底停止,应用目录下将建立 wa.stopped 文件。 当应用有 wa.enable 文件 ,并开始启动后,将删除 wa.stopped 文件。 在应用容器停止后,k4tv2 会执行【停止后powershell脚本】进行上传数据,收尾等操作, 所以有可能你发出停止命令后,半小时也没发现 建立 wa.stopped 文件。

5 k4t v2 主程序 k4t2workerd

/etc/k4t/k4t2w_11111/k4t2workerd

这个程序目前16mb,以后可能会达到200mb。这也是我在github上托管的原因。github支持 lfs。

6 使用过程:

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更好的,容器自动编排管理框架”我想试试。

k4t2 项目官网

https://gitee.com/chuanjiao10/k4t2

k4t2 试用版 问题反馈 临时 网址

https://gitee.com/chuanjiao10/k4t2/issues

k4t 官方qq群

QQ群号:722528388

tags: