- 博客(69)
- 收藏
- 关注
原创 prometheus通过blackbox-exporter监控web站点证书
prometheus通过blackbox-exporter监控线上web站点
2023-09-04 22:18:55 1525
原创 编译mysql8.0.33遇见错误libstdc++.so.6: version CXXABI_1.3.9 not found
编译mysql8.0.33是,在Built target icui18n环节出现libstdc++.so.6: version CXXABI_1.3.9 not found
2023-07-13 00:47:36 654
原创 promethues metric_relabel_configs用途和源码
prometheus metric_relabel_configs的使用场景和源码分析
2022-06-12 02:23:55 428
原创 docker registry提示Layer already exists但blob数据不存在
docker registry的GC行为导致了数据的不一致
2022-05-22 15:19:28 4278
原创 go text/template在渲染时不转义html特殊字符
解决方案:复写内置的解析方法,它的key是"html"。tmpl, err = tmpl.New("").Funcs(template.FuncMap{ "html": func(s string) string { return s },}.Parse("example.tmpl")var buf bytes.Buffertmpl.Execute(&buf, data)result := buf.String()...
2021-12-01 20:03:03 1439
原创 kubelet liveness probe源码简析
1 概述:1.1 环境版本信息如下:a、操作系统: centos 7.6,amd64b、kubernetes版本:v1.15.4c、服务器docker版本:v18.09.22 liveness探针功能:存活性探针用于探测目标容器是否正常运行,手段有http get请求、tcp请求以及exec命令。探测失败,则kubelet会调用停止容器的API(docker stop)来结束目标容器。3 源码简析:探针的实现是定时器,定时器会定期执行预先设置好的探测动作,探测结果存放在kubelet的
2021-11-21 15:18:12 1255
原创 调试kubernetes dashboard v2.3.1
1 概述1.1 环境软件版本信息如下:a、操作系统: centos 7.6,amd64b、kubernetes dashboard版本: v2.3.1c、kubernetes版本: v1.15.4d、服务器docker版本:v18.09.2e、nodejs版本: v14.16.1f、npm版本:6.14.12g、go版本: 1.16.62 安装依赖2.1 安装go环境略,请参考百度。2.2 安装docker和kubernetes环境略,请参考百度。2.3 安装node
2021-10-25 23:47:41 466
原创 [ docker-ce源码分析系列 ]docker exec残留sh进程的原因
1 概述:1.1 环境版本信息如下:a、操作系统: centos 7.6,amd64b、服务器docker版本:v18.09.2c、docker的存储驱动: overlay22 现象:执行 [ docker exec -it 容器ID sh ]命令,用户可在容器中执行shell指令进行各种操作,此时用户直接kill掉docker exec命令,或者直接关闭xshell,则该sh进程依然残留在容器中,这种sh进程会消耗虚拟终端的数量,本质上是消耗文件描述符。如果用户退出时不是通过执行exit指
2021-10-10 22:47:02 660
原创 [ docker-ce源码分析系列 ]docker build源码简析
1 概述:1.1 环境版本信息如下:a、操作系统: centos 7.6,amd64b、服务器docker版本:v18.09.2c、docker的存储驱动: overlay22 源码简析:用户执行docker build命令,本篇文章简要分析docker daemon构建镜像的过程。2.1 服务端注册路由initRoutes()r.postBuild就是处理docker build请求的方法。func (r *buildRouter) initRoutes() { r.routes
2021-09-20 15:53:41 648
原创 buildkit对接私有仓库
1 概述:1.1 buildkit是什么BuildKit(https://github.com/moby/buildkit)是Docker官方社区推出的下一代镜像构建工具(独立运行于Docker),使用它可以更加快速、有效、安全地构建容器镜像。Docker v18.06版本开始集成该组件。BuildKit可用于多种导出格式(例如OCI)以及前端支持(Dockerfile),可以非root用户运行,并提供高效缓存、并行构建等功能。BuildKit支持的容器运行时包括containerd和runc。bui
2021-08-03 23:11:25 3057
原创 离线安装k3s v1.21.1 和单进程原理
1 概述:1.1 k3s是什么k3s是经CNCF一致性认证的Kubernetes发行版,专为物联网及边缘计算设计。K3s 有以下增强功能:打包为单个二进制文件。使用基于sqlite3的轻量级存储后端作为默认存储机制(v1.19开始使用内置etcd)。同时支持使用 etcd3、MySQL 和 PostgreSQL 作为存储机制。封装在简单的启动程序中,通过该启动程序处理很多复杂的 TLS 和选项。默认情况下是安全的,对轻量级环境有合理的默认值。添加了简单但功能强大的batteries-inc
2021-06-18 16:34:38 647
原创 nginx ingress按照http header进行路由
1 概述:1.1 环境版本信息如下:a、操作系统:centos 7.6b、kubernetes版本:v1.15.0c、ingress nginx版本:0.47.01.2 nginx按照http header转发流量nginx的配置文件nginx.confg中,可使用if语句块来转发流量,表达式包含http header的判断,执行语句是proxy_pass指令,格式类似:if ($http_region = "sz") { proxy_pass http://echo-sz.defaul
2021-06-10 02:26:45 4337
原创 [ docker-ce源码分析系列 ]创建(create)容器简析
1 概述:1.1 环境版本信息如下:a、操作系统: centos 7.6,amd64b、服务器docker版本:v18.09.22 源码简析:用户docker run,client至多会向docker daemon发起三次远程调用,分别是创建(拉取)镜像、创建容器、启动容器。本篇文章分析创建容器这个远程调用。2.1 注册路由initRoutes()func (r *containerRouter) initRoutes() { r.routes = []router.Route{
2021-03-28 01:57:10 768 2
原创 golang代码执行kubectl apply
1 概述:1.1 环境版本信息如下:a、操作系统:centos 7.6,amd64b、kubernetes版本:v1.15.0c、docker版本:v1.18.06d、golang版本: v1.132 代码:指定多个目录或文件,效果等同于kubectl apply。package mainimport ( "k8s.io/cli-runtime/pkg/genericclioptions" "k8s.io/cli-runtime/pkg/printers" cliresourc
2021-03-26 00:08:02 725
原创 源码编译docker-ce v18.09.2(简单易懂100%成功)
1 概述:1.1 环境版本信息如下:a、操作系统: centos 7.6,amd64b、服务器docker版本: v18.06.0c、服务器git版本: 1.8.3.1d、目标编译的docker版本: v18.09.22 前置准备2.1 宿主机安装docker编译环境是一个容器,因此需要在宿主机安装容器引擎,在后续的步骤中运行出一个容器来编译目标软件docker-ce v18.09.2。yum install yum-utils -yyum-config-manager --add-
2021-03-09 22:12:32 1823 1
原创 源码编译rancher v2.5.6和debug in kubernetes
1 概述:1.1 环境版本信息如下:a、操作系统:centos 7.6,amd64b、kubernetes版本:v1.18.16c、docker版本:v1.18.06d、rancher版本:v2.5.6e、golang版本: v1.14f、goland版本: 2020.32 安装go环境和docker:省略。3 编译和构建镜像:3.1 在裸机环境执行编译构建命令mkdir -p /opt/ && cd /opt/# 下载rancher源码git clone
2021-03-05 23:39:48 920 3
原创 故障恢复时期kubernetes dns的响应超过15秒
1 概述:1.1 环境版本信息如下:a、操作系统:centos 7.6c、kubernetes版本:v1.15.01.2 故障恢复时期下的dns查询延时的现象kubernetes dns的实现是coredns,以Deployment的形式双副本分别部署两个节点。一个coredns实例立刻死亡(服务器瞬间宕机,k8s service流量未进行切除),业务pod查询dns时,有机会得到dns服务器的时间长达15秒的失败响应(因为/etc/resolv.conf文件默认超时5秒,重试2次)。等ku
2021-02-04 23:29:22 730
原创 pcstat查看文件在系统中的缓存情况
1 概述:1.1 环境版本信息如下:a、操作系统:centos 7.62 pcstat工具pcstat是一个基于Go语言开发的小工具,用于查看文件在操作系统中的缓存情况。2.1 安装go语言环境参考搜索引擎。2.2 安装pcstatgo get -u github.com/tobert/pcstat/pcstat2.3 测试...
2021-01-19 23:26:24 3155
原创 kubernetes nodelifecontroller源码简析
1 概述:1.1 环境版本信息如下:a、操作系统:centos 7.6c、kubernetes版本:v1.15.01.2 NodeLifeController原理概述节点上的kubelet程序会定期更新kube-apiserver中node lease或者node status数据,kube-controller-manager中的NodeLifeController会监听这些信息变化,如果一个node很长时间都没有在kube-apiserver中进行状态更新,NodeLifeControll
2021-01-17 17:34:52 592
原创 kubernetes configmap热更新源码简析
1 概述:1.1 环境版本信息如下:a、操作系统:centos 7.6c、kubernetes版本:v1.15.01.2 configmap热更新原理概述configmap(secret的热更新也是一个原理)是kubernetes支持的卷的一种,底层原理是kubelet根据configmap中的内容在宿主机上写成若干文件(目录默认是/var/lib/kubelet/pods/<pod的UUI>/volumes/kubernetes.io~configmap/<卷名>),
2020-12-14 02:10:47 1294
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人