物联网专用云



问候,哈勃!

我们是IBM的IT架构师团队,致力于为各个行业创建和营销工业解决方案。 在空闲时间,我们研究新技术,进行实验并尝试最佳实践。

近年来,物联网的主题非常流行。 我们的客户询问可以在其数据中心本地放置的通用盒解决方案和平台。 最重要的是,期望在这样的“盒子”的基础上,所有新的服务和应用程序都应该非常快地开发,或者说是即时或“昨天”启动。

我们问自己:“如果我们在开放和公共技术上放在一起类似的东西怎么办?”

我们已经讨论并展示了很多有关Docker容器及其基于Kubernetes的管理工具的用法 。 但是,到目前为止,还无法看到所有这些先进技术如何在工业规模上用于业务任务,特别是在物联网下。 因此,让我们填补这一空白。 微服务的概念以及流行的开发方法(DevOps),应用程序的集成和部署(CI / CD)将被认为是稍有不同的任务,并将留给以后使用。

在本文中,我们想谈谈关键组件之一的准备和安装-IBM Cloud Private(实际上是Docker / Kubernetes的工业装配等等),它可以在创建本地物联网平台时充当条件基础架构的核心。 问他为什么?

因为我们承诺使用开放和公共技术(社区的免费版本和社区的支持),所以: hub.docker.com/r/ibmcom/icp-inception

IBM Cloud Private概述


IBM Cloud Private(ICP)是用于本地部署和操作的私有云平台。 ICP是一个集成环境,可让您设计,开发,部署和管理考虑了容器体系结构的本地应用程序。 ICP交付包括基于Kubernetes(K8s)的编排器,本地图像存储以及管理控制台和支持的监视工具。

什么是私有云或私有云?


私有云是一种云计算模型,通常在一个组织的领土和资源上专门为一个组织运行。 这样的云既可以由其自己的专家也可以由第三方员工来管理和维护。 可以在公司的防火墙后面和外部都托管一个类似的平台。 私有云提供了公共云的优势,包括快速部署和可伸缩性,以及易于使用,管理和灵活性。 同时,根据组织的需求,本地版本可提供对系统的更好控制,提高的生产率,可准确预测的成本,增加的安全性要求和灵活的管理功能。 私有云使您可以直接针对特定业务任务和客户安全要求对其进行配置。

在继续安装ICP之前,我们将定义术语:

主节点
  • 监视和控制K8s集群。
  • kubectl:用于管理集群的命令行工具。
  • REST API:与工作节点进行交互的接口。
  • etcd:是一个持久且负担得起的密钥库,用作所有集群数据的K8s备份存储。
  • kube-scheduler:此组件监视没有分配节点的新创建的容器(pod),并选择要在其上运行的节点。
  • 为了稳定运行并确保容错能力,通常需要3个或更多主节点。 在本例中,为了节省资源,我们将所有必要的ICP组件安装在单个专用服务器(单节点)上。

工作节点
  • K8的工作机以前称为Minion。 该节点可以是从主节点接收任务的任何主机,也可以控制在其上启动容器的过程。 根据群集设置,工作节点可以是虚拟机或物理服务器。
  • 以下组件可以在每个节点上运行:
  • kubelet:是工作节点的主要服务。 它监视分配给其节点的容器(用于安全连接的apirusver或通过本地配置文件)。
  • kube-proxy:在每个主机上显示K8s API中定义的服务,支持主机上的网络规则并转发连接。
  • docker:容器启动和管理环境。
  • 监督者:这是一个轻量级的监视过程和控制系统,可用于保持kubelet和docker运行。
  • 熟练:这是一项有助于确保群集级日志记录的服务。

货柜
  • 在隔离环境中运行的应用程序。
  • 可执行进程集和程序的启动映像。

茧(豆荚)
  • 吊舱是一组一个或多个Docker容器,具有一个公共存储/网络以及如何在工作节点上运行容器的规范。
  • 每个Pod都有自己的IP。
  • Pod共享PID名称空间,网络和主机名。

复制控制器
  • 提供可访问性和可伸缩性。
  • 负责控制已部署Pod的数量。
  • 使用描述每个Pod应该包含什么的模板。

标签
  • 分配给K8s资源的元数据,例如:容器,服务。
  • 附加到对象的键值对以进行识别。
  • 这些参数至关重要,因为它们基于具有特定标签的资源集群请求。

服务项目
  • 暴露为端点的容器的集合。
  • 有关K8s群集状态和网络设置的信息,该信息适用于所有工作节点。
  • 使用正确的配置,复制控制器创建的Pod将自动注册为相应的服务。

秘密信息(秘密)
  • 容器要读取或使用的机密信息。
  • 磁盘驱动器的特殊卷将自动安装,以便容器可以读取其中的内容。
  • 每个条目都有自己的路径。

建筑学


下面是一个高级ICP体系结构,按主要,工作和代理节点列出了主要组件。 值得注意的是,本文主要强调Docker容器和Kubernetes管理环境的结合。 这些开源组件是ICP平台的关键和基础。 但是,要完全使用ICP,您还需要软件包管理经理Helm的知识。 K8s用于部署和托管构建于Helm模式中的应用程序实例,这些实例又引用Docker映像。 Helm模式包含有关应用程序详细信息的信息,而Docker映像包含运行应用程序所需的所有软件包。



有关ICP平台的体系结构和组件的详细介绍,可以使用IBM Knowledge Center中的文档链接。

准备工作


为了在20-30分钟内轻松完成ICP安装,需要以下最低硬件资源和Internet访问权限:
•一台主机(物理或虚拟)
•CPU = 8核(或虚拟核)
•RAM = 10 GB(实际上可能需要多达14 GB)
•磁盘= 40 GB(在SSD上一如既往的更快)
注意:如果您有更多的空闲时间和硬件资源,则可以在40-60分钟内将ICP安装在1个虚拟内核i5和10 GB RAM上。

安装方式


下载Ubuntu


下载Ubuntu Server发行版16.04.05 。 具有上述特征的虚拟机或物理机上执行标准OS安装。

获取IP地址


完成操作系统安装过程后,在命令行中,使用以下命令找出虚拟机的IP地址:

ifconfig 

您需要编写/记住以太网IP地址(inet addr)以及Bcast和Mask。 执行相应的命令后,将显示以下参数:

图1. ifconfig命令的示例

SSH连接


如果在设置虚拟机时使用了“轻松安装”功能,则在完全安装Ubuntu Server之后,您需要安装OpenSSH服务器。 您可以使用以下命令执行此操作:

 apt install openssh-server sudo systemctl enable sshd 

执行适当的命令后,您将能够使用SSH连接到虚拟机。 根据操作系统的不同,可以使用不同的连接方法。 对于Windows,可以使用流行的PuTTY工具;对于MacOS,可以在终端中使用ssh命令。


图2. Windows下通过PuTTY的连接示例

下一步是为超级用户(root)设置密码:

 sudo -i passwd 


图3.为root用户设置新密码

网络接口更新


在配置了通过SSH进行连接的功能并更新了超级用户密码之后,我们需要配置网络接口以确定静态网络参数。 这是通过以下命令完成的:

 nano /etc/network/interfaces 

我们根据在ifconfig命令期间获得的信息来更新网络接口(主网络接口)的设置,我们的示例如下所示:

 auto ens33 iface ens33 inet static address 192.168.175.7 netmask 255.255.255.0 network 192.168.175.0 broadcast 192.168.175.255 gateway 192.168.175.2 dns-nameservers 192.168.175.2 8.8.8.8 

注意:正确指定DNS服务器非常重要,因为后续安装ICP组件必须访问Internet。


图4.配置网络接口

使用以下步骤保存更新的文件:Ctrl + X,是,按Enter。

为了简化使用超级用户特权(root)登录虚拟机的过程,您需要更改SSH服务配置。 为此,请运行以下命令:

 nano /etc/ssh/sshd_config 

接下来,找到访问权限行并进行相应的编辑:

 PermitRootLogin yes 


图5.更新SSH配置

与上一步一样保存文件:Ctrl + X,是,按Enter。

进行所有更改之后,要应用新参数,则可以完全重新启动虚拟机或重新启动相应的服务(网络和ssh),例如,使用以下命令:

 shutdown -r 0 



 service <service_name> restart 

重新启动计算机后,必须再次通过SSH登录。

组件更新


使用以下命令更新Ubuntu Server(该命令必须以root用户身份运行):

 apt update 

注意:如果更新期间发生错误:“存储库'cdrom:// // Ubuntu-Server 16.04.5 LTS _Xenial Xerus_-版本amd64(20180731)xenial版本'没有发布文件。”。 您必须运行以下命令:

 sudo nano /etc/apt/sources.list 

并注释掉该行:

 deb cdrom:[Ubuntu-Server 16.04.5 LTS … 


图6.纠正可能的错误

接下来,按照先前的操作保存文件:Ctrl + X,是,输入

修复可能的错误后,再次运行update命令,结果应看到类似以下内容:


图7. Ubuntu更新

安装IBM Cloud Private


安装ICP之前,需要编辑主机文件:

 nano /etc/hosts 

将字符串127.0.1.1 ubuntu替换为您的IP地址和任何合适的主机名。

确保该行中的主机名和别名用制表符或空格分隔:

图8.更改主机文件

保存文件:Ctrl + X,是,输入

以下2条命令将允许您更新系统并安装其他模块。

 apt update apt-get install apt-transport-https ca-certificates curl software-properties-common python-minimal jq 

检查终端是否有错误:


图9.安装其他组件

使用以下命令增加最大虚拟内存:

 sysctl -w vm.max_map_count=262144 

K8将不会在启用交换的情况下启动。 您可以使用以下命令禁用它:

 swapoff –a 

注意:前面两个命令将在当前会话中运行。 重新启动时,这些参数将丢失,您需要重新注册。

可以通过以下命令启用加载操作系统时这些参数的应用:

 sed -i '/ swap / s/^/#/' /etc/fstab echo "vm.max_map_count=262144" >> /etc/sysctl.conf 

添加GPG密钥


我们使用以下命令:

 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - 

添加用于安装Docker的存储库


要完成存储库安装,必须运行以下两个命令:

 add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" apt-get update 

安装Docker


使用以下命令来安装Docker(Docker版本17.12.1是IBM Cloud Private 2.1.0.3支持的最高版本):

 apt-get install docker-ce=17.12.1~ce-0~ubuntu 


图10. Docker安装过程

您可以使用以下命令验证Docker的功能:

 docker version 


图11.检查Docker

下载IBM Cloud Private


要从dockerHub资源下载ICP-ce映像(社区版),您需要使用Docker工具箱。 您可以使用以下命令执行此操作:

 docker pull ibmcom/icp-inception:2.1.0.3 


图12.下载ICP

IBM将安装所需的所有基本组件打包到一个软件包中(请注意,如有必要,您可以将版本更改为较新的版本)。 pull命令会将映像上载到本地文件系统(映像将启动以安装ICP)。

创建一个目录并导航到它:

 mkdir /opt/icp cd /opt/icp 

将ICP软件包复制到以下目录:

 docker run -e LICENSE=accept -v "$(pwd)":/data ibmcom/icp-inception:2.1.0.3 cp -r cluster /data 

注意:此Docker工具包命令从指定目录(-v选项)执行Linux复制(cp)命令。 群集目录将在/ opt / icp中创建,其中包含所有必需的文件。

配置SSH密钥


在/ opt / icp / cluster目录中创建新的ssh密钥:

 ssh-keygen -b 4096 -f ~/.ssh/id_rsa -N "" cat ~/.ssh/id_rsa.pub | sudo tee -a ~/.ssh/authorized_keys systemctl restart sshd cp ~/.ssh/id_rsa ./cluster/ssh_key 

检查密钥是否已创建并位于/ opt / icp / cluster文件夹中:

 ls /opt/icp/cluster 


图13.群集文件夹的内容

ICP设置


将集群中每个节点的IP地址添加到/ opt / icp / cluster / hosts文件中(在本例中,我们为/ etc / hosts中指定的每个组件使用相同的IP地址)。 我们使用以下命令执行此操作:

 nano /opt/icp/cluster/hosts 


图14.主机文件的内容

保存文件:Ctrl + X,是,输入

可以在配置文件中找到有关安装选项的详细信息:

 more /opt/icp/cluster/config.yaml 

我们不建议更改默认安装设置。
注意: 2个最重要的安装文件是host和config.yaml,它们描述ICP安装选项。 在多工作人员配置中,必须在工作程序部分中指定IP地址列表。 在单节点模式下安装ICP的当前版本时,主机文件中的IP地址仅会更改。

ICP安装


转到集群目录并运行安装:

 cd /opt/icp/cluster docker run -e LICENSE=accept --net=host -t -v "$(pwd)":/installer/cluster ibmcom/icp-inception:2.1.0.3 install 

根据可用资源,安装可能持续20到60分钟。 如果发生错误(红色消息),请对配置文件进行适当的更改。 有时由于尝试重新连接到尚未启动的组件而导致安装速度变慢(例如,在启动Cloudant或IAM时)。

安装应如下所示:

图15. ICP安装结果

如果出现错误,则可能需要卸载ICP:

 docker run -e LICENSE=accept --net=host -t -v "$(pwd)":/installer/cluster ibmcom/icp-inception:2.1.0.3 uninstall 

在继续下一步之前,请等待约5分钟,以使所有ICP组件成功启动。

按照安装完成后提供的链接,输入ICP控制台(admin / admin):

 https://<ip_address>:8443 


图16.控制面板登录页面

ICP欢迎页面:

图17.控制面板的Web界面

在右上角,选择目录菜单,显示可用应用程序列表:

图18.组件目录

该目录包含应用程序和软件的列表,您可以随意学习它们的描述,但到目前为止,请不要急于部署它们。
我们尚未学习如何正确处理新安装的ICP(不仅通过Web界面,而且还以CLI形式的控制台-命令行界面),连接持久性存储并进行小设置。

总结


总结一下。

我们已在运行Ubuntu Server OS 04/16/05的虚拟机中的一台主机上成功部署了IBM Cloud Private社区版(版本2.1.0.3)。 目前,我们已经亲自验证了在VMware和Hyper-V虚拟机管理程序上的安装,它肯定可以在XenServer上运行,并且VirtualBox和KVM应该没有任何困难。

谁真的渴望进一步投入到ICP的研究中,也就是说,在这里可以很好地选择我们同事的实验室工作: github.com/phthom/IBMCloudPrivate

在即将到来的步骤中-全新安装后,我们只需要对ICP进行一些配置,并开始使用一些有用且接近实际任务的内容即可。

如果Habr社区积极支持这一倡议,那么随着我们研究和实验的进展,我们将为平台的核心填充遥测收集,数据存储,处理,分析,预测,外部程序接口的形成以及用户应用程序创建的必要组件。 因此,开发了一系列此类文章。

等待您的反馈和建议!

同样,我们来自AIXportal.ru的志同道合的人准备了一个精彩的视频剪辑,以在他们的Youtube频道上安装IBM Cloud Private,这样的人会更喜欢这样: youtu.be/eQwOOTzjM24

链接和有用的材料


俄语产品页面
•谁想练习英语,这本书-《 ICP for Dummies 》(2018年版)。 (共40页)
•IBM知识中心的ICP 2.1.0.3白皮书
IBM developerWorks上的开放ICP社区
开发人员的ICP配方

Source: https://habr.com/ru/post/zh-CN426135/


All Articles