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

in STEEM CN/中文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寻求帮助。

Sort:  

如天書般

那也來拍拍

!shop

你好鸭,maiyude!
@sunai赠送1枚SHOP币给你!

目前你总共有: 1枚SHOP币

查看或者交易 SHOP币 请到 steem-engine.net.

无聊吗?跟我猜拳吧! **石头,剪刀,布~**

Hi @maiyude,

@steem-sri.lanka is a curation project based on Sri Lanka. We are 82000 SP now and looking for delegators to lift us to 100K SP.

I would like to invite you to delegate some SP to @steem-sri.lanka . We are returning 80% from the curation rewards back to delegators weekly.

Thank you.

Coin Marketplace

STEEM 0.17
TRX 0.24
JST 0.034
BTC 95924.26
ETH 2810.51
SBD 0.67