cAdvisor源码阅读

基于 v0.39.0 版本。cadvisor是通过cgroup获取各个容器的指标的,支持docker、containerd、cri-o等多种容器运行时。 main 入口函数: func main() { ...     // 初始化存储,指标默认存储在内存中,默认仅保留2分钟以内的数据     // 也支持持久化,通过storage_driver参数可以指定持久化的存储     // 目...

Helm install源码阅读

说明 通过源码了解 helm install 的执行流程,helm 版本为 v2.17.0 客户端 1. helm 的 main 函数(cmd/helm/helm.go) main 函数很好理解,调用了 newRootCmd(),就是 helm 命令的实现,函数内部通过 Cobra 的 AddCommand() 添加了 helm 的所有子命令,其他的就是解析参数,初始化环境变量等。有个地...

容器进程管理之S6和S6-overlay

什么是s6 s6 是一个用于 UNIX 的小型的、安全的守护进程管理组件,其英文全称 skarnet.org’s small and secure supervision software suite,因为首字母有6个s,所以被称为 s6。 s6包含的组件 s6 包含很多组件,其核心组件有四个,分别是:s6-svscan、s6-supervise、s6-svscanctl、s6-svc。理...

Go的并发控制

并发 下面很简单的一个并发例子: 定义一个全局变量名为 requests 的 channel ,每当有一个请求过来,都会往这个 channel 里写入当前时间,同时 handleRequest 函数会一直遍历该 channel,每当有一个请求过来,会启一个 goroutine 的 myhandle 函数去处理相应业务逻辑。 package main import ( "fmt" ...

Kubernetes之VPA使用介绍

什么是VPA VPA 全称 Vertical Pod Autoscaler,即垂直 Pod 自动扩缩容,可以根据容器资源使用情况自动设置 CPU 和 内存 的请求值,从而允许在节点上进行适当的调度,以便为每个 Pod 提供适当的资源。它既可以缩小过度请求资源的容器,也可以根据其使用情况随时提升资源不足的容量。注意:VPA 不会改变 Pod 的资源限制值。 为什么要使用VPA 使用VPA可以...

Kubernetes之Pod亲和性与反亲和性的TopologyKey

Pod亲和性与反亲和性 Pod 间的亲和性与反亲和性根据已经在 Node 上运行的 Pod 的标签来调度新的 Pod 到哪个 Node 上,这些规则的形式是: 如果 X 已经运行一个或多个符合规则 Y 的 Pod,那么这个 Pod 应该(如果是反亲和性,则不应该)运行在 X 上。 和 Node不同,由于 Pod 都是有命名空间的,所以基于 Pod 标签的标签选择器(Label S...

股票、债券、基金

股票 什么是股票 股票是股份公司发给股东证明其所持股份的一种有价证券,是持股人对公司拥有股权的凭证。 也就是说,只要你买了哪家公司的股票,你就是那家公司的股东,就可以行使股东的权利,比如参与公司利润分红,有权出席股东大会,参与公司决策等。 A股、B股、H股 我国根据公司的上市地点和所面对的投资者将股票分为A股、B股和H股。 A股 A股的正式名称是人民币普...

理解JWT

什么是JWT 官方解释如下: JWT全称JSON Web Token,是一种开放标准(RFC 7519),它定义了一种紧凑且独立的方式,可以在通信双方以JSON对象安全地传输信息。此信息可以通过数字签名进行验证和信任。JWT可以使用密钥(使用HMAC算法)或者使用RSA或ECDSA的公钥/私钥对进行签名。 通俗点讲,JWT就是一种认证规范、标准。 JWT的组成 JWT就是一个to...

Go的ioutil.ReadAll()读取标准输出的问题

问题描述 之前在使用ioutil.ReadAll()读取cmd.CombinedOutput()的标准输出时遇到程序挂起的问题,代码如下: func main() { cmd := exec.Command("git", "clone","https://github.com/test/test.git") stdout, _ := cmd.StdoutPipe() ...

Kubernetes部署Ingress

前言 Kubernetes暴露服务的方式有多种,如LoadBalancer、NodePort、Ingress等。LoadBalancer一般用于云平台,平常一般用NodePort暴露服务,非常方便。但是由于NodePort需要指定宿主机端口,一旦服务多起来,多个端口就难以管理。那么,这种情况下,使用Ingress暴露服务更加合适。 Ingress组成 Ingress一般包含三个组件: ...