自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (3)
  • 收藏
  • 关注

原创 nginx 多层代理 + k8s ingress 后端服务获取客户真实ip 配置

ingress 多层代理获取真实客户端ip

2023-09-28 18:21:30 1254

原创 elasticsearch-7.10.2+opendistro

elk opendistro 配置

2022-07-25 15:11:40 1064 2

原创 linux查看服务器连接数

直接执行命令:[root@localhost ~]# netstat -an | wc -l710[root@localhost ~]#有效的连接数:[root@localhost ~]# netstat -nat|grep ESTABLISHED|wc -l327中间的参数 ESTABLISHED表示有效的连接数!对服务器各种状态下的连接数分组并查询得到结果:查看不同状态的连接数:[root@localhost ~]# netstat -an|awk '/tcp/ {print $

2020-08-20 15:03:04 4270

原创 Mysql查看连接数(连接总数、活跃数、最大并发数)

show variables like ‘%max_connection%’; 查看最大连接数set global max_connections=1000; 重新设置最大连接数mysql> show status like ‘Threads%’;±------------------±------+| Variable_name | Value |±------------------±------+| Threads_cached | 32 ||

2020-08-20 14:48:33 1441

原创 关于 Kubernetes 的这些原理,你一定要了解

kubernetes 已经成为容器编排领域的王者,它是基于容器的集群编排引擎,具备扩展集群、滚动升级回滚、弹性伸缩、自动治愈、服务发现等多种特性能力。本文将带着大家快速了解 kubernetes ,了解我们谈论 kubernetes 都是在谈论什么。kubernetes 架构从宏观上来看 kubernetes 的整体架构,包括 Master、Node 以及 Etcd。Master 即主节点,负责控制整个 kubernetes 集群。它包括 Api Server、Scheduler、Controll

2020-08-11 11:44:14 724

原创 docker 镜像多阶段构建

下面是 Go 语言 Hello World 代码:package mainimport "fmt"func main() { fmt.Println("Hello World!")}接着用 alpine[1] 的 Go 语言 Image 来编译出可执行文件。FROM golang:alpineWORKDIR /appADD . /appRUN cd /app && go build -o appENTRYPOINT ./app接着执行如下编译指令:$

2020-07-31 18:18:28 421

原创 RabbitMQ集群原理

RabbitMQ分布式部署有3种方式:集群、Federation和Shovel。这三种方式并不是互斥的,可以根据需求选择相互组合来达到目的,后两者都是以插件的形式进行设计,复杂性相对高,此篇只聊一下RabbitMQ自带的内建集群。​我们把部署RabbitMQ的机器称为节点,也就是broker。broker有2种类型节点:磁盘节点和内存节点。顾名思义,磁盘节点的broker把元数据存储在磁盘中,内存节点把元数据存储在内存中,很明显,磁盘节点的broker在重启后元数据可以通过读取磁盘进行重建,保证了元数据

2020-07-31 14:16:15 321

原创 K8S故障排查指南- but volume paths are still present on disk

问题产生在使用 Kubernetes 时,有时会遇到 Pod 状态一直处理 Terminating。Pod 一直没有正常退出,一般情况会使用命令 kubectl delete pods pod-name --force --grace-period=0 强制删除。如果按照上面命令强制删除Pod,有一定概率会报 Orphaned pod found - but volume paths are still present on disk 错误。问题排查上面错误信息可以通过 journalctl -u

2020-06-29 10:26:56 2200

原创 Kubeconfig文件自动合并-实现K8S多集群切换

前言随着 Kubernetes 越来越流行,不管大公司还是小公司都往 Kubernetes 迁移,每个公司最少有两套集群(测试和生产),但是多个集群就有多个 Kubeconfig 用户授权文件。虽然官方文档中有介绍多个 Kubeconfig 文件合并成一个 Kubeconfig,但是对于一些新手来说,看得不是很明白。本文介绍 Kubeconfig 文件结构,并推荐一个工具自动合并 Kubeconfig。Kubeconfig 用途kubectl 命令行工具通过 kubeconfig 文件的配置来选择集

2020-06-22 10:31:02 1625

原创 helm v2升级v3版本遇到的疑难杂症

Helm V3 与 V2 版本架构变化较大,数据迁移也比较麻烦,官方为了解决数据迁移问题,提供一个 helm-2to3 工具,本文基于 helm-2to3 工具来迁移 V2 版本中的数据。注意:Helm V2 升级 V3 版本,Kubernetes 集群中 Deployment、Service、Pod等都不会重新创建,所以迁移过程是不会影响线上在跑的服务。安装 Helm V3 命令下载 helm 最新 v3.2.3 版本$ wget https://get.helm.sh/helm-v3.2.3-l

2020-06-17 15:14:18 1097

原创 K8s 中 PV 和 PVC 的状态变化

我们对 PV 和 PVC 的几种状态应该不算陌生,但是在使用过程中可能也会产生一些疑问,比如为什么 PVC 变成 Lost 状态了,新创建的 PVC 如何能够绑定之前的 PV,我可以恢复之前的 PV 吗?这里我们就来对 PV 和 PVC 中的几种状态变化再次进行说明。在不同的情况下,PV 和 PVC 的状态变化我们用如下所示的表格来进行说明:创建PV正常情况下 PV 被创建成功后是 Available 状态:apiVersion: v1kind: PersistentVolumemetada.

2020-06-15 10:34:11 7847

原创 Tomcat8性能优化

授人以鱼不如授人以渔通过Tomcat性能优化可以提高网站的并发能力。Tomcat服务器在JavaEE项目中使用率非常高,所以在生产环境对Tomcat的优化也变得非常重要了。对于Tomcat的优化,主要是从2个方面入手,一是Tomcat自身的配置,另一个是Tomcat所运行的jvm虚拟机的调优。本博客的不在于给出最佳配置,而是带领开发者,能够从实际情况出发,通过不断的调节tomcat和jvm参数,去发现吞吐量,平均响应时间和错误率等信息的变化,同时根据服务器的cpu和内存等信息,结合接口的业务逻辑,最好

2020-06-12 11:21:46 747

原创 使用 Prometheus 和 Grafana 监控 Linux 进程

无论你是 Linux 系统管理员或是 DevOps 工程师,你都会在监控服务器性能指标的时候花费很长时间。有时候实例运行非常慢但是哪里出的问题却没有任何线索。有一些不响应的实例会阻止你在这些实例上执行类似 top 或者 htop 的远程命令。服务器有一个瓶颈存在,但是你并不能简单快速的找到问题所在。如果我们有一个完整的仪表盘可以帮助我们跟踪整体性能以及独立的进程该怎么操作?例如:这篇入门文章旨在如何为 Linux 系统管理员创建一个完整的监控仪表盘该仪表盘会展示完全可定制并且可扩展到分布式架构

2020-06-11 14:40:30 1749 4

原创 windows 双网卡上网设置

1.内网ip地址信息(网关是192.168.16.1)2.外网网段信息(网关是172.20.10.1)3.需求希望访问 “内部网段:192.168.224.0”走 192.168.16.1,访问外网时走:172.20.10.14.查看机器路由信息,如下:(1)执行:route delete 0.0.0.0 192.168.16.1 删除这条路由(2)执行:route add -p 0.0.0.0 mask 0.0.0.0 172.20.10.1 metric 10 添加所有出去的网络连接都

2020-06-10 15:07:25 1732

原创 Shell运算符

算术运算符八种运算符号 +, -, *, /, %, =, ==, !=采用此表达式: expr $a + $b 计算加法, 其它类似数字判断相等: [ $a == $b ]数字判断不相等: [ $a != $b ]乘号比较特殊: val=expr $a \* $b 需要加\才能运算不使用expr, 可以使用$((表达式))代替例:a=10b=20val=expr $a + $becho “a + b : $val”关系运算符关系运算符只支持数字, 不支持字符串,除非字符串是数字

2020-06-09 17:18:38 169

原创 TCP 全连接队列满了会发生什么?又该如何应对?

什么是 TCP 半连接队列和全连接队列?.半连接队列,也称 SYN 队列;.全连接队列,也称 accepet 队列;服务端收到客户端发起的 SYN 请求后,内核会把该连接存储到半连接队列,并向客户端响应 SYN+ACK,接着客户端会返回 ACK,服务端收到第三次握手的 ACK 后,内核会把连接从半连接队列移除,然后创建新的完全的连接,并将其添加到 accept 队列,等待进程调用 accept 函数时把连接取出来。不管是半连接队列还是全连接队列,都有最大长度限制,超过限制时,内核会直接丢弃,或返回

2020-06-05 15:08:37 3294

原创 kubernetes之Flannel网络插件部署和三种工作模式讲解

Kubernetes系统上Pod网络的实现依赖于第三方插件,而Flannel是由CoreOS主推的目前比较主流的容器网络解决方案,CNI插件有两种功能:网络配置和网络策略,由于flannel比较简单,并不支持网络策略,flannel项目自身只是一个框架,真正提供网络功能的是它的后端实现,目前,Flannel支持三种不同后端实现,分别是:UDPVXLANhost-gwUDP是Flannel项目最早支持的一种方式,是性能最差的方式,目前已被废弃。用的最多的是VXLAN和host-gw模式的部署Fla

2020-06-02 14:09:08 3278 1

原创 Django全局启用登陆验证login_required

Django在做后台系统过程中,我们通常都会为view函数添加@login_required装饰器,这个装饰器的主要作用就是在用户访问这个方法时,检查用户是否已经成功登陆,如果没有则重定向到登陆页面登陆页面地址是通过settings.LOGIN_URL来获取的,默认为/accounts/login/页面,当然你也可以在settings配置文件中通过添加LOGIN_URL配置来改掉他,同时@login_required也接收参数login_url来指定登陆页面from django.contrib.aut

2020-06-01 17:29:17 1421

原创 Kubernetes 亲和与反亲和实例

K8S亲和与反亲和简介 [1]nodeSelector 提供了一种非常简单的方法来将 pod 约束到具有特定标签的节点上。亲和/反亲和功能极大地扩展了你可以表达约束的类型。关键的增强点是(1) 语言更具表现力(不仅仅是“完全匹配的 AND”)(2) 你可以发现规则是“软”/“偏好”,而不是硬性要求,因此,如果调度器无法满足该要求,仍然调度该 pod(3) 你可以使用节点上(或其他拓扑域中)的 pod 的标签来约束,而不是使用节点本身的标签,来允许哪些 pod 可以或者不可以被放置在一起亲和功能包含

2020-05-25 15:31:54 328 1

原创 JAVA 线上故障排查完整套路

线上故障主要会包括 CPU、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如 jstack、jmap 等工具也是不囿于一个方面的问题的,基本上出问题就是 df、free、top 三连,然后依次 jstack、jmap 伺候,具体问题具体分析即可。CPU一般来讲我们首先会排查 CPU 方面的问题。CPU 异常往往还是比较好定位的。原因包括业务逻辑问题(死循环)、频繁 gc 以及上下文切换过多。而最常见的往往是业务逻辑(或者框架逻辑)导致的

2020-05-25 11:41:10 697

原创 基于 k8s 构建企业 Jenkins 持续集成平台

内容:1、安装nfs服务器2、部署Jenkins3、Kubernetes 动态创建 Jenkins Slave 配置4、Jnekins Pipeline 介绍与动态生成 Jenkins Slave5、Jenkins Pipeline 自动化在 kubernetes 部署应用6、Jenkins新皮肤:BlueOcean1.安装nfs服务器yum install -y nfs-utils配置nfs可挂载数据目录[root@localhost ~]# vim /etc/exports/mn

2020-05-22 16:51:08 674

原创 Jenkins 流水线说明

.Jenkins 流水线.CI/CD.流水线1.承前作为运维,逃不掉的工作之一就是Jenkins 。哪怕开发同学自己会搭也一定会等你来完成,不然像抢了某人的责任田一样。2. Jenkins 流水线3.CI/CD说起 CI/CD,大家自然会想起来 Jenkins ,其实这两个东西没啥直接联系,Jenkins 充其量是个持续集成工具而已。于是有人就说了,怎么会没关系,CI/CD 不就是持续集成和持续交付么。定义没错,但你做到了么?所谓的持续集成并不是指把代码拿出来,打成jar包之类,那个就叫打

2020-05-21 10:18:00 1085

原创 非容器化jenkins 连接k8s 集群

1.jenkins 添加kubernetes plugin2.点击系统管理->系统设置-添加一个云,在下拉菜单中选择kubernets并添加我的是Jenkins 2.235点击这个连接配置k8s,如下图:3.填写云kubernetes配置内容注:Name值任意添加,Kubernetes 地址 值添加K8S apiserver连接地址和端口,jenkins 地址值添加jenkins UI访问地址和端口,4.配置云kubernetes连接K8S集群的验证文件查看k8s的 /root/

2020-05-20 15:30:42 2901

原创 k8s 进行pod级的抓包

1 列出待抓包的pod 及分布在哪些节点上[root@iZbp18at9sb674mrpzdu60Z ~]# kubectl get pod -l app=sso-gateway2 -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESsso-gateway2-

2020-05-19 15:11:36 1861

原创 ansible 交互提示、tags和block例子

1、交互提示:使用关键字:vars_prompt例:使用ansible的交互式功能创建用户和给定一个密码。---- hosts: test50 remote_user: root vars_prompt: - name: user_name prompt: Enter Username private: no - name: user_passwd prompt: Enter Password encrypt: "sha512_c

2020-05-15 17:17:29 328

原创 k8s之StatefulSet详解介绍

概述RC、Deployment、DaemonSet都是面向无状态的服务,它们所管理的Pod的IP、名字,启停顺序等都是随机的,而StatefulSet是什么?顾名思义,有状态的集合,管理所有有状态的服务,比如MySQL、MongoDB集群等。StatefulSet本质上是Deployment的一种变体,在v1.9版本中已成为GA版本,它为了解决有状态服务的问题,它所管理的Pod拥有固定的Pod名称,启停顺序,在StatefulSet中,Pod名字称为网络标识(hostname),还必须要用到共享存储。

2020-05-15 10:56:13 9278 1

原创 k8s常用网络模型原理总结

flannel网络模型:1:二层网络(VxLAN)每个主机维护一个ip地址池,默认所有主机网络互通。2:三层网络(host-gw)每个主机维护一个IP地址池,默认所有主机网络互通。flannel网络模型统一是 overlay 网络模型,其中二层需要对数据包进行封装和解封装,三层是将主机作为route路由器实现网络通信,不需要对数据包进行封装和解封装,每台主机都会添加ip路由表信息。calico网络...

2020-05-09 15:29:07 234 1

原创 jenkins安卓项目构建

java jdk很简单,android是基于java语言开发的,编译环境当然需要jave jre,所以,我们一般都会提前安装好Java jdk,这里我选择jdk 1.8,下载对应的jdk-8u221-linux-x64.tar.gz包,然后设置环境变量export JAVA_HOME=/opt/jdk1.8.0_221export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/to.

2020-05-09 11:47:53 256

原创 Jenkins在构建历史中显示构建者和分支名

安装两个插件(1)安装“user build vars plugin”插件。(2)安装“Groovy Postbuild”插件。在jenkins插件管理里面搜索到 直接安装即可。项目配置(1)配置“构建环境”安装完毕后需要在新建项目配置中,勾选 “Set jenkins user build variables” 选项,要安装“user build vars plugin”插件才会出...

2020-05-08 15:54:47 3558 2

原创 k8s Flannel 进化

介绍Flannel,VXLAN,接触过Kubernetes的同学应该都能说出这2个名词,那么再深入一点呢。Overlay,虚拟隧道,UDP。没错,我们继续往下看。UDP其实以UDP为后端的实现方式已经废弃了,不过其过程非常直观,适合学习。先描述一下环境:节点11.容器c1的ip 10.96.1.22.宿主机docker0 ip 10.96.1.1节点21.容器c2的ip 10...

2020-05-06 15:24:49 262

原创 K8s Pod Command 与容器镜像 Cmd 启动优先级详解

前言创建 Pod 时,可以为其下的容器设置启动时要执行的命令及其参数。如果要设置命令,就填写在配置文件的 command 字段下,如果要设置命令的参数,就填写在配置文件的 args 字段下。一旦 Pod 创建完成,该命令及其参数就无法再进行更改了。启动优先级下表给出了 Docker 与 Kubernetes 中对应的字段名称:描述 Docker字...

2020-05-06 14:50:30 5154

原创 Nginx 配置实战

一、我们为什么选择Nginx?IO多路复用epoll(IO复用)如何理解呢?举个例子吧!有A、B、C三个老师,他们都遇到一个难题,要帮助一个班级的学生解决课堂作业。老师A采用从第一排开始一个学生一个学生轮流解答的方式去回答问题,老师A浪费了很多时间,并且有的学生作业还没有完成呢,老师就来了,反反复复效率极慢。老师B是一个忍者,他发现老师A的方法行不通,于是他使用了影分身术,分身出好几个...

2020-05-06 14:19:45 594

原创 gitlab runner 安装配置

下载runner,根据自己对应服务器的型号自行选择下载:# Linux x86-64 sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64 # Linux x86 sudo...

2020-04-29 18:21:04 219

原创 docker compose 搭建 gitlab

1.在安装有docker的机器上:pip install docker-compose2.将一下内容保存在一个yml文件version: '2'services: gitlab: image: 'twang2218/gitlab-ce-zh:latest' container_name: "gitlab" restart: unless-stopped ...

2020-04-27 14:54:26 233

原创 centos8 安装 docker ce版

旧版本的 Docker 称为 docker 或者 docker-engine,使用以下命令卸载旧版本:yum remove docker docker-common docker-selinux docker-engine执行以下命令安装依赖包:yum install -y yum-utils device-mapper-persistent-data lvm2执行下面的命...

2020-04-27 14:41:26 571

原创 记一次mysql binlog 撑爆磁盘处理过程

mysql> show binary logs; #获取binlog文件列表 mysql> show master status; #查看当前正在写入的binlog文件(除了这个文件其他的都可以删除) mysql> purge binary logs to “mysql-bin.000012”; 这里清楚12之前的文件(这里删除后再mysql binlog 存放目录下对...

2020-04-23 10:52:33 844

原创 查找系统大文件

1.查找linux 根目录大于1G的文件find / -type f -size +1G2.找出根目录所有大于1G的文件,并列出每个文件真实大小find / -type f -size +1G -print0 | xargs -0 du -h

2020-04-23 10:27:06 393

原创 k8s event 事件输入elk 并设置钉钉报警

K8s事件监控kube-eventer一 背景目前k8s监控可以分为:资源监控,性能监控,安全健康等,但是在K8s中,如何表示一个资源对象的状态及一些列的资源状态转换,需要对k8s的events事件监控来表示,目前阿里有开源的K8s事件监控项目kube-eventer, 其将事件分为两种,一种是Warning事件,表示产生这个事件的状态转换是在非预期的状态之间产生的;另外一种是Normal事件...

2020-04-22 16:13:46 860

原创 k8s pod创建流程

1.kubectl 向api-server提交创建deploy的请求,然后api-server将请求记录到etcd中。2.controler 通过API Server的Watch接口,发现新的deploy,将deploy加入到任务队列,发现没有与deploy相对应的pod,rs,就启动deploy control 机制创建与之对应的pod,rs,deploy3.所有controler正常后,...

2020-04-15 14:05:28 1235

原创 Kubernetes Pod钩子

1、Pod容器钩子最终目的之前在生产环境中使用dubbo框架,由于服务更新的过程中,容器直接被停止了,部分请求仍会被分发到终止的容器,导致有用户会访问服务出现500错误,这部分错误请求数据占用的比较少,因为Pod是滚动一对一更新。由于这个问题出现了,考虑使用优雅的终止方式,将错误请求将至到最低,直至滚动更新完全不会影响到用户。简单分析一下 优雅的停止Pod微服务中,网关会把流量分配给每个Po...

2020-04-14 16:16:52 287

sonar-pmd-plugin-3.2.0-SNAPSHOT.jar

该jar包是阿里巴巴sonar的开发规范,sonarqube 目前在7.5以后的版本 使用过7.5以前的版本不知道是否支持,使用方法直接将此jar包放到sonarqube-7.5/extensions/plugins ,然后重启sonar即可

2020-05-14

sonarqube-7.5.zip

sonarqube是一个开源的代码质量检查工具,支持python、java、node等开发语言,内置代码质量检查策略,也可以集成其他代码检查策略。

2020-05-09

sonar-l10n-zh-plugin-1.25.jar

代码检查sonarqube 的汉化包,下载后直接放到,sonarqube的对应jar包目录,然后重启sonarqube即可汉化成功。

2020-05-09

空空如也

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

TA关注的人

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