自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hahachenchen789的博客

What does not kill me,makes me stronger.

  • 博客(423)
  • 收藏
  • 关注

原创 kubernetes源码分析-pod删除流程

在Node节点上,k8s是通过kubelet删除具体的pod。而用户删除pod一般通过kubectl delete pod 命令,或者利用http直接调用api-server暴露的接口去删除pod。因此在分析kubelet删除具体pod之前,先分析用户删除pod的命令是如何一步步传达给具体node上的(以kubectl delete pod 命令为例)。用户删除Pod流程k8s中采用cobra框架作为命令行的实现。kubectl delete操作通过NewCmdDelete中的RunDelete

2021-02-20 11:46:18 3052

原创 kubernetes源码分析-pod创建流程

前言首先放一张kubernetes的架构图。其中apiserver是整个架构的信息交互中心。所有组件都会与apisever交互。kubernetes中,每个node都部署了一个kubelet,通过kubelet实现对pod的创建、删除、更新等操作。Pod正式创建前的操作那么kubelet是怎么知道何时需要创建/删除一个pod以及对应的业务容器的呢?在kubernetes中,用户通过kubectl create/run 来部署各种应用、deployment等。kubectl接.

2021-02-20 11:15:34 1680

原创 kubernetes单节点集群搭建之CNI flannel网络安装

一、前言kubernetes集群搭建方法很多1.可以用第三方工具,比如minikube,kubeadm。2.也可以去kubernetes官网下release出的二进制bin文件。3.下载kubernetes源码,手动编译后生成二进制bin文件,该方法适用于需要对kubernetes源码进行改动或者二次开发的同学。本文采用第三种方法,即编译源码的方式。编译过程不在这详述...

2020-05-07 17:38:25 7262 1

原创 ION-DTN-前向纠错编码ECLSA详细介绍

ION-DTN是NASA提出的针对DTN网络架构的具体实现方案。旨在解决深空通信的高延时、高误码、频繁中断等链路问题。ION中目前依靠LTP协议进行中断的重传处理。但在深空这种长延时环境中,重传所耗费的时间和资源过于庞大,比如地球与火星的通信,即使的激光通信,最短也需要3分钟,最长则需要33分钟。如此长的重传时间是QoS的灾难。因此ION在3.6.0版本以后,增加了前向纠错编码ECLSA这...

2019-04-07 23:26:21 1368

原创 kubernetes开发指南(REST&API)(一)

REST简介REST(representational state transfer)是由roy博士在他的论文中提出的一个术语,rest本身只是为分布式超媒体系统设计的一种架构风格,而不是标准。基于web的架构实际上就是各种规范的集合,这些规范共同组成了web架构,比如HTTP、客户端服务器模式都是规范。每当我们在原有规范的基础上增加新的规范时,就会形成新的架构,而rest正是这样一种架构...

2019-02-16 21:58:45 5839

原创 2018互联网实习&秋招回顾(BATM+MS+Intel+NE+DJI)

先介绍本人在2018年的暑期实习和秋招拿到的offer:实习:阿里(c++后台研发),微软(c++后台开发),网易游戏(基础架构研发),大疆(测试开发),地平线(嵌入式软件开发),微策略(c++后台研发),寒武纪(嵌入式软件开发),招商银行信用卡中心(c++后台开发)。秋招:百度(c++后台研发,白菜),腾讯(c++后台研发,sp),美团(java后台研发,小sp),intel(c++后台...

2018-11-22 11:38:41 5266 9

原创 YARN源码分析—AM-RM通信协议,获得资源

在上几篇博文中分析了YARN调度模拟器SLS的源码,重点分析了AM与RM之间的通信协议。接下来分析在YARN项目中,AM-RM通信如何实现的。注意点:在YARN中,真正已经实现的只有RM和NM,而AM和client只是提供了api,需要用户自行实现。而AM的主要功能是根据业务需求,从RM处申请资源,并利用这些资源完成业务逻辑,因此AM需要跟RM通信,也需要跟NM通信。通信协议:...

2018-07-16 17:56:18 3202

原创 YARN SLS-AM请求资源的协议解析

在slsrunner.java中:startAM->startAMFromSLSTrace->createAMForJob->runNewAM在runNewAM函数中,最后两个参数很重要:private void createAMForJob(Map jsonJob) throws YarnException {...... for (int i = 0;...

2018-07-16 11:49:26 539

原创 deepspeed zero3

它是纵向切分权重(intra-layer,每一层的权重切成n块)。但是这样会增加通讯时间。你可以根据自己的模型,估算下切分后的通讯量和通讯时间。其次,pipeline并行一般指横向切分权重(inter-layer,每一层放在一块卡上,有n层就放n张卡),所以它和zero3的切分不是一个类型的。总结一下,zero3可以帮你切权重,但不是pipeline的那种切法,zero3切分权重后会增加通讯量,进而增加训练时间。:megatron提供tp,deepspeed 提供dp和pp。

2023-08-07 22:28:11 1018

原创 Fluid-数据缓存亲和性调度原理解析

Fluid-数据缓存亲和性调度原理解析

2023-02-09 17:48:40 731 1

原创 Fluid-数据编排能力原理解析

数据编排能力原理解析

2023-02-09 17:46:56 769

原创 Fluid-架构详细解析

Fluid-架构详细解析

2023-02-09 17:42:36 1005

原创 使用devspace进行云原生开发

云原生开发的痛点:开发controller/crd operator时,需要在集群中运行测试。部署一般是利用pipeline或者二进制进行。而出现问题需进行调试时,一般只能通过打印日志,然后重新运行pipeline,生成新的镜像,然后更新pod。这样导致效率过低,简单的几行debug都需要走一遍全部流程。devspace是什么?DevSpace是Kubernetes的开源开发工具,可以让您更快地开发和部署云本地软件。官网:https://devspace.sh/安装(以mac

2021-10-12 21:46:30 615

原创 【万字长文】k8s client-go的informer设计实现详解

在开发controller时,用的最多的就是client-go的informer机制。该机制保证了消息的实时性,可靠性、顺序性。本文结合informer源码,对informer的设计实现进行详细解析。首先给出informer机制架构图(图片来自《k8s源码剖析》一书)核心组件:1、reflector从上图可以看到,reflector与api server直接交互,监听k8s资源,包括全量list,以及watch资源的变化事件,包括增删改。将对象放入deltafifo中。..

2021-07-01 17:58:40 2181

原创 mac+kind+ MetalLB实现集群load balance功能

使用kind安装k8s集群时,默认不提供load balance能力的。对于需要该能力的,kind官方给出了方案:使用metalLb。安装guo che

2021-06-08 22:04:59 672 1

原创 k8s client-go中的队列workqueue设计笔记

1、workqueue的去重和标记功能,利用set实现。workqueue中怎么实现set:利用golangtype empty struct{}type t interface{}type set map[t]empty其中empty是空类型, 因为sizeof(struct{})=0t是interface,泛型。表示支持多种类型。set用map实现,其中key为t,也就是泛型。empty为空。因为set的本质就是去重的数组,因此利用map的key不重复的特性实现。而value就

2021-05-08 17:58:59 1033 1

原创 k8s crd operator踩坑点

1、在函数中,有两种方式声明一个crd变量var a *appv1.deploymentb := new(appv1.deployment)区别,new是有初始化值的。因此 b != nil。但是a == nil。因此,new(appv1.deployment)可以作为client.get(ctx, b),进行赋值。但是如果要进行判断,用var比较好,不会进行初始化。2、crd的status字段,如果要更新,需要使用client.status().update()方法,而不能直接使.

2021-04-29 20:37:23 3191 5

原创 kubebuilder+code-generator开发crd operator

概览和k8s.io/code-generator类似,是一个码生成工具,用于为你的CRD生成kubernetes-style API实现。区别在于:Kubebuilder不会生成informers、listers、clientsets,而code-generator会。 Kubebuilder会生成Controller、Admission Webhooks,而code-generator不会。 Kubebuilder会生成manifests yaml,而code-generator不会。 Ku

2021-03-16 18:47:50 873 1

原创 集群使用calico的bgp+ipip混合模式部署

搭建方法:kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yamlwget https://docs.projectcalico.org/manifests/custom-resources.yamlvim custom-resources.yaml # 修改ipPools[0].cidr 为 kubeadm init 的 --pod-network-cidr 参数kubectl apply

2021-03-15 17:20:50 1317 1

原创 vue+go-gin+nginx实现后台管理系统

前后端分离的经典后台管理系统。主要用到的技术和组件:前端:vuejs,组件element ui、ant vue、axios后端:golang,框架go-gin,swagger组件服务代理:nginx过程中的疑难问题和关键点记录:一、nginx反向代理:mac下修改/usr/local/etc/nginx/nginx.conf.default文件:修改后需要重启ng...

2020-04-29 21:45:45 4709 1

原创 信息中心网络ICN在卫星通信中的应用调研

Supporting the IoT over Integrated Satellite-Terrestrial Networks using Information-Centric Networking调查当IoT基于ICN上并通过集成的LEO卫星网络进行数据传输时,控制和数据信息的开销。场景:该场景通过大规模部署IOT的传感器设备来收集环境数据,IoT数据包括定期或高度不规...

2019-04-21 14:22:53 2159 1

原创 信息中心网络ICN的物联网应用调研

摘要:随着通信技术和制造工艺的不断进步,IoT(物联网)的概念被提出,并迅速发展,成为继互联网,计算机后的又一重大技术革新,IoT极有可能成为未来计算机与通信的发展方向。同时,由于物联网设备与传统互联网中运行的设备之间差别甚大,IoT应用所带来的技术问题和挑战需要深入研究和思考。information-centric-networking(ICN)是一种新型的未来互联网的设计方案,基于其内容中...

2019-04-21 11:35:32 5471

转载 go语言-数组指针

1.数组指针(1)数组指针与指针数组这俩概念原本在c语言中就是一个绕口令般的存在,尽管从类型角度来看两者并没什么相似的地方。但是在go语言中对这两个类型的设定做出了一些不同的规定。首先交代一下基本概念:数组指针:指的是一个指针,只不过这个指针指向了一个数组eg:...

2019-04-21 10:37:07 3380 2

原创 windows go语言编程环境搭建:IDEA2016.3+go1.7

首先下载go的sdk,最新版本是1.12,但这里选择下载1.7.原因稍后解释。go sdk地址:https://studygolang.com/dl对于go,比较好的IDE就是goland和IDEA+go plugin。前者需要收费。后者的IDEA社区版是免费的。于是选择后者。首先去IDEA的官网上寻找go plugin插件的下载地址。地址:https://plugins.jetb...

2019-04-19 15:37:41 416

原创 word-每一章插入不同的页眉

光标放在在每一章的最后一页,选择:布局—分隔符—插入分节符-连续。如图所示:然后在下一页,也就是第二章,就可以编写不同于第一章的页眉了。点击取消链接到第一节即可。...

2019-04-10 22:54:33 2000

原创 解决Matlab报错:MATLAB 先前因底层图形错误而崩溃。为避免在此会话期间再次崩溃,MATLAB 将使用软件 OpenGL 而不再使用图形硬件。

报错如下:----------------------------------------------------------------------- Assertiondetected at Wed Jun 13 20:09:19 2018 ---------------------------------------------------------...

2019-04-08 14:52:34 23039 14

原创 CCNx调研

CCNx是ICN中的CCN提案的一种实现。主要运行在Linux的一些发行版上,比如Ubuntu,Debian,Macos。在2014年前后,CCNx的官方网站为:http://www.ccnx.org但目前,CCNx项目已经交给Linux基金会,作为其子项目运行,项目名称也由CCNx改为Cicn。官方网站为:https://wiki.fd.io/view/Cicncicn在CCNx...

2019-03-25 11:33:16 1126

原创 ION-DTN with ECLSA 源码

ECLSA 是一种前向纠错编码,用于对缺失的数据进行恢复,从而避免重传。在ION-DTN中,ECLSA用于LTP之下,将LTP segment作为编码的单元,如下图所示:ECLSA(纠错链路服务适配器)是UDPLSA(和其他LSA)的一种新的LSA替代方案。LTP中加入这个编码的目的在于减少重传次数,因为深空中,延时很大,重传的代价很高。但在实验中,发现ECLSA模块在I...

2019-03-02 16:07:01 562

原创 kube-proxy进程源码分析

kube-proxy是运行在Minion节点上的另外一个重要的守护进程,你可以把它当做一个HAProxy,它充当了kubernetes中service的负载均衡器和服务代理的角色,下面我们分别对其启动过程、关键代码分析及设计总结等发面进行深入分析和讲解。进程启动过程kube-proxy进程的入口类源码位置如下:cmd/kube-proxy/proxy.go入口main()函数的逻辑...

2019-02-22 00:01:39 830

原创 kubernetes-kubelet进程源码分析(三)

接着上篇博文,我们继续分析kubelet进程的另一个重要功能是如何实现的:定期同步Pod状态信息到API sever。先来看看Pod状态的数据结构定义:Pod的状态又5种:运行中(PodRunning)、等待中(PodPending)、正常终止(PodSucceeded)、异常停止(PodFailed)及未知状态(PodUnknown),最后一种状态很可能是由于Pod所在主机的通信...

2019-02-21 17:31:36 390

原创 kubernetes-kubelet进程源码分析(二)

kubelet关键代码分析在上篇博文,我们分析了kubelet进程的启动流程,大致明白了kubelet的核心个哦你工作流程就是不断从Pod Source中获取与本节点相关的Pod,然后开始加工处理,所以我们先来分析Pod source部分代码。前面我们提到,kubelet可是同时支持三类Pod source,为了能够将不同的Pod source汇聚到一起统一处理,谷歌特地设计了Podconfi...

2019-02-20 23:53:16 403

原创 kubernetes-kubelet进程源码分析(一)

kubelet是运行在Minion节点上的重要守护进程,是工作在一线的重要工人,它才是负责实例化和启动一个具体Pod的幕后主导,并且掌管着本节点上的Pod和容器的全生命周期过程,定时向master汇报工作情况。此外kubelet进程也是一个server进程,它默认监听10250端口,接收并执行远程(master)发来的指令。进程启动过程kubelet进程的入口类源码位置如下:cmd/k...

2019-02-20 14:03:13 791

原创 kubernetes-kube-scheduler进程源码分析

kubernetes scheduler server是由kube-scheduler进程实现的,它运行在kubernetes的管理节点-Master上并主要负责完成从Pod到Node的调度过程。kubernetes scheduler server跟踪kubernetes集群中所有Node的资源利用情况,并采取合适的调度策略,确保调度的均衡性,避免集群中的某些节点过载。从某种意义来说,kuber...

2019-02-19 21:10:25 938 1

原创 kubernetes-kube-controller-manager进程源码分析

运行在Master节点上的第2个进程就是kube-controller-manager进程,即controller-manager server,kubernetes的核心进程之一,其主要目的是实现kubernetes集群的故障检测和恢复的自动化工作,比如内部组件EndpointController控制器负责Endpoints对象的创建和更新;ReplicationManager根据注册表中的Re...

2019-02-18 21:21:36 1136

原创 kubernetes-kube-apiserver进程源码分析

kubernetes API server是由kube-apiserver进程实现的,它运行在kubernetes的管理节点—master上并对外提供kubernetes Restful  API服务,它提供的主要是与集群管理相关的API服务,例如校验pod、services、replication controller的配置并存储到后端的etcd server上。下面我们分别对其启动过程、关键代...

2019-02-17 20:22:30 2255

原创 为什么要用kubernetes

使用k8s的理由很多,最根本的一个理由就是:IT从来都是由一个新技术驱动的行业。      docker这个新兴的容器化技术当前已经被很多公司所采用,其从单机走向集群也称为必然,而云计算的蓬勃发展正在加速这一进程。kubernetes作为当前唯一被业界广泛认可和看好的docker分布式系统解决方案,可以预见,会有大量的新系统选择它,不管这些系统是运行在企业本地服务器还是被托管到公有云上。那...

2019-02-16 15:36:36 3367 4

转载 转载《美团容器平台架构及容器技术实践》

文章转载处:https://www.kubernetes.org.cn/4823.html 背景:美团的容器集群管理平台叫做HULK。漫威动画里的HULK在发怒时会变成“绿巨人”,它的这个特性和容器的“弹性伸缩”很像,所以我们给这个平台起名为HULK。貌似有一些公司的容器平台也叫这个名字,纯属巧合。2016年,美团开始使用容器,当时美团已经具备一定的规模,在使用容器之前就已经存在的...

2019-02-15 17:10:03 363

原创 ndnSIM的real application(with ccn-cxx)运行

ndnSIM官网说明可以利用ndnsim以及ndn-cxx、NFD等模块来模拟真实的协议栈实验。 但如果采用官网的教程和模块版本,是无法运行的。因为ndn-tools的版本会和ndn-cxx以及NFD模块版本冲突。具体的冲突原因是由于各个模块的接口api发生变化,导致模板之间的调用出现问题;或者是ndn-tools的编译需要c++14,而waf-tools只支持c++11。总之各个模块...

2019-01-02 16:11:10 561

原创 解决android.support.multide... keeps stopping问题

Android中multidex方法可以解决超过64k方法的问题。但在启动app时,可能会出现如下问题导致无法启动:android.support.multide... keeps stopping原因在于:minSdkVersion 设置低了。如果你的 minSdkVersion 设置为 21 或更高值,你只需在模块级 build.gradle 文件中将 multiDexEnab...

2018-11-30 16:09:26 24425 4

原创 ION-DTN AMS协议介绍

AMS介绍与目的:AMS:Asynchronous Message Service,异步消息服务AMS是CCSDS提出的基于DTN的应用层协议,AMS是一种数据系统通信体系结构,任务系统的模块可以在该体系结构下设计成好像要在隔离地操作一样,每个模块在不知道哪些其他模块运行的情况下进行工作:生产和消费数据。基于此模型的系统是一个由通常自治的互操作模块组成的“社会”,也就是说各个模块之间不...

2018-11-29 17:05:21 2030

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除