自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)
  • 收藏
  • 关注

原创 kubeedge edgecore - edgehub源码分析

edgehub 源码分析edgehub是Edge上的通信接口模块,用于云边消息同步结构定义及初始化edgehub的结构定义type EdgeHub struct { context *beehiveContext.Context chClient clients.Adapter config *config.ControllerConfig re...

2019-11-15 14:01:22 711

原创 kubeedge edgecore - servicebus源码分析

service busServiceBus是一个运行在边缘的HTTP客户端,接受来自云上服务的请求,与运行在边缘端的HTTP服务器交互,提供了云上服务通过HTTP协议访问边缘端HTTP服务器的能力。代码逻辑servicebus的功能比较简单,根据接收到的消息调用本地服务的HTTP端口func (sb *servicebus) Start(c *beehiveContext.Context...

2019-11-15 14:00:33 741

原创 无需代理一键安装kubeedge

git地址

2019-11-14 17:11:50 1431

原创 KubeEdge - edgecore初始化源码分析

edgecore功能由官方文档我们知道,kubeedge核心为cloudcore和edgecore,edgecore主要分为以下几个组件Edged:在边缘管理容器化的应用程序。EdgeHub:Edge上的通信接口模块。EventBus:使用MQTT处理内部边缘通信。DeviceTwin:它是用于处理设备元数据的设备的软件镜像。MetaManager:它管理边缘节点上的元数据。启动...

2019-11-13 18:37:57 2054

原创 源码安装kubeedge

依赖安装docker注意docker的cgroup确定和集群kubelet的要一致安装kubeadm/kubectl]创建k8s集群安装golang在每个edge节点安装mosquitto以上安装可参考我的笔记有关内容如果边缘节点为centos可以只直接yum安装,如果为其他系统参见官方文档, centos执行以下命令:yum install epel* -y &a...

2019-11-12 15:55:59 1768 2

原创 KubeEdge 组件概述

介绍KubeEdge是一个开源系统,用于将本机容器化的应用程序编排功能扩展到Edge上的主机,它基于kubernetes构建,并为网络,应用程序提供基本的基础架构支持。云和边缘之间的部署和元数据同步。Kubeedge已获得Apache 2.0的许可。并且完全免费供个人或商业使用。我们欢迎贡献者!我们的目标是建立一个开放平台,以支持Edge计算,将原生容器化应用程序编排功能扩展到Edge上的...

2019-11-12 15:34:09 2382

原创 中文文档

jaeger中文文档

2019-11-08 15:13:41 247

原创 metalb - 让本地集群使用LoadBalancer成为可能

介绍Kubernetes没有为裸机集群提供网络负载平衡器的实现(svc 类型为loadbalance),Kubernetes附带的Network LB的实现都是调用各种IaaS平台(GCP,AWS,Azure等)的粘合代码。如果您未在受支持的IaaS平台(GCP,AWS,Azure等)上运行,则LoadBalancers在创建时将无限期保持pending状态metalb解决了这种问题,使得裸...

2019-11-08 10:18:04 2947 1

原创 云原生数据库vitess简介

vitess简介vitess是用于MySQL水平扩展的数据库集群系统具有以下特点可扩展性Vitess将许多重要的MySQL功能与NoSQL数据库的可伸缩性结合在一起。其内置的分片功能使您可以在不向应用程序添加分片逻辑的情况下扩展数据库。性能Vitess自动重写会损害数据库性能的查询。它还使用缓存机制来调解查询,并防止重复的查询同时到达您的数据库。可管理性Vitess自...

2019-11-06 15:16:41 5227

原创 jaeger入门

本文将讲解jaeger基本概念,基于golang的代码实现以及注入原理jaeger 概述组件概念:jaeger-clientjaeger-agent 将client发送的span发送到collectorjaeger-collector 收集数据并存储或发送到队列jaeger ingester 读取kafka队列写入存储jaeger-query 查询数据展示tracer逻辑概念:...

2019-11-05 18:30:55 4643

原创 修改prometheus实现数据库存储报警规则和收集目标

从数据库获取报警规则和服务目标组prometheus本身报警规则及服务发现策略基于文件配置很不方便,对于非K8S服务监控经常需要操作配置文件,不利于管理系统平台化建设。实现思路:将相关配置信息存储在MySQL里,加入新的逻辑,实现保留文件加载配置的同时,加载MySQL中的信息,动态生成static_config及alert_rule从而实现报警及监控目标的配置UI化.MySQL配置使用以...

2019-11-04 18:52:52 1930 1

原创 使用 elk stack监控kubernetes

启动elasticsearch+kibana为了快速启动这里直接使用dockerdocker run -d -v /etc/localtime:/etc/localtime -p 9200:9200 -p 9300:9300 --name=elasticsearch -e "discovery.type=single-node" docker.elastic.co/elasticsearch/...

2019-11-04 18:44:43 438

原创 Admission Webhook Part 2

目标本篇文章我们将参照官方的测试实例来一步步添加一个Admission Webhook#配置webhook证书生成由上节的配置我们可以看出,我们的webhook必须使用https,所以我们需要生成一个自签名的https证书,ca可以使用自定义的也可以共用apiserver的。脚本可以参照istio的证书生成脚本: https://raw.githubusercontent.com/is...

2019-10-25 11:45:28 366

原创 深入理解AdmissionWebhook 1

简介Admission webhooks 是接收准入请求http回调并且进行处理,分为两种类型: validating admission Webhook mutating admission webhook mutating admission webhook 先于validating admission Webhook被调用,可以由mutating admission ...

2019-10-25 11:39:42 1549

原创 k8s hpa中的指标来源及实现

k8s hpa中的指标类型指标类型Object类型Pods类型Resource类型指标类型在autoscaling/v2beta1/HorizontalPodAutoscaler 中包含以下几种指标源类型:ObjectPodsResourceObject类型Object类型是用于描述k8s内置对象的指标,例如ingress对象中hits-per-second指标type Obj...

2018-09-29 11:50:44 4370

翻译 基于k8s的纵向扩容介绍(VPA)

Vertical Pod Autoscaler VPA介绍安装关于向后兼容性的注意事项先决条件安装命令快速开始测试您的安装示例VPA配置故障排除VPA的组成部分删除alpha版本的已知限制相关链接原文Vertical Pod Autoscaler VPA)介绍Vertical Pod Autoscaler(VPA)使用户无需为其pods中的容器设置最新的资源request。配置后,它将根据使...

2018-09-27 16:58:56 7823

原创 如何实现自己的crd controller

本文简单的实现了一个podipcontroller 并无实际用途,仅用于学习controller的实现package mainimport ( "flag" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" "k8s.io/client-go/tools/clientcmd" "k8s.i...

2018-08-27 10:27:15 1189

原创 使用metric-server替换heapster实现基于mem/cpu的hpa

依赖k8s 1.8+安装prometheus监控使用 prometheus-operator安装prometheusgit clone https://github.com/coreos/prometheus-operatorcd prometheus-operatorkubectl apply -f ./contrib/kube-prometheus/manifests...

2018-07-31 14:02:49 881

原创 k8s调度器扩展方式

调度器介绍scheduler 是k8s master的一部分,作为插件存在于k8s生态体系。自定义调度器方式添加功能重新编译实现自己的调度器(multi-scheduler)scheduler调用扩展程序实现最终调度(Kubernetes scheduler extender)添加调度功能k8s中的调度算法介绍预选 优选实现自己的调度器(配置多个sch...

2018-04-08 21:20:25 7080 3

原创 管理pod的nat策略

关闭docker及flannel的snat策略关闭dockersnatdocker默认开启masq,可以通过 --ip-masq=false参数关闭masq关闭flannel snat策略flannel默认通过参数注入的方式开启masq:使用daemonset方式启动可以通过删除–ip-masq参数实现在系统直接部署的可以修改/usr/libexec/flannel...

2018-03-19 23:34:57 643

原创 自定义 kubectl-plugin

kubectl-pluginskubectl-plugins 是在 v1.8.0 发行版中作为 alpha 功能正式引入的。 因此,尽管插件功能的某些部分已经在以前的版本中可用,建议使用 1.8.0 或更高版本的 kubectl 版本.安装 kubectl 插件一个插件只不过是一组文件:至少一个 plugin.yaml 描述符,以及可能有一个或多个二进制文件、脚本或资产文件。 ...

2018-03-15 21:21:57 985

原创 自定义存储插件-Flexvolume vs Csi

从1.8版开始,Kubernetes Storage SIG停止接受树内卷插件,并建议所有存储提供商实施树外插件。目前有两种推荐的实现方式:容器存储接口(CSI)和Flexvolume。Flexvolume介绍lexvolume使用户能够编写自己的驱动程序并在Kubernetes中添加对卷的支持。如果–enable-controller-attach-detach启用Kubelet...

2018-03-14 22:05:25 6695

原创 通过自定义prometheus数据实现k8s hpa

核心指标管道从 Kubernetes 1.8 开始,资源使用指标(如容器 CPU 和内存使用率)通过 Metrics API 在 Kubernetes 中获取。 这些指标可以直接被用户访问(例如通过使用 kubectl top 命令),或由集群中的控制器使用(例如,Horizontal Pod Autoscale 可以使用这些指标作出决策)。Resource Metrics AP...

2018-03-14 22:03:54 6877 4

原创 使用planttml 画流程图

PlantUML 是一个画图脚本语言,使用文字就可以画出我们想要的图形官网 在线编辑 语法

2017-12-18 15:55:57 310

原创 超级账本(hyperledger)生产多节点部署

超级账本生产多节点部署

2017-11-16 19:36:13 2401

原创 helm的使用

helm作为k8s的包管理工具,让我们很方便的在k8s上安装部署软件helm实际上分为几个部分:1).helm(client)helm可以把安装chart请求发送给tiller2).tiller(server)相当于helm server,部署在集群内部,接收部署请求,调用apiserver完成部署3).repo相当于rpm包的yum源,里面存放着一系列包,可以

2017-10-14 19:33:12 7623

原创 minikube 快速搭建k8s

minikube可以很方便的搭建一个单节点的k8s集群,在开发测试中非常方便,虽然可以一键启动但是还是记录下1.下载对应的kubelet和kubectl 添加PATHwget https://storage.googleapis.com/minikube/releases/v0.22.3/minikube-darwin-amd64 && mv minikube-darwin-amd64 /

2017-10-13 22:37:40 1417 1

原创 k8s web terminal的实现

使用beego+sockjs写的实例:https://github.com/du2016/web-terminal-in-goweb terminal可以让我们更方便的访问container,执行shell命令,提高工作效率k8s本身实际上已经封装了docker的terminal api只需要很简单的操作就可以实现一个terminal,获取输入返回输出req := restc...

2017-10-13 21:56:15 10939 5

翻译 Taints and Tolerations

node affnity是一种pod选择node的资源(表述倾向或者强制约束),taint是相反的,taint和toleration协同工作从而防止pod调度到不恰当的节点名上面,一个或多个taint可以被应用到node上面,标记了node不接收那些不能容忍这些污点的pod,耐受应用于pod,允许pods调度到有污点的节点上面使用 kubectl命令给node添加污点kubectl tai

2017-09-13 16:05:23 1067

原创 惠普服务器不重启配置ILO

上线时没有配置ILO,现在需要使用,不能关机配置ILO,可以选择在线配置1.安装hponcfg-4.0.1-0.noarch.rpm kmod-hpilo-1.3-259.7.rhel6u2.x86_64.rpmhponcfg-4.0.1-0.noarch.rpm ILO配置工具kmod-hpilo-1.3-259.7.rhel6u2.x86_64.rpm ilo驱动包2查

2017-02-06 16:23:01 4640 1

原创 k8s nodeSelector&affinity

1.分配pod到node的方法通过node label selector实现约束pod运行到指定节点,有两种方法 nodeSelector 以及affinity 2.nodeSelector 是k8s早起提供的节点选择器实现1)首先为nodes打对应的labelkubectl label nodes master disktype=ssd2)创建yaml文件cat >> n

2017-01-17 18:44:58 10597

原创 k8s thirdpartresource添加

主要使用了clientset 和restclient两种接口,通过对资源的定义以及资源实例的定义、注册,实现自定义资源加入自定义thirdpartresourcepackage mainimport ( "flag" "fmt" // "encoding/json" "k8s.io/client-go/kubernetes" "k8s.io/client-go/

2017-01-14 15:49:49 1706

原创 使用client-go 进行k8s相关操作-restclient(三)

restclient 是dynamic client和clientset的基础,支持json与protobuf,可以访问所有资源,实现对自定义thirdpartresource资源的获取示例代码:package mainimport ( "flag" "k8s.io/client-go/pkg/api" "k8s.io/client-go/pkg/api/v1" "k8s.io

2017-01-14 15:05:09 6400 2

原创 使用client-go 进行k8s相关操作-dynamicclient(二)

package mainimport ( "encoding/json" "flag" "k8s.io/client-go/1.5/dynamic" "k8s.io/client-go/1.5/pkg/api/unversioned" "k8s.io/client-go/1.5/pkg/apis/extensions" "k8s.io/client-go/1.5/rest" "k

2017-01-12 19:29:41 5972

原创 使用golang生成证书

在k8s的源码里看的,记录一下package mainimport ( "bytes" cryptorand "crypto/rand" "crypto/rsa" "crypto/x509" "crypto/x509/pkix" "encoding/pem" "fmt" "math/big" "net" "time")func main() { ip := []

2017-01-11 18:50:54 4831

原创 通过反射实现map转换为struct

package mainimport ("encoding/json""fmt""reflect""strconv""strings")type Person struct {Name stringAge  int}func main() {s1 := `{"Name":"test","Age":1}`var i interfac

2017-01-11 11:20:38 2535

原创 判断服务器是否为虚拟机

https://github.com/saltstack/salt/blob/89cd519615aab3a00b865fed2119d80f8612fb07/salt/grains/core.py 参考salt源码linux使用便捷的方式:virt-whatsystemd-detect-virtdmidecodeMAC:system_profiler

2017-01-09 14:57:44 1188

原创 expect 实现与shell交互

更改libvirt密码 实现与shell交互  网上看了些expect的用法都不行,下面这种用法一般交互都没问题spawn saslpasswd2 -a libvirt testexpect {       "Password*" {                send "xxx\n";                exp_continue         } 

2017-01-09 13:31:03 708

原创 elastic5 searchguard实现权限控制日志收集

公司新上的项目要做日志检索 机器不太够 弄了一台给各个项目组用,为了各个项目组分开查看各自的日志,就重新装了一下,之前用的es2.4,刚好elastic5出来也有一段时间了,就想着搞一下注:用的elastic 5.1.11.安装elk请自行百度,或者看我之前写的一篇简单的文章2.安装searchguard5.0以后不需要安装search-guard-ssl plugin

2017-01-05 23:41:24 2359

原创 kubernetes networkpolicy

1.首先创建namespace隔离策略为DefaultDenykind: NamespaceapiVersion: v1metadata: name: testingnp annotations: net.beta.kubernetes.io/network-policy: | { "ingress": { "isolatio

2016-12-26 11:42:52 1518

空空如也

空空如也

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

TA关注的人

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