K8S原理剖析:网络模型原理剖析和实践

大纲

  • 网络模型与CNI
  • Service
  • Ingress
  • DNS
  • Network Policy

网络模型与CNI

一个Pod一个IP

  • - 每个Pod独立IP, Pod内所有容器共享网络namespace(同一个IP)
  • - 容器之间直接通信,不需要NAT
  • - Node和容器直接通信,不需要NAT
  • - 其他容器和容器自身看到的IP是一样的

集群内访问走Service,集群外访问走Ingress
CNI( container network interface)用于配置Pod网络 -不支持docker网络

K8S原理剖析:网络模型原理剖析和实践

Bridge网络

K8S原理剖析:网络模型原理剖析和实践

Overlay网络

K8S原理剖析:网络模型原理剖析和实践

CNI:Container Network Interface

K8S原理剖析:网络模型原理剖析和实践

容器网络的标准化
使用JSON来描述网络配置
两类接口:

  • - 配置网络 -- 创建容器时调用
    • AddNetwork(net NetworkConfig, rt RuntimeConf) (types.Result, error)
  • - 清理网络 -- 删除容器时调用
    • DelNetwork(net NetworkConfig, rt RuntimeConf) 

K8S原理剖析:网络模型原理剖析和实践

Service

K8S原理剖析:网络模型原理剖析和实践

K8S原理剖析:网络模型原理剖析和实践

K8S原理剖析:网络模型原理剖析和实践

K8S原理剖析:网络模型原理剖析和实践

Service类型

ClusterIP

  • - 默认类型,自动分配集群内部可以访问的虚IP——Cluster IP。

NodePort

  • - 为Service在Kubernetes集群的每个Node上分配一个端口,即NodePort, 集群内/外部可基于任何一个NodeIP:NodePort的形式来访问Service。

 LoadBalancer

  • - 需要跑在特定的cloud provider上
  • - Service Controller自动创建一个外部LB并配置安全组
  • - 对集群内访问, kube-proxy用iptables或ipvs实现了云服务提供商LB的部分功能: L4转发,安全组规则等


Ingress

 

 


DNS

 

 


Network Policy