关于 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

深入 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