Kubernetes,简称 K8S,是用 8 代替中间 8 个字符 “ubernete” 而成的缩写,是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes(K8S) 的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes(K8S) 提供了应用部署,规划,更新,维护的一种机制。

K8S 的三个基本特点:

  • 可移植:支持公有云,私有云,混合云,多重云(multi-cloud)
  • 可扩展:模块化,插件化,可挂载,可组合
  • 自动化:自动部署,自动重启,自动复制,自动伸缩/扩展

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

在Kubernetes(K8S)中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。


数据资产管理平台应用在Kubernetes

随着数据资产管理平台在企业中越来越重要,企业需要周期性采集元数据、进行数据核标和数据质量验核。数据资产的数据量级常常有数千万,每周产生一个采集版本,需要对数千万元数据进行核标。同样,数据质量核验极端情况下也会跑出数亿条问题数据。数据计算量很大,通过容器化编排,进行自动部署和扩展可以灵活调整数据资产管理平台的集群性能,保障数据资产管理平台运行顺畅。

Datablau的DAM,DDM最新版支持部署在Kubernetes(K8S)。容器通过为应用程序打包和部署提供轻量级、不可变的基础结构来解决应用程序移动到其他环境就无法正常运行的问题,将应用程序或服务、其依赖项及其配置打包为容器映像。容器技术为开发人员和IT专业人员只需做出少量修改,甚至不需要进行任何修改,即可跨环境部署应用程序。


Kubernetes部署方案

一、部署前准备 

  • Dockerfile
  • Kubernetes(K8S)的Yaml文件
  • Redis、 Elasticsearch、 Neo4j、 DB的存储卷
  • Kubernetes(K8S)环境

二、  Dockerfile

考虑到DAM产品架构和容器化部署的特点,在创建Dockerfile的时候并没有指定JAVA的内存大小,而是在Kubernetes(K8S)的YAML中指定程序运行占有容器内存的比例。

下面是eureka注册中心的Dockerfile

三、  Kubernetes(K8S)的存储卷

为了保证数据的持久性,必须保证数据在外部存储;在docker容器中,为了实现数据的持久性存储,在宿主机和容器内做映射,可以保证在容器的生命周期结束,数据依旧可以实现持久性存储。但是  在Kubernetes(K8S)中,由于pod分布在各个不同的节点之上,并不能实现不同节点之间持久性数据的共享,并且,在 节点故障时,可能会导致数据的永久性丢失。为此,  K8S就引入了外部存储卷的功能。

k8s的存储卷类型:ConfigMap、 Secret、 emptyDir、 hostPath等属于临时性存储,当pod被调度到某个节点上时,它 们随pod的创建而创建,临时占用节点存储资源,当pod离开节点时,存储资源被交还给节点,pod一旦离开它们就失效,不具备持久化存储数据的能力。与此相反,持久化存储拥有独立的生命周期,具备持久化存储能力,其后端一般是独立的存储系统如NFS、 iSCSI、 cephfs、 glusterfs等。

因为我司使用的后台组件都是需要持久化的服务,所以需要使用存储 卷实现持久性。

在使用POD中指定Storage Class Name从而实现PVC的动态供给。当用户创建PVC需要用到PV时, 可以向存储类申请对应的存储空间,存储类会按照需求创建对应的存储空间,这就是PV的动态供给。

四、  Kubernetes(K8S)的YAML文件 

ConfigMap

ConfigMap 是一种 API 对象,用来将非机密性的数据保存到健值对中。使用时可以用作环境变量、 命令行参数或者存储卷中的配置文件。

ConfigMap 将环境配置信息和容器镜像解耦,便于应用配置的修改。当需要储存机密信息时可以使 用 Secret 对象。

为了实现在生产、测试环境中配置文件的变更,我司将一些非敏感配置放在了ConfigMap中,将密 码配置信息放在了配置中心。避免了因配置变更而重复打包镜像的现象。

在实现Elasticsearch三节点集群模式的ConfigMapYaml:

Deployment

Deployment在Pod和ReplicaSet之上,提供了一个声明式定义(declarative)方法,用来替代以 前的ReplicationController来方便的管理应用。你只需要在Deployment对象中描述一个期望的状态,Deployment控制器就会按照一定的控制速率把实际状态改成期望状态。

Deployment是用来管理无状态应用的。所以我司的程序主要是使用Deployment来管理POD的升 级和更新策略的。我司的更新策略使用的是spec.strategy.type=RollingUpdate的滚动式更新策略。

在YAML文件中指定了使用容器的内存,并指定MaxRAMPercentage

可以根据服务使用的侧重点进行调整申请的内存和CPU的大小。

并且为了实现高可用的部署,服务在注入到eureka注册中心时,使用了status.podIP进行注入。

StatefulSet

RC、 Deployment、 DaemonSet都是面向无状态的服务,它们所管理的Pod的IP、名字,启停顺 序等都是随机的,而StatefulSet是什么?顾名思义,有状态的集合,管理所有有状态的服务,比如MySQL、 Redis集群等。

StatefulSet本质上是Deployment的一种变体,在v1.9版本中已成为GA版本,它为了解决有状态服务的问题,它所管理的Pod拥有固定的Pod名称,启停顺序,在StatefulSet中,Pod名字称为网络标识   (hostname) ,还必须要用到共享存储。

在Deployment中,与之对应的服务是service,而在StatefulSet中与之对应的headless service, headless service,即无头服务,与service的区别就是它没有Cluster IP,解析它的名称时将返回该Headless Service对应的全部Pod的Endpoint列表。

除此之外,StatefulSet在Headless Service的基础上又为StatefulSet控制的每个Pod副本创建了 一个DNS域名,这个域名的格式为:

在我司所使用的组件中主要有DB、 Redis、 Elasticsearch、 Neo4j使用到了StatefulSet,其中 Elasticsearch使用了三节点的部署模式,  Redis使用的为三主三从的六节点的使用模式。

在Kubernetes中IP并非为固定的,所以这就给Redis集群,造成了当POD-IP改变的时候无法识别到 新节点,所以在Redis初始化的时候需要将nodes.conf文件进行刷新,如果POD因为某些故障或者其他  原因导致shutdown的话,在重启的时候会将新的POD-IP,重新刷新到新启动的nodes.conf中

从而实现了POD重启后,  Redis集群也可以正常使用。

Datablau产品之Kubernetes(K8S)部署相关推荐

  1. 微服务探索之路03篇-docker私有仓库Harbor搭建+Kubernetes(k8s)部署私有仓库的镜像

    目录: 微服务探索之路01篇.net6.0项目本地win10系统docker到服务器liunx系统docker的贯通 微服务探索之路02篇liunx ubuntu服务器部署k8s(kubernetes ...

  2. 【云原生】Kubernetes(k8s)部署 MySQL+Dubbo+Nacos服务

    一.说明 二.部署 MySQL 三.部署 Nacos 四.部署 Dubbo 服务 4.1. 创建镜像仓库的密钥 4.2. 部署 provider 服务 4.3. 部署 consumer 服务 五.测试 ...

  3. K8S部署单节点zookeeper服务

    要使用Kubernetes (K8s) 部署单节点Zookeeper服务,需要执行以下步骤: 0.创建Zookeeper镜像 该镜像包含Zookeeper二进制文件和配置文件,使用Dockerfile ...

  4. 【CentOS】利用Kubeadm部署Kubernetes (K8s)

    [CentOS]利用Kubeadm部署Kubernetes (K8s)[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体实验流程 1 系统准 ...

  5. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...

  6. Kubernetes -K8S安装部署及SpringCloud应用

    k set image deploy kubia nodejs=luksa/kubia:v2 一.Kubernetes - 一键安装Kubernetes集群 集群方案 使用三台物理机或VMware虚拟 ...

  7. 【云原生 | Kubernetes 系列】1个POD2个container实现Wordpress K8s部署

    1. Wordpress架构 2. 构建wordpress镜像 2.1 构建nginx-base-wordpress镜像 Dockerfile FROM harbor.intra.com/baseim ...

  8. Kubernetes(k8s)快速入门和环境部署

    目录 1. Kubernetes介绍 1.1 应用部署方式演变 1.2 kubernetes简介 1.3 kubernetes组件 1.4 kubernetes概念 2. kubernetes集群环境 ...

  9. 云服务器-异地部署集群服务-Kubernetes(K8S)-网络篇

    重要!!! 注意: 本文使用二进制安装,过程非常繁琐,所以不推荐大家使用这种安装方式.请使用更简洁的kubeadm安装,具体请参考 云服务器-异地部署集群服务-Kubernetes(K8S)-Kube ...

  10. Centos7 安装部署Kubernetes(k8s)集群过程

    1.系统环境 服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.9 Docker version 20.10.12 x86_64 2.前言 如下图描述了软件部 ...

最新文章

  1. 英伟达A100可达V100的3.5倍?
  2. java 简单 语言_将简单的表达式语言放入java中
  3. POJ_3685_Matrix_(二分,查找第k大的值)
  4. visio图中包含公式,插入word后公式模糊终极解决办法
  5. 机器学习:Regression,第一个简单的示例,多项式回归
  6. 云服务器装哪些版本的系统好,云服务器按装什么系统好
  7. JAVA 获取操作系统属性
  8. android achart教程,AChartEngine And Android Studio
  9. 如何看注解的源码_我们为什么要看源码、应该如何看源码?
  10. Alex 的 Hadoop 菜鸟教程: 第17课 更快速的MapReduce - Spark
  11. 如何将word中两栏的A3纸横向排列文档转成标准A4文档
  12. bestcoder#22NPY and girls
  13. 程序猿12个“人艰不拆”的真相
  14. 401832-00-4,Thalidomide-O-PEG4-Amine在EDC或HATU存在下与NHS酯基或羧酸反应的合成化合物
  15. Excel 去除重复行
  16. 网易mumu模拟器去广告纯净版 v1.26.1.1
  17. Rounded Corner Test
  18. 成为阿里云大使的笔记
  19. android mp3 wav转换工具,音频提取转换工具app
  20. 计算机专业毕业设计答辩ppt案例,计算机专业 毕业设计答辩PPT.ppt

热门文章

  1. 百度地图-根据起终点经纬度驾车导航
  2. 分布式存储Ceph之PG状态详解
  3. pageadmin CMS网站建设教程:模板中获取自定义文件的url节点值
  4. Xilinx FPGA的DNA是什么?
  5. java黑洞数字_Java中实现数字黑洞的示例
  6. IDEA 不检查语法错误问题
  7. 移动边缘计算将如何实现元宇宙?
  8. 10个免费的英文企业名称及品牌生成器
  9. 《237 Gbit ps unrolled hardware polar decoder》237 Gbit / s展开的硬件极化解码器
  10. pwnable-mistake