一种离线部署kubernetes集群的方法
技术领域
1.本发明涉及容器技术领域,具体的说,是一种离线部署kubernetes集群的方法。
背景技术:2.kubernetes是一个全新的基于容器技术的分布式架构领先方案,在docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。同时kubernetes提供完善的管理工具,涵盖了包括开发、部署测试、运维监控在内的各个环节,在集群管理方面kubernetes将集群中的机器划分为一个master节点和一群工作节点node,其中,在master节点运行着集群管理相关的一组进程kube-apiserver、kube-controller-manager和kube-scheduler,这些进程实现了整个集群的资源管理、pod调度、弹性伸缩、安全控制、系统监控和纠错等管理能力,node作为集群中的工作节点,运行真正的应用程序,在node上kubernetes管理的最小运行单元是pod。node上运行着kubernetes的kubelet、kube-proxy服务进程,这些服务进程负责pod的创建、启动、监控、重启、销毁以及实现软件模式的负载均衡器。虽然kubernetes给我们带来了如此多的好处,但kubernetes集群本身的安装极其复杂,而且其主要安装包均在国外网站,安装一个kubernetes集群并非一件易事,更甚至一些特定安装环境完全没有接入公网,安装kubernetes涉及到的工具、二进制可执行程序、依赖组件以及相关的镜像都无法获取。
技术实现要素:3.本发明的目的在于提供一种离线部署kubernetes集群的方法,用于解决现有技术中kubernetes集群的安装复杂、依赖组件和镜像,受到安装环境限制部署效率低以及无网络环境无法部署的问题。
4.本发明通过下述技术方案解决上述问题:
5.一种离线部署kubernetes集群的方法,包括:
6.步骤s1、制作与kubernetes集群安装有关的操作系统离线软件仓库;
7.步骤s2、制作kubernetes集群安装依赖的容器镜像私有仓库,用于动态更新容器镜像版本以及自动加载离线镜像;
8.步骤s3、开发kubernetes集群安装ansible剧本,用于通过配置文件修改参数,安装实时日志展示服务;
9.步骤s4、制作整体离线安装包,离线部署kubernetes集群:上传整体离线安装包到安装机,单独指定一台安装机不与kubernetes集群节点复用,准备kubernetes集群安装节点环境,配置离线安装机能够免密登录kubernetes集群节点,修改配置文件后一键安装kubernetes集群。
10.全部成功后,通过shell脚本打包一个kubernetes集群整体离线安装包,整体离线安装包用于kubernetes集群安装时需单独指定一台服务器作为集群安装机,安装机不可与kubernetes集群中节点复用,因为集群安装中可能对kubernetes集群节点进行重启,解压
离线安装包进行集群配置后,一键安装集群,整个集群安装过程中无需人工干预。针对无外网访问的环境安装kubernetes集群时,用户只需准备一台安装机,解压制作好的离线包并简单配置kubernetes集群参数就能做到一键自动安装kubernetes集群,且不限制安装kubernetes节点数,还提供实时安装kubernetes集群日志,这样大大提高了企业安装kubernetes集群的效率。
11.所述步骤s1采用createrepo命令制作centos系统离线软件仓库:先清除已缓存软件包,下载kubernetes集群安装过程需要的软件,通过createrepo命令制作centos系统软件仓库。
12.所述步骤s2中采用registry作为容器镜像私有仓库,采用shell开发自动下载加载更新容器镜像私有仓库脚本。
13.所述步骤s3中基于kubespray开发kubernetes集群安装ansible剧本,用于提炼kubernetes集群配置文件并修改参,参数包括集群名、集群版本、master节点列表、node节点列表、所述操作系统离线软件仓库的地址和容器镜像私有仓库的地址。
14.所述步骤s3中采用go语言、c++、python和java中的任意一种语言实现grpc框架,grpc框架对kubernetes集群安装中实时日志数据进行传输,实现实时日志展示服务。
15.所述步骤s4中制作kubernetes集群整体离线安装包包括:通过开发shell脚本连接操作系统离线软件仓库、容器镜像私有仓库中、kubernetes集群安装ansible剧本和实时日志展示服务,实现自动运行操作系统软件仓库、自动运行kubernetes集群安装容器镜像私有仓库并加载离线镜像、kubernetes集群安装ansible剧本接口调用以及开发实时日志展示通道。
16.所述配置文件采用yaml方式,字段包括cluster_name、k8s_version、ssh_user、ssh_port、masters、nodes,其中cluster_name用于设置kubernetes集群名字,k8s_version用于设置kubernetes集群版本,ssh_user用于设置安装机与kubernetes集群节点免密登录系统用户,ssh_port用于设置kubernetes集群节点免密登录所用端口,masters属于数组,设置1到多个kubernetes主控节点,nodes属于数组,用于设置一到多个kubernetes业务节点。
17.本发明与现有技术相比,具有以下优点及有益效果:
18.本发明主要采用go语言与shell脚本结合开发一套能够为kubernetes安装过程中提供本地软件包服务以及镜像服务的系统,从而解决离线安装kubernetes依赖组件以及相关镜像部署效率低、以及在无网络环境中kubernetes无法部署的问题。
附图说明
19.图1为本发明的流程图。
具体实施方式
20.下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
21.实施例1:
22.结合附图1所示,一种离线部署kubernetes集群的方法,包括:
23.步骤s1、制作与kubernetes集群安装有关的操作系统离线软件仓库,不限定操作
系统种类;
24.步骤s2、制作kubernetes集群安装依赖的容器镜像私有仓库,用于动态更新容器镜像版本以及自动加载离线镜像,不限定私有仓库软件类型;
25.步骤s3、开发kubernetes集群安装ansible剧本,用于通过配置文件修改参数,安装实时日志展示服务;
26.步骤s4、制作整体离线安装包,离线部署kubernetes集群:上传整体离线安装包到安装机,单独指定一台安装机不与kubernetes集群节点复用,准备kubernetes集群安装节点环境,配置离线安装机能够免密登录kubernetes集群节点,修改配置文件后一键安装kubernetes集群,整个集群安装过程中无需人工干预。
27.全部成功后,通过shell脚本打包一个kubernetes集群整体离线安装包,整体离线安装包用于kubernetes集群安装时需单独指定一台服务器作为集群安装机,安装机不可与kubernetes集群中节点复用,因为集群安装中可能对kubernetes集群节点进行重启,解压离线安装包进行集群配置后,一键安装集群,整个集群安装过程中无需人工干预。针对无外网访问的环境安装kubernetes集群时,用户只需准备一台安装机,解压制作好的离线包并简单配置kubernetes集群参数就能做到一键自动安装kubernetes集群,且不限制安装kubernetes节点数,还提供实时安装kubernetes集群日志,这样大大提高了企业安装kubernetes集群的效率。
28.实施例2:
29.所述步骤s1采用createrepo命令制作centos系统离线软件仓库:先清除已缓存软件包,下载kubernetes集群安装过程需要的软件,通过createrepo命令制作centos系统软件仓库。采用go语言开发一个简单的http服务来暴露操作系统所依赖的软件包及kubernetes集群二进制下载文件。
30.所述步骤s2中采用registry作为容器镜像私有仓库,采用shell开发自动下载加载更新容器镜像私有仓库脚本,方便重复打包以及更新kubernetes集群依赖镜像的版本。
31.所述步骤s3中基于kubespray开发kubernetes集群安装ansible剧本,用于提炼kubernetes集群配置文件并修改参,参数包括集群名、集群版本、master节点列表、node节点列表、所述操作系统离线软件仓库的地址和容器镜像私有仓库的地址。
32.所述步骤s3中采用go语言、c++、python和java中的任意一种语言实现grpc框架,grpc框架对kubernetes集群安装中实时日志数据进行传输,实现实时日志展示服务,kubernetes集群安装实时日志采用grpc技术开发,使用protobuf二进制编码的数据序列化协议提高日志传输效率。
33.所述步骤s4中制作kubernetes集群整体离线安装包包括:通过开发shell脚本连接操作系统离线软件仓库、容器镜像私有仓库中、kubernetes集群安装ansible剧本和实时日志展示服务,实现自动运行操作系统软件仓库、自动运行kubernetes集群安装容器镜像私有仓库并加载离线镜像、kubernetes集群安装ansible剧本接口调用以及开发实时日志展示通道。
34.所述配置文件采用yaml方式,字段包括cluster_name、k8s_version、ssh_user、ssh_port、masters、nodes,其中cluster_name用于设置kubernetes集群名字,k8s_version用于设置kubernetes集群版本,ssh_user用于设置安装机与kubernetes集群节点免密登录
系统用户,ssh_port用于设置kubernetes集群节点免密登录所用端口,masters属于数组,设置1到多个kubernetes主控节点,nodes属于数组,用于设置一到多个kubernetes业务节点。
35.尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本技术公开的原则范围和精神之内。