龙空技术网

K8S三台服务器一键部署总结

数通畅联 3994

前言:

今天大家对“redis和nginx服务可以部署在一台服务器吗”大概比较关切,姐妹们都想要知道一些“redis和nginx服务可以部署在一台服务器吗”的相关资讯。那么小编同时在网络上网罗了一些对于“redis和nginx服务可以部署在一台服务器吗””的相关文章,希望大家能喜欢,小伙伴们一起来了解一下吧!

Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。

在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。近期笔者基于UMC云管理平台进行了3台服务器K8S的搭建并进行了总结,本篇文档主要是对于搭建过程的详细介绍。

总体说明

总体说明主要包括对部署K8S的专有名词进行说明,并对整体的集群架构、部署架构进行介绍,另外对于整体的实现思路进行介绍。

1.名词解释

1.K8S:是一个开源的、用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用更加简单,Kubernetes提供了应用部署、规划、更新,维护的一种机制。

2.Master: K8S的主控组件,对应的对象是Node。

3.Node:Node(节点)是K8S集群中相对于Master而言的工作主机。Node可以是一台物理主机,也可以是一台虚拟机(VM);

4.Pod:Pod是所有业务类型的基础,也是K8S管理的最小单位级,它是一个或多个容器的组合。这些容器共享存储网络和命名空间,以及如何运行的规范。

5.Deployment:是最常用的controller。deployment可以管理pod的多个副本,并确保pod按照期望的状态运行。

6.Services:K8S的 service定义了外界访问一组特定pod的方式。service有自己的IP和端口,service为pod提供了负载均衡。

7.Ingress:Ingress 公开了从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源上定义的规则控制。

8.nfs:网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(Presentation Layer Protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。

9.私有镜像库:在本地(局域网)搭建的一个类似公共仓库的东西,搭建好之后,我们可以将镜像提交到私有仓库中。这样我们既能使用 Docker 来运行我们的项目镜像,也避免了商业项目暴露出去的风险。

2.集群架构

下图是集群架构图:

其核心思想是让 K8S master 节点中的各类组件具备高可用性,消除单点故障。

1.kube-apiserver:对外暴露了 K8S API,是整个集群的访问入口。由于 apiserver 本身无状态,可以通过启动多个实例并结合负载均衡器实现高可用。

2.etcd:用于存储 K8S 集群的网络配置和对象的状态信息,是整个集群的数据中心。可以通过启动奇数个 etcd 实例建立一个冗余的、可靠的数据存储层。

3.kube-scheduler:为新创建的 pod 选择一个供他们运行的节点。一个集群只能有一个活跃的 kube-scheduler 实例,可以同时启动多个 kube-scheduler 并利用领导者选举功能实现高可用。

4.kube-controller-manager:集群内部的管理控制中心。一个集群只能有一个活跃的 kube-controller-manager 实例,可以同时启动多个 kube-controller-manager 并利用领导者选举功能实现高可用。

此外,构建集群的时还需要注意下列问题。

(1)节点上 K8S 进程的可靠性。需要让 kubelet、kube-scheduler、kube-controller-manager 等进程在出现故障后能自动重启。

(2)为 worker node 中的非 pod 进程预留资源,防止他们将与 pod 争夺资源导致节点资源短缺。

3.部署架构

需要部署的程序为:

1台master:

部署:redis单机,NFS服务端,nginx单机 ,K8S,数据库,镜像库,UMC产品;

要求:cpu要大,内存和硬盘适中。

2台worker:

部署:Ingress Controler,K8S,NFS客户端;

要求:cpu,内存和硬盘都要尽可能大些。

4.实现思路

具体实现步骤如下图所示:

1.首先,进行ansible的安装,并配置;

2.通过ansible进行外围产品(mysql、redis、nginx等)的安装;

3.部署UMC并进行初始化配置;

4.通过UMC进行K8S集群的搭建以及产品的部署。

部署ansible

首先,进行ansible的安装及配置,下面进行具体的介绍。

1.前置准备

本章节将介绍ansible的前置准备,包括文件准备和准备过程中会遇到的一般问题,下面进行详细的介绍。

> > > > 文件准备

1.创建目录(master)。

2.只在master服务器/opt/soft目录下,上传ansible+soft.zip、software_pkg.zip。

> > > > 问题解决

问题:解压命令找不到。

解决办法:安装解压命令。

2.安装ansible

解压ansible-install.zip。

ansible仓库默认不在yum仓库中,因此我们需要使用下面的命令启用epel仓库。

启用epel仓库,安装ansible。

3.配置ansible

部署外围产品

准备工作做完后,下面开始进行产品的部署,配置一键部署参数并执行一键部署脚本。

1.初始配置

1.初始化hosts

修改主机文件,根据规划修改对应的IP和名称(即hostname)。

样例说明:

hosts.ini文件,主要修改master的IP,如下图:

2.初始化all.yml

修改多个目录和证书可信任IP。

样例说明:

all.yml修改示例如下:安装目录不用修改,根据实际情况修改其他参数。

2.产品部署

执行soft-deploy.yml文件,等待执行结果。

3.常见问题

问题:缺少libaio软件包。

解决办法:安装libaio软件包。

部署UMC

外围产品部署之后便可以进行UMC云管理平台的部署,UMC可以用于对集成套件的云平台开发、部署、管理、运维进行统一管理,以下为UMC部署说明。

1.数据初始化

部署UMC有几个前置条件,首先本机必须安装jdk,其次必须启动redis。

首先在数据库中创建一个UMC表。

然后打开UMC文件夹进入bin目录,打开startconfigtool.cmd。

修改如下配置,点击初始化数据。

利用xftp,将UMC上传到linux服务器的home/aeai下。

2.UMC配置

进入如下文件夹。

点击hotweb.properties进行编辑。

调整数据库url、用户名、密码、redis路径和redis密码。

进入UMC部署地址,执行如下命令给.sh授权。

3.测试运行

进入UMC部署文件夹,执行如下命令启动UMC。

执行如下命令查看日志。

进入浏览器,输入地址,IP:1010。

部署K8S

在上节中已经进行了UMC的部署与测试,基于UMC云管理平台,我们可以快速地进行K8S的部署,下面进行详细的说明。

1.全局变量

在进行产品配置时,第一步应为全局变量的配置,点击基础配置中的全局变量。

K8S常用配置是配置configmap中查看的命名空间。

点击进入通用配置,通用配置中共有6个选项。

1.UMC服务URL:产品部署地址(此处根据实际情况配置)。

2.心跳间隔事件:用于判断UMC产品容器是否运行。

3.数据源密码:用于数据库储存数据的加密和解密。

4.服务器连接:与服务器进行连接的端口(此处根据实际情况配置)。

5.脚本放置路径:K8S一键部署脚本的存放路径。

2.集群配置

1.访问UMC集群配置,新增集群。

2.基础信息一键生成,生成初始化配置。

3.修改镜像库IP。

4.修改服务器节点。

5.修改连接信息,测试连接。

6.基础信息一键部署,前置检测。

7.开始检测。

8.确认部署。

9.一键部署。

10.开始部署,查看部署日志。

11.部署完成,一键检测。

12.返回,一键打标签。

13.部署授权。

14.一键检测K8S。

15.部署完成。

3.接入配置

1.新增接入配置。

2.添加服务器节点。

3.选择Nginx所在节点。

4.选择节点用途和部署目录。

5.自动补全配置。

6.修改配置参数。

7.修改访问IP和端口。

注意:

(1)该访问地址为UMC访问地址,注意修改后的端口和产品接入配置的端口不能相同;

(2)内外网访问信息不能相同,如果没有外网访问地址,可以将server-outter和location-UMC-outter-default删除。

8.保存、查看、部署、加载。

9.修改nginx所在服务器的firewalld,添加UMC访问端口。

10.访问测试。

11.修改全局变量,修改UMC访问地址。

12.部署完成。

总结分析

通过本次K8S的部署工作,使自身在产品理解、意识形态以及产品发展都有了一些心得,下面进行详细的总结。

1.产品理解

UMC云管理平台用于对数通畅联集成套件的云平台开发、部署、管理、运维进行统一管理,与由不同产品灵活组合形成多种解决方案的容器化套件以及持续集成、持续交付的CI/CD管理机制共同构成 iPaaS平台。由UMC云管理平台连接应用、协同业务,实现业务集成,支撑业务中台;通过连接应用、共享数据,实现数据集成,助力数据中台。

2.意识形态

在日常工作中肯定会遇到很多困难,当遇到困难时要有勇于攻克的精神,不能在遇到困难的时候自己先慌了阵脚,要平复心态。在遇到较难的问题不能快速解决时,不要自己埋头苦干,长时间卡着,要学会借力及时与领导、同事沟通交互,只有这样才能够快速定位问题进而协调资源来定位与解决问题。

3.产品发展

产品不管怎么发展都是一个目的,即是否能解决每个阶段企业面临的困境,帮助企业完善信息化发展,能够抓住每个企业的痛点,这样才能体现出产品的价值,一款好且稳定的产品可以帮助工作人员快速而方便的工作,大大的提高工作效率,才会让客户满意,增加客户对公司的信任度。

后续UMC产品要从功能性、易用性、扩展性等不同角度进行迭代升级,通过项目中客户的需求筛选出产品需要的功能,进而升级产品功能,增强产品的功能性。UMC云管理平台的组件管理功能是后续扩展的一个重点,需要将一些常用组件都预置到UMC平台中,通过一些简单配置就可以直接使用。

本文由@数通畅联原创,欢迎转发,仅供学习交流使用,引用请注明出处!谢谢~

标签: #redis和nginx服务可以部署在一台服务器吗