1、云原生+AI Meetup 广州站从从 LB Ingress LB Ingress 到到 ZTM ZTM:集群服务暴露新思路集群服务暴露新思路张晓辉张晓辉CNCF Ambassador、Flomesh 社区布道师资深程序员,CNCF Ambassador,LFAPAC 开源布道师,Flomesh 社区布道师,云原生社区管委会成员,微软 MVP,公众号“云原生指北”作者。多年的微服务和云原生实践经验,主要工作涉及微服务、容器、Kubernetes、DevOps 等。个人介绍Agenda 集群服务暴露的必要性 集群服务暴露的实现方式 零暴露面网络 ZTM 使用 ZTM 暴露集群服务集群服务暴露的必
2、要性 动态性:适应 Pod 动态变化的 IP 地址。默认的网络架构下,Service ClusterIP 只能在集群内部访问。隔离性:增强集群内部与外部访问的隔离和安全。灵活性:支持多种访问场景,例如内部服务通信、外部用户访问以及多集群访问。扩展性:通过负载均衡和路由规则提升服务的性能和高可用性。如何暴露集群服务Load Balancerkubectl get serviceNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)AGEkubernetes ClusterIP 10.43.0.1 443/TCP 31dnginx LoadBalancer 10.43.1
3、77.15 192.168.2.1 80:32186/TCP 2m18s MetalLB OpenELB kube-vip PureLBLoad Balance:ECMPNode1:172.18.0.5LB CTRLARP/BGPNode2:172.18.0.6LB CTRLto:192.168.2.1:80Load BalancerServiceLB(Klipper)Load Balance:Additional LBNode1:172.18.0.5/192.168.1.2LB PodNode2:172.18.0.6/192.168.1.3LB Pod80hostPort80hostPort
4、to:192.168.1.2:80to:192.168.1.3:80LBNodePortNode1:172.18.0.5300003105732767.Node2:172.18.0.6300003105732767.subnet:172.18.0.0/24端口范围:30000-32767暴露节点 IP核心技术:iptablesIngressLoad BalancerCluster:172.18.0.0/24ProxyController/foo/barL7 高级流量策略apiVersion:networking.k8s.io/v1kind:Ingressmetadata:name:exampl
5、espec:rules:-http:paths:-backend:service:name:foo port:number:8080 path:/foo -backend:service:name:bar port:number:8080 path:/bar零暴露面网络 ZTMZTM:Zero Trust Mesh 开源网络基础设施软件 用于运行去中心化网络 基于 HTTP/2 隧道构建 可运行于各种类型的 IP 网络,例如局域网(LAN)、容器化网络以及互联网等。https:/ 架构ZTM Agent:部署在连接到零信任网络的设备上,负责启动加密隧道,将流量安全地转发到ZTM Hub。ZTM
6、 Hub:一个分布式接入点集群,与Agent建立加密隧道,提供安全的多点访问和高可用性。ZTMAgentZTMAgentZTMHubHTTP2 TunnelHTTP2 TunnelZTM AppZTM 是用 PipyJS 编写的,PipyJS 是一种专为 Pipy 设计的定制版 JavaScript (https:/ PipyJS 可以开发 ZTM App。ZTM 的内置应用:Tunnel:在点对点之间建立安全的 TCP/UDP 隧道。Proxy:SOCKS/HTTP 代理,从一个端点接收流量,另一个端点转发出去。Script:在端点上远程执行脚本。Terminal:远程访问端点上的 shel