Table of Contents |
---|
Introduction
IEC Type3 mainly focus on Android Application running on edge ARM Cloud architecture with GPU/ vGPU Management. Also, ARM cloud games need to have the basic features of "cloud”, such as flexibility ,
availability everywhere. Based on cloud infrastructure optimized for android application, providing ARM application services.
How to use this document
This document describes the construction, compilation and use of robox Android container environment. Introduce environment configuration, code download, build and compile, and how to use it.
This document is mainly suitable for users who build and compile robox container Android emulation.
Deployment Architecture
Core Figure1 Deployment Main Framework
Robox Figure2 Robox Framework
Pre-Installation Requirements
...
ARM Server satisfies the Arm Server Ready certified.
Software Perequisites
item | comments | method |
os | ubuntu 18.04.3/6(key) |
|
robox | robox is an Android container. | git clone https://github.com/kunpengcompute/robox.git -b release-phase2.3 |
robox Compile and run dependent packages | support for robox compilation and operation. | apt-get install build-essential cmake cmake-data debhelper dbus google-mock libboost-dev libboost-filesystem-dev libboost-log-dev libboost-iostreams-dev libboost-program-options-dev libboost-system-dev libboost-test-dev libboost-thread-dev libcap-dev libdbus-1-dev libdbus-cpp-dev libegl1-mesa-dev libgles2-mesa-dev libglib2.0-dev libglm-dev libgtest-dev liblxc1 libproperties-cpp-dev libprotobuf-dev libsdl2-dev libsdl2-image-dev lxc-dev pkg-config protobuf-compiler |
docker | needed by K8S/Robox | apt-get install docker.io |
Components Version
Anbox | Run Android applications on any GNU/Linux operating system. | |
Grafana | Compose and scale observability with one or all pieces of the stack | 8.4.3 |
Prometheus | Cloud native system performance monitoring | 2.34.0 |
K8s | container orchestration engine for automating deployment, scaling, and management of containerized applications | k8s: v1.23.5; kube-apiserver:v1.21.11 kube-scheduler:v1.21.11 kube-proxy:v1.21.11 etcd:3.4.13-0 coredns:v1.8.0 |
...
Verifying the Setup as defined the Akraino validation feature project plus any additional testing specific to the blue print
Install Main Components
Since Since the components and images required by the project are relatively large, and the process of compilation takes time, we store the compiled images on the github repository.
The link is: https://github.com/ysemi-computing/RoboxWidget.git
git clone https://github.com/ysemi-computing/RoboxWidget.git
After this step, The code structure after downloading is as follows:
RoboxWidget/
├── android.img
├── components│ components
├── grafana-server│ server
├── node_exporter│ exporter
├── perf_exporter│ exporter
└── prometheus
└── README.md
...
ls out/target/product/arm64/
android-info.txt obj previous_build_config.mk mk recovery symbols system.img build_fingerprint.txt cache.img data gen module-info.json ramdisk.img root system userdata.img
...
After this, the image of anbox has been completed, which can be viewed through docker related commands。Type the command below:
sudo docker images | grep robox
android robox e223a91c4b58 6 days ago 860MB
Run robox android system
After the above two scripts are executed, the robox operating environment is ready, and the entire directory structure of robox can be seen as follows
...
start the first continer instance
./robox -v start 1
./robox -v start 1
1 is the id, used by session manager and docker container
...
container name format: instance + id
docker exec -it instance1 sh
step5step4: get android property sys.boot_completed
...
It is troublesome to start anbox robox through commands to deploy in a real environment. Here, the well-known K8S system is used to complete the deployment of anbox robox instances. On this basis, anbox
Robox can be much more effectively deployed, run, monitored, and analyzed for multiple host nodes. Here is k8s cluster setup and container orchestration.
1 Basic Architecture
Figure3 View Of Robox In Cluster
2 K8s Cluster construction
...
The k8s cluster construction can be completed through the warehouse code, you can do as follows
git clone https://gerrit.akraino.org/r/iec.git
cd iec/deploy/compass && bash deployIEC.sh
Here is the current configuration:
- Ubuntu Version:18.04
- Docker: 20+
- k8s: 1.21.3
...
kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml
kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health":"true"}
kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 22h v1.21.3
work Ready <none> 22h v1.21.5
At the same time, we can present the status of the cluster through the k8s visual component. Here we We use kuboard, which it is very convenient to install and use.
then start kuboard with web browser
url:master-ip-address:30080
user:admin
password:Kuboard123
Figure4 View of Robox On Kuboard
Cloud platform monitoring & Analyze
1 Basic Architecture
Figure5 Prometheus and Grafana Mix
2 Bootup basic components
Prometheus Prometheus is only used for monitoring data. The real data needs an exporter. Different exporters export different data,These data are finally presented by prometheus.
Only node exporter and perf exporter are used in this project, these two can be directly downloaded and installed with binary files.
Prometheus is used for data monitoring,
and then a better visual interface is grafana, the data it needs can just be obtained through Prometheus.
This This project only needs to run the script below
https://github.com/ysemi-computing/RoboxWidget/blob/main/scripts/load_components.sh
.
After After the script is executed, the required Prometheus and grafana are downloaded and run in the background
...
3 Analyze data by web browser
Let us explore data that Prometheus has collected about itself. To use Prometheus's built-in expression browser, navigate to http://localhost:9090/graph and choose the "Table" view
within the "Graph" tab. Enter the below into the expression console and then click "Execute":
prometheus_target_interval_length_seconds
Figure6 First Startup View Of Prometheus
In addition, we can log in to grafana through a web browser and see the effect as shown below
url: http://localhost:3000
user: admin
password: admin
Figure7 First Startup View Of Grafana
Developer Guide and Troubleshooting
...