容器的网络方案:underlay/overlay
- 统一网络对外服务的视角:perPodperIP
network namespace
- 基本属性【与主机网络是隔离的】
- 拥有独立的附属网络设备(lo、veth等虚设备/物理网卡)
- 独立的协议栈、IP地址和路由表
- iptables规则
- ipvs: ip virtual server, 运行在LVS下的提供负载平衡功能的一种技术
- pod内部共享一个网络空间,所有container通过pod的ip对外提供服务。
- 宿主机上的root namespace,属于一个特殊的网络空间,pid=1
Flannel网络方案
- 用户态udp
- 内核vxlan(性能好):内核需要支持vxlan
- host-gateway
网络策略
- 基于策略的网络控制,可以隔离应用并减少攻击面。使用标签选择器模拟传统的分段网络,并通过策略控制内部流量和外部流量。
- 使用配置
- apiserver需要开启extensions/v1beta1/networkpolicies
- 网络插件需要支持network policy
- https://www.cnblogs.com/tylerzhou/p/10995797.html
- 实现配置
- 标签选择器:namespaceSelector和podSelector
- 配置流方向和流特征
- ingress
- egress
其他概念
- runC:轻量级工具,用来运行容器,golang创建的项目
测试题目
https://gitchat.csdn.net/columnTopic/5da6e238ee4678771e91d710
Kubernetes 基本网络模型需要符合哪些条件?(多选题)ABC
- A. 所有 Pod 可以与其他 Pod 直接通信,无需显式使用 NAT
- B. 所有 Node 可以与所有 Pod 直接通信,无需显式使用 NAT
- C. Pod 可见的 IP 地址确为其他 Pod 与其通信时所用,无需显式转换
Kubernetes 网络方案需要考虑哪些需要达成的连通性目标?(多选题)ABCD
- A. 容器与容器间的通信
- B. Pod 与 Pod 之间的通信
- C. Pod 与 Service 间的通信
- D. 外部世界与 Service 间的通信
net namespace 拥有完全独立隔离的网络环境。(单选题)B
- A. TRUE
- B. FALSE
不准确,协议栈代码是公用的,很多systemctl 可控参数并没有独立
Kubernetes 的 Pod 只能有且只能配置 1 个 IP 地址。(单选题)B
- A. TRUE
- B. FALSE
不准确,可以有多个IP地址,只是上报给CNI结果时候,只能报一个
Kubernetes network policy 可以同时控制进出 Pod 流程。(单选题)A
- A. TRUE
- B. FALSE
Kubernetes network policy 只支持 TCP/UDP 作为协议字段值。(单选题)B
- A. TRUE
- B. FALSE
还支持stcp(alpha特性), STCP(Scalable TCP)是TCP拥塞控制协议的一种
一个只有 spec 的 network policy,其他条件为空,意味着哪种行为?(单选题)B
- A. 进出流全部放行
- B. 进出流全部禁止
- C. 随意,看 CNI 实现
Kubernetes 容器网络方案实现上,禁止任何形式的地址转换(NAT)。(单选题)B
- A. TRUE
- B. FALSE
可以使用NAT作为实现手段,不能被Pod-APP感知
哪种容器网络方案是普适性最高的默认选择?(单选题)A
- A. Flannel-vxLan
- B. Flannel-host gw
- C. Canal | Calico
影响容器网络性能最关键的因素是哪个?(单选题)C
- A. IP 地址管理方式
- B. 是否使用隧道技术
- C. 网络拓扑路径
- D. 底层网络性能