zoukankan      html  css  js  c++  java
  • OpenShift3器平台介绍与部署案例

    OpenShift3器平台介绍与部署案例

         “云计算”一词经常与虚拟机联系在一起,但如今许多新兴和快速发展的云技术都使用容器化替代虚拟化,或将两者结合使用。容器占用的空间比虚拟机小得多,而且能够在一台主机上运行多个孤立的应用。相比传统的虚拟化技术,基于容器的虚拟化具备诸多优势。容器被视为一种更快, 更便捷的在云基础设施上部署服务的方法。虽然容器本身具有众多优势,但管理大型的容器化环境着实具有挑战性。因此,许多容器编排工具备受青睐。然而,编排工具不尽相同,应根据具体目的精挑细选。
    容器的部署和终止只需极低的开销和几秒钟的时间。然而,当数据持久性至关重要时,其数据易失性可能会构成严重威胁。容器化的下一个突破将是实现与存储可靠、高效的连接。介绍如何准备、配置、部署和管理基于 Red Hat OpenShift 容器平台 3.6 和其他容器原生存储解决方案的私有云环境。

    对于应用开发团队

    OpenShift 容器平台可为开发人员提供一款理想平台,方便其以自助方式实现配置、构建和部署各种应用及组件。开发人员可利用多种自动化工作流程,如我们的源至镜像 (S2I) 流程,轻松地将版本控制系统
    中的源代码植入可直接运行的 docker 格式容器镜像中。OpenShift 容器平台整合了各种持续整合 (CI)和持续交付 (CD) 工具,是适用于所有企业机构的理想解决方案。

    对于 IT 运营团队

    OpenShift 容器平台为 IT 运营团队提供了安全的、企业级 Kubernetes,从而实现对应用基于策略的控制及应用自动化。通过集群服务、调度和编排,用户还可实现负载均衡和自动扩展。安全功能可防止租户入侵其他应用或底层主机。同时,由于 OpenShift 可将持久存储直接与 Linux® 容器连接,因此 IT 部门可在同一平台上运行有状态和无状态应用。

    image

    image

    Openshift 3.6 部署参考案例

    image

    • Docker,用于构建、发布和运行容器化应用

    • Kubernetes,用于编排和管理容器化应用

    • Etcd*,面向 OpenShift 容器平台集群的键值存储

    • Open vSwitch*,在 OpenShift 容器平台环境中提供软件定义网络 (SDN) 特定的功能

    • Red Hat Ansible* Automation,用于安装和管理OpenShift 容器平台部署

    • HAProxy*,用于路由和负载均衡目的

    • Keepalived*,为 HAProxy 实例提供虚拟 IP 管理


    云原生中持久化卷请求流程

    image


    Red Hat Ansible Automation

    Ansible 是一款强大的 IT 自动化工具。它能够配置各种资源和部署应用。它能够配置和管理设备与操作系统组件。由于其简易性、可扩展性和便携性,本 OpenShift 参考架构在很大程度上基于 Ansible playbook。因此,本参考架构以相同的方式采用和分发功能改进。

    Red Hat 容器原生存储

    Red Hat 容器原生存储可将 OpenShift 容器平台打造成一个完全超级融合的基础设施,存储容器与计算容器共存其中。存储平面以容器化的 Red Hat Gluster Storage 服务为基础,控制着所有存储服务器上的存储设备。Heketi 是容器原生存储架构的一部分,控制着存储集群中的所有成员节点。Heketi 还提供 API,以便于轻松请求容器存储空间。虽然 Heketi 提供了一个面向存储集群的端点,但真正从 OpenShift 客户端调用其 API 的对象叫作 Storage Class。Kubernetes 和 OpenShift 对象描述了集群可用的存储类型,并可在生成持久性数据卷请求时动态发送存储请求。 上图描述了在容器原生存储架构中创建持久性数据卷的基本流程。

    OpenShift系统架构

    Red Hat OpenShift 容器平台是一个完整的容器应用平台, 支持在不同大小的基础设施中以一致的解决方案进行应用开发。Red Hat OpenShift 集成了必要的架构, 流程, 平台和服务, 够帮助开发与运营团队跨越传统的孤立结构构建可助力企业取得成功的应用。Red Hat OpenShift 集群平台由 Kubernetes 容器编排器管理, 后者管理着运行 Docker 容器运行时环境的系统集群中的容器化应用。Red Hat OpenShift 平台的物理配置基于 Kubernetes 集群架构。

    该 Red Hat OpenShift RA 包含五种节点:bastion、master、基础设施、存储和应用,具体介绍如下。

    Bastion 节点

    这是个专用节点,可作为 Red Hat OpenShift 集群的主要部署和管理服务器。它可用作集群管理员执行系统部署和管理操作的登录节点,例如运行 Ansible OpenShift 部署 playbook。Bastion 节点运行 Red Hat Enterprise Linux 7.4。

    OpenShift Master 节点

    OpenShift 容器平台 master 是为整个集群环境执行控制功能的服务器。它负责创建、调度和管理特定于 Red Hat OpenShift 的所有对象。它在一个 OpenShift 二进制文件中包含 API、控制器管理器和调度器功能。人们通常还会在 OpenShift master 上安装 etcd 键值存储,以实现 etcd 和 OpenShift master 之间的低延迟连接。建议在需要高可用性的环境中同时运行 Red Hat OpenShift master 和 etcd。如要做到这一点,可同时运行多个 OpenShift master 并利用外部主动-被动负载均衡器和 etcd 的集群功能。OpenShift master 节点运行 Red Hat Enterprise Linux Atomic Host 7.4.0。

    OpenShift 基础设施节点

    OpenShift 基础设施节点运行基础设施特定的服务:Docker Registry*, HAProxy 路由器和 Heketi。Docker Registry 将应用镜像以容器的形式存储。HAProxy 路由器为 Red Hat OpenShift 应用提供路由功能。它目前通过 Server Name Indication (SNI) 支持 HTTP(S) 流量和 TLS 流量。Heketi 为配置 GlusterFS 持久性存储提供管理 API。还有其他应用和服务也可以部署在OpenShift 基础设施节点上。OpenShift 基础设施节点运行 Red Hat Enterprise Linux Atomic Host 7.4.0。

    OpenShift 应用节点

    OpenShift 应用节点运行开发人员创建和部署的容器化应用。OpenShift 应用 节点将 OpenShift 节点组件整合到一个二进制文件中,可供 OpenShift master 用来调度和控制容器。Red Hat OpenShift 应用节点运行 Red Hat Enterprise Linux Atomic Host 7.4.0。

    OpenShift 存储节点

    OpenShift 存储节点运行容器化 GlusterFS 服务,为需要数据持久性的应用容器配置持久性数据卷。持久性数据卷可由集群管理员手动创建,也可由存储类对象自动创建。OpenShift 存储节点也能够运行容器化应用。Red Hat OpenShift 存储节点运行 Red Hat Enterprise Linux Atomic Host 7.4.0。


    image



    Intel服务器配置示例

    image

    集群服务器    英特尔® 服务器系统 S2600WF    https://ark.intel.com/zh-cn/products/series/89018/ Intel-Server-Board-S2600WF-Family

    物理与逻辑网络

    image

    Arista 7060X 和 7260X 系列是专门构建的 10, 25, 40, 50 和100GbE 数据中心交换机,采用紧凑、节能的外形,能够在 2 层和 3 层达到线速度,并具备先进的软件定义云网络功能。

    7060CX-32S 交换机在 1RU 外形中具有 32 个 QSFP100 和 2 个 SFP+ 端口,能够在功能丰富的 2 层和 3 层提供出色的线速 度性能和高达 6.4Tbps 的整体吞吐量。7060CX-32S 具有出色的配置灵活性,支持最多 32 个 100GbE 端口,每个端口都能够提供广泛的速度选择:4x 10GbE, 4x 25GbE, 1x 40GbE 或 2x 50GbE 以及 1x 100GbE。

    https://www.arista.com/assets/data/pdf/ Datasheets/7060X_7260X_DS.pdf


    Openshift容器平台逻辑架构

    image

    Red Hat OpenShift 容器平台及其逻辑架构的组件。所有 Red Hat OpenShift 节点通过内部网络相连接,可以相互通信。此外,Open vSwitch 还创建了自己的网络来支持 Red Hat OpenShift pod 间通信。考虑到多租户插件,Open vSwitch pod 只能在共用同一项目命名空间的情况下相互通信。Keepalived 在两台基础设施主机上管理着一个虚拟 IP 地址,支持对 Red HatOpenShift web 控制台和应用进行外部访问。存储节点也通过内部网络相连接,建立了一个高度可用, 快速的 Gluster Storage 集群。

    image

    image

    image


    Openshift 3.6 安装的示例host文件

    [OSEv3:children]

    masters

    nodes

    etcd

    lb

    local

    glusterfs

    glusterfs_registry

    [OSEv3:vars]

    ansible_ssh_user=openshift

    ansible_become=true

    openshift_master_cluster_method=native

    openshift_master_cluster_hostname=ocp.example.local

    openshift_master_cluster_public_hostname=ocp.example.com

    openshift_master_default_subdomain=apps.ocp.example.com

    openshift_master_cluster_ip=172.30.4.30

    openshift_master_cluster_public_ip=100.65.0.30

    openshift_master_portal_net=10.0.0.0/16

    deployment_type=openshift-enterprise

    openshift_release=v3.6

    os_sdn_network_plugin_name='redhat/openshift-ovs-multitenant'

    openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider', 'filename': '/etc/origin/master/users.htpasswd'}]

    openshift_master_htpasswd_users={'admin': '$apr1$vC6GcVUP$AHZDU5BAFF6dDMfk.IFzG1'}

    rhel_subscription_user=user@example.com

    rhel_subscription_pass=portal_password

    openshift_hosted_registry_storage_kind=glusterfs

    openshift_hosted_registry_storage_volume_size=200Gi

    openshift_storage_glusterfs_registry_storageclass=True

    local_dns=172.30.4.10

    external_interface=bond0

    external_vlan= 2017

    external_netmask=255.255.240.0

    external_gateway=100.65.0.1

    internal_interface=bond0

    internal_netmask=255.255.255.0

    bastion_ip=172.30.4.10

    internal_gateway={{ bastion_ip }}

    dhcp_first_ip=172.30.4.100

    dhcp_last_ip=172.30.4.150

    root_password=NODE_ROOT_PASSWORD

    [local]

    127.0.0.1

    [masters]

    master1.ocp.example.local containerized=True openshift_schedulable=False openshift_ip=172.30.4.11 openshift_hostname=master1.ocp.example.local

    master2.ocp.example.local containerized=True openshift_schedulable=False openshift_ip=172.30.4.12 openshift_hostname=master2.ocp.example.local

    master3.ocp.example.local containerized=True openshift_schedulable=False openshift_ip=172.30.4.13 openshift_hostname=master3.ocp.example.local

    [nodes]

    master1.ocp.example.local openshift_schedulable=False openshift_ip=172.30.4.11 openshift_hostname=master1.ocp.example.local ipmi=192.168.25.12 serial=BQF973900001

    master2.ocp.example.local openshift_schedulable=False openshift_ip=172.30.4.12 openshift_hostname=master2.ocp.example.local ipmi=192.168.25.13 serial=BQF973900002

    master3.ocp.example.local openshift_schedulable=False openshift_ip=172.30.4.13 openshift_hostname=master3.ocp.example.local ipmi=192.168.25.14 serial=BQF973900003

    infra1.ocp.example.local openshift_node_labels="{'region': 'infra'}" openshift_schedulable=True containerized=True openshift_public_ip=100.65.0.14 openshift_ip=172.30.4.14 openshift_hostname=infra1.ocp.example.local ipmi=192.168.25.15 serial=BQF973900006

    infra2.ocp.example.local openshift_node_labels="{'region': 'infra'}" openshift_schedulable=True containerized=True openshift_public_ip=100.65.0.15 openshift_ip=172.30.4.15 openshift_hostname=infra2.ocp.example.local ipmi=192.168.25.16 serial=BQF973900004

    app1.ocp.example.local containerized=True openshift_schedulable=True openshift_ip=172.30.4.16 openshift_hostname=app1.ocp.example.local ipmi=192.168.25.17 serial=BQF973900007

    app2.ocp.example.local containerized=True openshift_schedulable=True openshift_ip=172.30.4.17 openshift_hostname=app2.ocp.example.local ipmi=192.168.25.18 serial=BQF973900009

    app3.ocp.example.local containerized=True openshift_schedulable=True openshift_ip=172.30.4.18 openshift_hostname=app3.ocp.example.local ipmi=192.168.25.19 serial=BQF973900008

    app4.ocp.example.local containerized=True openshift_schedulable=True openshift_ip=172.30.4.19 openshift_hostname=app4.ocp.example.local ipmi=192.168.25.20 serial=BQF973900011

    app5.ocp.example.local containerized=True openshift_schedulable=True openshift_ip=172.30.4.20 openshift_hostname=app5.ocp.example.local ipmi=192.168.25.21 serial=BQF973900010

    app6.ocp.example.local containerized=True openshift_schedulable=True openshift_ip=172.30.4.21 openshift_hostname=app6.ocp.example.local ipmi=192.168.25.22 serial=BQF973900012

    gluster1.ocp.example.local containerized=True openshift_schedulable=True openshift_ip=172.30.4.22 openshift_hostname=gluster1.ocp.example.local ipmi=192.168.25.23 serial=BQF974100202

    gluster2.ocp.example.local containerized=True openshift_schedulable=True openshift_ip=172.30.4.23 openshift_hostname=gluster2.ocp.example.local ipmi=192.168.25.24 serial=BQF974100201

    gluster3.ocp.example.local containerized=True openshift_schedulable=True openshift_ip=172.30.4.24 openshift_hostname=gluster3.ocp.example.local ipmi=192.168.25.25 serial=BQF974100203

    [etcd]

    etcd1.ocp.example.local containerized=True openshift_ip=172.30.4.11 openshift_hostname=etcd1.ocp.example.local

    etcd2.ocp.example.local containerized=True openshift_ip=172.30.4.12 openshift_hostname=etcd2.ocp.example.local

    etcd3.ocp.example.local containerized=True openshift_ip=172.30.4.13 openshift_hostname=etcd3.ocp.example.local

    [lb]

    lb1.ocp.example.local openshift_hostname=lb1.ocp.example.local openshift_ip=172.30.4.14 openshift_public_ip=100.65.0.14

    lb2.ocp.example.local openshift_hostname=lb2.ocp.example.local openshift_ip=172.30.4.15 openshift_public_ip=100.65.0.15

    [glusterfs]

    app1.ocp.example.local glusterfs_ip=172.30.4.16 glusterfs_devices="[ '/dev/nvme0n1' ]"

    app2.ocp.example.local glusterfs_ip=172.30.4.17 glusterfs_devices="[ '/dev/nvme0n1' ]"

    app3.ocp.example.local glusterfs_ip=172.30.4.18 glusterfs_devices="[ '/dev/nvme0n1' ]"

    app4.ocp.example.local glusterfs_ip=172.30.4.19 glusterfs_devices="[ '/dev/nvme0n1' ]"

    app5.ocp.example.local glusterfs_ip=172.30.4.20 glusterfs_devices="[ '/dev/nvme0n1' ]"

    app6.ocp.example.local glusterfs_ip=172.30.4.21 glusterfs_devices="[ '/dev/nvme0n1' ]"

    [glusterfs_registry]

    gluster1.ocp.example.local glusterfs_ip=172.30.4.22 glusterfs_devices="[ '/dev/sdb', '/dev/sdc', '/dev/sdd', '/dev/sde', '/dev/sdf', '/dev/sdg', '/dev/sdh', '/dev/sdi', '/dev/sdj', '/dev/sdk', '/dev/sdl', '/dev/sdm', '/dev/sdn', '/dev/sdo', '/dev/sdp', '/dev/sdq', '/dev/sdr', '/dev/sds', '/dev/sdt', '/dev/sdu' ]"

    gluster2.ocp.example.local glusterfs_ip=172.30.4.23 glusterfs_devices="[ '/dev/sdb', '/dev/sdc', '/dev/sdd', '/dev/sde', '/dev/sdf', '/dev/sdg', '/dev/sdh', '/dev/sdi', '/dev/sdj', '/dev/sdk', '/dev/sdl', '/dev/sdm', '/dev/sdn', '/dev/sdo', '/dev/sdp', '/dev/sdq', '/dev/sdr', '/dev/sds', '/dev/sdt', '/dev/sdu' ]"

    gluster3.ocp.example.local glusterfs_ip=172.30.4.24 glusterfs_devices="[ '/dev/sdb', '/dev/sdc', '/dev/sdd', '/dev/sde', '/dev/sdf', '/dev/sdg', '/dev/sdh', '/dev/sdi', '/dev/sdj', '/dev/sdk', '/dev/sdl', '/dev/sdm', '/dev/sdn', '/dev/sdo', '/dev/sdp', '/dev/sdq', '/dev/sdr', '/dev/sds', '/dev/sdt', '/dev/sdu' ]"

    [arista]

    arista-1 ansible_host=192.168.25.2 ansible_user=admin ansible_password=SWITCH_ADMIN_PASSWORD

    arista-2 ansible_host=192.168.25.3 ansible_user=admin ansible_password=SWITCH_ADMIN_PASSWORD



    今天先到这儿,希望对云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管理,团队建设 有参考作用 , 您可能感兴趣的文章:
    领导人怎样带领好团队
    构建创业公司突击小团队
    国际化环境下系统架构演化
    微服务架构设计
    视频直播平台的系统架构演化
    微服务与Docker介绍
    Docker与CI持续集成/CD
    互联网电商购物车架构演变案例
    互联网业务场景下消息队列架构
    互联网高效研发团队管理演进之一
    消息系统架构设计演进
    互联网电商搜索架构演化之一
    企业信息化与软件工程的迷思
    企业项目化管理介绍
    软件项目成功之要素
    人际沟通风格介绍一
    精益IT组织与分享式领导
    学习型组织与企业
    企业创新文化与等级观念
    组织目标与个人目标
    初创公司人才招聘与管理
    人才公司环境与企业文化
    企业文化、团队文化与知识共享
    高效能的团队建设
    项目管理沟通计划
    构建高效的研发与自动化运维
    某大型电商云平台实践
    互联网数据库架构设计思路
    IT基础架构规划方案一(网络系统规划)
    餐饮行业解决方案之客户分析流程
    餐饮行业解决方案之采购战略制定与实施流程
    餐饮行业解决方案之业务设计流程
    供应链需求调研CheckList
    企业应用之性能实时度量系统演变
    Openshift与Kubernetes的区别

    如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:

    MegadotnetMicroMsg_thumb1_thumb1_thu[2]

    作者:Petter Liu
    出处:http://www.cnblogs.com/wintersun/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 该文章也同时发布在我的独立博客中-Petter Liu Blog。

  • 相关阅读:
    click事件——背景高亮
    color——RGB转16进制
    导航栏高亮设置
    layui table 渲染完成后,怎样拿到表个里的所有数据
    解决 AttributeError: 'dict' object has no attribute 'has_key' 错误的方法
    2019年总结:醒悟还为时不晚
    Worker Services读取配置后,发布Windows出现的问题及解决
    C# 读取配置(详细操作,让我们一起共同成长)
    程序不包含适合于入口点的静态“Main”方法
    .NET Core3.0-Worker Services
  • 原文地址:https://www.cnblogs.com/wintersun/p/13832824.html
Copyright © 2011-2022 走看看