端口转发

k8s管理pod资源对象(上)

安稳与你 提交于 2019-11-29 03:06:37
一、容器于pod资源对象 现代的容器技术被设计用来运行单个进程时,该进程在容器中pid名称空间中的进程号为1,可直接接收并处理信号,于是,在此进程终止时,容器即终止退出。若要在一个容器中运行多个进程,则需要为这些进程提供一个类似于linux操作系统init进程的管控类进程,以树状结构完成多进程的生命周期管理。绝大多数场景中都应该于一个容器中仅运行一个进程,它将日志信息直接输出至容器的标准输出。不过,分别运行于各自容器的进程之间无法实现基于ipc的通信机制,此时,容器间的隔离机制对于依赖于此类通信方式的进程来说却又成了阻碍。pod资源抽象正是用来解决此类问题的组件。pod对象是一组容器的集合,这些容器共享network、uts及ipc名称空间,因此具有相同的域名、主机名和网络接口,并可通过ipc直接通信。为一个pod对象中的各容器提供网络名称空间等共享机制的是底层基础容器pause。 尽管可以将pod类比为物理机或vm,但一个pod内通常仅应该运行一个应用,除非多个进程间有密切关系。不过,有些场景要求必须于同一pod中同时运行多个容器,此时,这些分布式应用必须遵循某些最佳实践机制或基本准则。事实上,k8s并非期望成为一个管理系统,而是一个支持这些最佳实践的向开发人员或管理人员提供更高级别服务的系统。分布式系统设计通常包含以下几种模型: 1、sidecar pattern

二层、三层、四层交换机的区别!!

爱⌒轻易说出口 提交于 2019-11-28 23:59:33
二层交换技术是发展比较成熟,二层交换机属数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。具体的工作流程如下:   (1) 当交换机从某个端口收到一个数据包,它先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上的;   (2) 再去读 取包头中的目的MAC地址,并在地址表中查找相应的端口;   (3) 如表中有与这目的MAC地址对应的端口,把数据包直接复制到这端口上;   (4) 如表中找不到相应的端口则把数据包广播到所有端口上,当目的机器对源机器回应时,交换机又可以学习一目的MAC地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。   不断的循环这个过程,对于全网的MAC地址信息都可以学习到,二层交换机就是这样建立和维护它自己的地址表。   从二层交换机的工作原理可以推知以下三点:   (1) 由于交换机对多数端口的数据进行同时交换,这就要求具有很宽的交换总线带宽,如果二层交换机有N个端口,每个端口的带宽是M,交换机总线带宽超过N×M,那么这交换机就可以实现线速交换;   (2) 学习端口连接的机器的MAC地址,写入地址表,地址表的大小(一般两种表示方式:一为BEFFER RAM,一为MAC表项数值),地址表大小影响交换机的接入容量;   (3)

Contour 学习笔记(一):使用 Contour 接管 Kubernetes 的南北流量

有些话、适合烂在心里 提交于 2019-11-28 23:47:37
原文链接: Contour 学习笔记(一):使用 Contour 接管 Kubernetes 的南北流量 在 Kubernetes 中运行大规模以 Web 为中心的工作负载,最关键的需求之一就是在 L7 层实现高效流畅的入口流量管理。自从第一批 Kubernetes Ingress Controller 开发完成以来, Envoy (由 Matt Klein 和 Lyft 团队开发)已经成为云原生生态系统中的新生力量。Envoy 之所以受到支持,因为它是一个 CNCF 托管的项目,与整个容器圈和云原生架构有着天然的支持。 容器公司 Heptio 开源的项目 Contour 使用 Envoy 作为 Kubernetes 的 Ingress Controller 实现,为大家提供了一条新的 Kubernetes 外部负载均衡实现思路。 据 官方博客 介绍, Heptio Contour 可以为用户提供以下好处: 一种简单的安装机制来快速部署和集成 Envoy。 与 Kubernetes 对象模型的集成。 Ingress 配置的动态更新,而无需重启底层负载均衡器。 项目成熟后,将允许使用 Envoy 一些强大的功能,如熔断器、插件式的处理器链,以及可观测性和可调试性,可以非常方便地对接监控系统。 IngressRoute 之间可以级联,用来做蓝绿部署非常方便。 下面我们就来试用一下。 1

SSH端口转发和socks5代理

对着背影说爱祢 提交于 2019-11-28 19:54:13
端口转发 # 将127.0.0.1的443端口转发到远程主机的8080端口 # 可将内网端口转发出来 # -p 2234 表示远程服务器的SSH端口 ssh -N -f -p 2234 -R 8080:127.0.0.1:443 root@67.8.212.14 Socks5 代理 # SSH动态端口转发,相当于在本地计算机搭建一个Socks5代理,将本地计算机的流量转发到远程服务器的SSH端口 # 然后在浏览器中设置socks5代理即可实现“翻墙”上网 # -p 2234 表示远程服务器的SSH端口 ssh -Nf -D 0.0.0.0:1080 -p 2234 root@39.48.192.34 来源: https://www.cnblogs.com/dgjnszf/p/11424850.html

docker网络模式

落花浮王杯 提交于 2019-11-28 18:26:11
部分参考,写的很好:https://blog.csdn.net/liukuan73/article/details/51603074 1.1 host 模式 众所周知,Docker 使用了Linux 的Namespaces 技术来进行资源隔离,如PID Namespace 隔离进程,Mount Namespace 隔离文件系统,Network Namespace 隔离网络等。一个Network Namespace 提供了一份独立的网络环境,包括网卡、路由、Iptable 规则等都与其他的Network Namespace 隔离。一个Docker 容器一般会分配一个独立的Network Namespace 。但如果启动容器的时候使用host 模式,那么这个容器将不会获得一个独立的Network Namespace ,而是和宿主机共用一个Network Namespace 。容器将不会虚拟出自己的网卡,配置自己的IP 等,而是使用宿主机的IP 和端口,Docker Container可以和宿主机一样,使用宿主机的eth0,实现和外界的通信。换言之,Docker Container的IP地址即为宿主机eth0的IP地址。 例如,我们在 10.10.101.105/24的机器上用 host模式启动一个含有 web应用的 Docker容器,监听 tcp80端口。当我们在容器中执行任何类似

OpenvSwitch 解读2

蹲街弑〆低调 提交于 2019-11-28 17:31:27
OVS 核心代码 datapath 目录 ovs-switchd OVS数据库管理 ofproto OVS 架构 OVS 主要的数据结构 数据结构关系图 主要的数据结构和数据结构的参数 数据结构代码 vvport /** - struct vport - one port within a datapath - @rcu: RCU callback head for deferred destruction. - @dp: Datapath to which this port belongs. - @upcall_portids: RCU protected 'struct vport_portids'. - @port_no: Index into @dp's @ports array. - @hash_node: Element in @dev_table hash table in vport.c. - @dp_hash_node: Element in @datapath->ports hash table in datapath.c. - @ops: Class structure. - @percpu_stats: Points to per-CPU statistics used and maintained by vport - @err_stats:

tcp/udp

眉间皱痕 提交于 2019-11-28 16:35:09
DP、TCP、可靠传输的工作原理、TCP首部格式、TCP可靠传输的实现、TCP流量控制、TCP的拥塞控制、TCP的连接管理这几个方面进行解析。 一、运输层协议概述 1.进程之间的通信 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。 当两台主机使用网络的核心部分的功能进行点对点通信的时候,只有位于边缘部分的主机的协议栈才有运输层,而网络核心的路由器在转发的时候只有用到下三层的功能。 image 应用进程之间的通信: 两个主机进行通信实际上就是两个主机中的应用进程互相通信。 应用进程之间的通信又称为端到端的通信。 输层的一个很重要的功能就是复用和分用。应用层不同进程的报文通过不同的端口向下交到运输层,再往下就共用网络层提供的服务。 “运输层提供应用进程间的逻辑通信”。“逻辑通信”的意思是:运输层之间的通信好像是沿水平方向传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。 image 运输层的主要功能: 运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)。 运输层还要对收到的报文进行差错检测。 运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP。 两种不同的运输协议: 运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等)

OpenvSwitch 解读

末鹿安然 提交于 2019-11-28 15:35:22
https://segmentfault.com/a/1190000015816722 ovs sdn OVS 核心代码 datapath 目录 ovs-switchd OVS数据库管理 ofproto OVS 架构 OVS 主要的数据结构 数据结构关系图 主要的数据结构和数据结构的参数 数据结构代码 vvport /** - struct vport - one port within a datapath - @rcu: RCU callback head for deferred destruction. - @dp: Datapath to which this port belongs. - @upcall_portids: RCU protected 'struct vport_portids'. - @port_no: Index into @dp's @ports array. - @hash_node: Element in @dev_table hash table in vport.c. - @dp_hash_node: Element in @datapath->ports hash table in datapath.c. - @ops: Class structure. - @percpu_stats: Points to per-CPU

网络协议

[亡魂溺海] 提交于 2019-11-28 13:39:43
一.操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。 注:计算机(硬件)->os->应用软件 二.网络通信原理 2.1 互联网的本质就是一系列的网络协议 一台硬设有了操作系统,然后装上软件你就可以正常使用了,然而你也只能自己使用 像这样,每个人都拥有一台自己的机器,然而彼此孤立 如何能大家一起玩耍 然而internet为何物? 其实两台计算机之间通信与两个人打电话之间通信的原理是一样的(中国有很多地区,不同的地区有不同的方言,为了全中国人都可以听懂,大家统一讲普通话) 普通话属于中国国内人与人之间通信的标准,那如果是两个国家的人交流呢? 问题是,你不可能要求一个人/计算机掌握全世界的语言/标准,于是有了世界统一的通信标准:英语 结论:英语成为世界上所有人通信的统一标准,如果把计算机看成分布于世界各地的人,那么连接两台计算机之间的internet实际上就是 一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列的协议,总称为‘互联网协议’(Internet Protocol Suite). 互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准。 2.2 osi七层协议

利用SSH端口转发实现远程访问内网主机远程桌面(一) 建立SSH转发

白昼怎懂夜的黑 提交于 2019-11-28 13:18:36
近期家里更换了移动的宽带,拨号后拿到的是10开头的内网IP,就不能像之前一样通过路由器的端口映射实现从外网访问主机的远程桌面。这种情况下可以利用一台具有公网IP的服务器充当中转,利用SSH的隧道转发功能将远程桌面请求转发至内网主机。 SSH隧道 SSH 会自动加密和解密所有SSH 客户端与服务端之间的网络数据,除此之外SSH 还能够将其他TCP端口的网络数据通过SSH链接来转发,并且自动提供了相应的加密及解密服务,这一功能也称为“SSH隧道”。SSH隧道分为本地转发、远程转发和动态转发。 本地转发 在客户端本地监听指定端口,该端口接收到的数据将转发至服务端网络的指定IP的指定端口。 远程转发 在服务端监听指定端口,该端口接收到的数据将转发至客户端本地网络的指定IP指定端口。 动态转发 在客户端本地监听指定端口,该端口实际上是一个SOCKS5代理,所有请求通过服务端发出。 环境准备 具有公网IP的服务器,在这里使用阿里云ECS Putty 服务器设置 编辑ssh的配置文件,启用GatewayPorts。若GatewayPorts选项未启用,远程转发端口只有服务器能访问,外部主机无法访问。 vi /etc/ssh/sshd_config 在末尾添加一行 GatewayPorts yes # 重启ssh服务 service sshd restart 客户端设置 在客户端上启动Putty