K8s网络从0到1

K8s网络从0到1

前言

K8s是一个强大的平台,但它的网络比较复杂,涉及很多概念,例如Pod网络,Service网络,Cluster IPs,NodePort,LoadBalancer和Ingress等等。为了帮助大家理解,模仿TCP/IP协议栈,我把K8s的网络分解为四个抽象层,从0到3,除了第0层,每一层都是构建于前一层之上。

第0层Node节点网络比较好理解,也就是保证K8s节点(物理或虚拟机)之间能够正常IP寻址和互通的网络,这个一般由底层(公有云或数据中心)网络基础设施支持。本文主要介绍第1到3层网络。

Pod网络概念模型

Pod相当于是K8s云平台中的虚拟机,它是K8s的基本调度单位。所谓Pod网络,就是能够保证K8s集群中的所有Pods(包括同一节点上的,也包括不同节点上的Pods),逻辑上看起来都在同一个平面网络内,能够相互做IP寻址和通信的网络。

同一节点上的Pod网络

Pod中可以有多个容器,这些容器共享Pod的网络栈和其它资源如Volume。共享网络栈意味着容器可以通过localhost相互访问,但同一端口上不能同时开启服务。

同一节点上的Pod网络依赖于3个关键网络设备:

  1. eth0:节点主机网卡
  2. docker0:虚拟网桥,相当于虚拟交换机
  3. veth0:Pod的虚拟网卡

Pod的IP由docker0网桥分配,例如:

  • docker0网桥IP:172.17.0.1
  • Pod1 IP:172.17.0.2
  • Pod2 IP:172.17.0.3

在同一网段内,这些Pods可以进行IP寻址和互通。

不同节点间的Pod网络

不同节点间的Pod网络互通主要有两种方案:

  1. 路由方案

    通过配置路由器支持Pod网络的转发。

  2. 覆盖网络方案

    采用隧道封包技术,如flannel/weavenet等。

CNI简介

CNI(Container Network Interface)是K8s的Pod网络集成标准,不同的Pod网络技术可以通过CNI插件形式和K8s进行集成。

小结

  1. K8s网络分四层:节点网络、Pod网络、Service网络、外部接入网络
  2. 节点内Pod网络依赖虚拟网桥和虚拟网卡
  3. 节点间Pod网络可采用路由方案或覆盖网络方案
  4. CNI是Pod网络集成标准

Service网络

Service网络主要解决服务发现和负载均衡问题。

服务发现技术演进

  1. DNS方案

  2. Service Registry方案

K8s的Service网络原理

K8s通过ServiceName+ClusterIP统一屏蔽服务发现和负载均衡。

关键组件:

  • Kubelet:负责启动Pod实例并向Master注册
  • Kube-Proxy:监听Master,修改iptables规则
  • Kube-DNS:实现ServiceName->ClusterIP映射

总结

  1. Service网络解决服务发现和负载均衡
  2. ClusterIP统一屏蔽服务发现和负载均衡
  3. 客户端通过Kube-Proxy + iptables转发实现
  4. 现代微服务发现机制和传统Linux内核机制的结合

外部接入网络

K8s通过NodePort、LoadBalancer和Ingress等方式将内部服务暴露到外部网络。

NodePort

通过Kube-Proxy在节点上暴露一个监听端口,将K8s内部服务暴露出去。

LoadBalancer

在NodePort基础上引入负载均衡器。

Ingress

在K8s内部部署反向代理服务,通过一个LB暴露多个服务。

Kubectl Proxy & Port Forward

本地调试K8s服务的简易方法:

  • kubectl proxy
  • kubectl port-forward
  • kubectl exec

总结

  1. NodePort是基础,LoadBalancer依赖NodePort
  2. LoadBalancer提供公网访问支持
  3. Ingress通过反向代理暴露多个服务
  4. Service发布type:
    • ClusterIP:仅内部访问
    • NodePort:通过NodePort暴露
    • LoadBalancer:通过LoadBalancer暴露
相关推荐
门思科技34 分钟前
LoRaWAN 设备类别:Class A、B、C 对比与选型指南
c语言·开发语言·php
weixin_416667965 小时前
【无标题】
运维·服务器·网络
予昊5 小时前
从零实现“在线五子棋对战“:WebSocket 实时通信 + 段位匹配
java·开发语言·网络·websocket
上海云盾-小余7 小时前
流量攻击复盘:为什么 WAF 完好,业务依旧瘫痪
运维·服务器·网络
戴西软件7 小时前
戴西iDWS.3DViz Suite数据轻量化可视化软件,从传统桌面软件向云端协同的重大突破
大数据·运维·网络·人工智能·机器学习·3d
芯盾时代7 小时前
《金融业网络安全管理办法(征求意见稿)》全条款深度拆解(三)
网络·安全·网络安全
米饭不加菜7 小时前
ESP-01S通过TCP直接与手机建立通信
网络·tcp/ip·智能手机
闲云野鹤在人间8 小时前
OpenStack架构介绍和安装流程
linux·网络·架构·openstack
xx~t9 小时前
嵌入式——Linux软件编程——网络1
linux·c语言·网络·vscode·网络协议
国科安芯10 小时前
星载CAN总线通信网络中抗辐射MCU的通信可靠性设计分析
网络·人工智能·分布式·单片机·嵌入式硬件·架构