基于容器 的持续集成平台.docxVIP

  • 4
  • 0
  • 约2.35千字
  • 约 23页
  • 2020-06-20 发布于北京
  • 举报
最新整理资料 文档精选合集 基于容器的持续集成平台 建设 郭宏泽 背景介绍 创业公司,运维需求变化快,资源相对有 限。以速度为中心,快速服务,快速响应, 运维可控,降低成本,稳定安全的运维要 求。 为满足公司要求,简化流程,提高效率, 建设以k8s docker,jenkins等开源软件为基础的一套可以自动配置、注册、发布、服务、测试的持续集成容器平台。 业务架构 版本选型 组件 版本 说明 Kubernetes 1.5.2 主程序 Docker 1.12.6 容器 Flannel 0.7.0 网络组件 Etcd 3.1.0 数据库 Kubernetes-Dashboard 1.6.0 界面 Kubedns 1.9 DNS组件 Harbor 0.5.0 私有镜像库 Heapster 1.2.0 监控 使用心得 每三个月发布一个版本 K8s每个版本将会发布三种功能: ① Aplpha功能,预览功能,不稳定。 ② Beta功能,测试中的功能,不保证稳定。 ③ 正式功能,已经经过测试的稳定功能,不保证 无BUG。 尽可能减少对功能的使用,保持简单。 不要轻易升级你的生产系统。 K8S的设计是面向基础平台,而非用户应用。 平台架构 控制程序 RC管理 class ReplicationController(object): def init (self): self.client = HTTPClient(kubeconfig) def create_replication_controller(self, name, replicas, images): volume_gfs_name = vol-{}.format(name) host_path_mount = /mnt/{}.format(name) volumemount = {name: volume_gfs_name, mountPath: /apps} volumemounts = [volumemount] container_atom = {name: name, image: images, ports: [{containerPort: 22}], imagePullPolicy: Always, volumeMounts: volumemounts, dnsPolicy: ClusterFirst, resources: {limits: {cpu: 500m, memory: 2000Mi}, requests: {cpu: 10m, memory: ‘100Mi}}} 管理ETCD class Etcd(object): def init (self): space = default self.etcd_client = etcd.Client(host=, port=4001) def add_web_app(self, name, namespace, http_port, https_port, host_ip): domain = {}. {}..format( name, name) app = devnginx/{}/{}.format(namespace, name) app_info = {name: name, http_port: http_port, https_port: https_port, domain: domain, host_ip: host_ip} self.etcd_client.set(app, json.dumps(app_info)) Gluster class GFS(object): def __init__(self): self.volume = gfapi.Volume(, gv0) self.volume.mount() def create_dir(self, name): self.volume.mkdir(name, 0755) self.volume.umount() 解决DNS问题 K8s的service IP将被kubedns解析为内部负载均衡地址 的解析将由自定义域名服务器 00解析 其它域名将由公网DNS解析(最多设置三个) 域名发现 在etcd中注册了一个新的键devnginx,在控制程序第一次创 建容器时会向etcd发送容器的相关信息,如: 主机的物理IP地址(NodePort),SSH端口,HTTP端口,所用域 名等。这些信息将提供给confd使用。 Confd 从etcd的devnginx/default/ 中读取所有信息,然后通过nginx模 板生成 nginx配置文件,生成新的配置文件后重启nginx。 Nginx 内部DNS将泛域名解析到nginx,然后n

文档评论(0)

1亿VIP精品文档

相关文档