解决jenkins无权限执行docker指令问题
jenkins pipeline执行docker指令出现 Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.35/images/json: dial unix /var/run/docker.sock: connect: permission denied 问题
解决方法(1)修改用户组
将jenkins用户加入docker用户组
usermod -a -G docker jenkins
重启jenkins
systemctl restart jenkins
(2)修改jenkins启动用户
# vim /etc/sysconfig/jenkinsJENKINS_USER="root"
重启jenkins
systemctl restart jenkins
Docker登录harbor出现getsockopt connection refused
docker登录harbor出现 Error response from daemon: Get https://192.168.1.112/v2/: dial tcp 192.168.1.112:443: getsockopt: connection refused
解决方法可以看到docker是使用https登录的,但是harbor没有配置https,所以出现这个问题。
修改 /usr/lib/systemd/system/docker.service
# 在 ExecStart=/usr/bin/dockerd 后面加上 --insecure-registryExecStart=/usr/bin/dockerd --insecure-registry=192.168.1.112
重新启动docker
systemctl daemon-reloadsystemctl restart docker
修改Docker默认存储位置
docker默认的数据目录是/var/lib/docker
修改 /usr/lib/systemd/system/docker.service
# 通过 --graph 参数指定数据存储的目录ExecStart=/usr/bin/dockerd --graph /data/docker
重启
systemctl daemon-reloadsystemctl restart docker
注:或者修改/etc/docker/daemon.json文件实现 v17.05.0 之后使用 data-root,旧版本请使用 graph
{ "data-root": "/data/docker" }
Kubernetes部署OCP微服务项目
前言首先感谢大佬提供的 open-capacity-platform 开源项目,希望通过这次部署,加深对Kubernetes的应用。下面放上 ocp 作者的gitee地址:https://gitee.com/owenwangwen/open-capacity-platform
环境准备
Kubernetes集群
安装JDK1.8
安装Maven
安装Git
安装Harbor或者使用Docker hub
在master节点上安装JDK1.8yum install -y java-1.8.0-openjdk-*
在master节点上安装Maven参考文章:https://1335402049.github.io/2020/04/19/Linux%E4%B8%8BMaven%E5%AE%89%E8%A3%85/
在master节点上安装Gityum install -y git
在 master 节点上克隆ocp代码仓库git clone https://gitee.com/owenwangwen/open-capacity-platform.g ...
Kubernetes部署alertmanager
应用 alertmanager-configmap.yaml
apiVersion: v1kind: ConfigMapmetadata: name: alertmanager-config namespace: kube-system labels: kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: EnsureExistsdata: alertmanager.yml: | global: resolve_timeout: 5m smtp_smarthost: 'smtp.qq.com:463' smtp_from: '1335402049@qq.com' smtp_auth_username: '1335402049@qq.com' smtp_auth_password: 'xxxxxxxxx' receiv ...
Prometheus监控Kubernetes集群
介绍目前prometheus对于Kubernetes集群的监控主要是包括这几方面:
监控指标
具体实现
描述
pod、container性能
cadvisor
容器cpu、内存、网络等
node性能
node_exporter
各节点cpu、内存、磁盘、网络等
K8S资源对象
kube-state-metrics
pod、deployment、service等资源
部署prometheus
应用 prometheus-rbac.yaml
apiVersion: v1# 创建 ServiceAccount 授予权限kind: ServiceAccountmetadata: name: prometheus namespace: kube-system labels: kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile---apiVersion: rbac.authorization.k8s.io& ...
Prometheus基于文件的服务发现
Prometheus提供服务发现功能,能够从consul、dns、kubernetes等多种来源发现目标。其中,基于文件的服务发现是Prometheus服务发现最简单的。
编写prometheus.yml- job_name: 'pushgateway' honor_labels: true file_sd_configs: # 指定服务发现的目录及配置文件 - files: ['/etc/prometheus/conf/*.yml'] # 每过5s动态发现服务配置 refresh_interval: 5s
创建目录mkdir -p /etc/prometheus/conf
写入配置文件[root@localhost conf]# cat test.yml - targets: ['localhost:9091','localhost:9092'] labels: area: nj
更新prometheus配置
# 检查 ...
frp实现内网穿透
frp是一个高性能的反向代理,可以帮助你快速进行内网穿透,frp支持tcp、http、https等多种协议。
准备需要一台外网服务器和一台需要穿透内网的机器
需要frp相关的包,可以自行去GitHub上下载,我这边也准备了一份
链接:https://pan.baidu.com/s/1e1G7yRBHA61hYZ02qVvirQ提取码:yugx
外网服务器配置使用tar解压
tar zxvf frp_0.22.0_linux_amd64.tar.gz
配置frps.ini
[common]bind_port = 7000vhost_http_port = 6081
启动
nohup ./frps -c frps.ini &
查看是否成功运行
ps -ef | grep frps
内网机器配置配置frpc.ini
[common]server_addr = xxx.xxx.xxx.xxx #外网服务器地址server_port = 7000 #frps配置的端口bind_port[ssh]type = tcp ...
Prometheus告警系统alertmanager之告警收敛
告警面临最大的问题就是告警信息太多、信息中混杂着许多重复的告警,因此收件人也会非常头疼。alertmanager告警收敛可以有效地解决此类问题,告警收敛主要有3种手段:分组、抑制、静默。
分组将类似性质的告警分类成单个通知,一起发送告警
route: # 根据alertname进行分组 group_by: ['alertname']
抑制当告警发出去后,停止发送由此告警引起的其他告警
inhibit_rules: # 根据 severity: 'critical'标签 匹配当前告警 - source_match: severity: 'critical' # 需要抑制的告警信息 target_match: severity: 'warning' # 只有包含指定标签才成立规则 equal: ['alertname', 'dev', 'instance']
静默在一段特定的时间内禁止告警的机制
访问alertmanager ...
Prometheus告警系统alertmanager之分配告警到指定接收组
alertmanager中route属性用来设置告警的分发策略。
配置alertmanager我们大致在下面的匹配规则可以看出,当匹配存在标签 service: mysql|redis 就将告警发送到group1(谷歌邮箱),当匹配 service: linux 则将告警发送到 group2(QQ邮箱)
global: resolve_timeout: 5m smtp_smarthost: 'smtp.qq.com:465' smtp_from: 'xxx@qq.com' smtp_auth_username: 'xxx@qq.com' smtp_auth_password: 'xxxxxxxxxx' smtp_require_tls: falseroute: group_by: ['alertname'] group_wait: 10s group_interval: 10s repeat_interval: 1m receiver: 'group1' # 所有不匹 ...