pkg

聊聊promtail的Client

点点圈 提交于 2021-01-21 00:23:18
序 本文主要研究一下promtail的Client Client loki/pkg/promtail/client/client.go // Client pushes entries to Loki and can be stopped type Client interface { api.EntryHandler // Stop goroutine sending batch of entries. Stop() } Client接口内嵌了api.EntryHandler接口,定义了Stop方法 EntryHandler loki/pkg/promtail/api/types.go // EntryHandler is something that can "handle" entries. type EntryHandler interface { Handle(labels model.LabelSet, time time.Time, entry string) error } EntryHandler接口定义了Handle方法 client loki/pkg/promtail/client/client.go // Client for pushing logs in snappy-compressed protos over HTTP. type client

一文读懂 Kubernetes APIServer 原理

梦想与她 提交于 2021-01-20 10:39:01
前言 整个Kubernetes技术体系由声明式API以及Controller构成,而kube-apiserver是Kubernetes的声明式api server,并为其它组件交互提供了桥梁。因此加深对kube-apiserver的理解就显得至关重要了。 整体组件功能 kube-apiserver作为整个Kubernetes集群操作etcd的唯一入口,负责Kubernetes各资源的认证&鉴权,校验以及CRUD等操作,提供RESTful APIs,供其它组件调用: kube-apiserver包含三种APIServer: aggregatorServer :负责处理 apiregistration.k8s.io 组下的APIService资源请求,同时将来自用户的请求拦截转发给aggregated server(AA) kubeAPIServer :负责对请求的一些通用处理,包括:认证、鉴权以及各个内建资源(pod, deployment,service and etc)的REST服务等 apiExtensionsServer :负责CustomResourceDefinition(CRD)apiResources以及apiVersions的注册,同时处理CRD以及相应CustomResource(CR)的REST请求(如果对应CR不能被处理的话则会返回404)

HP UX 双机操作命令

不问归期 提交于 2021-01-15 20:25:53
HP UX 双机操作命令 HP UX 双机操作命令 一、查看配置命令:cmviewconf 二、查看当前状态:cmviewcl -v 三、运行命令:cmruncl -v 四、停止命令:cmhaltcl -f 五、停止某一节点:cmhaltnode <nodename > 六、启动某一节点:cmrunnode <nodename > 七、在一个节点停止一个包:cmhaltpkg -n node pkg 八、在一个节点启动一个包:cmrunpkg -n node pkg HP UNIX双机常见操作步骤和相关命令 激活锁盘:vgchange -a y /dev/vglock 去激活锁盘:vgchange -a n /dev/vglock 编译生成二进制配置文件:# cmapplyconf -v -C /etc/cmcluster/cmcluster.asc 配置双机软件包 修改以下主要文件:scupkg.asc control.sh spy.sh 同步两边节点的PKG配置文件 编译生成PKG:cmapplyconf -v -P /etc/cmcluster/scupkg/scupkg.asc 启动双机系统: 以root用户身份在SCU_A上进行下列操作: scu% su - root # cmruncl -v -f -n SCU_A # cmviewcl 确认CLUSTER在SCU

一个excel(20M)就能干趴你的poi,你信吗?

纵然是瞬间 提交于 2021-01-15 06:04:54
  自从上一篇: 一个普通类就能干趴你的springboot,你信吗? 后,很巧的是这次又发现一个问题,所以有了这篇文章,还是想沿用上篇的”流水帐“的方式查找问题和解决问题。这篇文章主要是因为使用POI导入一个20M的excel发生了OOM(OutOfMemoryError)异常。说来也惭愧,工作了这么多年,还真没导入过这种大小的文件,并且还发生了内存溢出。如果你百度下基本上清一色的告诉你:POI导入excel文件有两种方式,第一种是用户模式,这种模式用起来很简单直观,可以类比xml的dom方式解析(这里只针对excel2007,因为2003本身就有最大条数限制并且目前基本用的很少,这里直接忽略),第二种是event模式,这种通常是网上说的解决POI导入大excel的”万金油“方法,可以类比为xml的sax解析方式。呵呵,我这篇文章首先就是要干趴这种方法 (JVM使用-Xms512m -Xmx512m) 。不信你随便写一个导入接口,导入如下20M大小的execl看看:链接: https://pan.baidu.com/s/1DUrS8ctLPp7Z6imOc1aIUQ 提取码: hd79 。   首先,既然要导入大点的excel2007,那么我们应该稍微了解一下这种文件如何存储数据,我们百度上可以发现,2007其实就是一个压缩包,可以直接修改后缀成zip然后解压打开文件看看,如下

Linux下安装Go环境

半腔热情 提交于 2021-01-10 08:46:18
亲测可用,ubuntu18.04,转载自 https://www.jianshu.com/p/c43ebab25484 安装Go环境 Golang官网下载地址: https://golang.org/dl/ 打开官网下载地址选择对应的系统版本, 复制下载链接 这里我选择的是 go1.11.5.linux-amd64.tar.gz : https://dl.google.com/go/go1.11.5.linux-amd64.tar.gz image.png cd 进入你用来存放安装包的目录,我习惯在 ~ 下面创建个 go 文件夹。 # 在 ~ 下创建 go 文件夹,并进入 go 文件夹 mkdir ~/go && cd ~/go 下载的 go 压缩包 wget https://dl.google.com/go/go1.11.5.linux-amd64.tar.gz 下载完成 执行 tar 解压到 /usr/loacl 目录下(官方推荐),得到 go 文件夹等 tar -C /usr/local -zxvf go1.11.5.linux-amd64.tar.gz 添加 /usr/loacl/go/bin 目录到PATH变量中。添加到 /etc/profile 或 $HOME/.profile 都可以 # 习惯用vim,没有的话可以用命令`sudo apt-get install

Kubernetes集群调度器原理剖析及思考

两盒软妹~` 提交于 2021-01-06 05:23:30
导读 云环境或者计算仓库级别(将整个数据中心当做单个计算池)的集群管理系统通常会定义出工作负载的规范,并使用调度器将工作负载放置到集群恰当的位置。好的调度器可以让集群的工作处理更高效,同时提高资源利用率,节省能源开销。 通用调度器,如Kubernetes原生调度器Scheduler实现了根据特定的调度算法和策略将pod调度到指定的计算节点(Node)上。但实际上设计大规模共享集群的调度器并不是一件容易的事情。调度器不仅要了解集群资源的使用和分布情况,还要兼顾任务分配速度和执行效率。过度设计的调度器屏蔽了太多的技术实现,以至于无法按照预期完成调度任务,或导致异常情况的发生,不恰当的调度器的选择同样会降低工作效率,或导致调度任务无法完成。 本文主要从设计原理、代码实现两个层面介绍Kubernetes的调度器以及社区对其的补充加强,同时对业界常用调度器的设计实现进行比较分析。通过本文,读者可了解调度器的来龙去脉,从而为选择甚至设计实现适合实际场景的调度器打下基础。 注明:本文中代码基于v1.11版本Kubernetes进行分析,如有不当之处,欢迎指正! 调度器的基本知识 1.1 调度器的定义 通用调度的定义是指基于某种方法将某项任务分配到特定资源以完成相关工作,其中任务可以是虚拟计算元素,如线程、进程或数据流,特定资源一般是指处理器、网络、磁盘等,调度器则是完成这些调度行为的具体实现

configure: error: no acceptable C compiler found in $PATH 解决

為{幸葍}努か 提交于 2021-01-04 07:34:56
在安装keepalived时报错 ./configure --prefix=/usr/local/ccbase/keepalived-2.0.15 && make && make install checking for a BSD-compatible install ... /usr/bin/ install - c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /usr/bin/ mkdir - p checking for gawk ... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether make supports nested variables... (cached) yes checking for pkg-config ... /usr/bin/ pkg-config checking pkg-config is at least version 0.9 . 0 ... yes checking for gcc ... no checking for

通过 Ansible role 安装 Jenkins Server

我们两清 提交于 2020-12-31 11:06:25
创建 CI 流程的第一件事应该是安装 CI 工具,本文以最常见的 Jenkins 为例,介绍如何使用 Ansible 自动安装 Jenkins Server。说明:本文的演示环境为 ubuntu 16.04。 Ansible roles(角色) Ansible 中除了 playbook,还有更高层级的抽象,称为 role(角色)。所谓的 role 其实就是把一些 playbook 组织成为一个更简洁、清晰的可重用对象。比如把安装 Jenkins Server 的 playbook 组织成为一个 role。 感谢开源社区,当我们需要安装 Jenkins Server 的时候并不需要自己写一个对应的 role,直接使用大神们写好的就可以了。 Ansible Galaxy Ansible Galaxy 是社区和分享 Ansible role 的地方。直接搜索 jenkins,由 geerlingguy 贡献的 jenkins role 是目前最受欢迎的: ansible-galaxy 命令 通过 ansible-galaxy 命令可以把上面搜索到的 role 安装到本地: $ ansible-galaxy install geerlingguy.jenkins 由于 geerlingguy.jenkins role 依赖 geerlingguy.java role,所以在安装

vscode 配置 go 开发环境

本秂侑毒 提交于 2020-12-24 01:45:31
一、下载vscode并安装 https://code.visualstudio.com/Download 二、下载go 并安装 https://golang.google.cn/dl/ 三、配置环境 1、配置goroot , 这个是go的安装根目录;gopath,这个是go开发的工作目录 2、 配置 path 3、在cmd 命令中输入go version 和 go env 有如下提示,则说明配置成功 4、在gopath 对应的文件夹下新建 bin、pkg、src三个文件夹,在src下面新建 golang.org/x 文件夹 5、在x文件夹下 ,执行 git clone https://github.com/golang/tools.git tools 和 git clone https://github.com/golang/lint lint 下载github上go相关的工具源码;或者直接去 github 上下载对应的源码,解压并命名为 tools 和 lint 文件下放在 x文件夹下 6、在gopath 对应的文件夹下执行 如下命令,则会在bin目录下,生成对应的exe文件 go install github.com/mdempsky/gocode go install github.com/ramya-rao-a/go-outline go install github

ubuntu 18.04 安装go并配置proxy

前提是你 提交于 2020-12-23 10:51:08
1. 安装 ubuntu 更新 sudo apt-get update sudo apt-get -y upgrade 2. 下载 Go 二进制文件 接下来的逻辑步骤是下载 Go 二进制文件,最新软件将在 golang.org/dl/ 上提供,并在终端中的命令下方安装 ubuntu 运行的版本 mkdir tmp cd /tmp wget https://dl.google.com/go/go1.15.6.linux-amd64.tar.gz 解压缩下载的 tar,然后安装到系统中的所需位置。但是通常遵循文档最好将其安装在 /user/local/go 下。在终端中运行以下命令进行安装 sudo tar -xvf go1.15.6.linux-amd64.tar.gz sudo mv go /usr/local 3. 环境设置 我们正在设置的三个 Go 语言环境变量是 GOROOT,GOPATH 和 PATH。 GOROOT 是 Go 在机器中安装的路径 GOPATH 是工作目录的位置。 编辑.bashrc,添加以下几行 # loads go export GOROOT="/usr/local/go" export GOPATH="$HOME/go" export PATH="$GOPATH/bin:$GOROOT/bin:$PATH" export GOPROXY="https: