![](https://img-blog.csdnimg.cn/2845ee397ad74a1782704e1957627ce2.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
云原生
文章平均质量分 73
云原生
包泽旭
引领技术巅峰,黑客无所不能
展开
-
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 · 1278 阅读 · 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 · 622 阅读 · 1 评论 -
openstack 搭建
#所有节点修改ip,主机名和hosts解析controller10.0.0.11 controllercompute110.0.0.31 compute1#所有节点准备本地repo源rm -fr /etc/yum.repos.d/local.repocd /opt/rz -Etar xf openstack_rpm.tar.gzmount /d...原创 2019-12-01 16:04:00 · 149 阅读 · 0 评论 -
集群监控-Prometheus
集群监控1. Prometheus1.1. Prometheus介绍Prometheus 是一款基于时序数据库的开源监控告警系统,非常适合Kubernetes集群的监控。Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、...原创 2020-09-07 18:15:00 · 232 阅读 · 0 评论 -
部署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 · 857 阅读 · 0 评论 -
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 · 154 阅读 · 0 评论 -
配置中心-Apollo(阿波罗)
04-2-配置中心1. 配置中心介绍1.1. 配置管理方式当前的微服务环境中,配置项都不是硬编码到代码中的,需要通过外部文件或者参数的方式来实现可动态调整的配置,目前主要有以下几种方式来管理:数据库:部分开发会将配置写在数据库中,定期读取和应用环境变量:这种是云原生环境中很常用的一种方式,通过在容器启动时对全局环境变量赋值的方式来完成命令行参数:通过Pod的args或者docker...原创 2020-09-07 18:07:00 · 1206 阅读 · 0 评论 -
持续部署-Spinnaker
04-5-持续部署1. 概念1.1. 基于Kubernets生态的闭环Kubernets集群的目标是为了构建一套Paas平台:代码提交:开发将代码提交到Git仓库持续集成:通过流水线将开发提交的代码克隆、编译、构建镜像并推到docker镜像仓库持续部署:通过流水线配置Kubernetes中Pod控制器、service和ingress等,将docker镜像部署到测试环境生产发布:通...原创 2020-09-07 18:26:00 · 996 阅读 · 0 评论 -
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 · 640 阅读 · 0 评论 -
k8s管理k8s核心资源的三种基本方法
管理k8s核心资源的三种基本方法方法分类陈述式--主要依赖命令行工具kubectl进行管理优点可以满足90%以上的使用场景对资源的增、删、查操作比较容易缺点命令冗长,复杂,难以记忆特定场景下,无法实现管理需求对资源的修改麻烦,需要patch来使用json串更改。声明式-主要依赖统一资源配置清单进行管理GUI式-主要依赖图形化操作界面进行管理2 ku...原创 2020-09-07 16:58:00 · 429 阅读 · 0 评论 -
K8S核心网络插件Flannel
K8S核心网络插件Flannelk8s虽然设计了网络模型,然后将实现方式交给了CNI网络插件,而CNI网络插件的主要目的,就是实现POD资源能够跨宿主机进行通信常见的网络插件有flannel,calico,canal,但是最简单的flannel已经完全满足我们的要求,故不在考虑其他网络插件网络插件Flannel介绍:https://www.kubernetes.org.cn/3682.ht...原创 2020-09-07 17:01:00 · 251 阅读 · 0 评论 -
部署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 · 479 阅读 · 0 评论 -
k8s的弹性伸缩(HPA)
在kubernetes中,我们使用pod对外提供服务。这时候,我们需要以下两种情形需要关注:pod因为不明原因挂掉,导致服务不可用Pod在高负荷的情况下,不能支撑我们的服务如果我们人工监控pods,人工进行调整副本那么这个工作量无疑是巨大的,但kubernetes已经有了相应的机制来应对了。那么今天就来介绍一下在k8s 1.6中的弹性伸缩的实施k8s是kubernetes的官方简...原创 2020-09-29 14:56:00 · 626 阅读 · 0 评论 -
持续集成-dubbo
4-1-持续集成1. 组件介绍1.1. 微服务1.1.1. 介绍微服务 (Microservices) 是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块 (Small Building Blocks) 为基础,利用模块化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关 (Language-Independent/Language agnostic) 的 API 集相互...原创 2020-09-07 17:12:00 · 818 阅读 · 0 评论 -
k8s 亲和性
Kubernetes的默认调度器以预选、优选、选定机制完成将每个新的Pod资源绑定至为其选出的目标节点上,不过,它只是Pod对象的默认调度器,默认情况下调度器考虑的是资源足够,并且负载尽量平均。在使用中,用户还可以自定义调度器插件,并在定义Pod资源配置清单时通过spec.schedulerName指定即可使用,这就是亲和性调度。1、Node亲和性调度NodeAffinity意为Node节...原创 2020-09-21 15:01:00 · 226 阅读 · 0 评论 -
Envoy 配置
1. envoy 配置概述启动时从Bootstrap配置文件中加载初始配置支持动态配置:xDS API◆ 从配置文件加载配置◆ 从管理服务器(Management Server)基于xds协议加载配置runtime◆ 某些关键特性(Feature flags)保存为key/value数据◆ 支持多层配置和覆盖机制启用全动态配置机制后,仅极少数场景需要重新启动En...原创 2021-12-02 17:58:00 · 1306 阅读 · 0 评论 -
k8s pv与pvc
一、存储卷的概念和类型为了保证数据的持久性,必须保证数据在外部存储在docker容器中,为了实现数据的持久性存储,在宿主机和容器内做映射,可以保证在容器的生命周期结束,数据依旧可以实现持久性存储。但是在k8s中,由于pod分布在各个不同的节点之上,并不能实现不同节点之间持久性数据的共享,并且,在节点故障时,可能会导致数据的永久性丢失。为此,k8s就引入了外部存储卷的功能。k8s的存储卷类型...原创 2021-01-12 10:47:00 · 208 阅读 · 0 评论 -
promql 的基本使用方法(3)
一、一对一匹配从操作符两边表达式获取的瞬时向量依次比较并找到唯一匹配(标签完全一致)的样本值。默认情况下,使用表达式:vector1 <operator> vector2在操作符两边表达式标签不一致的情况下,可以使用on(label list)或者ignoring(label list)来修改便签的匹配行为。使用ignoreing可以在匹配时忽略某些便签。o...原创 2021-07-29 20:30:00 · 562 阅读 · 0 评论 -
gunicorn 超时报错: WORKER TIMEOUT
gunicorn 超时报错: WORKER TIMEOUT一 问题描述:在某一个上午,开发突然报障容器莫名重启,经过查看业务容器日志发现 worker timeout字段二 分析报错原因:从报错信息可以看出,gunicorn 的 worker 进程超时导致进程退出重启,查看了官网 官网解释gunicorn 默认的超时时间为 30s ,如果超过 30s,则 worker 进程将被杀死并重...原创 2021-12-17 15:31:00 · 3741 阅读 · 1 评论 -
promql 的基本使用方法(2)
一、数学运算符PromQL支持的所有数学运算符如下所示:+ (加法)- (减法)* (乘法)/ (除法)% (求余)^ (幂运算)获取当前主机可用的内存空间大小,其样本单位为Bytes。换算成MB:node_memory_free_bytes_total / (1024 * 1024)二、使用比较运算过滤时间序列Prometheus支持以下布尔运算符如下:=...原创 2021-07-29 20:26:00 · 675 阅读 · 0 评论 -
k8s 主控节点的介绍以及安装
3. 主控节点安装etcd 的leader选举机制,要求至少为3台或以上的奇数台。本次安装涉及:hdss7-12,hdss7-21,hdss7-223.1.1. 签发etcd证书证书签发服务器 hdss7-200:创建ca的json配置: /opt/certs/ca-config.jsonserver 表示服务端连接客户端时携带的证书,用于客户端验证服务端身份client ...原创 2020-09-07 16:55:00 · 299 阅读 · 0 评论 -
k8s 基础架构介绍以及环境准备
1. 实验环境 1 四组基本概念Pod/Pod控制器Name/NamespaceLable/Label选择器Service/Ingress1.1 POD和POD控制器kubernetes 的pod控制器Podk8s里能够被运行的最小逻辑单元1个POD里面可以运行多个容器(SideCar 边车模式)POD中的容器共享 UTS/NAT/IPC 名称空间POD和容器颗...原创 2020-09-07 16:52:00 · 234 阅读 · 0 评论 -
coredns 的介绍以及部署
1 coredns用途coredns github地址coredns都做了什么:Kubernetes内部域名解析原理、弊端及优化方式coredns在K8S中的用途,主要是用作服务发现,也就是服务(应用)之间相互定位的过程。1.1 为什么需要服务发现在K8S集群中,POD有以下特性:服务动态性强容器在k8s中迁移会导致POD的IP地址变化更新发布频繁版本迭代快,新旧POD的IP...原创 2020-09-07 17:03:00 · 1358 阅读 · 0 评论 -
k8s 运算节点的介绍以及部署
4. 运算节点部署4.1. kubelet 部署4.1.1. 签发证书证书签发在 hdss7-200 操作[root@hdss7-200 ~]# cd /opt/certs/[root@hdss7-200 certs]# vim kubelet-csr.json # 将所有可能的kubelet机器IP添加到hosts中{ "CN": "k8s-kubelet", "h...原创 2020-09-07 16:56:00 · 202 阅读 · 0 评论 -
kvm2
kvm虚拟机的桥接网络默认的虚拟机网络是NAT模式,网段192.168.122.0/241:创建桥接网卡创建桥接网卡命令 virsh iface-bridge eth0 br0 取消桥接网卡命令 virshiface-unbridge br0新虚拟机使用桥接模式2默认NAT模式virt-install --virt-type kvm --os-type=linux --os-vari...原创 2019-12-01 16:03:00 · 243 阅读 · 0 评论 -
k8s Pod生命周期和重启策略
kubernetes (k8s)Pod生命周期和重启策略Pod的状态描述状态值 描述Pending API Server已经创建该Pod,但在Pod内还有一个或多个容器的镜像没有创建,包括正在下载镜像的过程。Runnung Pod内所有容器均已创建,且至少有一个容器处于运行状态、正在启动状态或正在重启状态。Succeeded ...原创 2020-12-31 11:11:00 · 162 阅读 · 0 评论 -
通过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 · 353 阅读 · 0 评论 -
日志收集-elk
04-4-日志收集1. 日志收集方式Kubernetes的业务Pod日志有两种输出方式:一种是直接打到标准输出或者标准错误,第二种是将日志写到特定目录下的文件种。针对这两种不同场景,提供了不同的容器日志收集思路。1.1. Kubernetes日志收集思路1.1.1. 使用节点代理收集日志在各个Node节点上以Deamonset方式部署log-agent-pod,将宿主机上的日志目录挂载...原创 2020-09-07 18:23:00 · 1381 阅读 · 0 评论 -
k8s 污点和容忍度
污点taints是定义在节点之上的键值型属性数据,用于让节点拒绝将Pod调度运行于其上, 除非该Pod对象具有接纳节点污点的容忍度。而容忍度tolerations是定义在 Pod对象上的键值型属性数据,用于配置其可容忍的节点污点,而且调度器仅能将Pod对象调度至其能够容忍该节点污点的节点之上,如图所示节点选择器nodeSelector和节点亲和性nodeAffinity两种调度方式都是通过在...原创 2020-09-21 15:07:00 · 425 阅读 · 0 评论 -
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 · 2155 阅读 · 0 评论 -
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 · 1206 阅读 · 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 · 1219 阅读 · 0 评论 -
构建和交付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 · 399 阅读 · 0 评论 -
Administration interface
Administration interface和Layered Runtime管理接口adminEnvoy内建了一个管理服务(administration server),它支持查询和修改操作,甚至有可能暴露私有数据(例如统计数据、集群名称和证书信息等),因此非常有必要精心编排其访问控制机制以避免非授权访问;admin: access_log: [] # 访问日志协议的相关配置,通常...原创 2021-12-02 18:15:00 · 276 阅读 · 0 评论 -
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 · 178 阅读 · 0 评论 -
promql 的基本使用方法(1)
一、表达式语言类型Prometheus表达式或子表达式可以评估为一下四种类型之一:即时向量(Instant vector)- 包含每个时间序列单个样品的一组时间序列,共享相同的时间戳范围向量(Range vector)- 包含一个范围内数据点的一组时间序列标量(Scalar)- 一个简单的数字浮点值字符串(String)- 一个简单的字符串值;二、即时向量选择即时向量选择器允许选择...原创 2021-07-29 20:24:00 · 271 阅读 · 0 评论 -
k8s 资源限制QoS
kubernetes 创建pod时就给他指定了下列一种 QoS 类:GuaranteedBurstableBestEffort创建命名空间创建一个命名空间,以便将本练习所创建的资源与集群的其余资源相隔离。kubectl create namespace qos-example创建一个 QoS 类为 Guaranteed 的 Pod对于 QoS 类为 Guaranteed 的 ...原创 2021-10-11 17:38:00 · 524 阅读 · 0 评论 -
sidecar 禁止注入pod
命名空间如果开启sidecar自动注入,不想注入到某一个pod可以通过下面方式关闭注入spec: template: metadata: annotations: sidecar.istio.io/inject: "false"...原创 2021-08-26 15:17:00 · 205 阅读 · 0 评论 -
k8s StorageClass(NFS)
一. StorageClass 简介在K8S环境,当pod需要存储空间时,StorageClass比PV更灵活和方便,每个 StorageClass 都包含 provisioner、parameters 和 reclaimPolicy 字段, 这些字段会在 StorageClass 需要动态分配 PersistentVolume 时会使用到。StorageClass的属性• Provisi...原创 2021-10-11 17:00:00 · 583 阅读 · 0 评论 -
envoy 介绍
Envoy一. 什么是Envoyenvoy 是作为微服务服务架构中以独立进程方式实现高级网络功能的,轻量级的7层服务代理程序,通常以sidecar的方式运行在应用程序的周边,也可以作为网络的边缘代理来运行envoy 的特性 进程外体系结构 ,L3/L4过滤器体系结构,HTTP L7过滤器体系结构, 一流的HTTP/2支持, HTTP/3支持(目前为alpha),HTTP L7路由,gR...原创 2021-12-02 17:48:00 · 11652 阅读 · 0 评论