2017-07-04
kubeadm是Kubernetes官方提供的快速安装和初始化Kubernetes集群的工具,目前的还处于孵化开发状态,伴随Kubernetes每个版本的发布都会同步更新。
当然,目前的kubeadm是不能用于生产环境的。
但伴随着Kubernetes每次版本升级,kubeadm都会对集群配置方面的一些实践做调整,通过实验kubeadm我们可以学习到Kubernetes官方在集群配置上一些新的最佳实践。
例如从Kubernetes 1.6开始kubeadm的目标就是可以快速初始化一个更加安全的Kubernetes集群,Kubernetes 1.6进入beat的RBAC,在这版的kubeadm就有了集成。
目前,我们一套Kubernetes 1.6环境的部署,就是先根据kubeadm中的配置实践整理,再编写成ansible role部署的:
...
2017-06-25
现在我们的Harbor使用前置的nginx接入,并在前置nginx上启用了SSL,Harbor的MySQL使用的是我们环境中高可用的MySQL GR集群。
为了我们的团队环境整合到一起,我们还需要为Harbor启用LDAP认证。
Harbor对LDAP支持的很好,只需要修改harbor.cfg:
...
2017-06-24
我们已经快速安装和启动了Harbor,接下来我们进一步探索一些定制化的配置:
- 安全上我们要启用https
- 默认安装的Harbor将数据Volume挂载到主机的/data目录,我们需要做一些定制,本篇我们将其挂载到主机的其他目录。后边为了实现Harbor的高可用,再继续探索将Registry的存储驱动切换为CephFS或S3。
- 将Harbor默认安装启动的mysql docker容器切换为外部的数据库, 我们的环境中已经有高可用的MySQL GR集群。后边我们再继续探索多个节点Harbor使用相同的外部高可用MySQL。
1.配置https访问
#
1.1 使用自签名证书
#
这里还是使用cfssl这个工具生成SSL证书和秘钥。
...
2017-06-23
我们一直使用Docker官方的Registry v2搭建我们的私有Docker镜像仓库。
最近我们打算使用Harbor这个VMware China开源的企业级镜像仓库,实际上Harbor以Docker官方的Registry为基础,在其上增加了管理UI、访问控制等企业用户需要的功能。
...
2017-06-15
本篇整理一下OpenLDAP 2.4的配置。
OpenLDAP 2.4有两种配置方式:
- 通过配置文件
slapd.conf
进行配置,这是旧版本的配置方式
- 通过修改配置数据库(cn=config),这是新的推荐的配置方式
这里我们学习cn=config的方式。cn=config实际上是将slapd.conf中的内容转换成ldif格式,并组成以cn=config
为根的目录树,这棵树会有很多节点,如下图所示:
...
2017-06-06
我们已经用ansible在新的环境中部署了etcd和docker,接下来使用ansible部署Kubernetes 1.6集群。
由于对ansible的使用已经没有什么问题了,因此本篇记录的侧重点是白话描述一下部署的具体步骤,以及部署过程踩的一些坑。
因为前段日子写过一篇《Kubernetes 1.6 高可用集群部署》,本次在编写ansible部署Kubernetes的roles时主要是一这篇文章里手动部署的过程为参考。
...
2017-06-05
之前写过一篇手动搭建etcd 3.1集群的文章《etcd 3.1 高可用集群搭建》,最近要初始化一套新的环境,考虑用ansible自动化部署整套环境,
先从部署etcd 3.2集群开始。
需要部署etcd的主机信息如下:
1node1 192.168.61.11
2node2 192.168.61.12
3node3 192.168.61.13
1.配置管理项目目录结构
#
1├── inventories
2│ ├── staging
3│ │ ├── group_vars
4│ │ │ ├── all.yml
5│ │ │ └── etcd-nodes.yml
6│ │ ├── host_vars
7│ │ │ ├── node1.yml
8│ │ │ ├── node2.yml
9│ │ │ └── node3.yml
10│ │ └── hosts
11│ └── production
12├── roles
13│ ├── common
14│ │ ├── defaults
15│ │ │ └── main.yml
16│ │ └── tasks
17│ │ └── main.yml
18│ ├── etcd3
19│ ├── defaults
20│ │ └── main.yml
21│ ├── files
22│ │ └── make-ca-cert.sh
23│ ├── meta
24│ │ └── main.yml
25│ ├── tasks
26│ │ ├── create_etcd_user.yml
27│ │ ├── etcd-restart.yml
28│ │ ├── etcd-start.yml
29│ │ ├── etcd-stop.yml
30│ │ ├── gen-etcd-certs.yml
31│ │ ├── gen-etcd-systemd.yml
32│ │ ├── install_etcd_bin.yml
33│ │ └── main.yml
34│ └── templates
35│ ├── etcd.conf.j2
36│ └── etcd.service.j2
37├── deploy-etcd3.yml
roles/etcd3/defaults/main.yml:
...
2017-06-04
大型网站系统主要的挑战是庞大的用户流量和高并发的访问,尤其是在一些大促场景下的会流量突增,如果不对这些流量加以管控,任由流量放大冲击系统,将会导致一系列恶劣的问题,例如一些可用的线程资源、连接资源被耗尽,分布式缓存容量被爆掉等,有可能会引起整个系统的雪崩。
当然普通网站系统在出现大量恶意流量和攻击时也会这些问题。
...
2017-06-04
Jenkisn官方提供两种支持方式的版本:
- LTS(Long-term-Support)版本:大约每12周更新一次
- Weekly Release:每周更新一次,每个版本会有一些enhancement和bug fix
我们使用的是Weekly版本,这里记录一下Jenkins版本的升级和插件更新。
最初我们是使用rpm安装的Jenkins,这种安装方式jenkins.war被默认安装到/usr/lib/jenkins下。
升级Jenkins的版本只要将这个目录的jenkins.war替换成新的版本,重启Jenkins服务即可。
...
2017-06-03
Prometheus的AlertManager是一个独立于Prometheus的外部组件,用于监控系统的告警,通过配置文件可以配置一些告警规则,Prometheus会把告警推送到AlertManager。
Alertmanager会对收到的告警信息进行处理,例如进行忽略,禁止,聚合并通过邮件等方式发送告警信息。
...