<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xianyuLuo的博客]]></title><description><![CDATA[做一条咸鱼不好嘛，为什么要努力！]]></description><link>https://blog.csdn.net/Free_time_</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; Free_time_]]></copyright><item><title><![CDATA[atop使用]]></title><link>https://blog.csdn.net/Free_time_/article/details/135335369</link><guid>https://blog.csdn.net/Free_time_/article/details/135335369</guid><author>Free_time_</author><pubDate>Tue, 02 Jan 2024 11:38:04 +0800</pubDate><description><![CDATA[时间要打开历史日志文件   atop -r /data/home/log/atop/atop_20231225   这样， 然后按b 输入 hhmm 来跳转， 然后按t /T 来前进后退。]]></description><category></category></item><item><title><![CDATA[使用 ps 命令查看进程启动的精确时间和启动后所流逝的时间]]></title><link>https://blog.csdn.net/Free_time_/article/details/121290621</link><guid>https://blog.csdn.net/Free_time_/article/details/121290621</guid><author>Free_time_</author><pubDate>Fri, 12 Nov 2021 16:22:24 +0800</pubDate><description><![CDATA[使用 ps 命令查看进程启动的精确时间和启动后所流逝的时间
回到引言中的问题，同事实际要问的是一个进程启动的精确时间和进程启动后所流逝的时间。
其实这 2 个时间也是可以通过 ps 命令输出的。 标识符如下：
       lstart      STARTED   time the command started.  See also bsdstart, start, start_time, and stime.
       etime       ELAPSED   elapsed time sinc]]></description><category></category></item><item><title><![CDATA[Prometheus监控数据类型]]></title><link>https://blog.csdn.net/Free_time_/article/details/119608546</link><guid>https://blog.csdn.net/Free_time_/article/details/119608546</guid><author>Free_time_</author><pubDate>Wed, 11 Aug 2021 15:47:23 +0800</pubDate><description><![CDATA[Prometheus监控数据类型




类型
特点
常用命名
常用函数




Counter
计数器，只增不减
*_total  *_sum  *_count
rate：求增长率  topk：Top前N的信息


Gauge
反映当前状态，可增可减
一般不带后缀
直接使用指标，表示当前状态  delta：可以获取样本在一段时间返回内的变化情况  predict_linear：数据的变化趋势进行预测


Histogram / Summary
数据分区间计算  带指标的总和，一般命名为 _sum  带指标]]></description><category></category></item><item><title><![CDATA[999系统可用性时间表]]></title><link>https://blog.csdn.net/Free_time_/article/details/112716862</link><guid>https://blog.csdn.net/Free_time_/article/details/112716862</guid><author>Free_time_</author><pubDate>Sat, 16 Jan 2021 17:20:18 +0800</pubDate><description><![CDATA[可用性时间表




SLI
每年不可用时间
每季度不可用时间
每月不可用时间
每周不可用时间
每天不可用时间
每小时不可用时间




90%
36.5 d
9 d
3 d
16.8 h
2.4 h
6 m


95%
18.25 d
4.5 d
1.5 d
8.4 h
1.2 h
3 m


99%
3.65 d
21.6 h
7.2 h
1.68 h
14.4 m
36 s


99.5%
1.83 d
10.8 h
3.6 h
50.4 m
7.20 m
18 s


99.9%
8.76 h
2.]]></description><category></category></item><item><title><![CDATA[Kubernetes GoClient类型]]></title><link>https://blog.csdn.net/Free_time_/article/details/111353949</link><guid>https://blog.csdn.net/Free_time_/article/details/111353949</guid><author>Free_time_</author><pubDate>Fri, 18 Dec 2020 10:16:49 +0800</pubDate><description><![CDATA[类型
简介
是否支持CRD资源




RestClient
提供RestClient客户端，对Kubernetes API执行RESTFUL操作



ClientSet
对restClient进行了对象分类方式的封装，可以实例化特定资源的客户端
不支持


Dynamic




Discovery





...]]></description><category></category></item><item><title><![CDATA[Kubernetes-Informer学习笔记-1]]></title><link>https://blog.csdn.net/Free_time_/article/details/110422228</link><guid>https://blog.csdn.net/Free_time_/article/details/110422228</guid><author>Free_time_</author><pubDate>Tue, 01 Dec 2020 10:09:16 +0800</pubDate><description><![CDATA[List-Watch机制

List：全量事件
Watch：增量事件

两者结合可以保证消息的可靠性、实时性、高性能。如果纯使用List也能获取所有事件，但是这会对ApiServer造成很大的压力，也很难满足实时性！
K8s每个资源的ResourceVersion
k8s的每个资源都会带有resourceVersion字段，数字递增
Informer

clinet-go中的一个核心工具包，List/Get k8s中的所有Object
Informer会自己维护一个缓存，以便更快的返回资源信息
Inform]]></description><category></category></item><item><title><![CDATA[Website-operator]]></title><link>https://blog.csdn.net/Free_time_/article/details/110338039</link><guid>https://blog.csdn.net/Free_time_/article/details/110338039</guid><author>Free_time_</author><pubDate>Sun, 29 Nov 2020 17:55:51 +0800</pubDate><description><![CDATA[背景
在工作中经常会有使用k8s部署站点应用，一般会创建两个编排文件：deployment.yaml和svc.yaml，但是有operator概念之后，其实我们可以自定义一个operator来帮忙创建deployment和svc。
此篇文章的目的就是通过编写一个自定义的website-operator来实现此功能。只需要提供一个简单的yaml文件，就可以实现需求。
样例YAML：
apiVersion: website.xianyuluo.com/v1
kind: Website
metadata:
  n]]></description><category></category></item><item><title><![CDATA[Operator-sdk使用]]></title><link>https://blog.csdn.net/Free_time_/article/details/110336678</link><guid>https://blog.csdn.net/Free_time_/article/details/110336678</guid><author>Free_time_</author><pubDate>Sun, 29 Nov 2020 17:25:45 +0800</pubDate><description><![CDATA[operator命令
定义API/Controller


make generate
生成/修改框架自带的 *_types.go


make 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]]></description><category></category></item><item><title><![CDATA[Kubernetes原地升级实现原理]]></title><link>https://blog.csdn.net/Free_time_/article/details/109906620</link><guid>https://blog.csdn.net/Free_time_/article/details/109906620</guid><author>Free_time_</author><pubDate>Sat, 21 Nov 2020 20:08:14 +0800</pubDate><description><![CDATA[kubernetes原地升级实现原理
在介绍原地升级实现原理之前，我们先来看一些原地升级功能所依赖的原生 Kubernetes 功能：
技术背景
背景 1：Kubelet 针对 Pod 容器的版本管理
每个 Node 上的 Kubelet，会针对本机上所有 Pod.spec.containers 中的每个 container 计算一个 hash 值，并记录到实际创建的容器中。
如果我们修改了 Pod 中某个 container 的 image 字段，kubelet 会发现 container 的 hash ]]></description><category></category></item><item><title><![CDATA[Corefile Dump]]></title><link>https://blog.csdn.net/Free_time_/article/details/109305227</link><guid>https://blog.csdn.net/Free_time_/article/details/109305227</guid><author>Free_time_</author><pubDate>Tue, 27 Oct 2020 10:15:09 +0800</pubDate><description><![CDATA[背景
在程序不寻常退出时，内核会在当前工作目录下生成一个core文件（是一个内存映像，同时加上调试信息）。使用gdb来查看core文件，可以指示出导致程序出错的代码所在文件和行数。
core文件的生成开关和大小限制

使用ulimit -c命令可查看core文件的生成开关。若结果为0，则表示关闭了此功能，不会生成core文件。
使用ulimit -c filesize命令，可以限制core文件的大小（filesize的单位为kbyte）。若ulimit -c unlimited，则表示core文件的大小不受]]></description><category></category></item><item><title><![CDATA[Prometheus监控Kubernetes-3 业务指标采集]]></title><link>https://blog.csdn.net/Free_time_/article/details/108659580</link><guid>https://blog.csdn.net/Free_time_/article/details/108659580</guid><author>Free_time_</author><pubDate>Fri, 18 Sep 2020 10:03:46 +0800</pubDate><description><![CDATA[背景
由于容器化和微服务的大力发展，Kubernetes基本已经统一了容器管理方案，当我们使用Kubernetes来进行容器化管理的时候，全面监控Kubernetes也就成了我们第一个需要探索的问题。我们需要监控kubernetes的ingress、service、deployment、pod…等等服务，以达到随时掌握Kubernetes集群的内部状况。
此文章也是Prometheus监控系列的第三篇，具体描述了在Kubernetes中使用Prometheus来采集业务指标。多数为思想指导，会列出两个例子。]]></description><category></category></item><item><title><![CDATA[Prometheus监控Kubernetes-2 监控部署]]></title><link>https://blog.csdn.net/Free_time_/article/details/108659398</link><guid>https://blog.csdn.net/Free_time_/article/details/108659398</guid><author>Free_time_</author><pubDate>Fri, 18 Sep 2020 09:59:50 +0800</pubDate><description><![CDATA[背景
由于容器化和微服务的大力发展，Kubernetes基本已经统一了容器管理方案，当我们使用Kubernetes来进行容器化管理的时候，全面监控Kubernetes也就成了我们第一个需要探索的问题。我们需要监控kubernetes的ingress、service、deployment、pod…等等服务，已达到随时掌握Kubernetes集群的内部状况。
此文章是Prometheus监控系列的第二篇，基于上一篇讲解了怎么对Kubernetes集群实施Prometheus监控。
Prometheus部署
在k]]></description><category></category></item><item><title><![CDATA[Prometheus监控Kubernetes-1 架构调研]]></title><link>https://blog.csdn.net/Free_time_/article/details/108595101</link><guid>https://blog.csdn.net/Free_time_/article/details/108595101</guid><author>Free_time_</author><pubDate>Fri, 18 Sep 2020 09:52:03 +0800</pubDate><description><![CDATA[背景
由于容器化和微服务的大力发展，Kubernetes基本已经统一了容器管理方案，当我们使用Kubernetes来进行容器化管理的时候，全面监控Kubernetes也就成了我们第一个需要探索的问题。我们需要监控kubernetes的ingress、service、deployment、pod…等等服务，已达到随时掌握Kubernetes集群的内部状况。
此文章是Prometheus监控系列的第一篇，目的也很明确，旨在于寻找一套能够胜任kubernetes集群监控的架构。
k8s监控方案调研


 1、cA]]></description><category></category></item><item><title><![CDATA[Kubenetes-API]]></title><link>https://blog.csdn.net/Free_time_/article/details/108480683</link><guid>https://blog.csdn.net/Free_time_/article/details/108480683</guid><author>Free_time_</author><pubDate>Wed, 09 Sep 2020 09:56:16 +0800</pubDate><description><![CDATA[Kubernetes API概念

所有的资源都可以通过API返回其信息
每个 Kubernetes 对象都有一个 resourceVersion 字段，代表该资源在下层数据库中存储的版本。检视资源集合（名字空间作用域或集群作用域）时，服务器返回的响应 中会包含 resourceVersion 值，可用来向服务器发起 watch 请求。 服务器会返回所提供的 resourceVersion 之后发生的所有变更（创建、删除和更新）。 这使得客户端能够取回当前的状态并监视其变更，且不会错过任何变更事件。 客户端]]></description><category></category></item><item><title><![CDATA[Kubernetes中的HeadlessService]]></title><link>https://blog.csdn.net/Free_time_/article/details/108393786</link><guid>https://blog.csdn.net/Free_time_/article/details/108393786</guid><author>Free_time_</author><pubDate>Thu, 03 Sep 2020 21:39:33 +0800</pubDate><description><![CDATA[Kubernetes中的HeadlessService
前言：
最近在基于K8S开发平台的过程中遇到了有个问题没有弄懂，就是CoreDNS的作用，就好像在Docker Swarm里面，我们可以通过Service name来访问一组容器，在K8S里，我们想要通过name来访问服务的方式就是在Deployment上面添加一层Servic，这样我们就可以通过Service name来访问服务了，那其中的原理就是和CoreDNS有关，它将Service name解析成Cluster IP，这样我们访问Cluster]]></description><category></category></item><item><title><![CDATA[python获取主机名和IP地址]]></title><link>https://blog.csdn.net/Free_time_/article/details/107998335</link><guid>https://blog.csdn.net/Free_time_/article/details/107998335</guid><author>Free_time_</author><pubDate>Fri, 14 Aug 2020 10:04:56 +0800</pubDate><description><![CDATA[原文链接：https://blog.csdn.net/Jerry_1126/article/details/85482905
方法一
&gt;&gt;&gt; import socket
&gt;&gt;&gt; # 获取主机名
&gt;&gt;&gt; hostname = socket.gethostname()
&gt;&gt;&gt; hostname
'USER-20150331GI'
&gt;&gt;&gt;
&gt;&gt;&gt; # 获取IP地址
&gt;&gt;&gt; ip = soc]]></description><category></category></item><item><title><![CDATA[Kubernetes中平时没注意到的特性]]></title><link>https://blog.csdn.net/Free_time_/article/details/107991699</link><guid>https://blog.csdn.net/Free_time_/article/details/107991699</guid><author>Free_time_</author><pubDate>Thu, 13 Aug 2020 21:15:45 +0800</pubDate><description><![CDATA[1、在 Pod 中的容器之间共享进程命名空间
kubernetes官网链接
进程命名空间共享使用 v1.PodSpec 中的 ShareProcessNamespace 字段启用。例如：
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  shareProcessNamespace: true
  containers:
  - name: nginx
    image: nginx
  - name: shell
    image: bus]]></description><category></category></item><item><title><![CDATA[bash中nice和ionice]]></title><link>https://blog.csdn.net/Free_time_/article/details/107981504</link><guid>https://blog.csdn.net/Free_time_/article/details/107981504</guid><author>Free_time_</author><pubDate>Thu, 13 Aug 2020 15:54:59 +0800</pubDate><description><![CDATA[ionice
一个进程可以有三种调度类别：
Idle
以Idle io优先级运行的程序只会在没有其他任何程序请求磁盘I/O的情况下得到磁盘I/O处理         时间。Idle调度类型不带任何参数。从内核2.6.25，Idle调度类型可以允许普通用户使用
Best effort
对那些还没有申请一个指定的io优先级的任何进程，这是有效的调度类型。这个类型会带一 个优先级参数，0-7，数字越小，优先级越高。如果多个进程的优先级相同，Linux内核会以Round-robin轮询的方式为其提供I/O服务。
R]]></description><category></category></item><item><title><![CDATA[bash中rsync命令]]></title><link>https://blog.csdn.net/Free_time_/article/details/107978249</link><guid>https://blog.csdn.net/Free_time_/article/details/107978249</guid><author>Free_time_</author><pubDate>Thu, 13 Aug 2020 14:05:34 +0800</pubDate><description><![CDATA[rsync命令
rsync用于从一个位置到另外一个位置同步文件和文件夹。备份的地址可以是本地也可以是远程。
rsync的重要功能：

speed: 首次使用时，rsync在source和destination之间复制全部内容。下次使用时，rsync只传输变更的块或字节到目的地，而这个机制将大大提升传输速度
security: rsync允许对数据使用ssh协议加密
less bandwidth: rsync使用对数据块压缩和解压缩的办法降低带宽需求。
privileges: 无需特殊的特权来运行rsync
]]></description><category></category></item><item><title><![CDATA[shell中的xargs命令]]></title><link>https://blog.csdn.net/Free_time_/article/details/107929031</link><guid>https://blog.csdn.net/Free_time_/article/details/107929031</guid><author>Free_time_</author><pubDate>Tue, 11 Aug 2020 10:17:41 +0800</pubDate><description><![CDATA[xargs 命令
xargs命令的作用，是将标准输入转为命令行参数。
$ echo "hello world" | xargs echo
hello world

上面的代码将管道左侧的标准输入，转为命令行参数hello world，传给第二个echo命令。
xargs命令的格式如下。
$ xargs [-options] [command]

真正执行的命令，紧跟在xargs后面，接受xargs传来的参数。
xargs的作用在于，大多数命令（比如rm、mkdir、ls）与管道一起使用时，都需要xargs将]]></description><category></category></item></channel></rss>