自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学习学习再学习

微信公众号“云原生手记”,专注于云原生

  • 博客(215)
  • 资源 (7)
  • 收藏
  • 关注

原创 云原生时代的镜像分发工具——Dragonfly简介

欢迎关注微信公众号“云原生手记”文章目录背景dragonfly的原理dragonfly中的概念dragonfly运行原理dfdaemondfdaemon的拦截dfdaemon拦截后作甚dfgetdfget获取blob过程supernode注册接口总结背景今天要分享的是Dragonfly,这是阿里开源的一款用于镜像分发的工具,大家最早了解到这款工具,可能是因为调研大规模容器镜像分发的解决方案,最初这款工具确实是用于解决镜像分发问题的,当然,现在仍用于镜像分发,但是将来这块工具的定位将是企业级文件工具。

2021-01-25 09:06:07 5395

原创 Client-go之Informer机制本地存储Indexer

Client-go之Informer机制本地存储Indexer若想与作者沟通交流问题,请关注微信公众号“云原生手记”背景client-go Informer机制的主要逻辑是controller控制reflector从apiserver获取感兴趣的资源对象的数据,然后将数据放入DeltaFIFO队列中,controller将从队列中消费出对象增量数据,然后将增量存入本地存储,同时根据增量类型(Added,Update,Delete)进行事件通知。那么client-go中的本地存储是什么样的存在呢?我们

2020-09-18 08:27:24 1376 1

原创 client-go: Informer机制之reflector源码分析

client-go: Informer机制之reflector源码分析目的为了能充分了解Inform机制的原理,我们需要了解Inform机制的起点——reflector,那么,reflector是如何将数据从api-server拉下来?又是如何将数据存入本地的呢?解决这两个疑问就是本篇文章的重点。希望大家也能在此过程中能顺便了解k8s中list-watch机制缓存对象数据的原理。源码分析的大致流程首先,需要了解reflector结构体中的各个属性,然后是reflector是如何初始化,最后针对ref

2020-09-15 08:36:08 1297

原创 Tekton CD 之实战篇(三):从Github到k8s集群

Tekton CD 之实战篇(二):从Github到k8s集群CICD逻辑图CD概述我这边讲的CD是将用户的应用部署进k8s集群,现在大家都在使用k8s集群了,k8s管理应用比较方便,部署应用更是方便,直接kubectl apply -f 文件名就可以了。这边我要讲的CD两种方式:一种是通过kubectl命令实现的;一种是通过client-go实现的,原理是一样的,只是实现方式不同。当然,目前有的CD工具例如 Argo CD,也是很好的CD工具,已经很成熟了。我个人在项目中还没有使用 Ar

2020-08-03 20:09:17 2865

原创 部署企业自己的Docker Hub镜像加速器

部署企业自己的dockerhub容器镜像加速器

2020-06-24 07:42:31 1529

原创 Tekton CI 之实战篇(一):从Github到Harbor仓库

Tekton CI 之实战篇(一):从Github到Harbor仓库背景本文将介绍如何从github上的一个golang工程制作镜像并推送到企业级镜像仓库Harbor的示例。从github拉取代码,是为了方便大家自己动手操作,完成示例。前提条件k8s集群安装好tekton的pipeline组件(之前的文章中有介绍怎么安装,如有问题,评论区留言)有harbor仓库,(公众号内有harbor的部署教程)大致流程1、编写整个CI过程中需要用到的yaml文件,整个CI过程包括:拉取代码,编译,构

2020-06-22 07:41:00 2068 3

原创 kubeadm部署k8s1.17.0

kubeadm部署k8s1.17.0集群。傻瓜教程。

2020-04-18 19:14:17 700

原创 Github认证调研

Github认证调研我使用了阿里云和百度云的镜像服务中的代码库绑定,绑定了github,所以在github的设置中的application中可以看到如下显示:百度云使用了OAuth App阿里云使用的权限阮一峰将的auth2.0。将的很好,接了我很多的疑惑,尤其是更新令牌那块,阮一峰的文章第三方登录原理所谓第三方登录,实质就是 OAuth 授权。用户想要登录 A 网站,A 网站让...

2020-02-15 20:47:01 504

原创 golang 内置函数append使用方式

内置函数append使用方式看一下内置函数append在buildin.go中的注释就知道了// The append built-in function appends elements to the end of a slice. If// it has sufficient capacity, the destination is resliced to accommodate the...

2020-02-01 20:20:47 6178

原创 切片面试题:学习切片长度、容量,切片增长的过程

个人博客地址:https://zhounanjun.gitbook.io/nanjun/关于切片的面试题:摘自https://goquiz.github.io/#subslice-growfunc Subslice() { s := []int{1, 2, 3,4,5,6,7,8,9} ss := s[3:6] fmt.Printf("len ss : %d\n", l...

2019-12-22 14:34:43 640

原创 Client-go中的watch接口的resultChan会自动关闭

Client-go中的watch接口的resultChan会自动关闭文章目录Client-go中的watch接口的resultChan会自动关闭问题描述resultChan会自动关闭的原因解决办法问题描述在client-go工程中,有时候需要用到watch接口,实际场景如下:namespacesWatch, err := clientSet.CoreV1().Namespaces().Wa...

2019-12-05 14:53:50 3867 11

原创 multus-cni之源码解析

从源码解析的角度介绍multus-cni的原理

2022-05-15 13:29:04 1449

原创 multus-cni之初探

k8s中pod是如何实现多网卡的,本篇将带你快速使用multus-cni插件为容器附上多张网卡。

2022-05-15 13:24:59 1598

原创 阿里云image-syncer源码分析

阿里云image-syncer源码分析欢迎关注“云原生手记”微信公众号背景大家在公司中都会使用到容器镜像私有仓库,一般都用harbor,也有会用registry搭建一个简陋的私库。然后,有一天,领导告诉你,公司建了一个统一的镜像仓库,需要做镜像迁移,或者公司业务要上公有云了,需要把公司原私有仓库中的镜像全部迁移到公有云镜像仓库(阿里云,腾讯云或者移动云)上去。那么,运维人员就会开始写脚本,逻辑大概是这样的:先从原仓库pull下镜像,然后重新tag,最后push到目标仓库。这种逻辑在一般原镜像仓库不大的

2020-11-23 13:38:58 709 4

原创 golang之context使用

背景(欢迎关注“云原生手记”微信公众号)golang中并发编程的三种实现方式:chan管道、waitGroup和Context。本篇将重点介绍context的使用,告诉大家基本的使用方式,做到会用。Context概念介绍context译为上下文,golang在1.6.2的时候还没有自己的context,在1.7的版本中就把golang.org/x/net/context包被加入到了官方的库中。golang 的 Context包,是专门用来处理多个goroutine之间与请求域的数据、取消信号、截

2020-10-04 23:19:18 2639 3

原创 Client-go Informer之 DeltaFIFO队列

Client-go Informer之 DeltaFIFO队列欢迎关注微信公众号“云原生手记”背景上一篇讲到reflector监控指定的k8s资源,当监控的资源发生变化时,将资源对象的变化存放到DeltaFIFO队列中。本篇的内容就是剖析DeltaFIFO队列,顺便再看下goland如何实现FIFO队列。队列client-go中有两个队列,一个是FIFO队列,另一个是DeltaFIFO队列。我们通过学习其中的FIFO队列来了解Golang语言中设计FIFO队列的基本技巧,而学习DeltaFIF

2020-09-17 21:38:48 683

原创 Client-go之Informer机制初探

Client-go之Informer机制初探启航本篇将开始我的源码剖析之路,先会讲client-go中的一些经典的机制和代码,然后讲一些我是用client-go中的一些小示例。最后开始读k8s scheduler源码。背景在k8s系统中,组件之间仅通过Http协议进行通信,没有中间件,其实蛮好奇k8s内部通信是如何保证消息实时性、可靠性和顺序性的,实现这些性能的关键在于Informer机制,Informer机制中的ListAndWatch、DeltaFIFO队列和Indexer等对于实现以上特性非

2020-09-14 11:29:18 1186

原创 linux主机间免密访问

linux主机间免密访问# 第一步:查看是否已经有公钥私钥了ls .ssh # 要是有id_rsa id_rsa.pub 等文件就是之前已经生成过密钥了,执行第三步步,否则执行第二步# 第二步: 生成 ssh key,如果你之前配置过 Git,那么已经生成过一个了ssh-keygen -t rsa -C "[email protected]"# 第三步拷贝 ssh key 至远程主机ssh-copy-id remote_user@remote_server下登录远程主机,直接ssh remote_

2020-09-08 14:17:11 233

原创 client-go源码解析(一):client-go客户端对象

client-go源码解析(一):client-go客户端对象client-go的重要性client-go是对K8s集群的二次开发工具,所以client-go是k8s开发者的必备工具之一。本篇目的本篇的目的旨在教会大家k8s集群的客户端有哪些种类,大家可能之前都使用过client-go去操作k8s中的资源对象,但是对于其中原理可能一知半解,client-go github那边只是给出了简单的几个例子,没有太多深入讲解。本讲就先跟大家介绍下,client-go到底有几种客户端对象去和集群交互,这些客

2020-08-10 19:58:10 2581

原创 云原生CI/CD:Tekton之trigger介绍

云原生CI/CD:Tekton之trigger组件简介上面背景图片用了一张手枪扳机的图片,啥意思呢?trigger对于pipeline的作用就像扳机对于手枪的作用的,读完文章再来体会这句话。前面我们学过tekton的pipeline组件,里面可以运行自定义工作流任务,而这些工作流任务例如task和pipeline都需要对象的触发对象例如taskrun和pipelineRun。触发的方式有两种:手动kubectl apply 文件触发和client-go触发。tekton为大家选择第三种方式,使用ap

2020-07-14 20:50:51 1520

原创 git如何合并中间几个commit点为一个commit点

git中合并中间几个commit点为一个使用场景描述之前讲述过,把git最后几个commit点合并成一个。有小伙伴提出如果不是最后的几个commit合并,而是中间连续的几个,是不是也可以用相同办法实现。答案是也用相同办法实现。准备环境git inittouch textecho 1 > textgit add .git commit -m "first commit"echo 2 > textgit add .git commit -m "second commit"ec

2020-07-10 11:26:16 3920

原创 云原生Tekton之触发器Trigger

背景前面的文章讲了tekton中pipeline的教程和使用案例,大家有没有想过,每次都要运行taskrun或者pipelineRun才能真正运行流水线。那怎么做到自动化执行taskrun和pipelineRun呢?我想了下有两种方式:使用client-go去创建taskRun和pipelineRun使用tekton的另一个组件trigger触发器。单纯运行taskrun和pipelineRun,或者实例化以下task和pipeline,那么选用trigger会比较好,因为不需要额外开发,只需.

2020-07-07 22:22:23 1345 2

原创 Tekton CI 之实战篇(二): DinD方式构建镜像

Tekton CI 之实战篇(二): DinD方式构建镜像背景简单介绍下什么是dind?使用场景是什么?DinD即 Docker inside Docker, DinD在容器里有一个完整的docker构建系统,可直接在容器中完成镜像的构建,与之相对应的就是DooD ,通过挂载宿主机的docker.sock文件,调用宿主机的docker daemon去构建镜像。他们的主要使用场景有很多,比较常见的就是CICD场景中了,CICD需要构建镜像。我之前的文章使用的就是DooD的方式,通过挂载宿主机的docke

2020-07-04 17:43:33 4726

原创 哈佛的6堂独立思考课 读后记录

读完这本书,对于独立思考有了一个明确的体系。对于之前领导和同事评审项目时所提的好问题,好建议,似乎都能在本书中看到缩阴。个人觉得对于以后发表意见的逻辑性和说服力有很大提升,尤其是面对反驳时的心态有一定提升。

2020-06-07 12:10:38 508

原创 云原生CI/CD:Tekton/pipeline之pipelineRun

云原生CI/CD:Tektoncd/pipeline之pipelineRun。pipelineRun主要用于运行pipeline。相当于是对pipeline的一次调用。

2020-05-16 19:18:07 1862 1

原创 云原生CI/CD:Tekton/pipelin之pipeline概念篇

云原生CICD神器tekton的神秘之处不止Task和taskRun,还有pipeline.功能更全。完成复杂的CICD操作不是问题。

2020-05-13 07:58:51 2332

原创 Azure容器镜像代理服务失效

Azure容器镜像代理服务失效解决方案前段时间 Azure 中国提供的容器镜像代理服务已经不开放了,只给 Azure 云使用。最近使用Azure的加速地址都显示404。像以下拉取镜像的方式,现在不能用了:docker pull dockerhub.azk8s.cn/library/<imagename>:<version> #例子docker pull dockerhub.azk8s.cn/library/centos建议使用阿里云的比较稳定,这边另外推荐一个容器镜像代

2020-05-11 09:38:29 479

原创 云原生CI/CD:tekton/pipeline之认证篇

云原生CI/CD:tekton/pipeline之认证篇既然说tekton/pipeline是CI/CD,必然需要用到拉取git仓库代码,仓库代码可能是私有的,看下tekton/pipeline在这边的支持。tekton/pipeline支持两种身份验证方式,将以k8s中secret的形式呈现:kubernetes.io/basic-authkubernetes.io/ssh-auth下面将简单价绍两种认证方式,以及相关例子的运行。SSH authentication (Git)我们在拉取

2020-05-09 09:18:34 6568

原创 云原生CICD:Tekton之Dashboard

Tekton Dashboard先给大家看下部署完之后的仪表盘页面:Tekton仪表板是Tekton Pipelines基于Web的通用UI。它允许用户管理和查看Tekton PipelineRun和TaskRun,以及在tekton中创建,执行和完成过程中涉及的资源。它还允许按标签过滤PipelineRun和TaskRun。本篇将简单介绍dashboard及其安装,当然也会将下该工具在开发...

2020-04-29 19:17:04 2168 2

原创 standard_init_linux.go:190: exec user process caused "no such file or directory"

今天打golang工程的镜像遇到一个问题,就是我在centos的主机上编译golang项目,然后使用Dockerfile构建镜像,用docker运行镜像时,日志一直报如下错误,且一直重启:standard_init_linux.go:190: exec user process caused "no such file or directory"Dockerfile如下:FROM alpi...

2020-04-27 18:41:12 2148

原创 利用NFS动态提供Kubernetes后端存储卷

本文将介绍使用nfs-client-provisioner这个应用,利用NFS Server给Kubernetes作为持久存储的后端,并且动态提供PV。

2020-04-27 17:26:02 341

原创 云原生CICD:Tekton之Task&TaskRun概念篇

Tekton之Task&TaskRun概念篇

2020-04-21 07:56:47 1507

原创 云原生CICD:tekton简单介绍及安装

今天开始,我将逐步上新tekton的使用教程,每篇只需5分钟的阅读时间。如有写的不好的地方,欢迎评论指正

2020-04-20 08:26:34 2607 8

原创 goconvey调研及学习

GoConvey是一款针对Golang的测试框架,可以管理和运行测试用例,同时提供了丰富的断言函数,并支持很多 Web 界面特性。

2020-03-20 16:44:53 1198

原创 gomonkey调研文档和学习

gomonkey是gomonkey 是 golang 的一款打桩框架,目标是让用户在单元测试中低成本的完成打桩,从而将精力聚焦于业务功能的开发

2020-03-20 16:41:37 16157 2

原创 k8s CRD(一)quick start

k8s CRD(一)quick start1.安装CRD所需环境1、去找一个k8s集群2、找一台master节点(可以用kuberctl命令的即可),安装golang,配置好Gopath2.开始安装访问kubebuilder指导手册os=$(go env GOOS)arch=$(go env GOARCH)curl -L https://go.kubebuilder.io/dl/2...

2020-03-11 10:07:40 5584

原创 Github认证调研

Github认证调研背景介绍:项目上需要做镜像服务中在线制作镜像功能,第一步就是绑定代码源,常见的公有云:阿里云、华为云、百度云、腾讯云都有,都能绑定github账号,也能获取github的公有和私有仓库。我调研的主要目标就是第三方应用如何获得Github的授权。我使用了阿里云和百度云的镜像服务中的代码库绑定,绑定了github,所以在github的设置中的application中可以看到如下...

2020-02-16 18:57:35 461

原创 Golang数组类型转换

最近写代码的时候会遇到类型转换,有时候对单独的变量强制转换没有问题,但要是对复杂的变量(例如数组)进行强制转换就会出现问题。问题1:可以将[]T1转换为[]T2吗?T1和T2底层类型是一样的。答案是不能,看一下例子:type T1 inttype T2 intvar t1 T1var x = T2(t1) // OKvar st1 []T1var sx = ([]T2)(st1) ...

2020-01-29 19:54:37 7081

原创 registry拉取dockerhub私有镜像

registry除了用作私有仓库,还可以用作镜像缓存,镜像缓存就算做镜像加速,可用于加速dockerhub镜像,也能拉取dockerhub私有镜像

2020-01-29 14:29:12 2278

原创 快速拉取dockerhub、google镜像仓库、coreos镜像仓库的方式

快速拉取dockerhub、google镜像仓库、coreos镜像仓库的方式,也就是使用镜像加速器。不需要配置docker daemon的regsitry-mirrors

2020-01-10 18:01:43 3080

mysql高性能索引读书笔记

《高性能Mysql》第五章的读书笔记,记录的都是要点,以思维导图的方式呈现。

2018-11-01

精通tomcat

精通tomcat 学习tomcat原理 tomcat实现,精通tomcat 学习tomcat原理 tomcat实现

2018-05-12

阿里巴巴JAVA开关手册,java编码规范

阿里巴巴JAVA java编码规范 java变成习惯。一本很好的java开发规范文档

2018-05-12

《Spring Boot实战》源代码

书籍Spring Boot实战 源代码, Spring Boot实战 源代码 Spring Boot实战 源代码 Spring Boot实战 源代码 Spring Boot实战 源代码 Spring Boot实战 源代码 Spring Boot实战 源代码 Spring Boot实战 源代码 Spring Boot实战 源代码 Spring Boot实战 源代码 Spring Boot实战 源代码 Spring Boot实战 源代码

2018-05-10

单片机课件

好几个单片机课程课件,初学者很适用,都是属于入门级的,就像教程一样

2014-01-11

MSP430 TI常用程序集

MSP430常用的程序都在里面,包括LED,中断定时

2014-01-11

郭天祥51单片机程序大集合

郭天祥十天学会单片机程序大集合,由浅入深,适合初学者以及单片机爱好者的使用

2014-01-11

空空如也

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

TA关注的人

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