使用 ps 命令查看进程启动的精确时间和启动后所流逝的时间 使用 ps 命令查看进程启动的精确时间和启动后所流逝的时间回到引言中的问题,同事实际要问的是一个进程启动的精确时间和进程启动后所流逝的时间。其实这 2 个时间也是可以通过 ps 命令输出的。 标识符如下: lstart STARTED time the command started. See also bsdstart, start, start_time, and stime. etime ELAPSED elapsed time sinc
Prometheus监控数据类型 Prometheus监控数据类型类型特点常用命名常用函数Counter计数器,只增不减*_total *_sum *_countrate:求增长率 topk:Top前N的信息Gauge反映当前状态,可增可减一般不带后缀直接使用指标,表示当前状态 delta:可以获取样本在一段时间返回内的变化情况 predict_linear:数据的变化趋势进行预测Histogram / Summary数据分区间计算 带指标的总和,一般命名为 _sum 带指标
999系统可用性时间表 可用性时间表SLI每年不可用时间每季度不可用时间每月不可用时间每周不可用时间每天不可用时间每小时不可用时间90%36.5 d9 d3 d16.8 h2.4 h6 m95%18.25 d4.5 d1.5 d8.4 h1.2 h3 m99%3.65 d21.6 h7.2 h1.68 h14.4 m36 s99.5%1.83 d10.8 h3.6 h50.4 m7.20 m18 s99.9%8.76 h2.
Kubernetes GoClient类型 类型简介是否支持CRD资源RestClient提供RestClient客户端,对Kubernetes API执行RESTFUL操作ClientSet对restClient进行了对象分类方式的封装,可以实例化特定资源的客户端不支持DynamicDiscovery...
Kubernetes-Informer学习笔记-1 List-Watch机制List:全量事件Watch:增量事件两者结合可以保证消息的可靠性、实时性、高性能。如果纯使用List也能获取所有事件,但是这会对ApiServer造成很大的压力,也很难满足实时性!K8s每个资源的ResourceVersionk8s的每个资源都会带有resourceVersion字段,数字递增Informerclinet-go中的一个核心工具包,List/Get k8s中的所有ObjectInformer会自己维护一个缓存,以便更快的返回资源信息Inform
Website-operator 背景在工作中经常会有使用k8s部署站点应用,一般会创建两个编排文件:deployment.yaml和svc.yaml,但是有operator概念之后,其实我们可以自定义一个operator来帮忙创建deployment和svc。此篇文章的目的就是通过编写一个自定义的website-operator来实现此功能。只需要提供一个简单的yaml文件,就可以实现需求。样例YAML:apiVersion: website.xianyuluo.com/v1kind: Websitemetadata: n
Operator-sdk使用 operator命令定义API/Controllermake generate生成/修改框架自带的 *_types.gomake manifests生成CRD文件make install安装CRD到集群镜像构建make docker-build IMG=xianyuluo/website-operator:v1.0.0构建镜像make docker-push IMG=xianyuluo/website-operator:v1.0.0推送镜像部署Opera
Kubernetes原地升级实现原理 kubernetes原地升级实现原理在介绍原地升级实现原理之前,我们先来看一些原地升级功能所依赖的原生 Kubernetes 功能:技术背景背景 1:Kubelet 针对 Pod 容器的版本管理每个 Node 上的 Kubelet,会针对本机上所有 Pod.spec.containers 中的每个 container 计算一个 hash 值,并记录到实际创建的容器中。如果我们修改了 Pod 中某个 container 的 image 字段,kubelet 会发现 container 的 hash
Corefile Dump 背景在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。core文件的生成开关和大小限制使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。使用ulimit -c filesize命令,可以限制core文件的大小(filesize的单位为kbyte)。若ulimit -c unlimited,则表示core文件的大小不受
Prometheus监控Kubernetes-3 业务指标采集 背景由于容器化和微服务的大力发展,Kubernetes基本已经统一了容器管理方案,当我们使用Kubernetes来进行容器化管理的时候,全面监控Kubernetes也就成了我们第一个需要探索的问题。我们需要监控kubernetes的ingress、service、deployment、pod…等等服务,以达到随时掌握Kubernetes集群的内部状况。此文章也是Prometheus监控系列的第三篇,具体描述了在Kubernetes中使用Prometheus来采集业务指标。多数为思想指导,会列出两个例子。
Prometheus监控Kubernetes-2 监控部署 背景由于容器化和微服务的大力发展,Kubernetes基本已经统一了容器管理方案,当我们使用Kubernetes来进行容器化管理的时候,全面监控Kubernetes也就成了我们第一个需要探索的问题。我们需要监控kubernetes的ingress、service、deployment、pod…等等服务,已达到随时掌握Kubernetes集群的内部状况。此文章是Prometheus监控系列的第二篇,基于上一篇讲解了怎么对Kubernetes集群实施Prometheus监控。Prometheus部署在k
Prometheus监控Kubernetes-1 架构调研 背景由于容器化和微服务的大力发展,Kubernetes基本已经统一了容器管理方案,当我们使用Kubernetes来进行容器化管理的时候,全面监控Kubernetes也就成了我们第一个需要探索的问题。我们需要监控kubernetes的ingress、service、deployment、pod…等等服务,已达到随时掌握Kubernetes集群的内部状况。此文章是Prometheus监控系列的第一篇,目的也很明确,旨在于寻找一套能够胜任kubernetes集群监控的架构。k8s监控方案调研 1、cA
Kubenetes-API Kubernetes API概念所有的资源都可以通过API返回其信息每个 Kubernetes 对象都有一个 resourceVersion 字段,代表该资源在下层数据库中存储的版本。检视资源集合(名字空间作用域或集群作用域)时,服务器返回的响应 中会包含 resourceVersion 值,可用来向服务器发起 watch 请求。 服务器会返回所提供的 resourceVersion 之后发生的所有变更(创建、删除和更新)。 这使得客户端能够取回当前的状态并监视其变更,且不会错过任何变更事件。 客户端
Kubernetes中的HeadlessService Kubernetes中的HeadlessService前言:最近在基于K8S开发平台的过程中遇到了有个问题没有弄懂,就是CoreDNS的作用,就好像在Docker Swarm里面,我们可以通过Service name来访问一组容器,在K8S里,我们想要通过name来访问服务的方式就是在Deployment上面添加一层Servic,这样我们就可以通过Service name来访问服务了,那其中的原理就是和CoreDNS有关,它将Service name解析成Cluster IP,这样我们访问Cluster
python获取主机名和IP地址 原文链接:https://blog.csdn.net/Jerry_1126/article/details/85482905方法一>>> import socket>>> # 获取主机名>>> hostname = socket.gethostname()>>> hostname'USER-20150331GI'>>>>>> # 获取IP地址>>> ip = soc
Kubernetes中平时没注意到的特性 1、在 Pod 中的容器之间共享进程命名空间kubernetes官网链接进程命名空间共享使用 v1.PodSpec 中的 ShareProcessNamespace 字段启用。例如:apiVersion: v1kind: Podmetadata: name: nginxspec: shareProcessNamespace: true containers: - name: nginx image: nginx - name: shell image: bus
bash中nice和ionice ionice一个进程可以有三种调度类别:Idle以Idle io优先级运行的程序只会在没有其他任何程序请求磁盘I/O的情况下得到磁盘I/O处理 时间。Idle调度类型不带任何参数。从内核2.6.25,Idle调度类型可以允许普通用户使用Best effort对那些还没有申请一个指定的io优先级的任何进程,这是有效的调度类型。这个类型会带一 个优先级参数,0-7,数字越小,优先级越高。如果多个进程的优先级相同,Linux内核会以Round-robin轮询的方式为其提供I/O服务。R
bash中rsync命令 rsync命令rsync用于从一个位置到另外一个位置同步文件和文件夹。备份的地址可以是本地也可以是远程。rsync的重要功能:speed: 首次使用时,rsync在source和destination之间复制全部内容。下次使用时,rsync只传输变更的块或字节到目的地,而这个机制将大大提升传输速度security: rsync允许对数据使用ssh协议加密less bandwidth: rsync使用对数据块压缩和解压缩的办法降低带宽需求。privileges: 无需特殊的特权来运行rsync
shell中的xargs命令 xargs 命令xargs命令的作用,是将标准输入转为命令行参数。$ echo "hello world" | xargs echohello world上面的代码将管道左侧的标准输入,转为命令行参数hello world,传给第二个echo命令。xargs命令的格式如下。$ xargs [-options] [command]真正执行的命令,紧跟在xargs后面,接受xargs传来的参数。xargs的作用在于,大多数命令(比如rm、mkdir、ls)与管道一起使用时,都需要xargs将