# Akash测试网挑战5疑难点-非保姆级教程

By [8887.eth](https://paragraph.com/@8887) · 2022-03-13

---

2022年3月13日21点33分的时候看了下供应商列表，连官方供应商一起都才22个。

官网文档有的内容，我就不写到里面了，主要解决一些疑难问题。

前置条件：

1.  建议租用2台ubuntu18的服务器，2核2G内存50G硬盘就够了
    
2.  一个域名
    
3.  创建钱包并导出key.pem文件，官网有教程（也可以不导出成文件，输出私钥到终端，然后到架设服务器的用户根目录新建key.pem）
    
4.  钱包内AKT代币大于50（建议100+），每个租约要冻结50AKT（官方提示是只需要5AKT/租约，大坑）
    

挑战5大概流程（有一定的k8s和容器化经验完成速度更快）：

*   先解析好域名，添加4条记录
    
    *   两条A类型的：nodes，解析到你的两台服务器公网IP
        
    *   一条CNAME：provider，解析到：nodes.xxx.com
        
    *   一条CNAME：\*.ingress，解析到：nodes.xxx.com
        
*   使用ubuntu18的服务器；
    
*   修改root密码，重启sshd服务（两台都要设置）；
    

*   修改ssh配置允许root登录
    

    sudo vim /etc/ssh/sshd_config
    

找到PermitRootLogin， 有可能前面是带#（注释了，未生效） 改为PermitRootLogin yes

![](https://storage.googleapis.com/papyrus_images/56e21fcd071128862770b0b3b58a7c5baeddf0b7d69a564bede4423d9c8aec17.png)

*   重启sshd服务
    
*   断开ssh，重新用root登录进去（以下开始只需要在一台服务器上操作即可）
    
*   按照文档[安装kubernetes集群](https://docs.akash.network/testnet-technical-docs/kubernetes-cluster-for-akash-providers)；
    
*   中间会有设置允许本机使用证书登录其他机器ssh的流程，在当前服务器执行就可以了，一般都有内网IP，建议使用内网IP。
    

    ssh-copy-id -i ~/.ssh/id_rsa.pub root@本机IP
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@另外一台IP
    

![](https://storage.googleapis.com/papyrus_images/fc256ab9202320273fbf137df7df3e6d7e6854836cbea260cbfb97f6d655b927.png)

*   可以使用ssh命令测试下能否免密登录
    
        ssh -i ~/.ssh/id_rsa root@ip
        
    
*   到Ansible Inventory的时候，有个要注意的点。 IPS括号内的内容是你的服务器IP，我用的是内网IP。然后这个有先后顺序，当前登录ssh的服务器IP放在第一位，否则的流程都跑不通的。
    

    cd ~/kubespray
    cp -rfp inventory/sample inventory/akash
    declare -a IPS=(172.19.0.8 172.19.0.11)
    CONFIG_FILE=inventory/akash/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
    

*   最后部署完成后应该是如下提示，failed都为0，否则就是有问题，阅读一下错误日志。
    

![](https://storage.googleapis.com/papyrus_images/fc256ab9202320273fbf137df7df3e6d7e6854836cbea260cbfb97f6d655b927.png)

*   使用命令检查一下k8s的pods状态，会发现两个CrashLoopBackOff。 PS:2022年3月14日19点20分测试，不会出现CrashLoopBackOff的错误了，如果你在搭建的时候没有pods出现CrashLoopBackOff，不需要编辑nodelocaldns的配置了。
    

    kubectl get pods -n kube-system
    

![](https://storage.googleapis.com/papyrus_images/91ae1474d7e47d60be751064b11996b0e327473f21ddb2be5f760f36507b8bcd.png)

*   记下这两个pod的名字。然后去编辑配置。
    

    kubectl edit -n kube-system cm nodelocaldns
    

*   把划红线的loop都删掉，保存退出
    

![](https://storage.googleapis.com/papyrus_images/e064709f890849c6ab0874ed25842eaa612e0f2a4883856534892d4116d7ddd1.png)

*   然后删除pod会自动新建启动
    
        kubectl delete -n kube-system pod nodelocaldns-4d5z8
        kubectl delete -n kube-system pod nodelocaldns-mr7qd
        kubectl get pods -n kube-system
        
    
*   接下来按照文档[成为Akash云供应商](https://docs.akash.network/testnet-technical-docs/build-an-akash-cloud-provider)
    
*   建议在STEP6 Build之前，修改一下 provider/values.yaml，不然启动后host是无法修改的。（不改也无所谓）
    
*   STEP6里面会需要设置4个变量，下面的Uninstall Process是不需要执行的。
    
    *   第一个就是你的钱包地址
        
    *   第二个是你导出私钥的时候用的密码
        
    *   第三个是域名，不需要带任何前缀
        
    *   第四个是别名，可以随便输入
        
*   最后去浏览器打开[区块查询](https://testnet.akash.bigdipper.live/)，输入你的钱包地址去找两条tx。
    
    *   提交到表格的第一条是你的钱包地址
        
    *   第二条是type为MsgCreateProvider的txid
        
    *   第三条是type为MsgCreateBid的txid，price带小数的
        

然后看了下之前其他人发的挑战1-4的教程，有很多问题。按照他们的流程来是不合格的。明天出一篇1-4的疑难点解答。

欢迎各位来我推特讨论各类疑难杂症。

我的推特：@8887\_eth

[https://twitter.com/8887\_eth](https://twitter.com/8887_eth)

---

*Originally published on [8887.eth](https://paragraph.com/@8887/akash-5)*
