快速开始
集群启动模式
Kmesh容器镜像准备
Kmesh实现通过内核增强将完整的流量治理能力下沉至OS。当发布镜像时,镜像适用的OS的范围是必须考虑的。因此,我们考虑发布三种类型的镜像:
-
支持内核增强的OS版本:
当前 openEuler 23.03原生支持Kmesh所需的内核增强特性。Kmesh发布的镜像可以直接在该OS上安装运行。对于详细的支持内核增强的OS版本列表,请参见 链接。
-
针对所有OS版本:
为了兼容不同的OS版本,Kmesh提供在线编译并运行的镜像。在Kmesh被部署之后,它会基于宿主机的内核能力自动选择运行的Kmesh特性,从而满足一个镜像在不同OS环境运行的要求。
考虑到kmesh使用的通用性,我们也发布了用于kmesh编译构建的镜像。用户可以基于此镜像方便的制作出可以在当前OS版本上运行的kmesh镜像。默认命名为ghcr.io/kmesh-net/kmesh:latest,用户可自行调整,参考[Kmesh编译构建](docs/kmesh_compile-zh.md#docker image编译)
make docker TAG=latest
启动Kmesh容器
默认使用Kmesh功能,可通过调整yaml文件中的启动参数进行功能选择
-
启动Kmesh容器
默认使用名为 ghcr.io/kmesh-net/kmesh:latest的镜像,如需使用兼容模式或其他版本可自行修改
- Helm安装方式
[root@ ~]# helm install kmesh ./deploy/helm -n kmesh-system --create-namespace
- Yaml安装方式
# get kmesh.yaml:来自代码仓 deploy/yaml/kmesh.yaml [root@ ~]# kubectl apply -f kmesh.yaml [root@ ~]# kubectl apply -f clusterrole.yaml [root@ ~]# kubectl apply -f clusterrolebinding.yaml [root@ ~]# kubectl apply -f serviceaccount.yaml
默认使用Kmesh功能,可通过调整yaml文件中的启动参数进行功能选择
-
查看kmesh服务启动状态
[root@ ~]# kubectl get pods -A | grep kmesh kmesh-system kmesh-l5z2j 1/1 Running 0 117m
-
查看kmesh服务运行状态
[root@master mod]# kubectl logs -f -n kmesh-system kmesh-l5z2j time="2024-02-19T10:16:52Z" level=info msg="service node sidecar~192.168.11.53~kmesh-system.kmesh-system~kmesh-system.svc.cluster.local connect to discovery address istiod.istio-system.svc:15012" subsys=controller/envoy time="2024-02-19T10:16:52Z" level=info msg="options InitDaemonConfig successful" subsys=manager time="2024-02-19T10:16:53Z" level=info msg="bpf Start successful" subsys=manager time="2024-02-19T10:16:53Z" level=info msg="controller Start successful" subsys=manager time="2024-02-19T10:16:53Z" level=info msg="command StartServer successful" subsys=manager time="2024-02-19T10:16:53Z" level=info msg="start write CNI config\n" subsys="cni installer" time="2024-02-19T10:16:53Z" level=info msg="kmesh cni use chained\n" subsys="cni installer" time="2024-02-19T10:16:54Z" level=info msg="Copied /usr/bin/kmesh-cni to /opt/cni/bin." subsys="cni installer" time="2024-02-19T10:16:54Z" level=info msg="kubeconfig either does not exist or is out of date, writing a new one" subsys="cni installer" time="2024-02-19T10:16:54Z" level=info msg="wrote kubeconfig file /etc/cni/net.d/kmesh-cni-kubeconfig" subsys="cni installer" time="2024-02-19T10:16:54Z" level=info msg="command Start cni successful" subsys=manager
编译构建
-
准备工作
-
docker-engine安装
[root@dev Kmesh]# yum install docker-engine
-
镜像原料准备
Kmesh的镜像编译需要准备好kmesh源码,以及kmesh-build镜像,镜像可以通过如下命令获取
注意:kmesh-build镜像需要和源码版本相匹配
docker pull ghcr.io/kmesh-net/kmesh-build-x86:latest
-
源码编译
-
代码下载
[root@dev tmp]# git clone https://github.com/kmesh-net/kmesh.git
-
代码修改编译
[root@dev tmp]# cd kmesh/ [root@dev Kmesh]# make build
kmesh会在编译镜像中进行编译构建,并将编译产物输出至out目录
[root@localhost kmesh]# ls out/amd64/ kmesh-cmd kmesh-daemon libbpf.so libbpf.so.0.8.1 libkmesh_deserial.so libprotobuf-c.so.1 mdacore kmesh-cni libboundscheck.so libbpf.so.0 libkmesh_api_v2_c.so libprotobuf-c.so libprotobuf-c.so.1.0.0
-
更多Kmesh编译方式,请参考 Kmesh编译构建