手写linux-虚拟化

linux->kvm->docker->k8s->ECS

TCP->VPC->SLB

熟悉操作系统内核,网络技术;

熟悉docker, k8s, kvm, openstack;

各种工具类:minicube;

KVM

组件架构图:

KVM是内核的模块,QEMU是提供虚拟化的组件,用户操作KVM模块,libvirt提供一整套的API,用于管理KVM虚拟机,其他图形化界面(virt-manager/openstack等)可以通过libvirt管理kvm虚拟机。

kube-virt组件:

问题:不支持多网卡等;

KVM源码分析:

vcpu

KVM初始化,包括体系结构初始化,以及注册设备给到qemu使用

libvirt源码:

Docker源码分析:

docker底层原理是基于linux的namespace和cgroups机制实现。其中namespace用于实现进程的隔离;cgroup用于限制进程对特定资源如cpu的使用。

namespace:可以通过unshare命令创建namespace,相当于在运行的容器中执行 <runtime> exec -it <image> /bin/bash 命令。

cgroup:k8s使用cgroup在pod级别上限制资源。

K8S: 

kubelet:

Kubelet是工作节点上的主要服务,定期从kube-apiserver组件接收新的或修改的Pod规范,并确保Pod及其容器在期望规范下运行。同时该组件作为工作节点的监控组件,向kube-apiserver汇报主机的运行状况。

CRI:

创建POD网络;建立容器内部网络、容器和主机网络的互联。

Vlan vs Vxlan: vlan是在二层划分子网;Vxlan建立一条逻辑隧道,讲L2的以太帧封装成UDP报文。适用于大规模数据中心虚拟化、多租户等。

CNI:

service:

我们来看看 kube-proxy 是如何通过 iptables 创建 services 和 endpoints 的。 

iptables 基于 netfilter 实现,所有操作都在内核空间相比基于 kube-proxy 直接做转发和负载均衡在性能上得到很大的提升。

Ingress:

学习地址:Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家(免费订阅,永久学习)

【文章福利】需要更多DPDK/SPDK学习资料加群793599096(资料包括C/C++,Linux,golang技术,内核,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,大厂面试题 等)可以自行添加学习交流群点击这里噢~

Istio:

pilot:

Pilot 将控制流量行为的高级路由规则转换为特定于环境的配置,并在运行时将它们传播到 sidecar。

pilot Agent职责:

生成envoy的配置并启动envoy进程

监控并管理envoy的运行(envoy出错时负责重启envoy / envoy配置变更后reload envoy)

enovy:

Business-manager容器的请求发出时,会经过本Pod的Enovy代理,Enovy完成规则校验、数据采集、日志等操作后,再转发出去;值得注意的是,请求方Enovy转发出去的流量会发送给接收方的Enovy,之后才有可能到达真正的接收方data-product容器。

动态服务发现• 负载均衡• TLS 终止• HTTP/2 & gRPC 代理• 熔断器• 健康检查、基于百分比流量拆分的灰度发布• 故障注入• 丰富的度量指标

operator:

如何在现有的etcd集群中增加一个新的节点,这包含通知其他node 新的节点信息,同步数据等。就可以通过operator去实现,通过监控CR资源的变更,然后做出对应的动作。

此时我们给该Pod打上以下注解,并查看是否已自动添加新的标签。

(翻)如何动手写一个kubernetes operator - 简书 (jianshu.com)

云平台:

ECS:

参照KVM的虚拟化过程;包括虚拟机创建、磁盘挂载、自定义镜像、热迁移等高级特性。

VPC:

通过对等连接完成VPC之间的互联;

SDN:

如何在k8s当中使用SDN技术。
http://www.iigrowing.cn/zheng_que_de_zai_kubernetes_ji_qun_zhong_shi_yong_sdn_ji_shu_fang_fa.html

任何的技术方案都离不开场景,在这里我们根据不同的场景给大家推荐几种技术方案:

单服务器:不需要网络组件,使用Docker自带的网络即可

小规模集群:使用kubenet + hostroutes,简单、易配合管理

云环境中的小规模集群:使用kubenet + master组件上运行的网络控制器,充分利用IaaS所提供的VPC环境中的路由功能,简化网络配置

服务器不在一个网段的集群:使用Flannel提供的vxlan或者其他类似的Tunnel技术

安全要求高的集群:使用Calico或者Open vSwitch等支持Policy的SDN技术

ovs:

1.三年以上linux系统相关大规模集群运维经验,熟悉云计算虚拟化相关技术(Openstack/KVM);熟悉云计算虚拟网络相关技术(VxLAN/EIP/ELB/OSPF等);

2.熟悉TCP/IP以及常用的网络协议,熟悉网络、安全体系结构基础知识;

3.熟悉常见数据库(mysql、SQLServer、PostgreSQL)的安装配置使用,熟悉SQL语言的优先。

4.熟练使用Python/Shell中的任一脚本语言,有运维平台开发经验优先;

5. 精通Linux文件系统、内核、Linux性能调优、TCP/IP、HTTP等协议,有良好的网络、数据存储、计算机体系结构方面的知识 ,具备很强技术敏感度和故障排查经验;

网络:

1 精通TCP/IP、OSPF、BGP、ISIS、MPLS VPN/TE、Segment Routing等协议,熟悉大规模IDC及骨干网络架构,了解光通信、网络安全,熟悉华为、H3C等主流网络厂商产品技术及产品架构。

2 有网络自动化运维的理念,并具备一定的开发能力推进网络自动化运维能力建设,深入理解Linux系统,熟练使用python编程语言优先。

2. 精通一种或多种场景的软硬件解决方案及性能优化:大规模分布式系统,数据库,虚拟化,容器/docker;熟悉开源社区解决方案及使用场景

熟悉docker、k8s等主流容器技术安装、配置管理和故障排查的基本能力。
转自:

https://www.jianshu.com/p/1507fa175784

猜你喜欢

转载自blog.csdn.net/lingshengxiyou/article/details/129962436