zoukankan      html  css  js  c++  java
  • 启动、配置、扩容、伸缩、存储,开普勒云平台之使用指南

    本文从启动、配置、扩容、伸缩、存储等方面介绍如何使用开普勒云平台。

    一、Kplcloud是什么?

    kplcloud是一个基于Kubernetes的轻量级PaaS平台,通过可视化的界面对应用进行管理,降低应用容器化的对度,从而减少应用容器化的时间成本。

    Kplcloud已在宜信服务于宜人财富等多个团队,稳定运行了近两年,目前平台已在生产环境跑着上百个应用,近千个容器。

    一、登陆

    登陆可以分为三种,分别是LDAP登陆、邮箱密码登陆、三方授权登陆,咱们没有注册功能。下面对这三种登陆方式进行讲解。

    LDAP与邮箱登陆大同小异,只需要简单的配置即可。

    1.1 LDAP登陆

    在app.cfg文件找到[server]的login_type参数,设置为 ldap并且找到[ldap]块

    [ldap]
    ldap_host = 127.0.0.1
    ldap_port = 389
    ldap_base = DC=yourdomain,DC=corp
    ldap_sseSSL = false
    ldap_bindDN = 
    ldap_bind_password = 
    ldap_user_filter = (userPrincipalName=%s)
    ldap_group_filter = (&(objectCategory=Group))
    ldap_attr = name;mail
    
    [server]
    ;auth_login 
    login_type = ldap

    输入你家LDAP的相关信息即可。

    不要设置auth_login,应该把它注释掉。

    1.2 邮箱登陆

    在app.cfg文件找到[server]的login_type参数,设置为 email

    [server]
    ;auth_login 
    login_type = ldap

    不要设置auth_login,应该把它注释掉。

    1.3 Github授权登陆

    通过Github授权登陆需要的app.cfg将[server]下的 auth_login参数设置为github

    Github创建OAuth App

    • 打开github官网,进入https://github.com/settings/developers, 在左侧菜单栏找到“OAuth Apps”并点击进入
    • 如果没有OAuth App则点击“New OAuth App”按钮创建一个新的OAuth App
    • 创建完成之后 找到我们刚刚创建的OAuth App并进入就可以看到Client ID和Client Secret了
    • 将它们复制下来他贴到app.cfg的[server]块下的client_id和client_secret

    • 设置好Homepage URL和Authorization callback URL

    • 授权登陆需要用户把 https://github.com/settings/profile Public Email 设置上,否则无法授权成功

    1.4 授权登陆

    上面设置好之后, 就可以使用github授权登陆的方式进入平台了,默认分配的空间及权限可以在app.cfg文件下的[server]块下的default_namespace和default_role_id配置。

    [server]
    client_id = balabalabalbabiubiubiu
    client_secret = balabalabalbabiubiubiu
    auth_login = github
    default_namespace = default-app
    default_role_id = 4C

    二、Dashboard

    2.1 工作台

    工作台是我们进入之后看到的第一个页面,主要列出以下一些信息

    • 使用文档
    • 创建应用入口
    • 空间CPU及内存资源使用情况
    • 你可操作的最新的几个应用
    • 该空间下最近应用的动态
    • 您可操作的空间列表
    • 您规属于哪些权限组列表

    2.2 全局监控

    监控只是简易的集群网络,内存、CPU及语言,详情的监控可以从grafana查看。

    2.3 上线统计

    本模块主要是对一些应用发布的情况进行一些统计,如应用失败的应用的次数中断及回滚的次数,点击应用名称可以看应用详情。

    三、应用管理

    3.1 创建应用

    创建一个Java应用

    在创建应用之前,首先我们要做的是在你的git项目上将Dockerfile文件提交上去,并且生成一个Tag或releases版本。

    Dockerfile 参考

    FROM openjdk:latest
    
    COPY xxxx.jar /opt/app
    
    WORKDIR /opt/app
    CMD ["java", "xxx.jar"]

    进入创建应用页面,填写基本信息

    • 进入“创建项目”页面
    • 项目英文名填写项目的“英文名称” 名称的规则: ^[a-z0-9]([-a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
    • 填写“项目描述” 可不填
    • 提交信息,进入第二步

    填写详细信息

    • 选择项目语言Java
    • 项目地址:输入项目的址 kplcloud/hello 填写完后会自动获取项目的tags列表
    • 选择版本:选择获取回来的tags版本
    • POMFILE: pom.xml文件的路径
    • 构建路径:这是Dockerfile放到项目所在的路径地址
    • 容器数量:启动的Pods数量
    • 容器规格:该Pods的最大内存上限
    • 启动方式:jar 启动或 tomcat 启动
    • Args: 选择jar 启动会自动生成简单的 启动命令,如果是tomcat 启动则是其他命令 // 考虑去掉这个选项
    • dubbo 服务: 如果是dubbo服务则勾选,会为其开放20880端口
    • 如果选择了“增加端口” 会列出端口、协议填写
    • 端口及协议:如果选择了则会创建Service进行负载,注意端口名称的格式,必须是xxx-port,可以添加多个端口,但建议一个应用只启动一个端口。

    提交成功之后会显示如下页面,管理就可以在审核页面进行部署。

    (创建Golang/Python/NodeJs/静态应用的步骤请参看开源文档。)

    3.2 自定义启动命令

    应用服务启动可以在多个地方进行调整,以下介绍两种方案,Dockerfile 和 平台详情页调整

    Dockerfile CMD启动方式

    看一下简单的例子:

    FROM hub.kpaas.nsini.com/app/hello:v0.0.3
    
    CMD ["/go/bin/hello"]

    启动命令写在CMD这个后面,如果后面有多个参数可以以逗号隔开例如: CMD ["static-web", "-path", "app", "-port", ":8080"]

    平台详情页调整

    打开应用详情页:

    在详情这一选卡上找到“命令,参数”,点右边的编辑icon,弹出对话框进行填写:

    填定启动的命令和参数,参数用逗号隔开。点提交服务会自动重启动。

    注意:在平台详情页修改的命令会覆盖掉Dockerfile 下的CMD命令。

    3.3 日志采集

    日志采集配置

    在应用详情页中间有一个叫作“日志采集”的模块

    点击右边的“添加”按钮,在弹出的对话框中选择日志的路径及正则规则

    • 文件路径:你日志文件的位置
    • 日志规则:如果没有特殊需求的话默认就好

    提交后服务会自动重启动。

    日志采集

    如果配置了上面采集器,那么它会向服务所在的Pod注入一个Filebeat采集器对应用服务的业务日志进行采集。把采集到的日志入到kafka集群,然后logstash进行消息处理及格式化。

    处理完后入到ES集群,最终我们就可以通过kibana查询到我们的业务日志了。

    当然kafka、logstash、es得您自己去搭建。

    若您可把这几个服务跑在Kubernetes可以参考我给您生成的yaml 直接apply 进去就能跑。

    模版配置

    生成filebeat会用到两个模版,一个是容器的模版FilebeatContainer,另一个是ConfigMap的模版FilebeatConfigMap,您可根据自己的需求调整相应的模版文件。

    3.4 查询构建应用日志

    构建应用的流程是通过创建应用提交一些信息进行处理

    • 从git 仓库获取tags列表
    • 调用jenkins API 将应用的相关参数及版本信息传给它并进行构建
    • Jenkins Job执行Shell命令 执行docker build并上传致Docker 仓库
    • 平台监听到job已经执行完成并成功了,调用kubernetes API更新应用的Image地址
    • 监听升级情况
    • 发送通知

    以上是构建应用的后端流程,而前端就变得比较简单了。只需要在应用详情页点击"Build"按钮,在弹出的对话框中选择相应用的tags版本并提交就行了,如下图:

    查询构建日志

    点击详情页的build日志选项卡,会显示最近的构建记录,点击左侧相应的版本可以查看该版本的构建情况,也可以对正在松建的应用进行中断,如下图:

    3.5 切换服务模式

    服务模式切换比较麻烦,需要您的Kubernetes支持,目前我们使用的是istio的方案,也就是说您需要在你的kubernetes上安装istio的相关服务,并且在我们的模版管理将istio所需要的几个模版配置上。才能开启此功能。

    如果您没有安装Istio,可跳过此章。

    依赖

    在"模版管理"菜单找到Gateway、VritualService、InitContainer、IstioProxy这几个模版,根据自己环境的情况进行调整。

    • Gateway: 本平台设计的模式是一个Namespace所对应一个Gateway,多个Namespace空间就会有多个Gateway,VirtualService选择的是本Namespace下的Gateway。
    • VirtualService: 在生成应用的对外访问入口时与Ingress一起生成。

    使用过Istio的同学应该都知道,要实现Istio所提供的相关功能需要在Pods里注入两个容器,一个是proxy_init,另一个是proxyv2

    • InitContainer: 模版是是初始化设置的yaml,比如将流量通过 iptables的方式转发给 proxy
    • IstioProxy: 模版就是将pods的所有流量代理的yaml

    流程

    下图是我们架构流量进入到我们容器所图:

    • DNS 将域名解析到VIP
    • VIP 将80的流量转发边缘节点的31380端口(这个是IstioIngressGateway控制器的Service的NodePort)
    • 前面我们所说过每个Namespace都会有至少一个对应的Gateway,Gateway的hosts就是xxx.{namespace}.xxx.com
    • VirtualService里的destination.host 就是Service的名称。 以上是kplcloud平台的流程,如果您有需要调整的,只需要修改模版就好,不需要调整代码。

    一键切换

    如下图,在应用详情页面选择“模式”按钮,在弹出的对话框中选择"Service Mesh"选项目,后点击提交后Pods会自动重起。

    你需要在app.cfg文件开起ServiceMesh功能

    [server]
    service_mesh = true

    3.6 扩容

    扩容是对Pods的使用资源进行扩容,例如最大使用的CPU及内存资源。

    在应用的详情页面,在右上角找到“扩容”按钮,并点开。

    在弹出的对话框中拖动CPU和内存,可对其设置一个基础值及一个最大值,如下图:

    选择好相应的值后点击“保存”按钮后,会重起该应用的所有POD。重启后的POD可使用的最大CPU及内存资源就是您刚刚设置的值。

    所对应用以deployment的yaml参数:

    requests:
        limits:
            cpu: 1
            memory: 128Mi
        requests:
            cpu: 500m
            memory: 64Mi

    3.7 伸缩

    伸缩是对该应用所启动的pods数量进行一个控制。

    同样进入应用的详情页页,在右上角找到“伸缩”按钮并点开。

    在弹出来的对话框中选择启动的POD数量,如下图:

    提交之后若数量大于之前的数量,则会启动缺少的POD数量,若小于之前的值,将会逐步减少应用的POD。

    目前给的最大值是8个pod,资源可使用的内存是16G,若您的应用超过我们所设定的最大值。想办法优化吧,64核128G内存都不够用,这种级别的应用不适合用Docker。

    这种级别的应用最好是拆了吧。

    3.8 挂载持久化存储卷

    本平台是通过storageclass来动态创建PV。也就是说咱们依赖于storageclass,如果您的Kubernetes不支持相应的存储试,将无法非常方便的进行挂载。

    目前暂不支持挂载多个PVC,或许以后会更新吧。

    这里演示的是用的NFS进行演示,实际使用时可根据自己的需求配置相应的provisioner,其他配置是一样的不需要调整,只需要在“模版管理” 调整StorageClass和PersistentVolumeClaim模版。

    创建持久化存储卷声明

    在菜单找到“配置与存储”->"持久化存储卷声明"。

    选择应用的空间,并点击“创建”按钮

    在弹出的对话框中会有几个选项目:

    • 名称:存储卷的名称(规则: ^[a-z0-9]([-a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*$)
    • 容量:可以使用的存储区大小,最小单位Mi,最大Ti
    • 访问模式:
      • ReadWriteOnce——该卷可以被单个节点以读/写模式挂载
      • ReadOnlyMany——该卷可以被多个节点以只读模式挂载
      • ReadWriteMany——该卷可以被多个节点以读/写模式挂载
    • 存储类:如果没有存储类请查看创建存储类

    挂载到应用目录

    当存储卷创建好之后就可以在应用进行挂载了。

    同样的进入应用详情页面,找到“持久化存储”选项卡,如图:

    点击“添加”按钮,在弹出来的对话框加输入相关信息:

    • 持久化存储路径:该路径为容器里的挂载路径
    • 持久化存储卷声明:这里会列出您可以使用的存储卷

    填写好路径及选择好存储卷后点击提交,改应用的所有POD的逐步重启动。

    挂载完成之后可以看到所挂载的相关信息:

    最终生成的yaml结果:

    volumes:
    - name: soup-hello-pvc
      persistentVolumeClaim:
        claimName: test-data
    containers:
    - volumeMounts: 
      - name: "soup-hello-pvc"
        mountPath: "/soupzhang"

    四、应用审核部署

    如果配置了邮箱,用户提交审核之后会给管理员发送邮件,邮件里带有审核地址。

    或者您也可以在应用列表里找到未审核的应用进入。

    4.1 审核应用

    提交的基础信息

    生成的kubernetes yaml

    代码库中的Dockerfile文件

    驳回

    如果管理员觉得提交的有问题,可以进行驳回,驳回填定理由会发送至提交者的邮箱。

    若没有啥问题,可以点击“开始部署”按钮。

    开始部署之后应用会自动在jenkins上创建一个job,并自动进行build。

    五、调整容器时间

    在我们项目维护过程中,可能会遇到需要修改服务器时间,平台的工具集功能就可以满足您的需求了~

    在这需要注意,此功能依赖faketime,请在宿主机编译faketime扩展。路径在 /usr/local/lib/libfaketime.so.1

    调整服务时间(菜单栏:工具集->调整时间)

    在项目列表中筛选您要修改的项目,点击 修改时间,确认之后会重启服务生效。

    开源地址:

    作者:宜人金科-财富技术部-创新团队

    来源:宜信技术学院

  • 相关阅读:
    背景(北极狐)
    【面试】java基础
    C#分享海报生成
    jetson nano 4gb记录
    jetson nano 2gb相关问题
    分布式系列-分布式ID
    Mybatis-Plus 多租户模式忽略某个方法
    IDEA 集成 Docker 插件实现一键远程部署 SpringBoot 应用,无需三方依赖,开源微服务全栈有来商城线上部署方式
    《将博客搬至CSDN》
    elk收集docker容器的json格式日志
  • 原文地址:https://www.cnblogs.com/yixinjishu/p/11777120.html
Copyright © 2011-2022 走看看