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没有挂接到网络设备,所以不能直接访问
notion image

NodePort

  • NodePort - 使用 NAT 在集群中每个选定 Node 的相同端口上公开 Service 。使用<NodeIP>:<NodePort> 从集群外部访问 Service。是 ClusterIP 的超集。
    • NodePort会在所有节点(图示中的VM)上开放一个特定端口(图示中的30007),任何发送到该端口的流量都被转发到对应服务(图示中的Service)
notion image
notion image

LoadBlancer

  • LoadBalancer - 在当前云中创建一个外部负载均衡器(如果支持的话),并为 Service 分配一个固定的外部IP。是 NodePort 的超集。
    • Network Load Balancer[2],它将跟你一个单独的IP地址。所有通往指定的端口的流量都会被转发到对应的服务。它没有过滤条件,没有路由等。这意味着你几乎可以发送任何种类的流量到该服务,如 HTTP,TCP,UDP,Websocket,gRPC 或其它种类
 
notion image
notion image

ExternalName

  • ExternalName - 将 Service 映射到 externalName 字段的内容(例如 foo.bar.example.com),通过返回带有该名称的 CNAME 记录实现。不设置任何类型的代理。这种类型需要 kube-dns 的 v1.7 或更高版本,或者 CoreDNS 的 0.8 或更高版本。

Ingress

ingress controller
ingress
  • Ingress(envoy)可以充当集群的入口点,它可以将路由规则整合到一个资源中,并扮演“智能路由”的角色。
notion image
notion image
 

云厂商外网访问(负载均衡)

一般都会买共享带宽、流量
创建负载均衡(解析80 443端口 监听service端口)
然后k8s创建service
绑定负载均衡监听到service上
CLS 监听
  • CLS NLB ALB SLB用运营商的网络负载均衡,创建service,lb中设置监听,然后从80 或者 440 端口解析到这个监听中
  • 域名(80 443)——监听service端口——service——pod id——服务
notion image

性能参考

通过这些 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...
目录
文章列表
王小扬博客
产品
Think
Git
软件开发
计算机网络
CI
DB
设计
缓存
Docker
Node
操作系统
Java
大前端
Nestjs
其他
PHP