Kubernetes 的多种调度方法

label 通常在部署对机器有特殊需求的服务的时候,可以使用给 Node 贴上label 的方式来绑定这些服务: # add label kubectl label nodes node-name key1=value1 # show node label kubectl get nodes –show-labels # remove label kubectl label nodes node-name key1- 接着在部署的 YAML 描述文件中spec字段添加nodeSelector即可: spec: nodeSelector: key1: … “Kubernetes 的多种调度方法”

Read More

修改登陆Jenkins后session过期的时间

Jenkins的web默认会话30分钟过期,不过可以修改该值. 因为Jenkins使用Jetty,所以启动war包时,追加参数覆盖原配置即可-DsessionTimeout=<minutes>. 或者也可以配置文件方式,在Jenkins的配置目录下找到web.xml,路径是jenkins/var/WEB-INF/web.xml. 修改该文件,在中添加,值为session的过期分钟数,比如需要6个小时过期就填360. eg: <session-config> <session-timeout>360</session-timeout> </session-config>

Read More

Nginx的HTTP2 PUSH与开启WordPress支持

扯一下 都知道 HTTP 协议都是 Client Request,然后 Server Response 这种一来一回的模式,并且一次请求都要重开一个连接.而 HTTP/2 的第一大特性就是真正意义上的复用一个链接,这减轻了服务端的性能压力;然后 HTTP/2 PUSH 这可以由服务端主动同时推送多个资源,大大加快了一个有大量资源页面的打开速度. 网上有好多关于HTTP/2的介绍,前不久 Nginx 终于宣布在 1.13.9 起加入 HTTP/2 PUSH 的支持,HTTP 服务端的主动推送, 如果是手动编译 Nginx 程序的话,需要添加参数–with-http_v2_modul,这样才可以启用ngx_http_v2_module模块.而我这使用的 Nginx 官方的 Docker Image: nginx:alpine,重新 docker pull nginx:alpine更新最新的即可. 这次加入了 … “Nginx的HTTP2 PUSH与开启WordPress支持”

Read More

用Python+AD域+GitLab 给Jenkins构建失败的项目负责人发送短信通知

流程 公司之前Jenkins的构建结果通知用的是微信公众号推送,但领导觉得短信更靠谱,想要改用短信通知.咱也不敢犟哪个更好,只是默默实现了这些需求. 所幸给公司搞得基建还算是比较全面,让每个员工都接入Windows AD域控,因此也就是说通过AD域接口,可以获取到员工的信息;而 Jenksin 和 GitLab 同样接入了AD域,因此思路流程是这样的: 实现 人生苦短,脚本的事情还是用 Python 分分钟实现. 用了第三方模块python-ldap,python-gitlab,python-jenkins,并且 SMS 的发送由阿里云提供,因此还用到了aliyun-python-sdk-core-v3. 如果 Jobs 用的是 Pipeline 或 Jenkinsfile ,则可以直接在构建流程中判断之前是否失败,但通常很多项目需要使用自由模式,那么就需要对每个阶段进行自定义的判断,这都是比较容易实现的. 根据当前 Job 获取 Git 仓库地址: import jenkins def get_git_by_job(jenkins_server:jenkins.Jenkins, job_name:str)->dict: config = jenkins_server.get_job_config(job_name) … “用Python+AD域+GitLab 给Jenkins构建失败的项目负责人发送短信通知”

Read More

关于 IPVS 以及部署Kubernetes 1.9.2 并启用IPVS和CoreDNS

IPVS简介 IPVS 即IP Virtual Server. 是基于Netfilter,用于IP层(三层)的负载均衡. 它是专门为负载均衡设计的,其底层使用哈希表数据结构,数据处理高效,并且允许无限扩容. IPVS 的架构主要有IP包处理, 负载均衡算法, 参数配置管理这三个模块以及虚拟服务器与真实服务器链表(iptables)组成.可以说 IPVS 它依赖 iptables. 但 IPVS 模式承诺比 iptables 模式有更加高效的性能,也能支持更加庞大的集群. 在 Kubernetes 1.8 的时候,官方加入了 IPVS的支持(alpha). 上周发布的 1.9 中,已经将该特性置为 beta,但默认是 false,需要手动开启. 部署 整体部署的流程和之前写过的 创建基于Fannel网络的Kubernetes 1.7.6 类似,依旧是三个 Master,同时也做 … “关于 IPVS 以及部署Kubernetes 1.9.2 并启用IPVS和CoreDNS”

Read More

2017年最新私有IP段和特殊IP段和保留IP段

Address Block Name RFC Allocation Date Termination Date Source Destination Forwardable Globally Reachable Reserved-by-Protocol 0.0.0.0/8 "This host on this network" [RFC1122], Section 3.2.1.3 1981-09 N/A True False False False True 10.0.0.0/8 Private-Use [RFC1918] 1996-02 N/A … “2017年最新私有IP段和特殊IP段和保留IP段”

Read More

深入 etcd — Raft共识算法

etcd 的高可靠性源于 Raft 共识算法,这类似于 Zookeeper 的 Paxos 强一致性算法, 但是 Paxos 却非常的晦涩难懂,想要彻底理解,估计头发要掉不少. Raft 也是用于保证分布式环境下多节点数据的一致性, 但相较于 Paxos 更加易懂. Raft 的原理可以理解为 Leader Selection 过程的算法.在一个集群中,必然会存在三种可能的角色: Leader :集群中仅有一个,是内部数据同步的发起者与外部数据的入口 Follower : 在集群存在 Leader 的情况下,其余皆是 Follower,它们处理来自 Leader 和 Candidate 的请求 Candidate :用于继承 … “深入 etcd — Raft共识算法”

Read More

深入 etcd — 架构

etcd 是用go语言实现的一个高可用,强一致性的KV存储系统,而由于作为 Kubernetes 的数据存储和同步的重要组件所以最近很火. etcd 作为一个存储系统,可用于配置共享和服务发现,它有以下四个特点: 简单: 基于 HTTP+JSON 的 API 让你用 curl 命令就可以轻松使用 安全: 支持SSL通信认证机制 快速: 支持每实例每秒超一千次的写操作 稳定: 内部使用一致性共识算法 Raft 实现了分布式 etcd 内部架构 etcd 主要分为四个部分: HTTP Server: 用于处理用户发送的API请求以及其它 etcd 节点的同步与心跳信息请求 Store:用于处理 etcd 支持的各类功能的事务. 包括数据索引,节点状态变更,监控与反馈,事件处理与执行等等, … “深入 etcd — 架构”

Read More

使用Python脚本一次性并发拉取Gitlab中所有的仓库

使用Git图形化管理工具SourceTree好多年,去年起SourceTree越更新越辣鸡,简直不能用,转而投了Fork的怀抱,但是两者都没有批量拉取的功能. 然而负责的项目越来越多,而单个拉取仓库更新代码无异是痛苦的. 于是花了点功夫看了下官方的API文档,写了个用Python批量拉取所有仓库的脚本,使用了一个第三方的 Python 模块: python-gitlab. 功能很简单,就是根据账号权限并发拉取所有能拉取的仓库,如果当前目录下不存在就创建;如果已存在仓库,则更新. import platform,os,gitlab,sys,multiprocessing def returnpath(path:str)->str: if ‘Windows’ == platform.system(): path = path.replace(‘/’,’\\’) return path def get_gitlab_groups_projs_path(gl_server:gitlab.Gitlab)->list: projs = [] projs_id = [] projs_tmp = [] def __add(group): for proj … “使用Python脚本一次性并发拉取Gitlab中所有的仓库”

Read More

GitLab 接入AD域验证

公司之前用的都是由我部署的 LDAP , 前些日子升级了成 Windows 的域控,类似 Jenkins, Harbor 和 Gitlab 这些已接入账号管理的都要重新配置,这里记录下 Gitlab 的修改记录. Gitlab 使用的是官方的 Docker 容器,将容器内的/etc/gitlab挂载出来,编辑其中的gitlab.rb文件. 找到gitlab_rails[‘ldap_enabled’] = true,去掉前面的注释,编辑下方的 YAML.load: gitlab_rails[‘ldap_servers’] = YAML.load <<-‘EOS’ main: # ‘main’ is the GitLab ‘provider ID’ of this … “GitLab 接入AD域验证”

Read More