zoukankan      html  css  js  c++  java
  • 开普勒云平台:9个示例解析如何安装依赖

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

    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

    开源地址:

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

    来源:宜信技术学院

  • 相关阅读:
    [Javascript] Broadcaster + Operator + Listener pattern -- 9. Create modify, filter, map operators
    [Javascript] Broadcaster + Operator + Listener pattern -- 8. Pass a Done Symbol when an Async Function is Done
    [Javascript] Broadcaster + Operator + Listener pattern -- 7. Create a broadcaster forOf
    [Javascript] Broadcaster + Operator + Listener pattern -- 6. Create a Buffer to Pair Values Together with Zip
    [Functional Programming] Match Function Requirements with Lodash Partial and Flip
    [Javascript] Broadcaster + Operator + Listener pattern -- 5. Merge (Example)
    [React] Performance: Split state update and component render with Hoc
    [React] Optimize context value
    [React] useAsync
    Nodejs.sublime-build 在sublime3中的配置
  • 原文地址:https://www.cnblogs.com/yixinjishu/p/11770199.html
Copyright © 2011-2022 走看看