自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

包泽旭

做自己喜欢的事

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

原创 prometheus + consul 实现服务自动发现

prometheus + consul 实现服务自动发现一. 为什么要引入consul在没有使用 consul 服务自动发现的时候,我们需要频繁对 Prometheus 配置文件进行修改,无疑给运维人员带来很大的负担,还有可能直接变成一个"配置达人",即使是配置达人也会存在人为失误的情况。二. 安装consul添加其所需要的helm repo源helm repo add bitnami https://charts.bitnami.com/bitnami将chart 文件拉取下来进行

2022-02-21 11:27:17 1228 1

原创 pod注入sidecar后无法连接redis和mongodb

pod注入sidecar后无法连接redis和mongodb问题记录:1.某个下午上线服务后,开发反馈pod有异常看日志报错redis和mongodb连接不了,经查看业务pod注入了sidecar之后无法连接,去掉sidecar注入后,连接正常。处理过程:看了下isito的版本是1.8.6,查看集群service,发现集群中存在一个service也是5379端口,这个svc是一个http类型的,有个http filter, 流量在sidecar里是tcp数据,在 这个http filter里解码不

2021-12-30 15:34:45 565 1

原创 gunicorn 超时报错: WORKER TIMEOUT

gunicorn 超时报错: WORKER TIMEOUT一 问题描述:在某一个上午,开发突然报障容器莫名重启,经过查看业务容器日志发现 worker timeout字段二 分析报错原因:从报错信息可以看出,gunicorn 的 worker 进程超时导致进程退出重启,查看了官网 官网解释gunicorn 默认的超时时间为 30s ,如果超过 30s,则 worker 进程将被杀死并重...

2021-12-17 15:31:00 3482 1

原创 kustomize 的使用

kustomize 应用编排神器的使用在 kustomize 出现之前,Kubernetes 管理应用的方式主要是通过 Helm 或者上层 Paas 来完成,并且需要参数化模板方式(如 helm) 来自定义配置,这需要学习复杂的 语法及容易出错。什么是kustomize?kustomize 是 kubernetes 原生的配置管理,以无模板方式来定制应用的配置。kustomize 使用 k...

2021-12-15 17:10:00 1652 1

原创 XDS API 与动态配置

动态配置XDS API 为envoy 提供了资源的动态配置机制,它也被称为Data Plane APIEnvoy支持三种类型的配置信息的动态发现机制,相关的发现服务及其相应的API联合起来称为xDS API;基于文件系统发现: 指定要监视的文件系统路径通过查询一到多个管理服务器(Management Server)发现:通过DiscoveryRequest协议报文发送请求,并要求...

2021-12-02 18:20:00 582

原创 Administration interface

Administration interface和Layered Runtime管理接口adminEnvoy内建了一个管理服务(administration server),它支持查询和修改操作,甚至有可能暴露私有数据(例如统计数据、集群名称和证书信息等),因此非常有必要精心编排其访问控制机制以避免非授权访问;admin: access_log: [] # 访问日志协议的相关配置,通常...

2021-12-02 18:15:00 250

原创 部署和运行Envoy的常用方法

Envoy项目为多种平台(例如amd64和arm64等)维护有相应的Docker Image,我们可按需猎取相应镜像后以容器形式运行Envoy,而且它们存在以下几种变化形式◼ envoy:基于Ubuntu Bionic制作的Docker Image◼ envoy-alpine和envoy-alpine-dev:基于alpine制作的Docker Image◼ envoy-debug和env...

2021-12-02 18:02:00 2805

原创 Envoy 配置

1. envoy 配置概述启动时从Bootstrap配置文件中加载初始配置支持动态配置:xDS API◆ 从配置文件加载配置◆ 从管理服务器(Management Server)基于xds协议加载配置runtime◆ 某些关键特性(Feature flags)保存为key/value数据◆ 支持多层配置和覆盖机制启用全动态配置机制后,仅极少数场景需要重新启动En...

2021-12-02 17:58:00 1233

原创 envoy 介绍

Envoy一. 什么是Envoyenvoy 是作为微服务服务架构中以独立进程方式实现高级网络功能的,轻量级的7层服务代理程序,通常以sidecar的方式运行在应用程序的周边,也可以作为网络的边缘代理来运行envoy 的特性 进程外体系结构 ,L3/L4过滤器体系结构,HTTP L7过滤器体系结构, 一流的HTTP/2支持, HTTP/3支持(目前为alpha),HTTP L7路由,gR...

2021-12-02 17:48:00 11436

原创 k8s 资源限制QoS

kubernetes 创建pod时就给他指定了下列一种 QoS 类:GuaranteedBurstableBestEffort创建命名空间创建一个命名空间,以便将本练习所创建的资源与集群的其余资源相隔离。kubectl create namespace qos-example创建一个 QoS 类为 Guaranteed 的 Pod对于 QoS 类为 Guaranteed 的 ...

2021-10-11 17:38:00 488

原创 k8s StorageClass(NFS)

一. StorageClass 简介在K8S环境,当pod需要存储空间时,StorageClass比PV更灵活和方便,每个 StorageClass 都包含 provisioner、parameters 和 reclaimPolicy 字段, 这些字段会在 StorageClass 需要动态分配 PersistentVolume 时会使用到。StorageClass的属性• Provisi...

2021-10-11 17:00:00 550

原创 sidecar 禁止注入pod

命名空间如果开启sidecar自动注入,不想注入到某一个pod可以通过下面方式关闭注入spec: template: metadata: annotations: sidecar.istio.io/inject: "false"...

2021-08-26 15:17:00 191

原创 gitlab-ci yml 的语法介绍

目录1. 介绍(1) 验证 .gitlab-ci.yml(2) 不可用的作业名称(3)使用保留关键字2. job 配置参数1. 介绍管道配置从作业(job)开始, 作业是 .gitlab-ci.yml 文件的最基本元素。job是:定义了约束,指出应在什么条件下执行具有任意名称的顶级元素,并且必须至少包含 script 子句不限制,可以定义多个//示例job1: script...

2021-08-10 15:52:00 2032

原创 promql 的基本使用方法(3)

一、一对一匹配从操作符两边表达式获取的瞬时向量依次比较并找到唯一匹配(标签完全一致)的样本值。默认情况下,使用表达式:vector1 <operator> vector2在操作符两边表达式标签不一致的情况下,可以使用on(label list)或者ignoring(label list)来修改便签的匹配行为。使用ignoreing可以在匹配时忽略某些便签。o...

2021-07-29 20:30:00 529

原创 promql 的基本使用方法(2)

一、数学运算符PromQL支持的所有数学运算符如下所示:+ (加法)- (减法)* (乘法)/ (除法)% (求余)^ (幂运算)获取当前主机可用的内存空间大小,其样本单位为Bytes。换算成MB:node_memory_free_bytes_total / (1024 * 1024)二、使用比较运算过滤时间序列Prometheus支持以下布尔运算符如下:=...

2021-07-29 20:26:00 648

原创 promql 的基本使用方法(1)

一、表达式语言类型Prometheus表达式或子表达式可以评估为一下四种类型之一:即时向量(Instant vector)- 包含每个时间序列单个样品的一组时间序列,共享相同的时间戳范围向量(Range vector)- 包含一个范围内数据点的一组时间序列标量(Scalar)- 一个简单的数字浮点值字符串(String)- 一个简单的字符串值;二、即时向量选择即时向量选择器允许选择...

2021-07-29 20:24:00 261

原创 通过gitlab ci进行持续集成和持续部署一个前端项目

一 基础环境准备首先准备一个前端项目,并编写Dockerfile与kustomize,我这里准备了的是公司的一个前端项目编写DockerfileFROM node:latestCOPY . /dataWORKDIR /data/RUN npm --registry.npm.taobao.org install && npm run buildFROM ng...

2021-06-11 16:16:00 336

原创 es 索引自动删除

es 索引自动删除由于我们每天要存储大量的数据到elasticsearch中,但是存储空间经常有限,导致es崩掉了好多次,所以想到了2种解决方案通过kibana 设置索引生命周期编写自动删除索引脚本,并通过k8s的方式运行#删除第10天的索引#/bin/shDATA=`date -d "-10 days" +%Y.%m.%d`time=`date` #for i...

2021-05-31 10:40:00 1168 1

原创 k8s部署zk集群

k8s 部署zk 集群1. 环境介绍使用helm 进行部署zookeeper:3.72. zk集群部署helm repo add bitnami https://charts.bitnami.com/bitnami3.创建zk集群#首先使用fetch进行拉取chart helm fetch bitnami/zookeeper #将拉取下zk的压缩包进行解压 tar ...

2021-04-28 11:05:00 1122

原创 k8s-基于Canal来定义网络策略

安装要求:https://docs.projectcalico.org/getting-started/kubernetes/flannel/flannel1、 使用Kubernetes API数据存储进行安装(推荐)2、CNI插件需要启用,Calico安装为CNI插件。必须通过传递--network-plugin=cni参数将kubelet配置为使用CNI网络。(在kubeadm...

2021-01-19 19:12:00 165

原创 k8s pv与pvc

一、存储卷的概念和类型为了保证数据的持久性,必须保证数据在外部存储在docker容器中,为了实现数据的持久性存储,在宿主机和容器内做映射,可以保证在容器的生命周期结束,数据依旧可以实现持久性存储。但是在k8s中,由于pod分布在各个不同的节点之上,并不能实现不同节点之间持久性数据的共享,并且,在节点故障时,可能会导致数据的永久性丢失。为此,k8s就引入了外部存储卷的功能。k8s的存储卷类型...

2021-01-12 10:47:00 202

原创 k8s Pod生命周期和重启策略

kubernetes (k8s)Pod生命周期和重启策略Pod的状态描述状态值 描述Pending API Server已经创建该Pod,但在Pod内还有一个或多个容器的镜像没有创建,包括正在下载镜像的过程。Runnung Pod内所有容器均已创建,且至少有一个容器处于运行状态、正在启动状态或正在重启状态。Succeeded ...

2020-12-31 11:11:00 153

原创 k8s容器探针

k8s 容器探针Kubernetes---容器探针⒈探针的含义探针是由各个节点的kubelet对容器执行的定期诊断。要执行诊断,kubelet 调用由容器实现的Handler【处理程序】。有三种类型的处理程序:    >ExecAction:在容器内执行指定命令。如果命令退出时返回码为0则认为诊断成功。    >TCPSocketAction:对指定端口上的容器的IP地址进...

2020-12-31 11:00:00 188

原创 k8s-StatefulSet

StatefulSetRC、Deployment、DaemonSet都是面向无状态的服务,它们所管理的Pod的IP、名字,启停顺序等都是随机的,而StatefulSet是什么?顾名思义,有状态的集合,管理所有有状态的服务,比如MySQL、MongoDB集群等。StatefulSet本质上是Deployment的一种变体,在v1.9版本中已成为GA版本,它为了解决有状态服务的问题,它所管理的P...

2020-09-29 14:58:00 80

原创 k8s的弹性伸缩(HPA)

在kubernetes中,我们使用pod对外提供服务。这时候,我们需要以下两种情形需要关注:pod因为不明原因挂掉,导致服务不可用Pod在高负荷的情况下,不能支撑我们的服务如果我们人工监控pods,人工进行调整副本那么这个工作量无疑是巨大的,但kubernetes已经有了相应的机制来应对了。那么今天就来介绍一下在k8s 1.6中的弹性伸缩的实施k8s是kubernetes的官方简...

2020-09-29 14:56:00 598

原创 k8s 污点和容忍度

污点taints是定义在节点之上的键值型属性数据,用于让节点拒绝将Pod调度运行于其上, 除非该Pod对象具有接纳节点污点的容忍度。而容忍度tolerations是定义在 Pod对象上的键值型属性数据,用于配置其可容忍的节点污点,而且调度器仅能将Pod对象调度至其能够容忍该节点污点的节点之上,如图所示节点选择器nodeSelector和节点亲和性nodeAffinity两种调度方式都是通过在...

2020-09-21 15:07:00 407

原创 k8s 亲和性

Kubernetes的默认调度器以预选、优选、选定机制完成将每个新的Pod资源绑定至为其选出的目标节点上,不过,它只是Pod对象的默认调度器,默认情况下调度器考虑的是资源足够,并且负载尽量平均。在使用中,用户还可以自定义调度器插件,并在定义Pod资源配置清单时通过spec.schedulerName指定即可使用,这就是亲和性调度。1、Node亲和性调度NodeAffinity意为Node节...

2020-09-21 15:01:00 204

原创 持续部署-Spinnaker

04-5-持续部署1. 概念1.1. 基于Kubernets生态的闭环Kubernets集群的目标是为了构建一套Paas平台:代码提交:开发将代码提交到Git仓库持续集成:通过流水线将开发提交的代码克隆、编译、构建镜像并推到docker镜像仓库持续部署:通过流水线配置Kubernetes中Pod控制器、service和ingress等,将docker镜像部署到测试环境生产发布:通...

2020-09-07 18:26:00 950

原创 日志收集-elk

04-4-日志收集1. 日志收集方式Kubernetes的业务Pod日志有两种输出方式:一种是直接打到标准输出或者标准错误,第二种是将日志写到特定目录下的文件种。针对这两种不同场景,提供了不同的容器日志收集思路。1.1. Kubernetes日志收集思路1.1.1. 使用节点代理收集日志在各个Node节点上以Deamonset方式部署log-agent-pod,将宿主机上的日志目录挂载...

2020-09-07 18:23:00 1367

原创 部署alertmanager-告警规则

5. 部署alertmanager5.1. 准备镜像[root@hdss7-200 ~]# docker pull docker.io/prom/alertmanager:v0.14.0[root@hdss7-200 ~]# docker image tag prom/alertmanager:v0.14.0 harbor.od.com/public/alertmanager:v0.14....

2020-09-07 18:22:00 816

原创 部署Grafana

4. 部署Grafana4.1. 安装Grafana4.1.1. 准备镜像[root@hdss7-200 ~]# docker pull grafana/grafana:5.4.2[root@hdss7-200 ~]# docker image tag grafana/grafana:5.4.2 harbor.od.com/public/grafana:v5.4.2[root@hdss...

2020-09-07 18:19:00 376

原创 集群监控-Prometheus

集群监控1. Prometheus1.1. Prometheus介绍Prometheus 是一款基于时序数据库的开源监控告警系统,非常适合Kubernetes集群的监控。Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、...

2020-09-07 18:15:00 210

原创 配置中心-Apollo(阿波罗)

04-2-配置中心1. 配置中心介绍1.1. 配置管理方式当前的微服务环境中,配置项都不是硬编码到代码中的,需要通过外部文件或者参数的方式来实现可动态调整的配置,目前主要有以下几种方式来管理:数据库:部分开发会将配置写在数据库中,定期读取和应用环境变量:这种是云原生环境中很常用的一种方式,通过在容器启动时对全局环境变量赋值的方式来完成命令行参数:通过Pod的args或者docker...

2020-09-07 18:07:00 1086

原创 configmap前置说明

configmap前置说明0.1.1 configmap和secret在K8S中,有两种方式管理资源的配置,分别是configmap和secret,他们的最大区别是:configmap用来管理明文配置secret用来管理密文配置0.1.2 怎么使用configmap创建configmap资源在deploy中定义congfigmap类型的volumes在deoloy的cont...

2020-09-07 18:00:00 147

原创 构建和交付dubbo

5. 构建和交付dubbo5.1. 交付Provider到K8S5.1.1. CI流水线构建1.1 参数构建要点jenkins流水线配置的java项目的十个常用参数:参数名作用举例或说明app_name项目名dubbo_demo_serviceimage_namedocker镜像名app/dubbo-demo-servicegit_repo项目...

2020-09-07 17:59:00 392

原创 持续集成-dubbo

4-1-持续集成1. 组件介绍1.1. 微服务1.1.1. 介绍微服务 (Microservices) 是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块 (Small Building Blocks) 为基础,利用模块化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关 (Language-Independent/Language agnostic) 的 API 集相互...

2020-09-07 17:12:00 795

原创 常用dashboard角色设置-RBAC

3.2. 常用dashboard角色设置Dashboard 权限设置中,有两个主要集群角色: cluster-admin、view,一个是管理员权限,一个是查看权限。3.2.1 RBAC3.2.2. RBAC概述3.2.3. RBAC实现的原理RBAC(Role Base Access Controller),基于角色的访问控制,是目前Kubernetes最常用的权限控制插件。Ku...

2020-09-07 17:11:00 177

原创 部署dashboard

1 部署dashboard1. K8S证书1.1. SSL和TLS传输层安全性协议(Transport Layer Security,缩写:TLS)及其前身安全套接层(Secure Sockets Layer,缩写:SSL)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。SSL设计之初主要用于web通信过程中的密钥的非对称加密和校验,互联网工程任务组(Internet Eng...

2020-09-07 17:08:00 444

原创 K8S核心插件-ingress(服务暴露)控制器-traefik

K8S核心插件-ingress(服务暴露)控制器-traefik1 K8S两种服务暴露方法前面通过coredns在k8s集群内部做了serviceNAME和serviceIP之间的自动映射,使得不需要记录service的IP地址,只需要通过serviceNAME就能访问POD但是在K8S集群外部,显然是不能通过serviceNAME或serviceIP来解析服务的要在K8S集群外部来访问...

2020-09-07 17:06:00 610

原创 coredns 的介绍以及部署

1 coredns用途coredns github地址coredns都做了什么:Kubernetes内部域名解析原理、弊端及优化方式coredns在K8S中的用途,主要是用作服务发现,也就是服务(应用)之间相互定位的过程。1.1 为什么需要服务发现在K8S集群中,POD有以下特性:服务动态性强容器在k8s中迁移会导致POD的IP地址变化更新发布频繁版本迭代快,新旧POD的IP...

2020-09-07 17:03:00 1272

空空如也

空空如也

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

TA关注的人

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