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
Figure2 Robox Robox Framework
Pre-Installation Requirements
Hardware Requirements
2*arm64 server:
...
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
...
├── grafana-
...
server
...
├── node_exporter
...
├── perf_exporter
...
└── prometheus
└── README.md
Run Anbox On Ubuntu18.04
Build Android image for anbox
...
After about two hours, the Android image was compiled successfully, and the results are as follows:
ls out/target/product/arm64/
android-info.txt obj previous_build_config.
...
mk recovery symbols system.img build_fingerprint.txt cache.img data gen module-info.json ramdisk.img root system userdata.img
Required packages installation
...
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
├── android
├── binaryFiles
├── cmake
├── cmake_uninstall.cmake.in
├── COPYING.GPL
├── cross-compile-chroot.sh
├── data
├── docs
├── external
├── kernel
├── patch
├── products
├── scripts
├── src
Step1: You can copy the binaryFiles in the robox code to the home directorysome place, then run robox
start the first continer instance
./robox -v start 1
start the second continer instance
./robox -v start 2 1 is the id, used by session manager and docker container
Step2: Check the docker instance process and session manager process.
sudo docker ps | grep instance
...
step3: Check the anbox session manager process
ps -aux | grep session
step4step3: Log in the container and confirm whether the robox instance started successfully.
container name format: instance + id
docker exec -it instance1 sh
step4 instance2 shstep5: get android property sys.boot_completed
getprop | grep sys.boot.completed
[sys.boot_completed]: [1] //1 which means start successfully
Cluster deployment and access by K8S
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
Host Network:
- master: 192.168.10.66
- work: 192.168.10.62
3 Check cluster running status
kubectl 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.
...
We use kuboard,
...
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
Utilization of Images
N/A
Post-deployment Configuration
...
Debugging Failures
N/A
Reporting a Bug
N/A
Uninstall Guide
N/A
Troubleshooting
When the server restarts, the binder_linux module needs to be loaded and installed as follows:
sudo modprobe ashmem_linux
sudo rmmod binder_linux || true; sudo modprobe binder_linux num_devices=254
sudo chmod 777 /dev/ashmem /dev/binder*
If there is an external graphics card, you need to manually disable the built-in graphics card after each server restart. for example:
lspci | grep -in VGA
6:0007:41:00.0 VGA compatible controller: Huawei Technologies Co., Ltd. Hi1710 [iBMC Intelligent Management system chip w/VGA support] (rev 01)
echo 1 > /sys/bus/pci/devices/0007\:41\:00.0/remove
Maintenance
Blue Print Package Maintenance
Software maintenance: N/A
Hardware maintenance:N/A
Blue Print Deployment Maintenance (N/A)
Frequently Asked Questions
N/A
License
N/A
References
N/A
Definitions, acronyms and abbreviations
N/A
When porting an Android app to Anbox Cloud (usually in the form of an APK), there are a few issues that might cause your app to not function properly:
...