自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xianyuLuo的博客

做一条咸鱼不好嘛,为什么要努力!

  • 博客(69)
  • 资源 (1)
  • 收藏
  • 关注

原创 Website-operator

背景在工作中经常会有使用k8s部署站点应用,一般会创建两个编排文件:deployment.yaml和svc.yaml,但是有operator概念之后,其实我们可以自定义一个operator来帮忙创建deployment和svc。此篇文章的目的就是通过编写一个自定义的website-operator来实现此功能。只需要提供一个简单的yaml文件,就可以实现需求。样例YAML:apiVersion: website.xianyuluo.com/v1kind: Websitemetadata: n

2020-11-29 17:55:51 3

原创 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

2020-11-29 17:25:45 3

原创 Kubernetes原地升级实现原理

kubernetes原地升级实现原理在介绍原地升级实现原理之前,我们先来看一些原地升级功能所依赖的原生 Kubernetes 功能:技术背景背景 1:Kubelet 针对 Pod 容器的版本管理每个 Node 上的 Kubelet,会针对本机上所有 Pod.spec.containers 中的每个 container 计算一个 hash 值,并记录到实际创建的容器中。如果我们修改了 Pod 中某个 container 的 image 字段,kubelet 会发现 container 的 hash

2020-11-21 20:08:14 9

原创 Corefile Dump

背景在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。core文件的生成开关和大小限制使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。使用ulimit -c filesize命令,可以限制core文件的大小(filesize的单位为kbyte)。若ulimit -c unlimited,则表示core文件的大小不受

2020-10-27 10:15:09 8

原创 Prometheus监控Kubernetes-3 业务指标采集

背景由于容器化和微服务的大力发展,Kubernetes基本已经统一了容器管理方案,当我们使用Kubernetes来进行容器化管理的时候,全面监控Kubernetes也就成了我们第一个需要探索的问题。我们需要监控kubernetes的ingress、service、deployment、pod…等等服务,以达到随时掌握Kubernetes集群的内部状况。此文章也是Prometheus监控系列的第三篇,具体描述了在Kubernetes中使用Prometheus来采集业务指标。多数为思想指导,会列出两个例子。

2020-09-18 10:03:46 89

原创 Prometheus监控Kubernetes-2 监控部署

背景由于容器化和微服务的大力发展,Kubernetes基本已经统一了容器管理方案,当我们使用Kubernetes来进行容器化管理的时候,全面监控Kubernetes也就成了我们第一个需要探索的问题。我们需要监控kubernetes的ingress、service、deployment、pod…等等服务,已达到随时掌握Kubernetes集群的内部状况。此文章是Prometheus监控系列的第二篇,基于上一篇讲解了怎么对Kubernetes集群实施Prometheus监控。Prometheus部署在k

2020-09-18 09:59:50 55

原创 Prometheus监控Kubernetes-1 架构调研

背景由于容器化和微服务的大力发展,Kubernetes基本已经统一了容器管理方案,当我们使用Kubernetes来进行容器化管理的时候,全面监控Kubernetes也就成了我们第一个需要探索的问题。我们需要监控kubernetes的ingress、service、deployment、pod…等等服务,已达到随时掌握Kubernetes集群的内部状况。此文章是Prometheus监控系列的第一篇,目的也很明确,旨在于寻找一套能够胜任kubernetes集群监控的架构。k8s监控方案调研 1、cA

2020-09-18 09:52:03 52

原创 Kubenetes-API

Kubernetes API概念所有的资源都可以通过API返回其信息每个 Kubernetes 对象都有一个 resourceVersion 字段,代表该资源在下层数据库中存储的版本。检视资源集合(名字空间作用域或集群作用域)时,服务器返回的响应 中会包含 resourceVersion 值,可用来向服务器发起 watch 请求。 服务器会返回所提供的 resourceVersion 之后发生的所有变更(创建、删除和更新)。 这使得客户端能够取回当前的状态并监视其变更,且不会错过任何变更事件。 客户端

2020-09-09 09:56:16 10

原创 Kubernetes中的HeadlessService

Kubernetes中的HeadlessService前言:最近在基于K8S开发平台的过程中遇到了有个问题没有弄懂,就是CoreDNS的作用,就好像在Docker Swarm里面,我们可以通过Service name来访问一组容器,在K8S里,我们想要通过name来访问服务的方式就是在Deployment上面添加一层Servic,这样我们就可以通过Service name来访问服务了,那其中的原理就是和CoreDNS有关,它将Service name解析成Cluster IP,这样我们访问Cluster

2020-09-03 21:39:33 105

转载 python获取主机名和IP地址

原文链接:https://blog.csdn.net/Jerry_1126/article/details/85482905方法一>>> import socket>>> # 获取主机名>>> hostname = socket.gethostname()>>> hostname'USER-20150331GI'>>>>>> # 获取IP地址>>> ip = soc

2020-08-14 10:04:56 108

原创 Kubernetes中平时没注意到的特性

1、在 Pod 中的容器之间共享进程命名空间kubernetes官网链接进程命名空间共享使用 v1.PodSpec 中的 ShareProcessNamespace 字段启用。例如:apiVersion: v1kind: Podmetadata: name: nginxspec: shareProcessNamespace: true containers: - name: nginx image: nginx - name: shell image: bus

2020-08-13 21:15:45 29

原创 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

2020-08-13 15:54:59 49

原创 bash中rsync命令

rsync命令rsync用于从一个位置到另外一个位置同步文件和文件夹。备份的地址可以是本地也可以是远程。rsync的重要功能:speed: 首次使用时,rsync在source和destination之间复制全部内容。下次使用时,rsync只传输变更的块或字节到目的地,而这个机制将大大提升传输速度security: rsync允许对数据使用ssh协议加密less bandwidth: rsync使用对数据块压缩和解压缩的办法降低带宽需求。privileges: 无需特殊的特权来运行rsync

2020-08-13 14:05:34 42

原创 shell中的xargs命令

xargs 命令xargs命令的作用,是将标准输入转为命令行参数。$ echo "hello world" | xargs echohello world上面的代码将管道左侧的标准输入,转为命令行参数hello world,传给第二个echo命令。xargs命令的格式如下。$ xargs [-options] [command]真正执行的命令,紧跟在xargs后面,接受xargs传来的参数。xargs的作用在于,大多数命令(比如rm、mkdir、ls)与管道一起使用时,都需要xargs将

2020-08-11 10:17:41 64

原创 Vue学习笔记

学习Vue之前学习之前要先了解以下概念HTMLcssJavascriptAjaxVue特点Javascript 框架简化Dom操作响应式数据驱动

2020-08-09 18:10:34 26

原创 Vue案例

<html lang="en"><head> <meta charset="utf-8"> <title>计数器</title></head><body> <div id="app"> <button @click="sub">-</button> <span>{{ num }}</span>

2020-08-09 17:29:30 36

原创 JQuery和AJAX学习笔记

JQuery简介jquery字面上的意思就是javascript和查询,用于辅助开发的js库。jquery极大的简化了js编程。在<script>标签中使用src属性引入jquery.js地址,然后就可以正常使用jquery语法了。一般使用1.x版本,可以看巨头公司是使用的哪个版本就知道了。控制台输出“hello world”$(document).ready(function (){ console.log("hello world")});隐藏id=test的元素$("#te

2020-08-05 23:06:37 36

原创 JavaScript学习笔记

简介JavaScript是一种轻量级的脚本语言,也是一种嵌入式语言,也是一种对象模型语言,简称js。JS的核心语法只包括两部分基本语法(操作符、控制结构……)标准库(具备各种功能的对象)JS的应用场景网页开发服务端(node.js)APP游戏除了操作系统,其他无所不能!JS代码运行方式行内式:onclick="alert(123)"标签式:<script> ... </script>引入式:<script src="http://xxx/a

2020-08-05 22:44:02 61

原创 CSS学习笔记

CSS选择器css语法selector {declaration1; declaration2; ...}h1,h2,div {color: red, font-size: 18px}css书写方式嵌入式:在<head>标签内使用<style>标签外链式:在<head>标签中使用<link>标签引入行内式:在每个标签的style属性中写css代码css基本选择器通用选择器:* {}标签选择器:h1,div {}类选择器:.cla

2020-08-05 01:01:18 36

原创 HTML学习笔记1

HTML学习记录w3c组织定义的标准:结构标准:html样式标准:css行为标准:javascriptHTML超文本标记语言。用文本来表示,带有特殊标签(< >)的语言html标准骨架:<html> <head> <title>x</title> </head> <body> hello world </body></html>html标签单标签双标签

2020-08-03 23:54:42 44

原创 bash中的find命令

find命令-type:文件类型-name:文件名-mtime:文件修改时间perm:文件属性-size:文件大小例子:1、查找/data/目录下7天前且大小大于100M的文件#查找find /data -type f -mtime -7 -size +100M#查找并删除find /data -type f -mtime -7 -size +100M -exec rm -rf {} \;...

2020-08-02 11:58:39 135

原创 bash变量操作

变量截取截取变量$var的前5个字符,0:5表示下标echo ${var:0:5}

2020-08-02 11:16:24 59

原创 bash中if判断

文件判断-d file file存在并且是一个目录-e file file存在-f file file存在并且是普通文件-r file file有读权限-s file file存在且不为空-w file file写权限-x file file有执行权限-a file 如果 FILE 存在则为真字符串判断[-z string]:“string” 的长度为零则为真。[-n string ] or [ string ]:“string” 的长度为非零则为真。...

2020-08-02 11:09:19 45

原创 谈谈运维这个岗位

前言运维是个什么岗位?运维是管理服务器的,运维是管理代码仓库的,运维是维护公司线上服务的,运维是做成本管理的,运维是帮开发发布版本的,运维是SRE ……等等。有时候和朋友相聚,总是会问到:你们在公司主要做什么事情?有些时候我也愣了一下,脑袋里快速回想自己在公司做了什么事情。部署环境、服务器管理、帮人排查问题、也许还有修电脑,但是好像就没有一个专注的事情。每次想到这儿,我也不知道应该怎么回答我的朋友,运维到底是干嘛的?我一般的回答就是:一个项目从开发做完功能,后面的事情就都交给运维了。就一句话,但其实往

2020-08-01 23:48:52 104

原创 谈谈Kubernetes

Kubernetes和Istio随着微服务的理念不断深入人心,越来越多的公司、开发者尝试把以前的单体服务转向微服务架构,Container容器技术的出现,大大加速的这个过程,容器和微服务简直就是完美结合、天生一对。因为它有效的解决了N多服务快速交付和快速部署的问题。但随着服务数量的越来越多,很多企业能够希望把相关的服务聚合在一起,进行高效的部署和管理,于是乎后面就出现了服务编排概念。在众多服务编排工具中,Kubernetes带着它在Google的沉淀以及先进的思想横空出世,一统容器编排领域,很多都人直接

2020-08-01 15:27:12 53

原创 Docker中的网络实现方案学习笔记

前言现在不管出现什么新技术、新框架,那有2个问题是大家都绕不开的,包括操作系统在内也绕不开这2个问题,而且是非常基础的问题——网络和存储。回想以下以前学习过的框架,回想以下操作系统原理,是不是都不可能绕开这两点?这两点是所有程序的基础,同时也是Docker要解决的重点问题。今天我们就一起来学习下Docker的网络解决方案。Docker中的网络解决方案在Docker中,网络问题主要有3种解决方案。如下:FlannelWeaveCalico它们的目的无非就是为了解决同一个问题:如何让容器之间

2020-07-30 00:25:47 97

原创 python中的概念2——高阶函数

高阶函数把函数作为参数传入,这样的函数叫做高阶函数map函数map():接收2个参数,一个是函数f,另外一个是iterator可迭代对象i。map将f依次作用于i的每个元素reduce函数reduce():同map一样接收2个参数。但是reduce会把结果和i的下一个元素累计计算filter函数filter():接收2个参数,一个是函数f,另外一个是iterator可迭代对象i。依次将f作用于i的每个元素,然后根据f的返回值是True/False决定是否删除该元素sorted

2020-07-26 18:07:42 17

原创 python中的概念3——装饰器

装饰器 decorator在代码运行期间,动态增加功能的方式decorator的本质就是一个高阶函数decorator接受一个函数作为参数,并返回一个函数装饰器列子:import functoolsdef log(text): def decorator(func): @functools.warps(func) def wap(*args, **kw): print (text) func(*args, **kw) return wap return decor

2020-07-26 17:59:55 30

原创 python中的概念1——迭代器

迭代如果给定一个tuple/list,我们可以通过for循环来遍历这个list/tuple,这种遍历我们称为迭代。任何可迭代的对象都可以用for来遍历。dict.items()可以将dict转换为list列表生成式python内置的,可以用来快速创建list的生成式[x + y for x in "abc" for y in "123"]生成器可以一边循环,一边计算的机制。generator保存的算法。generator也是一个可迭代对象!g = (x * x for x in ra

2020-07-26 17:59:00 31

原创 Ansible动态Inventory格式

Ansible可从服务器接口获取动态Inventroy配置动态Inventory格式如下:{ "group1": { "hosts": ["host1", "host2"], "vars": { "env1": "aaa", "env2": "bbb" }, }, "group2": {}, "group3": {}}要求:接口必须返回json字典,如上格式Inventory脚本必须支持--list选项(列出所有组信息,格式如上)Inventory脚本必须支

2020-07-26 17:23:05 100

原创 LVS学习笔记4——延伸至kube-proxy

背景kubernetes中的service最开始是利用iptables技术实现,但是后来kubernetes官方抛弃了iptables,改用ipvs来实现service。Iptables问题规则复杂凌乱,排查问题困难基于链表实现,查找复杂度为O(n),当规则超过2w条时,内核压力巨大,iptbales将会成为瓶颈IPVS特点专注于负载均衡技术,且支持多种调度算法基于哈希查找,复杂度为O(1)个人思考为什么要弃用iptables?Iptables在功能上应该是偏防火墙功能k8s

2020-07-26 16:25:57 33

原创 LVS学习笔记3——ipvsadm命令

ipvsadm命令之前说到,lvs主要由ipvs + ipvsadm两部分组成。其中ipvs为内核部分,ipvsadm为用户空间的命令行工具,需要单独安装使用!ipvsadm命令如下:ipvsadm参数说明:(更多参照man ipvsadm) 参数 (缩写) 参数 (长格式) 参数说明 -A --add-service 在内核的虚拟服务器表中添加一条新的虚拟服务.

2020-07-26 16:06:13 33

原创 LVS学习笔记2——LVS负载均衡技术及调度算法

LVS负载均衡技术本篇文章主要介绍LVS集群的负载均衡技术以及负载均衡调度算法。负载均衡技术包括以下3种:NAT:网络地址转换。TUN:IP隧道模式。相比NAT性能提升10倍DR:物理地址转换。改写请求报文的MAC地址,将请求发送到真实服务器负载调度算法包括以下8种:轮询调度加权轮询最小连接数调度加权最小连接数基于局部的最小连接数调度带复制的基于局部性的最小连接数调度目标地址哈希原地址哈希下面我们就先来看看LVS的负载均衡技术LVS负载均衡技术VS/NAT架构如下

2020-07-26 15:55:39 71

原创 LVS学习笔记1——LVS介绍

LVS背景LVS项目是由国内章文嵩博士在1998年5月成立的Linux Virtual Server的自由软件项目开发,主要是针对Linux服务器集群的开发工作。同时,Linux Virtual Server项目是国内最早出现的自由软件项目之一。Linux Virtual Server项目的目标 :使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。目前,LVS项目已提

2020-07-26 13:39:40 36

原创 常用SQL命令

Mysql常用sql查询基本查询select * from students;条件查询select * from students where name="xianyuluo";投影查询select name username from students where age=23;这里将name重命名为username排序select * from students ORDER BY score;降序排列分页查询 select * from st

2020-07-23 23:48:32 33

原创 Linux系统命令——sort

Sort选项-t 指定文本分隔符-k 指定排序列-n 按数字进行排序-r 翻转排序结果例子:sort -k 1 -n -r

2020-07-22 15:10:00 21

原创 HTTP学习笔记1——HTTPS加密过程

HTTPShttps即http over tls,是一种在加密信道进行HTTP内容传输的协议,TLS早期的版本叫SSL。HTTPS加密过程加密过程如下图:加密过程详解:第一步:C发送一个client hello消息到S,消息中同时包含TLS版本、可用加密算法、压缩算法第二三步:S返回一个server hello消息,消息总包含S的TLS版本、所选择的加密算法、压缩算法、服务端公钥,C会在接下来的过程中使用该公钥加密握手过程,直到生成新的对称密钥第四五步:C验证CA是否可信,证书是否到期,域名

2020-07-19 20:50:27 71

原创 HTTP学习笔记1——HTTP大全

HTTP协议Http协议构建于tcp/ip协议之上,是一个应用层协议,默认的端口是80;HTTP无连接、无状态。HTTP报文HTTP是以ASCII码进行传输,建立在tcp/ip协议上的应用层规范。规范把http的请求分为三个部分:状态行、头部、主体Request请求请求分为三个部分:状态行、头部、主题(可选)<Method> <request-url> <version><Headers><entity-body>Metho

2020-07-19 20:19:15 63

原创 TCP/IP学习笔记11-如何理解tcp层面的keepalive

背景TCP/IP协议是当前网络时代的基础,所有的网络产品,或者是开发语言、开发框架都是基于tcp/ip协议的,所以说,学好tcp/ip对个人以后从事互联网行业会有巨大的帮助。但是这是一个基础理论课程,就像操作系统这门课一样,学完之后可能不会对你产生太大的影响,不会让你立马拥有能够投入工作中的技能。但正是因为这是一个基础理论课,所有的互联网技术都是基于它的。所以如果你了解tcp/ip协议,将会对你未来发展或者在工作中排查问题产生积极的作用。tcp层面的KeepAlivetcp层面的keepalive和

2020-07-19 16:58:46 36

原创 TCP/IP学习笔记10-Nagle算法和延迟确认

背景TCP/IP协议是当前网络时代的基础,所有的网络产品,或者是开发语言、开发框架都是基于tcp/ip协议的,所以说,学好tcp/ip对个人以后从事互联网行业会有巨大的帮助。但是这是一个基础理论课程,就像操作系统这门课一样,学完之后可能不会对你产生太大的影响,不会让你立马拥有能够投入工作中的技能。但正是因为这是一个基础理论课,所有的互联网技术都是基于它的。所以如果你了解tcp/ip协议,将会对你未来发展或者在工作中排查问题产生积极的作用。Nagle算法试想这样一个场景,发送端不停地给接收端发很小的包

2020-07-19 16:47:21 45

操作系统.xmind

学习操作系统时用xmind记录的源文件,分享给大家,欢迎改进。总共分成12部分,包含了操作系统发展、文件系统、调度系统等等,记录不是完善

2020-03-19

空空如也

空空如也

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

TA关注的人 TA的粉丝

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