最新计算机网络技术原理与实验 计算机网络技术原理与实验唐灯平优秀
文件格式:DOCX
时间:2023-04-30 00:00:00    小编:大谦聊职场

最新计算机网络技术原理与实验 计算机网络技术原理与实验唐灯平优秀

小编:大谦聊职场

无论是身处学校还是步入社会,大家都尝试过写作吧,借助写作也可以提高我们的语言组织能力。写范文的时候需要注意什么呢?有哪些格式需要注意呢?以下是小编为大家收集的优秀范文,欢迎大家分享阅读。

计算机网络技术原理与实验 计算机网络技术原理与实验唐灯平篇一

kubernetes(k8s) 源于古希腊语,意寓为舵手,管理者。kubernetes 是google开源的容器集群管理系统,其提供应用部署、维护、扩展机制等功能,利用kubernetes能方便地管理跨机器运行容器化的应用,下面跟着小编一起了解一些计算机网络技术原理。

以集群的方式运行、管理跨机器的容器;

解决docker 跨机器容器之间的通讯问题;

kubernetes 的自我修复机制使得容器集群总是运行在用户期望的状态。

实际上使用kubernetes 只需要一个部署文件,使用一条命令就可以部署一个完整集群(以网部署k8s 的dashboard 为例):

kubectl create -fhttps:///kubernetes/dashboard/master/src/deploy/

现在先介绍一些核心的概念:

pods:是连接在一起的容器组合并共享文件卷。它们是最小的部署单元,由 kubernetes 统一创建、调度、管理;

replication controllers:管理 pods 的生命周期, 它们确保指定数量的pods 会一直运行;

labels:被用来管理和选取基于键值对为基础的对象组;

services:提供独立、可靠名称和地址的 pods 集合,它就像一个基础版本的负载均衡器;

node:相对master是工作主机,也叫minon,物理机、虚拟机均可。

namespace:不同的namespace 形成逻辑上不同的`项目或用户组。

volume:pod 中被多个容器访问的共享目录。

下图是典型的kubernetes 的架构图:

在开始了解kubernetes 的网络原理之前,我们先来看下docker 的网络模型。

2docker的网络模型

docker network ls 这个命令用于列出所有当前主机上的网络:

在默认情况下会看到三个网络,它们是dockerdeamon 进程创建的。标准的docker 支持一下4种网络模式:

bridge模式:使用—net=bridge指定。容器使用独立网络namespace,并连接到docker0虚拟网卡(默认模式);

none模式:使用—net=none指定。容器没有任何网卡,适合不需要与外部通过网络通信的容器;

host模式:使用—net=host指定。容器与主机共享网络namespace,拥有与主机相同的网络设备;

container模式:使用—net=container:name_or_id指定。

在kubernetes 的管理模式下,通常只使用bridge 模式。在bridge 模式下,dockerdaemon 第一次启动时创建一个虚拟的网桥,缺省名字是docker0,然后按照rpc1918的模型,在私有网络空间中给这个网桥分配一个子网。docker 创建出来的每一个容器,都会创建一个虚拟的veth 设备对,其中一端关联到网桥上,另一端用linux 的网络命名空间技术,映射到容器内的eth0设备,然后在网桥的地址段内分配一个ip地址。

docker的缺省桥接网络模型:

虚拟化技术中最为复杂的就是虚拟化网络技术,也是门槛很高的技术领域,docker 很明智的早期并没有提供跨主机的解决方案。

3什么是kubernetes网络模型?

kubernetes 网络设计的一个基本原则是:每个pod 都有一个全局唯一的ip, 而且假定所有的pod 都在一个可以直接连通的,扁平的网络空间中,pod 之间可以跨主机通信,按照这种网络原则抽象出来的一个pod 对应一个ip的设计模型也被称作ip-per-pod 模型。

相比于docker 原生的nat方式来说,这样使得容器在网络层面更像虚拟机或者物理机,复杂度整体降低,更加容易实现服务发现,迁移,负载均衡等功能。

容器间的通信

创建的dashboard 容器信息:

在yaml 文件中你可以发现我们设置的replicas 的数量是1,但是却发现了两个容器在运行,/google_containers/pause:2.0,那么第二个容器从何而来?

执行下图中的命令可以发现:

第二个容器和第一个容器共享网络命名空间。第一个容器是netowrk container,它不做任何事情,只是用来接管pod 的网络。这样做的好处在于避免容器间的相互依赖,使用一个简单的容器来统一管理网络。

pod 间的通信

pod 间的通信使用的是一个内部ip,这个ip就是network container 的ip。

以dashboard 为例:

同一个node 上的pod 通过veth 连接在同一个docker0 网桥上,地址段相同,原生能通信。但是不同node 之间的pod 如何通信的,本质是在网路上再架设一层overlay network 使容器的网络运行在这层overlay 网络上。现有的方案有flannel,openvswitch,weave 等。本文kubernetes 环境是采用flannel。

flannel 使用linux 通用tun/ tap 设备, 并使用udp 封装ip 数据包创建一个覆盖网络。它使用etcd 维护子网的分配和overlay 网络和实际ip 的映射。

下图是flannel 的原理图:

pod 到service 通信

查看dashboard 的service 的vip(virtual ip) 和后端pod 的ip:

那么dashboard 就可以通过10.254.104.235来进行访问,执行iptables-save:

然后执行lsof –i:30250:

可以看到kube-proxy 进程监听在30250端口上,这个进程可以看做是service 的透明代理兼负载均衡器,对于service 的访问请求将被这个进程转发到后端pod。

对于pod 的变化会及时刷新。那么service 就是在pod 间起到中转和代理的作用。

下图中可以很好的反映整个流程:

当一个客户端访问这个service 时,这些iptable 规则就开始起作用,客户端的流量被重定向到kube-proxy 为这个service 打开的端口上,kube-proxy 随机选择一个后端pod 来进行服务。

外部到内部的通信

kubernetes 支持两种对外服务的service 的type 定义:nodeport 和loadbalancer。

nodeport:在每个node 上打开一个端口并且每个node 的端口都是一样的,通过:nodeport 的方式,kubernetes 集群外部的程序可以访问service;

loadbalancer: 通过外部的负载均衡器来访问。

s("content_relate");

【计算机网络技术原理】相关文章:

1.挥杆原理2.网站优化seo原理3.手写速记的原理4.cpu的工作原理5.java classloader原理深入讲解6.计算机的组成原理7.冬病夏治原理8.动画角色设计原理

猜你喜欢 网友关注 本周热点 软件
musicolet
2025-08-21
BBC英语
2025-08-21
百度汉语词典
2025-08-21
精选文章
基于你的浏览为你整理资料合集
最新计算机网络技术原理与实验 计算机网络技术原理与实验唐灯平优秀 文件夹
复制