- 博客(27)
- 收藏
- 关注

原创 kubeedge-temperature-demo 示例
本文是基于github上提供的kubeedge-temperature-demo进行的。由于没有硬件设备,所以本示例中注释了硬件相关的代码,并通过随机生成数字的方式来实现temperature的变化。1、准备工作1)kubeedge v1.2.0版本安装成功,并正常运行。2)本文接下来的验证将使用边缘节点bluejoy-jing进行(如果你参考本文进行相关验证,后续边缘节点名称的配置需要根据你的实际情况进行更改)。3)从github上clone示例代码mkdir /home/bluejoy/k
2020-06-30 20:03:21
2486
8

原创 kubeedge-counter-demo 示例
本文是基于github上提供的kubeedge-counter-demo进行的。1、准备工作1)kubeedge v1.3.1版本安装成功,并正常运行。2)本文接下来的验证将使用边缘节点bluejoy-jing进行(如果你参考本文进行相关验证,后续边缘节点名称的配置需要根据你的实际情况进行更改)。3)本示例要求的kubeedge版本必须是v1.2.1+ 。4)确保kubernetes apiserver开启了以下配置:修改/etc/kubernetes/manifests/kube-apise
2020-06-30 19:47:57
3593
25

原创 kubeedge v1.3.1部署指南
1、准备工作1.1 kubernetes集群和edge节点1)需要先安装一个kubernetes集群2)准备一个edge节点,安装dockerkubernetes集群和docker的安装教程网上有很多,此处不再详述。1.2 创建安装目录(master节点)mkdir -p /home/bluejoy/kubeedge/deploy-v1.3.11.3 下载kubeedge v1.3.1源码(master节点)cd /home/bluejoy/kubeedge/deploy-v1.3.1g
2020-06-30 19:34:08
2657
25

原创 kubeedge v1.2.0部署指南
1、准备工作1.1 kubernetes集群和edge节点1)需要先安装一个kubernetes集群2)准备一个edge节点,安装dockerkubernetes集群和docker的安装教程网上有很多,此处不再详述。1.2 创建安装目录(master节点)# mkdir -p /home/bluejoy/kubeedge/deploy-v1.2.01.3 下载kubeedge v1.2.0源码(master节点)cd /home/bluejoy/kubeedge/deploy-v1.2.0
2020-06-30 19:21:44
418
6

原创 kubeedge v1.1.0部署指南
1、准备工作1.1 kubernetes集群和edge节点1)需要先部署一个kubernetes集群,可以只部署master节点2)准备一个edge节点,安装dockerkubernetes集群和docker的安装教程网上有很多,此处不再详述。1.2 创建安装目录 (master节点)mkdir -p /home/bluejoy/kubeedge/deploy-v1.1.01.3 下载kubeedge v1.1.0源码 (master节点)cd /home/bluejoy/kubeedge
2020-06-25 23:34:15
621

原创 kube-scheduler源码解读(5)
在kube-scheduler源码解读的第四篇文章中,我们完成了对scheduler组件启动过程中的所有前期准备流程。本篇文章我们将分析sched.scheduleOne函数的执行流程,Pod的调度就是通过这个函数进行的。让我们开始pod的调度之旅吧。sched.scheduleOne函数的定义如下:// scheduleOne does the entire scheduling workflow for a single pod. It is serialized on the scheduli
2020-06-01 18:32:59
565
3

原创 kube-scheduler源码解读(4)
在kube-scheduler源码解读的第三篇文章中,最后我们分析到不管是不是启动了选举操作,scheduler的流程都会执行到sched.Run函数。所以,本篇文章我们将详细的分析sched.Run函数的主要流程。sched.Run函数的定义如下所示:// Run begins watching and scheduling. It waits for cache to be synced, then starts scheduling and blocked until the context is
2020-05-31 11:49:12
446

原创 kube-scheduler源码解读(3)
在kube-scheduler源码解读的第二篇文章中,我们详细分析了runCommand函数的流程。runCommand函数主要是对kube-scheduler的配置参数进行相关的检查验证等操作,本篇文章我们将将详细的分析runCommand函数最后调用的Run函数的流程。// Run executes the scheduler based on the given configuration. It only returns on error or when context is done.fun
2020-05-30 16:41:21
533

原创 kube-scheduler源码解读(2)
在kube-scheduler源码解读的第一篇文章中,我们简要分析了kubernetes scheduler组件的启动过程和pod调度的主要流程。从本篇文章开始,我们将详细的分析kubernetes scheduler组件启动和pod调度过程中一些重要的流程。本篇文章我们主要关注runCommand函数详细执行流程:// runCommand runs the scheduler.func runCommand(cmd *cobra.Command, args []string, opts *opt
2020-05-28 23:09:35
402

原创 mongo-go-driver实现复杂查询的方案
本文为个人在实际项目使用过程中实现复杂查询功能的一些经验积累,不足之处,还望不吝赐教。mongo-go-driver是mongo官方推出的golang语言的驱动程序,github地址:https://github.com/mongodb/mongo-go-driverBson简介在开始介绍如何实现复杂查询之前,我们有必要先熟悉下BSON。JSON文档在MongoDB里面以二进制形式存储, 被称作BSON(二进制编码的JSON)。和其它的数据库保存JSON数据为简单的字符串和数字, BSON扩展了JS
2020-05-26 09:16:14
2875

原创 kube-scheduler源码解读(1)
Kube Scheduler 组件是Kubernetes中负责决策将Pod具体运行到某个worker节点上的执行者,本系列文章将详细的研读kube-scheduler组件的源码。本系列文章的源码版本是kubernetes-1.18.2。本篇文章为系列文章的第一篇,主要分析kube-scheduler组件启动的主要流程。入口函数mainkube-scheduler组件的入口函数main所在的路径为kubernetes-1.18.2/cmd/kube-scheduler/scheduler.gofun
2020-05-24 11:44:46
560

原创 mongo-go-driver使用简介
本文系个人在真实项目中使用mongo-go-driver包的心得体会,如有不当之处,还望不吝赐教。1. mongo-go-driver包的导入或安装对于使用go modules来进行包管理的开发人员,可以通过从go.mongodb.org/mongo-driver导入包并让构建步骤来自动安装依赖包,或者通过显式运行以下命令来安装:go get go.mongodb.org/mongo-dri...
2020-02-12 12:55:00
5149
2

翻译 如何从Helm v2迁移到Helm v3
如何从Helm v2迁移到Helm v3如何迁移数据是Helm主版本升级过程中最重要的一部分。考虑到Helm版本的架构从v2到v3的重大变化。这就是为什么会产生helm-2to3插件。配置Helm v3由于我们不想整个推翻Helm v2命令行工具,我们需要执行一个额外的操作来确保Helm v2和v3版本的命令行工具可以同时工作,直到我们准备好移除Helm v2命令行工具和所有相关的数据:...
2019-09-15 23:58:13
2295

原创 封装Helm命令以提供Restful API
动机Helm作为Kubernetes的包管理工具,极大的方便了Kubernetes应用程序的管控。然而,Helm却仅仅提供了命令的方式对Kubernetes集群的应用程序进行管控,当我们要基于Kubernetes构建一个PaaS或SaaS容器云的时候,通常会有一个客户端微服务或程序需要调用Helm来进行应用程序的管控。在这种情况下通过直接调用Helm命令的方式进行应用管控终究不是很好的方式。...
2019-08-17 00:45:03
3961
11
翻译 Helm文档 - Chart模板教程:Values文件
Values文件在上一节中我们简单的提到了Helm模板提供的内置对象。其中的一个内置对象是Values。我们可以通过这个对象来访问传递给chart的值。Values对象的内容可以通过多种方式进行设置:Chart中的values.yaml文件如果这是一个子chart的话,可以通过父chart中的values.yaml文件进行设置。在helm install或helm upgrade命令上通过-f标志设置values文件(helm install -f myvals.yaml ./mychart)通
2020-05-23 11:46:35
5431
翻译 Helm文档 - Chart模板教程:内置对象
内置对象对象从模板引擎传递到一个模板。你的代码可以传递对象(我们将在查看with和range语句时看到示例程序)。甚至有方法能够在你自己的模板中创建新的对象,就像我们在后边看到的tuple函数一样。对象可以很简单,只有一个值。或者他们也可以包含其它的对象和函数。例如,Release对象包含了几种子对象(如Release.Name),而Files对象包含了一些函数。在前边的章节中,我们使用 {{ .Release.Name }} 方式将release的名字插入到一个模板中。Release是可以在你的模板
2020-05-23 10:43:56
1246
翻译 Helm文档 - Chart模板教程:新手入门
新手入门在这部分的教程中,我们将创建一个chart,并添加第一个模板。我们在这里创建的chart将会贯穿整个教程的其余部分。在开始之前,让我们简单地看一下Helm Chart。Charts如Charts指南里所描述的,Helm charts的结构如下所示:mychart/ Chart.yaml values.yaml charts/ templates/ ......
2020-03-27 20:09:27
2942
1
原创 Traefik简介
Traefik是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。 它可以支持多种后端 (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Rest API, file…) 来自动化、动态的应用它的配置文件设置。本文为个人在学习Traefik的过程中,对Traefik相关...
2020-03-25 19:10:44
5042
原创 go-restful框架简介
虽然,当前go语言的rest框架比较多,其中比较有名的有beego, gin等。但是这些框架相对来说都有点太重,而Kubernetes中使用的go-restful框架是一个轻量级的框架,能够满足大多数restful程序开发中的需求,本文对项目中使用go-restful框架中使用到的基本概念和使用方式做了简单的整理,如有不当之处,请不吝赐教。基本概念go-restful 框架中最基础的几个概念包...
2020-02-24 19:40:12
3964
1
转载 Go语言错误处理的推荐方案
对于Go语言(golang)的错误设计,相信很多人已经体验过了,它是通过返回值的方式,来强迫调用者对错误进行处理,要么你忽略,要么你处理(处理也可以是继续返回给调用者),对于golang这种设计方式,我们会在代码中写大量的if判断,以便做出决定。func main() { conent,err:=ioutil.ReadFile("filepath") if err !=nil{ //错误...
2020-02-20 18:59:34
229
翻译 Golang 接口简介 2
欢迎来到我们关于Go语言接口教程的第二部分内容。如果你还没有阅读过第一部分内容,请先阅读第一部分实现接口:指针接收器 vs. 值接收器我们在第一部分中讨论的关于接口的所有例子都是使用值接收器实现的。当然我们也可以使用指针接收器来实现接口。 但是在使用指针接收器实现接口时,有一点需要注意。让我们通过下边的程序来理解这一点。package mainimport "fmt"type Des...
2020-02-09 22:16:57
186
翻译 Golang 接口简介 1
这篇教程是我们关于接口的两篇教程中的第一篇。什么是接口?在面向对象的世界中,接口的一般定义是“接口定义了一个对象的行为”。它仅指出这个对应应该做什么,而实现这个行为的方法(实现细节)则取决于具体的对象。在Go语言中,接口是一组方法签名。当一个类型为接口中所有方法提供了定义时,我们就说这个类型实现了这个接口。这和面向对象的世界是非常相似的。接口指定类型应该具有什么方法,类型决定如何实现这些方法...
2020-02-06 17:01:40
253
转载 回归单体: Istio的自我救赎?
回归单体: Istio的自我救赎?1 引子2 原罪2.1 解耦是罪?2.2 设计的取舍2.3 复杂是万恶之源3 救赎3.1 目标3.2 功能和形态3.3 再谈设计3.3.1 重构阶段3.4 安装、配置的影响其他结论1 引子早在 2019 年底的 KubeConNA 中,Google API 基础设施的架构师 Louis Ryan 就透露了 Istio 控制平面架构将要进行调整的消息。从即将发布...
2020-02-03 17:08:35
1419
转载 Go面向对象式编程
Go 语言没有对象的概念,但是 struct 类型有着和对象类似的特性。struct 类型可以定义自己的属性和方法。这篇文章我们来总结下 Go 语言中关于 “继承” 和多态的概念。嵌入类型嵌入类型是指将已有的类型直接声明在新的结构类型里。不像 Java、C++ 等语言,Go 语言没有继承,但是可以通过组合的方式实现代码的复用。type User struct { Name string ...
2019-09-15 22:41:25
134
转载 KubeEdge:开源的 Kubernetes 原生边缘计算框架
KubeEdge 成为第一个 Kubernetes 原生边缘计算平台,边缘组件和云组件均已开源!开源边缘计算正在经历业界最具活力的发展阶段。如此多的开源平台,如此多的兼并,如此多的标准化举措!这显示出了构建更好平台的强大动力,将云计算带到边缘,以满足日益增长的需求。去年发布的 KubeEdge 现在为云原生计算带来了好消息!它提供了一个完整的基于 Kubernetes 的边缘计算解决方案,具有独...
2019-09-13 22:53:02
607
原创 Nginx Ingress Controller简单使用教程
下载yaml文件wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml修改mandatory.yaml文件`apiVersion`: apps/v1kind: Daemonsetmetadata: name: nginx-ingress-co...
2019-09-06 23:31:45
1921
原创 Helm v2简介,安装及使用体验
Helm v2简介Helm把Kubernetes资源(比如deployments、services或 ingress等) 打包到一个chart中,而chart被保存到chart仓库。通过chart仓库可用来存储和分享chart。Helm使发布可配置,支持发布应用配置的版本管理,简化了Kubernetes部署应用的版本控制、打包、发布、删除、更新等操作。Helm v2由两个主要的组件构成:Hel...
2019-08-02 23:44:01
1445
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人