如何在akash主网部署应用以及一些常见错误

in hive-180932 •  4 years ago  (edited)

akash是一个非常有趣的去中心化云计算市场。在这里部署应用非常的简单快捷而且便宜。

之前介绍过测试网的部署,现在介绍一下主网的部署,主网稍微有点儿不一样的地方。

本篇文章使用的系统是ubuntu 18.04

一、必要依赖安装

Tools

Installed commands:
go
akash

首先需要安装go和akash。

go请自行安装,这里简单说一下akash的安装。

主网目前是0.10.1版本,我们可以直接下载二进制文件:

export AKASH_VERSION="v0.10.1"

curl https://raw.githubusercontent.com/ovrclk/akash/master/godownloader.sh | sh -s -- "$AKASH_VERSION"

安装完毕需要自行添加path,或者直接./bin/akash这样使用

安装完毕检查版本

akash version

显示版本为0.10.1为正确,然后继续

之后你需要一个akash的钱包,部署一个应用至少需要5个AKT以及少许矿工费。

关于如何创建钱包请参考这里:

https://docs.akash.network/guides/wallet

然后我们需要输入主网的环境配置:

export AKASH_NODE="http://rpc.akash.forbole.com:80"
export AKASH_VERSION="v0.10.1"
export AKASH_CHAIN_ID="akashnet-2"
export AKASH_NET="https://raw.githubusercontent.com/ovrclk/net/master/mainnet"
export KEYRING_BACKEND="os"

以及你的钱包环境配置(注意keyname是上面创建钱包的时候定义的,地址请输入上面步骤创建或导入的钱包):

export KEY_NAME="keyname"
export ACCOUNT_ADDRESS="akash1xxxxxxxxxxxxxxxxxxxxxxxxxxxx"

全部弄完,最好检查一下环境配置:

echo $AKASH_NODE
echo $AKASH_VERSION
echo $AKASH_CHAIN_ID
echo $AKASH_NET
echo $KEYRING_BACKEND
echo $KEY_NAME
echo $ACCOUNT_ADDRESS

全部都正确返回参数后可以进行下一步

image.png

二、编写deploy.yml

部署应用,你需要先把你的应用做成docker并上传,然后编写deploy.yml。

这里附上我个人写的一个小应用的deploy.yml,我会告诉你这些参数有什么作用。

---
version: "2.0"

services:
  web:
    image: maiyude/tronmoney:v1
    expose:
      - port: 8501
        as: 80
        to:
          - global: true

profiles:
  compute:
    web:
      resources:
        cpu:
          units: 0.1
        memory:
          size: 512Mi
        storage:
          size: 1512Mi
  placement:
    westcoast:
      attributes:
        datacenter: equinix-metal-ams1
      signedBy:
        anyOf:
          - "akash1365yvmc4s7awdyj3n2sav7xfx76adc6dnmlx63"
      pricing:
        web:
          denom: uakt
          amount: 1

deployment:
  web:
    westcoast:
      profile: web
      count: 1

这里是官方的说明文档,可以参考:https://github.com/ovrclk/docs/blob/73411dae2a927c9e946932981f0655324669065b/sdl/README.md

   image: maiyude/tronmoney:v1
   expose:
     - port: 8501
       as: 80
       to:
         - global: true

image: maiyude/tronmoney:v1是镜像的名字,然后下面的是端口映射的设置,这里我是把8501端口映射到了80端口。请根据你使用的端口进行映射。

  compute:
    web:
      resources:
        cpu:
          units: 0.1
        memory:
          size: 512Mi
        storage:
          size: 1512Mi

这里的配置是选择你需要的CPU,内存,硬盘等参数,请根据你的需求进行配置。

      pricing:
        web:
          denom: uakt
          amount: 1

pricing设置的是每区块出价

 attributes:
        datacenter: equinix-metal-ewr1
      signedBy:
       anyOf:
        - "akash1365yvmc4s7awdyj3n2sav7xfx76adc6dnmlx63"

这里是选择你想要使用的服务商,你可以按自己喜欢选择需要的地区。现在官方有几个地区可以选择:

equinix-metal-ewr1:New Jersey, United States
equinix-metal-sjc1:California, United States

你也可以输入下面的命令查询现在的 provider列表

akash query provider list 

image.png

三、部署应用

准备工作做完,开始部署应用

其实部署非常简单,只有两条命令:

第一条命令,创建你的证书:

akash tx cert create client --chain-id $AKASH_CHAIN_ID --keyring-backend $KEYRING_BACKEND --from $KEY_NAME --node $AKASH_NODE --fees 5000uakt

创建完成后,建议去区块浏览器检查是否创建成功。如果报错,后边的步骤会报错。
区块浏览器地址:https://www.mintscan.io/

image.png

Create Certificate显示Success既成功了。

第二条命令,部署应用

akash deploy create deploy.yml --from $KEY_NAME --fees 5000uakt

如果成功,大概会这样显示:

I[2021-03-10|16:53:46.160] tx sent successfully                         hash=780A5FE292F00057BDD0EFB5333096E328BE3899F219EF52C938286FD28FBF43 code=0 codespace= action=create-deployment dseq=27977
I[2021-03-10|16:53:53.611] deployment created                           addr=akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj dseq=27977
I[2021-03-10|16:53:53.611] order for deployment created                 addr=akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj dseq=27977 oseq=1
I[2021-03-10|16:53:59.600] bid for order created                        addr=akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj dseq=27977 oseq=1 price=100uakt
D[2021-03-10|16:53:59.600] Processing bid                               
D[2021-03-10|16:53:59.600] All groups have at least one bid             
I[2021-03-10|16:54:14.600] Done waiting on bids                         qty=1
I[2021-03-10|16:54:14.601] Winning bid                                  gseq=1 price=100uakt provider=akash1ccktptfkvdc67msasmesuy5m7gpc76z75kukpz
I[2021-03-10|16:54:17.735] All expected leases created                  addr=akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj dseq=27977
I[2021-03-10|16:54:17.735] lease for order created                      addr=akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj dseq=27977 oseq=1 price=100uakt
I[2021-03-10|16:54:17.735] Waiting on leases to be ready                leaseQuantity=1
D[2021-03-10|16:54:17.735] Checking status of lease                     lease=akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj/27977/1/1/akash1ccktptfkvdc67msasmesuy5m7gpc76z75kukpz
I[2021-03-10|16:54:18.235] sending manifest to provider                 action=send-manifest provider=akash1ccktptfkvdc67msasmesuy5m7gpc76z75kukpz dseq=27977
D[2021-03-10|16:54:18.353] Could not get lease status                   lease=akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj/27977/1/1/akash1ccktptfkvdc67msasmesuy5m7gpc76z75kukpz err="remote server returned 404"
I[2021-03-10|16:54:26.299] service ready                                lease=akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj/27977/1/1/akash1ccktptfkvdc67msasmesuy5m7gpc76z75kukpz service=web
I[2021-03-10|16:54:26.299] lease ready                                  leaseID=akash1vn06ycjjnvsvl639fet9lajjctuturrtx7fvuj/27977/1/1/akash1ccktptfkvdc67msasmesuy5m7gpc76z75kukpz
{
 "name": "web",
 "available": 1,
 "total": 1,
 "uris": [
  "5tito0kgehbrjefr7ae9ko1pfs.ingress.ams1p0.mainnet.akashian.io"
 ],
 "observed_generation": 1,
 "replicas": 1,
 "updated_replicas": 1,
 "ready_replicas": 1,
 "available_replicas": 1
}

你可以记录下你的dseq=27977和urls。

其中的urls就是你的应用的网址:
http://5tito0kgehbrjefr7ae9ko1pfs.ingress.ams1p0.mainnet.akashian.io/

你可以直接打开使用,也可以把你的设置你的域名cnname到这个地址。

注意刚部署服务器有个部署的时间,刚开始可能是503或者404,请等待一段时间。

另外讲解一下这个步骤发生了什么。这是一系列操作的集合。
里面有Create Deployment、Create Bid、Create Lease等步骤,如果你不想使用集成的办法,你也可以手动的分开进行这些步骤,这里不细说。

至此,应用部署完毕。

部署完成后,每个区块会进行扣费,如果你要取消部署,请输入

akash tx deployment close --node $AKASH_NODE --chain-id $AKASH_CHAIN_ID --dseq $DSEQ  --owner $ACCOUNT_ADDRESS --from $KEY_NAME --keyring-backend $KEYRING_BACKEND -y --fees 5000uakt

取消后,没用完的AKT会给你退回。

更多操作请参考官方文档:https://docs.akash.network/guides/deploy

五、常见错误

  • 错误一:
    bash: /akash: No such file or directory

这是akash的path配置错误或者akash没安装,请检查。

  • 错误二:
    Error: failed to parse log level (main:info,state:info,statesync:info,:error): Unknown Level String: 'main:info,state:info,statesync:info,:error', defaulting to NoLevel

请尝试在命令后边加上:--log_level "info"
如:

akash version --log_level "info"
  • 错误三:
    failed to execute message; message index: 0: 7314204uakt is smaller than 50000000uakt: insufficient funds

akt余额不足,请检查至少需要5个

无法链接provider,这里有多个可能性。我们逐一排除
首先请检查版本akash version,确定版本是0.10.1或者更新的主网版本
然后逐一检查参数是否正确:

echo $AKASH_NODE
echo $AKASH_VERSION
echo $AKASH_CHAIN_ID
echo $AKASH_NET
echo $KEYRING_BACKEND
echo $KEY_NAME
echo $ACCOUNT_ADDRESS

全部参数正确后,检查区块浏览器上是否已经成功创建证书。

以上步骤全部检查完毕,请尝试重新部署。如果再次失败,请取消部署后重试。

如果还是错误,请到官方discord寻求帮助。

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  
  ·  4 years ago Reveal Comment
  ·  4 years ago Reveal Comment
  ·  4 years ago Reveal Comment
  ·  4 years ago Reveal Comment
  ·  4 years ago Reveal Comment