自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 云原生工作流引擎 - argo-workflow

argo argo工作流是什么 Argo Workflows是一个开源的容器本机工作流引擎,用于在Kubernetes上协调并行作业。 Argo Workflows通过Kubernetes CRD(自定义资源定义)实现。 定义工作流,其中工作流中的每个步骤都是一个容器。 将多步骤工作流建模为一系...

2020-05-28 14:24:57 22 0

原创 Argo CD-基于Kubernetes的声明式持续交付工具

什么是Argo CD? Argo CD是用于Kubernetes的声明性GitOps连续交付工具。 为什么选择Argo CD? 应用程序定义,配置和环境应为声明性的,并受版本控制。应用程序部署和生命周期管理应该是自动化的,可审核的且易于理解的。 argo cd 架构 Argo CD被实现为kub...

2020-05-28 14:23:50 20 0

原创 基于envoy的分布式网关-contour

contour Contour是开源的Kubernetes入口控制器, 为Envoy边缘和服务代理提供控制平面. Contour支持动态配置更新和多团队入口委托,同时保持轻量级配置文件。 特点 内置envoy Contour是基于Envoy,高性能L7代理和负载均衡器的控制平面 灵活的架构 ...

2020-05-28 14:21:49 13 0

原创 容器中的ulimit

背景 使用的是公有云,最近要对k8s版本进行升级,在升级之后发发现从我们的web terminal 进入到容器, 拥有sudo权限的用户无法进行sudo命令,即使使用root通过docker exec 进入到容器,依旧无法sudo sudo: pam_open_session: Permissio...

2020-05-28 14:20:32 13 0

原创 使用argo构建云原生workflow

argo argo工作流是什么 Argo Workflows是一个开源的容器本机工作流引擎,用于在Kubernetes上协调并行作业。 Argo Workflows通过Kubernetes CRD(自定义资源定义)实现。 定义工作流,其中工作流中的每个步骤都是一个容器。 将多步骤工作流建模为一系...

2020-05-26 18:02:01 19 0

原创 使用lyft/ratelimit实现envoy全局限速

envoy rate limit介绍 envoy中有以下两种限速方式: 全局限速 Envoy的全局请求限速服务器,检查是否接受。 全局意味着所有代理都将使用一个计数器作为评估请求的基础。 每个代理都请求一个上游速率限制服务(在此示例中为Lyfts),该服务将在envoy外部运行以决定请求。 ...

2020-01-14 18:38:23 363 0

原创 使用scheduler-framework扩展原生k8s调度器

scheduler-framework 本文将讲述如何使用scheduler-framework扩展原生调度器 目的: 在prefilter阶段检查pod是否添加有dely注释,如果未达到对应时间则不调度 分析需要实现的method 注册插件 WithPlugin返回一个注册选项,由此我们可以看出...

2019-12-26 18:59:19 315 3

原创 k8s 使用code-generator生成crd controller

code-generator 用于生成k8s风格的api代码 生成器 client-gen conversion-gen deepcopy-gen defaulter-gen go-to-protobuf import-boss informer-gen lister-gen openapi-g...

2019-12-25 10:27:42 360 0

原创 K8Dash - 强大的Kubernetes Dashboard

K8Dash - Kubernetes Dashboard K8Dash是管理Kubernetes集群的最简单方法。为什么? 全面的群集管理:命名空间,节点,窗格,副本集,部署,存储,RBAC等 快速且始终如一的即时更新:无需刷新页面即可查看最新信息 一目了然地快速可视化集群运行状况:实时图表可...

2019-12-25 10:27:07 267 0

原创 k8s scheduling-framework介绍

scheduling-framework scheduling framework 是Kubernetes Scheduler的一种新的可插入架构,可简化调度程序的自定义, 它向现有的调度程序中添加了一组新的pluginAPI。插件被编译到调度程序中。 这些API允许大多数调度功能实现为插件,同时...

2019-12-25 10:26:32 189 0

翻译 K8S deployment可视化故障排查指南

这是一个示意图,可帮助您调试Kubernetes中的deployemnt, 当您希望在Kubernetes中部署应用程序时,通常定义三个组件: 一个deployment - 这是创建名为Pods的应用程序副本的秘诀 一个service - 内部负载平衡器路由流量到pod 一个ingr...

2019-12-23 19:04:17 35 0

原创 golang+shell快速实现docker运行时

手动挂载镜像 导出镜像为tar包 docker save -o busybox.tar busybox 解压镜像 tar xf busybox.tar 查看文件 ls 020584afccce44678ec82676db80f68d50ea5c766b6e9d9601f7b5fc...

2019-12-05 18:21:15 30 0

原创 critical pod浅谈

除了在主机上运行的Kubernetes核心组件(如api-server, scheduler, controller-manager )外, 还有许多附加组件,由于各种原因,这些附加组件必须在常规群集节点 (而不是Kubernetes master)上运行。其中一些附加组件对于功能齐全的群集至关重...

2019-12-04 17:18:01 58 0

原创 使用rudr构建云原生应用

介绍 OAM是构建云原生应用程序的规范 专注于分离开发和运营需求,Open Application Model将模块化, 可扩展和可移植的设计引入到Kubernetes等平台上,以构建和交付应用程序。 rudr是开放应用模型规范(oam)的Kubernetes实现,允许用户轻松地在任何Kubern...

2019-12-03 18:55:46 136 0

原创 cgroup v2介绍及测试

介绍 cgroup是Linux内核允许将流程组织为分层的功能,然后可以限制其使用各种类型资源的组 并进行监控。内核的cgroup接口通过伪文件系统,称为cgroupfs。分组在核心cgroup内核代码, 而资源跟踪和限制是在一组每个资源类型的子系统(内存,CPU,等等)。 术语 cgroup是绑定...

2019-12-03 18:53:50 297 0

翻译 KEDA - 基于Kubernetes事件驱动的自动缩放

事件驱动的计算并不是什么新生事务。数据库世界中的人们使用数据库触发器已有多年了。这个概念很简单: 每当您添加,更改或删除数据时,都会触发一个事件以执行各种功能。新的事件是这些类型的事件和触发器在其他领域的应用程序中激增,例如自动扩展,自动修复,容量规划等。 事件驱动架构的核心是对系统上的各种事件做...

2019-11-26 18:56:42 89 0

原创 kubeedge edgecore - EventBus源码分析

EventBus EventBus 是一个MQTT客户端 初始化 在初始化eventbus时获取mqtt模式 external/internal 启动 根据配置初始化Mqttclient,创建Internal Mqtt client或者external Mqtt client,设置qs,retai...

2019-11-15 17:17:28 76 0

原创 kubeedge edgecore - edgehub源码分析

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

2019-11-15 14:01:22 118 0

原创 kubeedge edgecore - servicebus源码分析

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

2019-11-15 14:00:33 91 0

原创 无需代理一键安装kubeedge

git地址

2019-11-14 17:11:50 142 0

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

edgecore功能 由官方文档我们知道,kubeedge核心为cloudcore和edgecore,edgecore主要分为以下几个组件 Edged:在边缘管理容器化的应用程序。 EdgeHub:Edge上的通信接口模块。 EventBus:使用MQTT处理内部边缘通信。 DeviceTwin...

2019-11-13 18:37:57 217 0

原创 源码安装kubeedge

依赖 安装docker 注意docker的cgroup确定和集群kubelet的要一致 安装kubeadm/kubectl] 创建k8s集群 安装golang 在每个edge节点安装mosquitto 以上安装可参考我的笔记有关内容 如果边缘节点为centos可以只直接yum安装,如...

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

原创 KubeEdge 组件概述

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

2019-11-12 15:34:09 480 0

原创 中文文档

jaeger中文文档

2019-11-08 15:13:41 46 0

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

介绍 Kubernetes没有为裸机集群提供网络负载平衡器的实现(svc 类型为loadbalance),Kubernetes附带的Network LB的实现都是调用各种IaaS平台(GCP,AWS,Azure等)的粘合代码。如果您未在受支持的IaaS平台(GCP,AWS,Azure等)上运行, ...

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

原创 云原生数据库vitess简介

vitess 简介 vitess是用于MySQL水平扩展的数据库集群系统 具有以下特点 可扩展性 Vitess将许多重要的MySQL功能与NoSQL数据库的可伸缩性结合在一起。其内置的分片功能使您可以在不向应用程序添加分片逻辑的情况下扩展数据库。 性能 Vitess自动重写会损害数据库性能...

2019-11-06 15:16:41 2200 0

原创 jaeger入门

本文将讲解jaeger基本概念,基于golang的代码实现以及注入原理 jaeger 概述 组件概念: jaeger-client jaeger-agent 将client发送的span发送到collector jaeger-collector 收集数据并存储或发送到队列 jaeger inge...

2019-11-05 18:30:55 2184 0

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

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

2019-11-04 18:52:52 415 0

原创 使用 elk stack监控kubernetes

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

2019-11-04 18:44:43 75 0

原创 Admission Webhook Part 2

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

2019-10-25 11:45:28 59 0

原创 深入理解AdmissionWebhook 1

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

2019-10-25 11:39:42 297 0

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

k8s hpa中的指标类型指标类型Object类型Pods类型Resource类型 指标类型 在autoscaling/v2beta1/HorizontalPodAutoscaler 中包含以下几种指标源类型: Object Pods Resource Object类型 Object类型是用于...

2018-09-29 11:50:44 1881 0

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

Vertical Pod Autoscaler VPA介绍安装关于向后兼容性的注意事项先决条件安装命令快速开始测试您的安装示例VPA配置故障排除VPA的组成部分删除alpha版本的已知限制相关链接原文 Vertical Pod Autoscaler VPA) 介绍 Vertical Pod Aut...

2018-09-27 16:58:56 3560 0

原创 如何实现自己的crd controller

本文简单的实现了一个podipcontroller 并无实际用途,仅用于学习controller的实现 package main import ( "flag" "k8s.io/client-go/kubernetes" &q...

2018-08-27 10:27:15 519 0

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

依赖 k8s 1.8+ 安装prometheus监控 使用 prometheus-operator安装prometheus git clone https://github.com/coreos/prometheus-operator cd prometheus-operator k...

2018-07-31 14:02:49 469 0

原创 k8s调度器扩展方式

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

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

原创 管理pod的nat策略

关闭docker及flannel的snat策略 关闭dockersnat docker默认开启masq,可以通过 --ip-masq=false参数关闭masq 关闭flannel snat策略 flannel默认通过参数注入的方式开启masq: 使用daemonset方式启动...

2018-03-19 23:34:57 263 0

原创 自定义 kubectl-plugin

kubectl-plugins kubectl-plugins 是在 v1.8.0 发行版中作为 alpha 功能正式引入的。 因此,尽管插件功能的某些部分已经在以前的版本中可用,建议使用 1.8.0 或更高版本的 kubectl 版本. 安装 kubectl 插件 一个插件只不过是...

2018-03-15 21:21:57 503 0

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

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

2018-03-14 22:05:25 3892 0

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

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

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

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