需要环境

  • 一台数据库机器
  • 一台ake机器,也就是部署机
  • 三台master
  • 三台global
  • 三台es

注: 所有主机都需要单独挂载一块数据盘

环境准备

  • 将所有主机启动
  • 创建一个外网clb
  • 在clb上进行绑定,32001-32006(挂载三台master)、3306(挂载mysql主机)端口

注:此文档安装docker为1.12.6,使用devicemapper存储

部署mysql

  • 安装docker及docker-compose

      yum -y install docker docker-compose
  • 编辑mysql yaml文件

      vim mysql-master.yaml
      version: '2'
      services:
        mysql:
          network_mode: "bridge"
          ports:
            - "3306:3306"
          container_name: mysql-master
          image: mysql
          environment:
            MYSQL_ROOT_PASSWORD: "xxxx"   ### 密码自行修改
          image:  index.alauda.cn/alaudaorg/mysql-master:latest              ###### 注意此处images镜像的仓库地址需要更换,更换私有环境的镜像仓库IP
          privileged: true
          restart: always
          volumes:
            - /alauda/data/mysql/db:/var/lib/mysql
  • 登录镜像仓库index.alauda.cn

      docker login index.alauda.cn
  • 执行yaml文件,启动数据库

      docker-compose -f mysql-master.yaml up -d
  • 进入数据库修改内容

      docker exec -it mysql-master bash
      mysql -u root -psgOnxrI9WN638Hj8;
      grant replication slave on *.* to 'master'@'%' identified by 'sgOnxrI9WN638Hj8';
      flush privileges;
      show master status;
    
      +-------------------------+----------+--------------+------------------+-------------------+ 
      | File                    | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | 
      +-------------------------+----------+--------------+------------------+-------------------+ 
      | mysql-master-bin.000003 |      455 |              |                  |                   | 
      +-------------------------+----------+--------------+------------------+-------------------+ 
      1 row in set (0.00 sec)

配置安装

注:建议单独挂一块大于100G的磁盘

  • 下载安装包

      scp alauda@xxxxxxx:/mnt/package/ALAUDA-release/ACE_2.3-1xxxxxx.tar.gz  <你的安装包目录>
      密码: xxxxx
      md5sum:xxxx  
      文件大小:  xxx 
  • 所有主机配置hostname及hosts文件,并安装jq sshpass命令(建议使用ansible)

  • 所有主机将单独的磁盘配置成lvm

  • 进入数据目录/data/mnt/package/ace/ace_xxxxxx 编写server_list.json文件

  • 修改所有主机内核参数:

      echo "vm.max_map_count=262144" >> /etc/sysctl.conf;sysctl -p
  • 执行up-alaudaace.sh脚本开始安装

      ./up-alaudaee.sh --network-interface=eth0 --kube_controlplane_endpoint clb-ip --alaudaee-domain-name clb-ip --db-info='DB_HOST=clb-ip;DB_PORT=3306;DB_USER=root;DB_PASSWORD=sgOnxrI9WN638Hj8;DB_ENGINE=mysql' --debug
    
      >注:命令中的用户名及密码可能需要修改,需要改成上边yaml里的
      以下为相关参数
      --network-interface                    用来指定网卡
      --alaudaee-domain-name                 global 的域名或者IP,具体解释请看白皮书
      --kube_controlplane_endpoint           k8s api lb 的地址,k8s api 的 vip 配置到这个 lb 上,具体解释请看白皮书
      --db-info                              数据库信息,其中DB_HOST、DB_PORT、DB_USER、DB_PASSWORD分别是数据库地址、端口、用户名和密码。DB_ENGINE是数据库类型,只有postgreql、mysql 两种
      --master-is-node                       可选参数,如果规划角色的时候,选择 k8s 集群的 master 也作为计算节点,就需要加上这个参数
      --debug                                可选参数,加上之后,ake 部署 k8s 集群的时候,会输出更多的信息,方便排除错误
      --not-deploy-k8s                       可选参数,不部署 k8s 集群,server_list.json 中记录的服务器,就是已经部署成功的 k8s 集群的所有服务器

访问web

  • ace

    http://<–alaudaee-domain-name 参数指定的地址>:32005

    账号/密码:alauda/alauda

  • acp

    https://<–kube_controlplane_endpoint 参数指定的地址>

    账号/密码:admin@alauda.io/password

常见问题

  • 在快启动完成时会有两个Pod一直启动失败,需要手动删除

      [root@xuejian-ace-update-m1 ~]# kubectl get deploy --all-namespaces | grep jaeger
      alauda-system   jaeger-collector             1         1         1            0           21m
      alauda-system   jaeger-query                 1         1         1            0           21m
    
      编辑deploy里的replicas参数,设置为0
      [root@xuejian-ace-update-m1 ~]# kubectl edit deploy -n alauda-system   jaeger-collector
  • k8s安装完成后,在执行helm时会报错

    在所有node上执行clear-all.sh脚本,重新运行脚本

  • upload chart 出错

    找到chart-repo 容器挂载的卷,将权限改成777 即可,挂载的目录一般是安装目录下的ACP/chartmuseum ,执行 cat /alauda/.run_chart_repo.sh 可以看到具体的目录

  • 若没有system项目,或未接入集群信息

    • 在 jakiro 容器中手动运行:

        curl --request POST \
          --url http://127.0.0.1/v1/project-templates/<org_name>/ \
          --header 'authorization: Token <token>' \
          --header 'content-type: application/json' \
          --data '{
            "name": "empty-template",
            "resource_actions": [
                "project_template:create",
                "project_template:delete",
                "project_template:view"
            ],
            "resources": [
      
            ],
            "roles": [
            ]
        }
        '

      注:

      <org_name>:根账号名称

      <token>:根账号token,在用户中心页面查看

      建议删掉jakiro 的数据库,重新给jakiro 做migrate 重新添加跟用户,重新对接ACE 集群。如果对上述操作不熟悉,也可以清空环境重新部署

    • 获取集群secret

        kubectl get secret -n kube-system | awk '/^clusterrole-aggregation-controller-token/{print $1}'
    • 获取集群token并记录

        kubectl get secret -n kube-system 集群secret -o jsonpath='{.data.token}' | base64 -d
    • 删除数据库

        DROP DATABASE jakirodb;
    • 创建数据库

        create database jakirodb;
    • 数据库初始化,进入jakiro容器执行

        python manage.py makemigrations
      
        python manage.py migrate
    • 创建根用户

        curl -X POST \
        -H 'Content-Type:application/json' \
        -d '{
        "username":"'alauda'",
        "password":"alauda",
        "realname":"alauda",
        "email":"alauda@alauda.io",
        "reference_code_id":"cn",
        "city":"beijing",
        "company":"alauda",
        "is_active": true,
        "informed_way":"others",
        "industry":"others",
        "mobile":"123123123123",
        "position":"beijing",
        "currency":"CNY"
        }' http://api-server:32001/v1/auth/register/
    • 接入集群

      点击平台的接入集群按钮

      填写集群地址 (f5的地址或者alb的地址)

      填写集群token (第二步获取的token)