kubernetes内外网访问
集群内访问
‣
在k8s中创建的微服务,大部分都是在集群内部互相调用,这时候,使用DNS就可以很方面访问。
比如:服务名是 my-service,端口号是8080,命名空间是yifan,那么就可以通过域名+端口 “my-service.yifan.svc.cluster.local:8080” 在集群内访问。
当然,也可以直接用服务的ClusterIP+服务的端口号,只是这么使用的较少。
DNS解析到的IP也就是这个服务的ClusterIP,只是咱们不需要记住ClusterIP,记住服务名对应的域名更加容易。
集群外网访问
ClusterIP
- ClusterIP(默认)- 在集群的内部 IP 上公开 Service。这种类型使得 Service 只能从集群内访问。
- 集群IP。它的作用就是为了能够让其所属Pod能够负载均衡且需要有一个虚拟IP(VIP)提供给
IPtables
。由于VIP没有挂接到网络设备,所以不能直接访问。
NodePort
- NodePort - 使用 NAT 在集群中每个选定 Node 的相同端口上公开 Service 。使用
<NodeIP>:<NodePort>
从集群外部访问 Service。是 ClusterIP 的超集。 NodePort
会在所有节点(图示中的VM)上开放一个特定端口(图示中的30007),任何发送到该端口的流量都被转发到对应服务(图示中的Service)
LoadBlancer
- LoadBalancer - 在当前云中创建一个外部负载均衡器(如果支持的话),并为 Service 分配一个固定的外部IP。是 NodePort 的超集。
- Network Load Balancer[2],它将跟你一个单独的IP地址。所有通往指定的端口的流量都会被转发到对应的服务。它没有过滤条件,没有路由等。这意味着你几乎可以发送任何种类的流量到该服务,如 HTTP,TCP,UDP,Websocket,gRPC 或其它种类
ExternalName
- ExternalName - 将 Service 映射到
externalName
字段的内容(例如foo.bar.example.com
),通过返回带有该名称的CNAME
记录实现。不设置任何类型的代理。这种类型需要kube-dns
的 v1.7 或更高版本,或者 CoreDNS 的 0.8 或更高版本。
Ingress
ingress controller
ingress
- Ingress(envoy)可以充当集群的入口点,它可以将路由规则整合到一个资源中,并扮演“智能路由”的角色。
云厂商外网访问(负载均衡)
一般都会买共享带宽、流量
创建负载均衡(解析80 443端口 监听service端口)
然后k8s创建service
绑定负载均衡监听到service上
CLS 监听
- CLS NLB ALB SLB用运营商的网络负载均衡,创建service,lb中设置监听,然后从80 或者 440 端口解析到这个监听中
- 域名(80 443)——监听service端口——service——pod id——服务
性能参考
通过这些 LB 后端可以直接绑定 Service
对比项 | ALB | NLB | CLB |
产品定位 | • 强大的七层处理能力与丰富的高级路由功能
• 聚焦HTTP、HTTPS和QUIC应用层协议
• 面向应用层交付 | • 强大的四层处理能力与大规模SSL卸载功能
• 聚焦TCP、UDP和TCPSSL协议
• 面向网络层交付 | • 具备良好的四层和基础的七层处理能力
• 支持TCP、UDP、HTTP和HTTPS协议 |
产品架构与性能 | • 基于NFV虚拟化平台,支持弹性伸缩
• 单实例最大支持100万QPS | • 基于NFV虚拟化平台,不依赖物理机,支持弹性和快速扩容等需求
• 单实例最大支持1亿并发 | • 基于物理机架构
• 单实例最大支持100万并发、5万QPS |
转发能力 | • 丰富七层特性,基于内容的路由
• HTTP标头改写、重定向、重写、限速等 | • 丰富四层高级特性,支持TCPSSL卸载
• 洪峰限速、优雅中断、Anyport等 | • 四、七层基础能力
• 仅支持基于域名或URL转发 |
后端业务类型 | • 云服务器ECS
• 弹性网卡ENI
• 弹性容器实例ECI
• IP地址
• 函数计算FC | • 云服务器ECS
• 弹性网卡ENI
• 弹性容器实例ECI
• IP地址 | • 云服务器ECS
• 弹性网卡ENI
• 弹性容器实例ECI |
运维能力 | • 自动弹性
• 处理能力随着业务峰值自动伸缩,无需人工干预 | • 自动弹性
• 处理能力随着业务峰值自动伸缩,无需人工干预 | • 按规格售卖模式下需要主动管理规格
• 需要预估业务峰值 |
云原生集成 | • 云原生Ingress网关
• 流量拆分、流量镜像、灰度发布、蓝绿测试 | 支持ACK/ASK集成(1.24版本以后) | 支持较弱,需要与阿里云ACK或ASK等容器服务结合使用 |
典型应用场景 | • 互联网应用七层高性能自动弹性场景
• 音视频应用大流量低时延场景
• 云原生应用金丝雀蓝绿发布场景 | • 四层大流量高并发业务场景
• 物联网、车联网等IoT业务入口
• 多活容灾、IDC云上出入口场景 | • 网站、系统四层流量分发高可靠场景
• 大并发高性能网络分流场景
• 同城灾备、跨地域容灾场景 |
阿里云访问方式
七层负载能力(四层不在这里概述)
通过 EIP 绑定Ingress 访问集群
通过外置 ALB CLS NLB 访问 NodePort Service
Loading...