自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

变成习惯

记下知识,记录自己

  • 博客(389)
  • 收藏
  • 关注

原创 k8s部署 elfk 7.x + x-pack

k8s以StatefulSet方式部署elasticsearch集群,其中filebeat以sidecar方式部署。当前最新版本:7.10.1namespacemkdir -p /home/k8s/elfk/{elasticsearch-head,elasticsearch,logstash,kibana,filebeat}cd /home/k8s/elfkvim namespace.yamlapiVersion: v1kind: Namespacemetadata: name:

2021-02-09 18:13:45 1057

原创 helm部署gitlab-runner

helm部署gitlab-runner。chart最新版本:0.21.1namespace:public-service-ns.yamlapiVersion: v1kind: Namespacemetadata: name: public-servicekubectl apply -f public-service-ns.yaml查看注册token:在 管理中心 查看注册runner的 url 和 token,注册完成后就是全局的runner,也可以创建项目后单独注册run

2020-10-24 15:33:55 2182 2

原创 k8s部署prometheus + grafana

k8s以Deployment方式部署prometheus + grafana:主机说明:系统ip角色cpu内存hostnameCentOS 7.8192.168.30.128master>=2>=2Gmaster1CentOS 7.8192.168.30.129master>=2>=2Gmaster2CentOS 7.8192.168.30.130node>=2>=2Gnode1Cent

2020-07-29 19:22:54 7986 55

原创 [阶段二] 6. MySQL与Python交互

mysql 与 python 交互Connector 模块语法:MySQL Connector 是 mysql 官方的驱动模块,兼容性非常好。下载地址:https://dev.mysql.com/downloads/connector/python/# coding:utf-8import mysql.connector# 创建连接con = mysql.connector.connect( host="localhost", port="3306", user="roo

2021-12-31 19:47:32 947

原创 [阶段二] 5. MySQL基本函数的使用

mysql基本函数的使用像编程语言利用函数封装业务功能一样,数据库也把一些复杂的功能封装到函数里,供使用者调用。mysql 常用的函数可以分为 4 类:数字函数、字符函数、日期函数、条件函数。数字函数:函数功能示例ABS绝对值ABS(-100)RAND0~1 之间的随机数RAND()ROUND四舍五入,保留指定小数位ROUND(4.62,1)FLOOR强制舍位到最近的整数FLOOR(9.9)CEIL强制进位到最近的整数CEIL(3

2021-12-13 17:33:56 671

原创 [阶段二] 4. MySQL的基本操作

mysql的基本操作数据插入:INSERT 语句可以向数据表写入数据,可以是一条记录,也可以是多条记录。INSERT INTO 数据表名称(字段1,字段2,...) VALUES(值1,值2,...); #插入一条记录INSERT INTO 数据表名称(字段1,字段2,...) VALUES(值1,值2,...),(值3,值4,...),...; #插入多条记录mysql 的 INSERT 语句的方言语法(方言语法表示仅适用于当前数

2021-11-26 19:11:54 509

原创 [阶段二] 3. 数据库的高级查询

数据库的高级查询聚合函数:聚合函数在数据的查询分析中,应用十分广泛。聚合函数可以对数据求和、求最大值和最小值、平均值等。聚合函数总共有 5 个:SUM 函数:用于求和,只能用于数字类型,字符类型的统计结果为 0,日期类型的统计结果是毫秒数相加。MAX 函数:用于获得非空值的最大值。MIN 函数:用于获得非空值的最小值。AVG 函数:用于获得非空值的平均值,非数字数据统计结果为 0。COUNT 函数:COUNT(*) 用于获得包含空值的记录数,COUNT(字段) 用于获得包含非空值

2021-11-22 18:59:52 717

原创 [阶段二] 2. 数据库的基本查询

数据库的基本查询数据表的基本查询:最基本的查询语句是由 SELECT 和 FROM 关键字组成的。SELECT * FROM 数据表名称; #查询表中所有的字段SELECT 字段1,字段2,... FROM 数据表名称; #查询表中指定的字段SELECT 语句屏蔽了物理层的操作,用户不必关心数据的真实存储,交由数据库高效的查找数据。通常情况下,SELECT 子句中使用了表达式,name这列的名称就默认为表达式,因此需要一种对列名重命名的

2021-11-12 18:22:52 571

原创 [阶段二] 1. 数据库介绍

mysql的介绍数据库是一切企业级项目必不可少的重要组成部分。目前最流行的开源数据库是 mysql。数据库介绍:操作系统中数据存放的载体是文件,Windows、Linux 和 MacOS 都是基于文件的操作系统。数据库系统是指一个能为用户提供信息服务的系统。它实现了有组织地、动态地储存大量相关数据的功能,提供了数据处理和信息资源共享的便利手段。数据库,顾名思义,就是用来存放数据的。数据库系统分为关系型数据库系统和非关系型数据库系统,关系型数据库系统是指使用了关系模型的数据库系统。关系模型中,数

2021-11-01 19:00:04 154 2

原创 [阶段一] 16. Python正则表达式

python正则表达式初识正则:正则表达式对字符串的逻辑操作,主要是对字符串的一种过滤,用“元字符”与“普通字符”组成一个字符串规则对已知的字符串或文本过滤出自己想要的字符串。使用正则是为了处理文本数据。如果是简单的文本处理,那使用字符串匹配就可以达到目的,但是这样每一次匹配都要单独写语句来完成,为了更加方便,需要抽象出一种规则,这就是正则表达式的由来。1. 使用单个字符串来描述匹配一系列符合某个句法规则的字符串2. 是对字符串操作的一种逻辑公式3. 应用场景:处理文本和数据4. 处

2021-10-24 12:49:34 82

原创 [阶段一] 15. 进程与线程编程

进程与线程编程进程与多进程:进程就是程序执行的载体。打开的每个软件、游戏,执行的每一个 python 脚本,都是启动一个进程。对于系统来说,一个任务就是一个进程,多任务就是系统在同时运行多个进程。就像人需要吃饭一样,进程的口粮是 cpu 和内存资源,不同进程需要的 cpu 和内存资源不同。当一个任务被开启后,操作系统会分配它所需的系统资源,包括内存、I/O 和 cpu 等,如果系统资源不够,则会出现系统崩溃的情况,这样的任务可被称为进程。进程之间不能共享内存。对于系统来说,如果每次只能启动一个进

2021-09-24 17:37:22 181

原创 [阶段一] 14. 常用函数与高阶函数

常用函数与高阶函数加密工具:常用的加密工具有 hashlib 模块和 base64 模块。hashlib 模块加密的内容难以破解,加密过程不可逆。hashlib 常用的加密方法:函数名参数介绍示例返回值md5byteMD5算法加密hashlib.md5(b’hello’)hash 对象sha1byteSha1算法加密hashlib.sha1(b’hello’)hash 对象sha256byteSha256算法加密hashlib.sha2

2021-09-18 18:43:03 104

原创 [阶段一] 13. Python文件操作

python文件操作open 函数:open 函数的功能是生成文件对象,进行创建、读写操作。用法:open(path, mode)参数 path 表示文件路径,mode 表示操作模式,返回一个文件对象。文件操作模式:mode说明注意r只读方式打开文件必须存在w只写方式打开文件不存在则创建文件;文件存在则清空文件内容a追加方式打开文件不存在则创建文件r+ w+读写方式打开w+ 文件不存在则创建文件;文件存在则清空文件内容a+

2021-09-14 18:48:34 120

原创 [阶段一] 12. Python模块和包

python模块和包python 的包与模块:python 的包就是文件夹,包中还可以有子包,也就是子文件夹。python 的模块就是一个个 .py 文件,定义了各种功能接口。把复杂的功能封装为模块(又称为库),将功能实现的细节隐藏起来,使用该模块(库)的程序员不需要了解实现的细节。在 python 的应用领域中,如:web 开发、人工智能、网络爬虫、数据分析等领域,已经存在了大量的模块,使用这些模块就可以轻松开发出应用程序。层级关系:包 → 模块 → 函数包的身份证:__init__

2021-09-10 18:34:14 204

原创 [阶段一] 11. Python异常处理机制

python异常处理机制什么是异常与异常处理?python 程序的执行过程中,当发生错误时会引起一个事件,该事件被称为异常。异常会打断程序的正常执行流程。异常就是错误,异常会导致程序崩溃并停止运行。因此就需要异常处理,能监控并捕获到异常,将异常部位的程序进行修理使得程序继续正常运行。在 python 中,异常处理是通过 try ... except 语句来完成的。try ... except 语句:try: 可能产生异常的代码块except: 处理异常的代码块示例:

2021-09-08 19:06:06 149

原创 [阶段一] 10. Python面向对象编程

python面向对象编程什么是面向对象?类是一类具有同一特征的统称,如人类是一个类,张三、李四就是人类的某个具体对象。利用(面向)对象(属性和方法)去进行编码的过程,就称为面向对象编程。面向对象编程是把构成事物的整个需求按照特点、功能划分,把这些存在共性的部分封装成对象,创建对象的目的不是为了完成某一个步骤,而是为了描述整个事物在整个解决问题的步骤中的行为。python 中一切皆对象,比如变量也是对象,包括整型(int)、浮点型(float)、字符串(str)、列表(list)、元组(set)、

2021-09-03 19:15:47 120

原创 [阶段一] 9. 函数的定义与使用

函数的定义与使用函数的定义:将一件事情的步骤封装在一起并得到最终的结果。函数名代表了这个函数要做的事情,函数体是实现函数功能的流程。实现一个函数也称为实现一个方法或功能。函数可以帮助实现功能复用,通过函数名可以知道函数的作用。函数的作用及好处:1. 减少重复代码2. 方便修改,更易于扩展3. 保持代码一致性函数的分类:python 中的函数分为内置函数和自定义函数。内置函数是 python 自带的函数,不需要定义或者导入即可使用,而自定义函数是用户自己定义的函数,不定义无法使

2021-08-30 18:50:34 270

原创 [阶段一] 8. Python的流程控制

python的流程控制if 逻辑判断:所谓的逻辑判断就是在一个程序中要对判断语句进行真假的结果判定,逻辑判断结果的最基本标准是布尔类型。布尔类型只有两个值:True 和 False。一个逻辑语句是由条件语句和业务语句组合而成。if 语句的功能是判断一个命题的真假,如果命题为真(True),则执行 if 的逻辑语句,否则不会执行。用法:if 判断条件: 条件成立时执行的语句块判断条件的真假结果是布尔类型。if 语句无返回值。示例:>>> person = {'na

2021-08-26 18:16:03 82

原创 [阶段一] 7. Python不同数据类型间的转换

python不同数据类型间的转换字符串与数字之间的转换:字符串转为数字,要求字符串必须是由纯数字组成的字符串;数字转为字符串则无要求。字符串与数字之间的转换函数:原始类型目标类型函数示例整型字符串strnew_str = str(123456)浮点型字符串strnew_str = str(1.23)字符串整型intnew_int = int(‘123’)字符串浮点型floatnew_float = float(‘1.23’)

2021-08-25 18:23:31 143

原创 [阶段一] 6. Python集合常用方法

python集合常用方法什么是集合?集合(set)是一个无序的元素不重复的序列,通常用来对两个列表进行交并差的处理。集合支持所有不可变的数据类型的元素(数字、字符串、元组)。集合与列表的区别如下:功能列表集合顺序有序无序元素可重复不可重复功能用于数据的使用用于数据的交并差集的获取索引有索引无索引符号[],如 [1, 2, 3]{},如 {1, 2, 3}集合只可以通过 set 函数来创建,不能使用 {} 来创建空集合,{}

2021-08-20 18:46:30 81

原创 [阶段一] 5. Python字典常用方法

python字典常用方法字典没有索引,列表的索引就类似字典的 key,只不过字典的 key 不会像索引那样依次 + 1,key 是随机的,字典通过 key 查找到这个 key 对应的 value。字典可以通过 dict[key] = value 来进行添加或修改,添加还是修改取决于 key 是否存在于当前字典中。示例:>>> person = {'name': 'xiaobai'}>>> person['age'] = 18>>> pers

2021-08-16 18:06:48 100

原创 [阶段一] 4. Python列表常用方法

python列表常用方法len 函数可以计算除了数字类型以外,其他所有数据类型的长度。in 判断某个元素是否在列表(或元组)中;not in 判断某个元素是否不在列表(或元组)中。append 函数:append 函数的功能是将一个元素添加到当前列表中,新元素会被添加到列表的最后。用法:list.append(item),参数 item 表示添加进列表的新元素。示例:>>> person = ['xiaobai', 18, 'hangzhou']>>>

2021-08-14 10:45:11 102

原创 [阶段一] 3. Python字符串常用方法

python字符串常用方法什么是对象?python中的一切都是对象,每个对象都有自己的属性与方法。对象的特点就是它的属性,对象的功能就是它的方法(函数)。字符串就内置了很多函数。capitalize 函数:capitalize 函数的功能是将字符串的首字母大写、其余字母小写。用法:newstring = string.capitalize(),括号内无参数。示例:>>> name = 'xiaobai'>>> newname = name.cap

2021-08-10 18:08:56 144

原创 [阶段一] 2. Python数据类型

python数据类型介绍为了可以适应更多的使用场景,将数据划分为多种类型,每种类型都有着各自的特点和使用场景,帮助计算机高效的处理和展示数据。数据每种类型的特点不一样,作用也不一样。数据类型是用来规定数据的,而不是来存储的,存储数据需要容器。python 的数据类型:数字类型字符串类型布尔类型空类型列表类型元组类型集合类型字典类型元组与列表的区别在于:列表创建后可以修改,元组创建后不可以修改。可变数据类型:列表、字典、集合不可变数据类型:数值,字符串、布尔值

2021-08-06 18:54:54 172

原创 [阶段一] 1. Python脚本的结构

python 脚本结构hello.py# coding:utf-8import osprint('hello, world')脚本头:# coding:utf-8引用部分:import os业务部分:print('hello, world')规范:脚本头 与 引用部分 保留一个空行;引用部分 与 业务部分 保留两个空行;业务部分结尾保留一个空行。一个 python 脚本至少要有 业务部分,脚本头 和 引用部分 可以不存在。头注释写在 python 脚本第一行的以 # 开头的信

2021-08-05 19:04:07 391

转载 EnvoyFilter

EnvoyFilterEnvoyFilter 提供了一种机制,来自定义 Istio Pilot 生成的 Envoy 配置。使用 EnvoyFilter 可以 修改某些字段的值,添加特定的过滤器,甚至添加全新的监听器、集群等。必须谨慎使用此功能,因为不正确的配置可能会破坏整个网格的稳定性。与其他 Istio 网络对象不同,EnvoyFilters 是附加应用的。对于特定命名空间中的给定工作负载,可以有任意数量的 EnvoyFilters。这些 EnvoyFilters 的应用顺序如下:配置根命名空间中的所有

2021-07-23 18:46:06 1938

转载 Sidecar

SidecarSidecar 描述了 Sidecar 代理的配置,该代理可将入站和出站通信调解到它所附加的工作负载实例。默认情况下,Istio 将为网格中的所有 Sidecar 代理进行必要的配置,以达到网格中的每个工作负载示例,并接受与工作负载相关的所有端口上的流量。Sidecar 配置提供了一种调优端口集的方法,代理在向工作负载转发流量和从工作负载转发流量时将接受端口集和协议。此外,当转发来自工作负载实例的出站流量时,可以限制代理可以访问的服务集。网格中的服务和配置被组织到一个或多个命名空间(如 K

2021-07-19 19:00:07 203

转载 ServiceEntry

ServiceEntryServiceEntry 允许向 Istio 的内部服务注册表中添加额外的条目,以便网格中的自动发现服务可以访问或路由到这些手动指定的服务。ServiceEntry 描述了服务的属性(DNS名称,VIP,端口,协议,endpoints)。这些服务可以是网格外部的(如 Web APIs),也可以是不属于平台服务注册表的网格内部服务(如 一组在 Kubernetes 中与服务通信的 VM)。下面的示例中,声明了一些内部应用程序通过 HTTPS 访问的外部 API。sidecar 检查

2021-07-14 18:57:18 814 1

转载 Gateway

GatewayGateway 描述了在网格边缘运行的负载均衡器,接收传入或传出的 HTTP/TCP 连接。其中描述了一组应该公开的端口、要使用的协议类型、负载均衡器的 SNI 配置等。下面的示例中,Gateway 设置了一个代理作为负载均衡器,以暴露端口 80 和 9080(http)、443(https)、9443(https)、2379(TCP)方便外部访问。该网关将被应用于在带有标签 app: my-gateway-controller 的 Pod 上运行的代理。apiVersion: netw

2021-07-06 19:08:48 220

转载 VirtualService

VirtualService影响流量路由的配置。以下是一些术语,可在流量路由的上下文中进行定义。Service 通常是绑定到服务注册表中唯一名称的应用程序行为的单元。服务包含多个网络 Endpoints,这些 EndPoints 由 Pod、容器、VM 等上运行的工作负载实例实现。Service Version 即服务的版本。每个服务都有一个包含其所有实例的默认版本。在连续部署中,对于给定的服务,可能存在运行应用程序二进制文件的不同变体的实例的不同子集。这些变体不一定是不同的 API 版本,它们可能是

2021-06-28 18:30:27 790

转载 DestinationRule

DestinationRuleDestinationRule 定义在路由发生后应用于服务的流量的策略。这些规则指定负载均衡的配置、sidecar 的连接池大小以及离群值检测设置,以检测并从负载平衡池中清除不正常的主机。下面的示例中,对 ratings 服务进行了简单的负载均衡。apiVersion: networking.istio.io/v1alpha3kind: DestinationRulemetadata: name: bookinfo-ratingsspec: host: ra

2021-06-21 18:44:10 386

原创 流量的镜像

本文内容基于 流量的熔断。流量镜像流量镜像,也称为影子流量,是一个以尽可能低的风险为生产带来变化的强大的功能。镜像会将实时流量的副本发送到镜像服务。镜像流量发生在主服务的关键请求路径之外。恢复环境:kubectl delete -f samples/httpbin/httpbin.yamlkubectl delete -f samples/httpbin/networking/destination-rule-httpbin.yamlkubectl delete -f samples/

2021-06-10 19:00:13 2478

原创 流量的熔断

本文内容基于 设置请求超时。熔断熔断,是创建弹性微服务应用程序的重要模式。熔断能够使应用程序具备应对来自故障、潜在峰值和其他未知网络因素影响的能力。部署 httpbin 服务:应用程序 httpbin 作为后端服务。cat samples/httpbin/httpbin.yamlapiVersion: v1kind: ServiceAccountmetadata: name: httpbin---apiVersion: v1kind: Servicemetadata:

2021-06-03 18:24:53 264

原创 设置请求超时

本文内容基于 流量转移。经过 流量转移 的配置,下面是请求的流程:productpage → reviews:v3 → ratings请求超时http 请求的超时可以用路由规则的 timeout 字段来指定。默认情况下,超时是禁用的。这里把 reviews 服务的超时设置为 1 秒。为了观察效果,还需要在对 ratings 服务的调用上人为引入 2 秒的延迟。将所有流量路由到各个微服务的 v1 版本:kubectl apply -f samples/bookinfo/networkin

2021-05-25 18:56:21 841

原创 流量转移

本文内容基于 故障注入。经过 故障注入 的配置,下面是请求的流程:productpage → reviews:v3 → ratings (Ratings service is currently unavailable) (针对 jason 用户)productpage → reviews:v1 (其他用户)应用基于权重的路由将所有流量路由到各个微服务的 v1 版本:kubectl apply -f samples/bookinfo/networking/virtual-servic

2021-05-18 18:58:13 200

原创 故障注入

本文内容基于 配置请求路由。经过 配置请求路由 的配置,下面是请求的流程:productpage → reviews:v2 → ratings (针对 jason 用户)productpage → reviews:v1 (其他用户)注入 HTTP 延迟故障为了测试微服务应用程序 Bookinfo 的弹性,为用户 jason 在 reviews:v2 和 ratings 服务之间注入一个 7 秒的延迟。reviews:v2 服务对 ratings 服务的调用具有 10 秒的硬编码连接超时。

2021-05-11 18:51:00 351

原创 配置请求路由

Bookinfo 应用部署了一个用于演示多种 Istio 特性的 Bookinfo 应用,该应用由四个单独的微服务构成。这个应用模仿在线书店的一个分类,显示一本书的信息。页面上会显示一本书的描述,书籍的细节(ISBN、页数等),以及关于这本书的一些评论。Bookinfo 应用分为四个单独的微服务:productpage. 这个微服务会调用 details 和 reviews 两个微服务,用来生成页面。details. 这个微服务中包含了书籍的信息。reviews. 这个微服务中包含了书籍相关的

2021-05-06 19:27:12 213

转载 安装 Istio CNI 插件

按照此流程利用 Istio 容器网络接口(CNI)来安装、配置和使用 Istio 网格。默认情况下,Istio 会在网格中部署的 Pods 上注入一个 initContainer:istio-init。istio-init 容器会将 Pod 的网络流量劫持到 Istio sidecar 代理上。这需要用户或部署 Pods 的 Service Account 具有足够的部署 NET_ADMIN 容器的 Kubernetes RBAC 权限。Istio 用户权限的提升,对于某些组织的安全政策来说,可能是难以接

2021-04-30 18:50:06 442 3

转载 设置 Sidecar

注入 Sidecar为了充分利用 Istio 的所有特性,网格中的 pod 必须运行一个 Istio sidecar 代理。向 Pod 中注入 Istio sidecar 的两种方法:使用 istioctl 手动注入或启用 Pod 所属命名空间的 Istio sidecar 注入器自动注入。手动注入直接修改配置,如 Deployment,并将代理配置注入其中。当 Pod 所属的命名空间启用自动注入后,自动注入器会使用准入控制器在创建 Pod 时自动注入代理配置。通过应用 istio-sidecar-

2021-04-26 18:31:57 680

原创 Istio 快速入门

下载 istio:curl -L https://istio.io/downloadIstio | sh -cd istio-1.9.0export PATH=$PWD/bin:$PATH #将 istioctl 加入环境变量然后需要通过 helm 部署好 istio,此处省略。命名空间添加标签:方便 Istio 在部署应用的时候,自动的注入 Envoy sidecar 代理:kubectl label namespace default istio-i.

2021-04-22 18:40:12 495

空空如也

空空如也

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

TA关注的人

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