百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

开普勒云平台:如何安装依赖

ztj100 2024-11-23 00:02 18 浏览 0 评论

本文介绍开普勒云平台如何安装依赖。

Kplcloud是什么?

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

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

一、Namespace

建议将与开普勒相关的服务独立到一个专有的 Namespace下,在Kubernetes创建新的空间。您可以执行以下命令创建该空间

$ kubectl create namespace kpaas

或执行以下命令 :

$ kubectl apply -f install/kubernetes/namespace.yaml

二、配置持久化存储

2.1 持久化存储的相关配置

这里使用的是NFS的方式进行持久化,如果您有自己的持久化方案可以不使用改方案。

$ kubectl apply -f install/kubernetes/storage/serviceaccount.yaml
$ kubectl apply -f install/kubernetes/storage/rbac.yaml
$ kubectl apply -f install/kubernetes/storage/provisioner.yaml
$ kubectl apply -f install/kubernetes/storage/stroageclass.yaml

2.2 需要调整provisioner

根据您自己的环境调service地址及path。

volumes:
- name: kpl-nfs-client-root
 nfs:
 server: 172.16.0.4
 path: "/home/data"
containers:
- name: kpl-nfs-client-provisioner
 image: quay.io/external_storage/nfs-client-provisioner:latest
 env:
 - name: PROVISIONER_NAME
 value: fuseim.pri/ifs
 - name: NFS_SERVER
 value: 172.16.0.4
 - name: NFS_PATH
 value: "/home/data"

三、安装Redis 单点

为了方便给大家演示,redis也使用的docker版本部署在kubernetes集群上,真实环境请使用独立的redis服务器或集群

如果您还没有初始化持久化存储的,请在这里持久化存储配置好存储类再安装Redis服务。

3.1 安装

$ kubectl apply -f install/kubernetes/redis/statefulset.yaml
$ kubectl apply -f install/kubernetes/redis/service.yaml
$ kubectl apply -f install/kubernetes/redis/configmap.yaml

redis的配置相关信息写在configmap里面 statefulset.yaml

官方redis默认的存在/data目录,所以我们需要将持久化存储目标配置在/data目录下。

四、安装Consul集群

如果您的独立的Consul集群或不想使用Consul的话,不需要执行以下命令。 以下命令是将docker版的consul集群安装在您的kubernetes集群上前提是前必须有持久化存储。

如果您还没有初始化持久化存储的,请在这里持久化存储配置好存储类再安装consul集群。

4.1 安装

$ kubectl apply -f install/kubernetes/consul/configmap.yaml
$ kubectl apply -f install/kubernetes/consul/service.yaml
$ kubectl apply -f install/kubernetes/consul/statefulset.yaml
$ kubectl apply -f install/kubernetes/consul/ingress.yaml

咱们采用的是StatefulSet的方式部署集群,若您已经有了持久化的存储类,将storageClassName修改成您的存储类包就好。

ingress.yaml 提供对外访问的入口

configmap.yaml consul cluster server的配置文件

4.2 注释

这个kubernetes亲和度问题您可能需要关注一下,如果您的kubernetes是单点,请使用以下注释掉的代码。否由会无法起动服务。

 affinity:
 podAntiAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 - labelSelector:
 matchLabels:
 app: consul
 component: server
 topologyKey: kubernetes.io/hostname
# # 单节点用这个
# preferredDuringSchedulingIgnoredDuringExecution:
# - wight: 100
# podAffinityTerm:
# topologyKey: kubernetes.io/hostname

五、安装RabbitMQ服务

为了方便给大家演示,rabbitmq也使用的docker版本部署在kubernetes集群上,真实环境请使用独立的rabbitmq服务器

如果您还没有初始化持久化存储的,请在这里持久化存储配置好存储类再安装rabbitMQ服务。

5.1 安装

$ kubectl apply -f install/kubernetes/rabbitmq/statefulset.yaml
$ kubectl apply -f install/kubernetes/rabbitmq/service.yaml

有状态服务: statefulset.yaml 入口: ingress.yaml

kpass在rabbitmq里需要创建:

  • Vhost: kplcloud
  • Exchanges: kplcloud-exchange
  • User: kplcloud
  • RoutingKey: kplcloud

六、安装Mysql服务

6.1 mysql

为了方便给大家演示,mysql也使用的docker版本部署在kubernetes集群上,真实环境请使用独立的mysql服务器

如果您还没有初始化持久化存储的,请在这里持久化存储配置好存储类再安装mysql服务。

6.2 安装

$ kubectl apply -f install/kubernetes/mysql/statefulset.yaml
$ kubectl apply -f install/kubernetes/mysql/service.yaml
  • MYSQL_ROOT_PASSWORD: mysql用户名
  • MYSQL_ROOT_PASSWORD: mysql密码

statefulset.yaml

本项目需要创建数据库: kplcloud

七、安装ELK

Logstash、ES对机器要的求比较高,建议使用独立的ELK集群负责日志的采集分析

如果您非要使用Docker版的elk的并且部署在Kubernetes集群里,如果还没有初始货持久化存储,先初始化持久化存储的,请在这里持久化存储配置好存储类再安装相关服务服务。

ELK主要包含Elasticsearch、Logstash、Kibana几个服务,kibana和logstash可以做在Deployment,全ES需要持久化,因为日志数据是存在ES上的。

$ kubectl apply -f install/kubernetes/elk/elasticsearch.yaml
$ kubectl apply -f install/kubernetes/elk/logstash.yaml
$ kubectl apply -f install/kubernetes/elk/kibana.yaml
$ kubectl apply -f install/kubernetes/elk/ingress.yaml

八、安装Harbor

镜像仓库就别在跑kubernetes集群上了,似乎也跑不了,找一台容量大的有安装Docker的服务器进行搭建。

安装启动方式,请查看官方说明:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md

8.1 安装

下载Harbor安装文件,我这下的是离线处理,如果下载不了请加代理

$ https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.1.tgz

8.2 解压

$ tar -zxvf harbor-offline-installer-v1.8.1.tgz

8.3 配置harbor文件 harbor.conf

## Configuration file of Harbor
# hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost
hostname = hub.kpaas.nsini.com
# 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl需要设置on
ui_url_protocol = http
# mysql数据库root用户默认密码root123,实际使用时修改下
db_password = root123
max_job_workers = 3 
customize_crt = on
ssl_cert = /data/cert/server.crt
ssl_cert_key = /data/cert/server.key
secretkey_path = /data
admiral_url = NA
# 邮件设置,发送重置密码邮件时使用
email_identity = 
email_server = smtp.mydomain.com
email_server_port = 25
email_username = sample_admin@mydomain.com
email_password = abc
email_from = admin <sample_admin@mydomain.com>
email_ssl = false
# 启动Harbor后,管理员UI登录的密码,默认是Harbor12345
harbor_admin_password = Harbor12345
# 认证方式,这里支持多种认证方式,如LADP、本次存储、数据库认证。默认是db_auth,mysql数据库认证
auth_mode = db_auth
# LDAP认证时配置项
#ldap_url = ldaps://ldap.mydomain.com
#ldap_searchdn = uid=searchuser,ou=people,dc=mydomain,dc=com
#ldap_search_pwd = password
#ldap_basedn = ou=people,dc=mydomain,dc=com
#ldap_filter = (objectClass=person)
#ldap_uid = uid 
#ldap_scope = 3 
#ldap_timeout = 5
# 是否开启自注册
self_registration = on
# Token有效时间,默认30分钟
token_expiration = 30
# 用户创建项目权限控制,默认是everyone(所有人),也可以设置为adminonly(只能管理员)
project_creation_restriction = everyone
verify_remote_cert = on

8.4 启动Harbor,直接执行./install.sh 或 docker-composer都可以

$ ./install.sh
$ docker-compose start

九、Prometheus安装

如果还没有初始货持久化存储,先初始化持久化存储的,请在这里持久化存储配置好存储类再安装相关服务服务。

Prometheus 需要将数据存在本地,所以需要挂载持久化存储。

$ kubectl apply -f install/kubernetes/prometheus/deployment.yaml
$ kubectl apply -f install/kubernetes/prometheus/ingress.yaml
$ kubectl apply -f install/kubernetes/prometheus/configmap.yaml
$ kubectl apply -f install/kubernetes/prometheus/serviceaccount.yaml
$ kubectl apply -f install/kubernetes/prometheus/service.yaml
$ kubectl apply -f install/kubernetes/prometheus/persistentvolumeclaim.yaml

9.1 相关配置

configmap.yaml文件有五个文件:

  • etcd3.rules.yml
  • kube-state-metrics_rules.yml
  • kubelet_rule.yml
  • kubernetes_rule.yml
  • prometheus.yml

在prometheus里引用了上面4个文件。如果您有新的规则可以在这里增加。

在prometheus.yml 文件里有配置 alerting 目前默认发身 alertmanager:9093 ,若您有自己的报警管理平台,修改该地址就行,若还想使用alertmanager的话请看安装AlertManager。

十、安装配置alertmanager

Alertmanager 主要是接收来自prometheus 的alert数据

10.1 安装

可以独立安装不使用Docker,以下案例是部署在kubernetes集群上。

$ kubectl apply -f install/kubernetes/alertmanager/deployment.yaml
$ kubectl apply -f install/kubernetes/alertmanager/ingress.yaml
$ kubectl apply -f install/kubernetes/alertmanager/configmap.yaml
$ kubectl apply -f install/kubernetes/alertmanager/service.yaml

10.2 相关配置

这里采用webhook的方式将报警信息发送到kplcloud平台,kplcloud接收数据处理并入rabbitmq。

apiVersion: v1
data:
 config.yml: |-
 global:
 route:
 group_by: ['alertname', 'cluster', 'service']
 group_wait: 30s
 group_interval: 5m
 repeat_interval: 10m
 receiver: webhook
 receivers:
 - name: 'webhook'
 webhook_configs:
 - url: 'http://kplcloud:8080/public/prometheus/alerts'
kind: ConfigMap
metadata:
 name: alertmanager

kplcloud处理完的数据最终根据相应的规则推送给相应的用户及平台等。

十一、安装kpaas

$ git clone github.com/kplcloud/kplcloud.git

11.1 Docker

$ docker pull kplcloud/kplcloud:latest

11.2 kubernetes

基础服务安装: install.md

若您的其他服务都已经准备好了,可以直接执行以下命令在kubernetes上进行部署开普勒云平台。

$ kubectl apply -f install/kubernetes/kpaas/configmap.yaml
$ kubectl apply -f install/kubernetes/kpaas/deployment.yaml
$ kubectl apply -f install/kubernetes/kpaas/service.yaml
$ kubectl apply -f install/kubernetes/kpaas/ingress.yaml

如果您有私有仓库,记得在master节点上执行一下:

$ kubectl create secret generic regcred --from-file=.dockerconfigjson=/root/.docker/config.json --type=kubernetes.io/dockerconfigjson -n default

在每个namespace下都创建一下,这样k8s就有权限拉取私有仓库的镜像了

Deployment需要把imagePullSecrets加上:

imagePullSecrets:
- name: regcred

开源地址:

  • Github: https://github.com/kplcloud/kplcloud
  • Document: https://docs.nsini.com
  • Demo: https://kplcloud.nsini.com

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

来源:宜信技术学院

相关推荐

sharding-jdbc实现`分库分表`与`读写分离`

一、前言本文将基于以下环境整合...

三分钟了解mysql中主键、外键、非空、唯一、默认约束是什么

在数据库中,数据表是数据库中最重要、最基本的操作对象,是数据存储的基本单位。数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的。每一行代表一条唯一的记录,每一列代表记录中的一个域。...

MySQL8行级锁_mysql如何加行级锁

MySQL8行级锁版本:8.0.34基本概念...

mysql使用小技巧_mysql使用入门

1、MySQL中有许多很实用的函数,好好利用它们可以省去很多时间:group_concat()将取到的值用逗号连接,可以这么用:selectgroup_concat(distinctid)fr...

MySQL/MariaDB中如何支持全部的Unicode?

永远不要在MySQL中使用utf8,并且始终使用utf8mb4。utf8mb4介绍MySQL/MariaDB中,utf8字符集并不是对Unicode的真正实现,即不是真正的UTF-8编码,因...

聊聊 MySQL Server 可执行注释,你懂了吗?

前言MySQLServer当前支持如下3种注释风格:...

MySQL系列-源码编译安装(v5.7.34)

一、系统环境要求...

MySQL的锁就锁住我啦!与腾讯大佬的技术交谈,是我小看它了

对酒当歌,人生几何!朝朝暮暮,唯有己脱。苦苦寻觅找工作之间,殊不知今日之事乃我心之痛,难道是我不配拥有工作嘛。自面试后他所谓的等待都过去一段时日,可惜在下京东上的小金库都要见低啦。每每想到不由心中一...

MySQL字符问题_mysql中字符串的位置

中文写入乱码问题:我输入的中文编码是urf8的,建的库是urf8的,但是插入mysql总是乱码,一堆"???????????????????????"我用的是ibatis,终于找到原因了,我是这么解决...

深圳尚学堂:mysql基本sql语句大全(三)

数据开发-经典1.按姓氏笔画排序:Select*FromTableNameOrderByCustomerNameCollateChinese_PRC_Stroke_ci_as//从少...

MySQL进行行级锁的?一会next-key锁,一会间隙锁,一会记录锁?

大家好,是不是很多人都对MySQL加行级锁的规则搞的迷迷糊糊,一会是next-key锁,一会是间隙锁,一会又是记录锁。坦白说,确实还挺复杂的,但是好在我找点了点规律,也知道如何如何用命令分析加...

一文讲清怎么利用Python Django实现Excel数据表的导入导出功能

摘要:Python作为一门简单易学且功能强大的编程语言,广受程序员、数据分析师和AI工程师的青睐。本文系统讲解了如何使用Python的Django框架结合openpyxl库实现Excel...

用DataX实现两个MySQL实例间的数据同步

DataXDataX使用Java实现。如果可以实现数据库实例之间准实时的...

MySQL数据库知识_mysql数据库基础知识

MySQL是一种关系型数据库管理系统;那废话不多说,直接上自己以前学习整理文档:查看数据库命令:(1).查看存储过程状态:showprocedurestatus;(2).显示系统变量:show...

如何为MySQL中的JSON字段设置索引

背景MySQL在2015年中发布的5.7.8版本中首次引入了JSON数据类型。自此,它成了一种逃离严格列定义的方式,可以存储各种形状和大小的JSON文档,例如审计日志、配置信息、第三方数据包、用户自定...

取消回复欢迎 发表评论: