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