先决条件
确保你有以下依赖运行NSM(Network Service Mesh):
- 一个Kubernetes集群 - 好的选择包括:
- kind - 通常是最简单的选择
- vagrant - 有用的,如果你需要在节点级别调试
- gke
- azure
- aws
- kubectl
- helm
安装
代码语言:javascript复制
helm repo add nsm https://helm.nsm.dev/ # Add the latest release nsm helm repo
helm install nsm/nsm # Install the nsm infrastructure in your Kubernetes Cluster
如果你需要更多关于Helm的帮助。
https://github.com/networkservicemesh/networkservicemesh/blob/master/docs/guide-helm.md
你应该能够确认安装
代码语言:javascript复制
kubectl get pods | grep nsm
输出:
代码语言:javascript复制
nsm-admission-webhook-584c8dd8cb-rj754 1/1 Running 0 107s
nsm-vpp-forwarder-274f9 1/1 Running 0 105s
nsm-vpp-forwarder-6dvld 1/1 Running 0 106s
nsm-vpp-forwarder-zc799 1/1 Running 0 105s
nsmgr-7mvq4 3/3 Running 0 106s
nsmgr-bkmwk 3/3 Running 0 106s
nsmgr-lrvwg 3/3 Running 0 107s
运行
nsm helm repo有三个示例:
代码语言:javascript复制
helm search nsm | grep -i example
输出:
代码语言:javascript复制
nsm/icmp-responder 0.2.0 0.2.0 Endpoints and Clients for ICMP Responder Use Case
nsm/V** 0.2.0 0.2.0 Endpoints and Clients for V** Use Case
nsm/vpp-icmp-responder 0.2.0 0.2.0 Endpoints and Clients for VPP ICMP Responder Use Case
- icmp-responder - 一个简单的示例,连接一个应用Pod客户端到网络服务。
- vpp-icmp-responder - 一个使用memif将基于vpp的Pod连接到网络服务的简单示例。
- V** - 一个模拟应用Pod客户端连接到一个网络服务的示例,该网络服务实现为一个模拟V**用例的链 https://networkservicemesh.io/docs/examples/icmp-responder/ https://networkservicemesh.io/docs/examples/vpp-icmp-responder/ https://networkservicemesh.io/docs/examples/V**/
icmp-respondershi示例
对于NSM(Network Service Mesh)来说,最简单的情况是通过vWire将客户机连接到提供网络服务的另一个Pod。我们将这种情况称为“icmp-responder”示例,因为它允许客户端通过vWire ping端点的IP地址。
部署
利用Run指令(上面提到得)安装NSM基础设施,然后键入:
https://networkservicemesh.io/docs/setup/run/
代码语言:javascript复制
helm install nsm/icmp-responder
它所完成的
这将安装两个部署(Deployment):
并使每个客户端获得一个连接到其中一个端点的vWire。NSM处理网络服务发现和路由,以及vWire的“连接处理”来设置所有这些。
为了使这个案例更有趣,使用PodAntiAffinity将Endpoint1和Endpoint2部署在两个单独的节点上,因此NSM必须演示在相同节点上的客户机和端点之间,以及不同节点上的客户机和端点之间串连vWire的能力。
验证
首先验证icmp-responder示例的Pod都是启动和运行:
代码语言:javascript复制
kubectl get pods | grep icmp-responder
要查看icmp-responder示例在跑,你可以运行:
代码语言:javascript复制
curl -s https://raw.githubusercontent.com/networkservicemesh/networkservicemesh/master/scripts/nsc_ping_all.sh | bash
更多示例
社区在examples/中维护了其它的示例
https://github.com/networkservicemesh/examples