自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 资源 (2)
  • 收藏
  • 关注

原创 kubevpn 教程

使用 kubevpn ,快速在本地开发云原生项目。

2024-09-15 15:22:19 1078

原创 Pod 中运行 gvisor tcp 三次握手失败问题分析

前言最近在用 gvisor 这个优秀的 project 重构我的项目,在使用过程中出现了一个诡异的问题,发现 gvisor 之后,tcp 的握手失败了。很奇怪,这里简单追踪记录一下环境Pod 基础镜像:ubuntu:latestGvisor 版本:gvisor.dev/gvisor v0.0.0-20220208035940-56a131734b85复现步骤使用 tun2socks 绑定在 tun 上,tun2socks -device tun://utun9 -proxy socks:

2022-03-27 13:40:32 4183

原创 Kubernetes 云原生开发工具

前言好久没有写文章了,主要是好像没啥进步,这里就来简单介绍一下我长期在做的一个项目吧,KubeVPN,一个可以连通 K8s 集群网络和本地网络的一个小工具初衷一直在想如果上了 K8s 的话,如何才能快速进行业务开发呢。其实这里还有一个开源项目 nocalhost,这个项目是公司项目,成功的进入了 CNCF sandbox ,这里尝试探索了在云端开发和在本地开发两种模式。下面就来简单来说一说这两类模式。云端开发将远端容器的启动命令修改为 tail -f /dev/null,任意一个挂起且不退出的命令

2022-03-09 18:01:13 202

原创 修复在 k8s runtime 为 containerd 时,端口转发不稳定问题

修复在 k8s runtime 为 containerd 时,端口转发不稳定问题抛出问题我们在开发nocalhost项目,此项目中有个功能叫做端口转发,内部使用了 k8s 的端口转发,在上面主动加了 heartbeat 心跳检查。 有用户反馈使用了 containerd 之后,端口转发不稳定,总是失败。复现步骤使用 Containerd 作为 k8s runtime, 并部署一个 PodPod 中监听业务端口开发端口转发请求正常,得到正确结果,愈合预期Pod 中关闭业务监听的端口请求失败

2021-10-02 09:57:58 2050

原创 k8s clientset 出现 Throttling request took 限流的解决方法

前言又是一个月的忙忙碌碌,但是没啥很大的收获。但是在忙碌过程中,还是出现了一些小问题,特此记录一下。由于我们是做nocalhost开发的,也就是开发一个k8s开发工具, 所以不断的和k8s打交道,然后有个需求是获取资源树结构,也就是- cluster - namespace - application - workloads - pod - deployment - statefulset - replicaset

2021-08-28 10:33:21 4791

原创 bridge to kubernetes使用以及和Telepresence的区别

Bridge to kubernetes特点下载volume,将配置的volume会全量下载在本地,代码中没有看到下载volume内容的信息配置链接version: 0.1env: - name: ALLOW_LIST_PATH value: $(volumeMounts:testvolume)这里会将volume名为testvolume的卷下载到本地,放在临时目录下,然后ALLOW_LIST_PATH这个value的值,就是零时目录的路径,可以在代码中,使用ioutil.Rea

2021-08-03 08:30:18 2068

原创 k8s pod terminal 断线重连

前言很久没有写博客了,貌似最近没有学到什么新知识,都是运用已知的知识,解决各种问题和功能。没办法了,那就把最近做的一个简简单单的功能,拿出来说说吧,功能很简单,需要支持 k8s pod terminal 断开重连。分析我们知道,使用命令kubectl exec -it pods/PODNAME -- bash [--kubeconfig /PATH/TO/KUBECONFIG] [--namespace NAMESPACE]也就是exec可以执行命令的方式获取到terminal,这样就可以在本地

2021-07-24 20:19:04 1440

原创 使用Github Action搭建k8s测试环境

前言好久没有写博客了,因为测试的还没弄好,所以没啥好写的,不过现在第一版测试已经做好了,所以这里简单分享一下使用Github Action做发布测试的经验简介项目托管在Github上,已经做了构建镜像的操作,也就是使用Github Action workflow做了构建镜像的操作,但是测试还没做。而我最近刚转到这个项目组,所以就开始做简单的测试工作啦。项目的主要语言是Go,主要是开发一个云原生工具,协助开发者更快的进行代码反馈,举个栗子????,比如你的项目部署在远端kubernetes clu

2021-04-18 20:39:17 1103

原创 static final字段使用ParallelStream初始化出现死锁问题

前言这个周在使用Java做需求的时候,有遇到一个奇怪的问题,数据库写入会卡住,使用的技术栈是SprintBoot+mybatis,稍微一点儿不同的是我引入了多数据源支持,搞不清楚是为什么写入卡住。分析伪代码:... static class Solution { private static final Map<String, String> STRUCT_MAP = Arrays.asList( "a", "b", "c"

2021-03-22 23:03:25 681

原创 k8s admission webhook初探

前言之前一篇博客讨论的问题,就是如何杀掉container的主进程,并且让container不重启,最后有讲到说也许可以使用admission webhook,动态替换容器,做到给一个空容器,也就是deployment或者是statufulset的image标签,换成一个空镜像启动,然后在这里container中就可以java -jar启动自己的容器, 关闭自己的容器,完全当成是一个小型Linux来使用了,方便快速验证功能,不用每次都需要跑CI/CD。所以今天就来看看方案可行性,并且动手实践一把。实践

2021-03-20 23:25:16 3115 2

原创 如何杀掉k8s中的一个container中的pid=1的进程,同时使此container活着

前言这个标题是不是有点儿拗口,什么叫做杀掉一个container中pid=1的进程,并且使container还活着尼?其实想要实现的效果类似于进入这个container中,kill掉占用了一个端口的进程,手动启动一个进程,使用这个空闲的端口。但问题是一般来说container的这个进程一般都是pid=1的进程,杀掉pid=1的进程,系统就会立即重启,无法执行自己的操作了。举个栗子????比如我的pod里边启动了一个container容器,pid=1的占用了80端口,而我现在也想要使用这个80端口,于是

2021-03-07 21:24:14 3338

原创 prometheus PromSQL使用小技巧

前言这个礼拜一面在找那个CrashLoopBackoff的原因,另一个是在尝试修复es报错Data too large的问题,还有一个任务就是解析告警规则了,因为新需求加了很多类型的告警,支持的维度也更多了,我们的告警使用的Prometheus + Alertmanager,之前的几篇博客也提到过,这里主要想记录一下我在解析规则这里,遇到的一些问题以及解法。抛出问题Counter类型计算过去一个时间段内的增量举例问题:计算revision_request_count过去五分钟的请求次数?问题分析:

2021-02-27 17:22:35 3374

原创 记录一次尝试修复elasticsearch Data too large问题

前言这周三,一边调试api crashloopbackoff的问题,一边准备写promSQL语句,然后开发小伙伴说环境3的es又挂了,表现就是查询数据报错:circuit_breaking_exception[[parent] Data too large, data for [<transport_request>] would be [1318476937/1.2gb], which is larger than the limit of [1237372108/1.1gb], real

2021-02-27 12:38:36 13265 2

原创 记录一次修复k8s pod长时间处于CrashLoopBackOff状态问题

前言这周一,新年后上班第一个完整周,年前一波需求已经评审过了,方案也已经制定好,所以年后就开始了如火如荼的写bug阶段,正在写go bug,突然企业微信,tapd弹出一条消息,提了一个缺陷单,处理人是我,顿时预感不妙,果然5秒后,测试同学那微笑的头像弹出来,嗯,完蛋,bug来了。测试同学告诉我,有一个node组件,使用chao注入故障,频繁杀掉主线程,大概会在第七轮杀掉主进程,pod会长时间处于crashloopbackoff阶段,很久才恢复正常。当时很疑惑,为什么第七轮会长时间处于crashloopba

2021-02-26 23:51:19 8807 1

原创 记录一次knative中按照header tag 切分流量不生效的问题

前言它来了它来了,它带着需求过来了,终于新需求方案评审来了,在这之前产品拉着我们看了许多需求,都是公有云对齐的需求,我们这里需要跟进的。然后由于在方案评审之前的做好方案,因此这里简单记录一下一个需求是需要按照用户配置的kv对来进行不同revision之前的流量切分。需求分析由于我们的云原生是基于knative做的,然后之前也有看过一些书介绍过knative,因此我记得kantive是原生支持header tag 流量切分的,链接,所以这里需要做实验验证一下,这是其一,其二是需求是一个revison可

2021-02-06 19:11:18 384

原创 动手实现一个定时器

前言很久没有写博客了,那是因为的确没有什么有意思的新知识可以拿来写写,感觉好像有点儿变懒了,倦怠了,没有之前那么有劲儿了,哎,可恶啊,这可是技术博客来着,你在这里抒发什么心情尼。好吧,其实也并不是一无所获,比如最近自己写着玩的任务定时器,就可以拿来水一篇博客的啊。简介事出有因,因为之前同事说他那边自己实现了一个时间轮,用于执行定时任务来着,就是kafka里边的timewheel,不过原版的时间轮是用来执行延时任务的(应该是一个类似于java.util.concurrent.DelayQueue的玩意儿

2021-01-08 21:18:15 396

原创 istio基本概念

前言刚才看了一个istio的讲解视频,还热乎着尼,所以特地记录一下笔记,捎带推荐一个up主。ConceptService mesh is a patternIstio is a implementIstio featuresService DiscoverySecurityMetrics & TracingIstio functionTraffic routingTraffic splitdifferent service version can have differ

2021-01-02 23:24:57 278

原创 kubernetes原生ci/cd工具tekton版本升级至v0.18.1

前言最近没啥好写的,一直都在弄hpa的问题,也就是解决hpa没生效的问题,以及最优minReplica最小基数的问题。也已经划水了两篇博客了,所以今天就来简单记录一下之前做过的一个小任务,也就是将项目中用到的tekton版本升级至最新版的过程吧。分析项目中用到了tekton这个kubernetes原生的ci/cd工具,虽然公司就是做ci/cd的,但是还用了Google的ci/cd,讲起来的确是有点儿ashamed,但因为项目组的原因,蚍蜉撼树是行不通的,那就用咯。话说写博客的时候,就有点儿想法了,为什

2020-12-20 19:11:37 441

原创 k8s中hpa使用问题记录

前言之前说了,hpa没有生效的问题,现在来说说hpa使用的问题。问题那么是个什么问题尼?问题就是hpa的百分比设置的太大了,例如:apiVersion: autoscaling/v1kind: HorizontalPodAutoscalermetadata: name: istio-ingressgateway namespace: istio-systemspec: maxReplicas: 5 minReplicas: 1 scaleTargetRef: api

2020-12-15 08:50:10 1509

原创 解决kubernetes中hpa没生效问题

前言今天我正在专心致志的敲go代码的bug,突然同事问到我们现在的服务数量太多了,同一个服务的实例pod数可能达到了十几个,能不能放在一个pod中,跑多个container的形式运行。当时我想了一下,就回答了:放在一个pod里边,这些container管理起来可能比较复杂一些,pod挂掉,所有的container都卒了,粒度太大。然后正准备继续写bug的时候,突然想到同事这么问的目的可能是性能优化,自然而然的就想到hpa了,联想到istio和knative的hpa问题还没解决,卒,好吧,来解决问题吧。问

2020-12-09 22:34:50 4985

原创 在mac主机上访问docker中运行的kubernetnes的pod容器(宿主机访问容器pod)

# 前

2020-12-03 18:50:22 1268

原创 kubernetes原生CI/CD工具Tekton

前言最近都是在做云原生相关的业务,所以对kubernetes自带的ci/cd工具tekton有一定的了解,所以和大家分享一下。介绍简单介绍一下tekton中的几个概念PipelineResource定义资源,例如输入输出参数等。Task/ClusterTask定义任务,也就是我们要执行的某一个或多个步骤构成的任务,任务模版。PipelineRun/TaskRun执行任务,也就是调用任务模版,并且传入PipelineResource资源,执行结束后,状态变为completed。演示这里展

2020-12-02 23:47:56 540 2

原创 k8s搭建私有docker registry仓库

前言因为要测试knative,所以需要使用到docker私有仓库,所以需要自建一个docker registry,主要步骤都是遵循docker hub官方文档来的,只不过我这里使用的是k8s而不是docker compose。存储由于私有仓库需要用到存储,因此使用local storage的方式存储数据。定义namespace,如下:apiVersion: v1kind: Namespacemetadata: name: docker-registry需要自定义storageclass

2020-11-30 21:37:11 4728

原创 knative revison创建pod报错x509问题记录

前言今天遇到一个问题,那就是knative创建的revision报错,x509,不信任的证书,但是在主机上,docker pull是没有问题的。现状用户上传含Dockerfile的源码 -->上传到到三方存储 -->使用tekton 添加一步kaniko构建镜像–>kaniko docker push到私有registry仓库 -->使用knative的revision,创建不同的版本(作用类似于deployment) -->revision创建pod由于使用

2020-11-16 21:13:05 604

原创 使用webshell链接kubernetes pods

websocket链接kubernetes pods前言分析实践注意总结后记前言这个周一fetch到一个任务,前端需要使用webshell的方式,链接到正在使用中的kubernetes pods,实现这样的效果kubectl exec -it podName -c containerName -n namespaceName [bash,sh]分析ok,任务来了,怎么实现尼?然后就在Google了一下websocket kubernetes pods关键字,原来kubernetes早就想到可能会

2020-11-15 16:42:21 1987

原创 云原生之云函数云应用实现

前言最近在做云原生相关的业务,简单梳理了一下项目中的实现,所以特地记录一下用到的技术以及知识点。云函数/云应用云函数/云应用都是使用knative实现的,配合istio进行流量控制,具体体现出来就是这样的伪代码:import(metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "knative.dev/serving/pkg/apis/autoscaling/v1alpha1"servingv1 "knative.dev/serving/pkg/apis

2020-11-10 22:53:39 719

原创 记一次使用ycsb工具对mongodb进行性能测试过程

前言最近在做性能测试,目的是要优化mongodb的性能,要求5w qps,mongodb已经做了分片,三台mongo shard存储,三台mongos 路由,三台configserver,用于记录路由和存储的对应关系。YCSB简介ycsb是一款性能测试工具,用Java写的,并且什么都可以压,像是mongodb,redis,mysql,hbase,等等,感觉还是很厉害的。并且是有apache2.0的认证的,官网在github上,有讲如何安装和使用,个人建议放到pod中执行,比较方便。其中mongodb

2020-10-27 21:22:26 1496 3

原创 SpringBoot中优雅统一回包格式

前言之前有写过博客简单过了一下,如果修改回包格式的。现在又找到一种新的方法,并且这样的方式好像更加合理。所以特地记录一下。需求其实需求很简单,就是对回包格式经行统一的封装。比如:public class Response { private int code; private String requestId; private T data;}而我们的业务,一般都是回复Modle对象,比如:@RestControllerpublic class HelloContr

2020-10-25 18:48:46 397

原创 在Spring中实现使用mybatis执行原生字符串SQL语句功能

前言这其实很早之前就应该写一写的,也就是在项目重构过程中,需要将原来的基于Spring JdbcTemplate执行拼接语句的sql写法,移植到mybatis上去。分析其实需要已经很明确了,之前使用的是abstract Dao的方式,在abstract dao中,持有一个JdbcTemplate,...

2020-10-18 20:48:57 2158

原创 kubernetes中Prometheus使用本地存储储存数据

1,前言入职大概有四个月了,中间一直在做监控告警相关的任务,使用到的三方组件是,Prometheus和alertmanager,在整个使用过程中,对Prometheus和kubernetes都有了一定了解,今天打算说说在k8s集群中使用local storage存储数据的问题。2,抛出问题。在k8s集群中,pod是可以在各个node之间调度的,当某个node的资源不够用的时候,pod就有可能被调度到别的node上去。那么问题来了,如果使用本地存储的Prometheus被调度到别的node上,使用新节点

2020-10-11 22:15:21 1194

原创 解决alertmanager重复发送消息的问题

1,问题在前一篇博客中有讲到说使用alertmanager,即便设置了repeat_interval,但还是收到了两条告警,且间隔时间是for标签的时间alertmanager片段示例:routes: - receiver: message match: xxxx:xxxx repeat_interval: 3600s continue: truereceivers:- name: message webhook_configs: - send_re

2020-10-11 13:10:56 10593 7

原创 解决上次遗留的问题-Prometheus

0,前言在上篇博客中有提到的问题,统计一段时间内,按照一定的step切分,然后每一个小段汇聚(avg, max, min, sum…),之前使用的是_over_time(),每一个小段一次请求,感觉这样有问题,所以先记录了下。1,方案使用query_range配合_over_time(),query_range使用start、end、step参数,将时间序列上切分成一段段,然后每一段,使用_over_time()统计方法进行聚合。2,分析2.1 之前失败的原因之前是知道有query和query_

2020-10-06 19:12:25 465

原创 kubernetes client for java使用踩坑记录(io.kubernetes.client.ApiException: Forbidden)

0,前言之前说的,使用k8s client 在pod内部操作外部k8s集群,curd configmap,但是在这里遇到一个问题,就是k8s client需要提供/root/.kube/config文件作为参数,如何提供这个配置文件呢?1,想到的解决方案1,代码写死。缺点:(1)当node为master节点时,master:127.0.0.1:6443,需要把这个本地地址改为ip v4地址.(2)如果node挂掉,pod需要调度到别的node上时,提供的master地址需要随之变化。2,dock

2020-09-21 23:25:08 9952 10

原创 Kubernetes和prometheus以及alert manager使用总结

Kubernetes和prometheus已经alert manager使用总结0,前言1,背景:2,方案:1,可行性分析1,configmap可以支持挂在到pod内,并且删除configmap的时候,并不会将挂载到pod内的文件删除,因此可以在规则变化后,删除configmap,并创建一个新的,这时会将新的文件挂载到pod内。2,在pod内支持使用kubernetes client,这里可以直接使用kubernetes提供的官方client,在容器内操作容器外的集群。3,使用kubernetes clie

2020-09-21 22:10:11 661

原创 kubernetes v1.18.8集群搭建

1,前言,最近在工作中有用到k8s,看了一点儿关于节点调度的知识,就想着自己做点儿小实验.所以要准备实验环境.所以就在自己的笔记本上搭建了一个k8s的集群.2,准备工作:我这里只写了命令:

2020-09-05 12:44:08 1206 1

原创 Prometheus使用过程中遇到的问题

1,前言最近在做监控功能, 需要统计cdn用量,存储,数据库请求次数的需求,使用的方案是Prometheus push方法。有个功能获取一段时间内,按照指定step,将这个step中的数据汇聚(sum,min,max,avg,count),然后返回出去。目前的做法是<aggregation>_over_time(),然后指定时间段[60s]再指定时间点time,这个可以用来计算一小个step的值,但是从start到end有许多个小段,重复计算小段,然后再返回数据。很low,但是没有更好的办法

2020-08-01 17:38:45 3422

原创 docker和kubernetes简单使用手记

1,前言:最经很多加班,所以没时间写博客,说的我好像有时间就会写博客一样~~,做下知识输出吧,关于docker和kubernetes的。2,docker:关于docker,我有一篇简单的博文,大家可以参考一下我之前写的,虽然恨水,但是入门就行。今天主要是介绍一下kubernetes的,简称k8s,这个是google出的一个服务治理,编排的工具,可以轻松实现springboot中的服务治理,注册发现等逻辑。3,kebernetes:下面介绍一下k8s和docker的关系,他俩的关系就是一个

2020-06-27 19:13:14 529

原创 ZGC占位

reference:https://wiki.openjdk.java.net/display/zgc/Main#Main-EnablingZGChttps://docs.oracle.com/en/java/javase/11/gctuning/z-garbage-collector1.html#GUID-A5A42691-095E-47BA-B6DC-FB4E5FAA43D0有时间再看,先占个位,大家有兴趣的可以直接去官网看。...

2020-05-24 11:41:03 221

翻译 G1垃圾回收器的补充1

话说我这是直接从Oracle拷贝下来的文档,希望不会有版权问题。(侵删)Oracle官方链接:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/g1_gc_tuning.html 10 Garbage-First Garbage Collector Tuning This section describes how to adapt and tune the Garbage-First garbage c

2020-05-24 11:32:58 737

翻译 G1垃圾回收器的补充

话说我这是直接从Oracle拷贝下来的文档,希望不会有版权问题。(侵删)Oracle官方链接:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/g1_gc.html#garbage_first_garbage_collection9 Garbage-First Garbage Collector The Garbage-First (G1) garbage collector is a server-st..

2020-05-24 10:43:20 465

convex_hull.dwg

CAD2016画的凸包构造示意图,比较粗糙,建议和博文一起观看。(找不到如何设置为免费的按钮,可恶啊)

2019-08-13

mtk-tools.zip

修改boot的必备工具,可以在网上找找教程,高手们都明白的

2014-02-23

空空如也

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

TA关注的人

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