【问题标题】:Running android container over GKE - adb is not attached to device在 GKE 上运行 android 容器 - adb 未附加到设备
【发布时间】:2019-12-10 20:21:15
【问题描述】:

我正在尝试通过 GKE 运行 android 模拟器容器。为此,我使用budtmo/docker-android 开源。

首先,我尝试通过 docker 在本地运行它:

$ sudo  docker run --privileged -d -p 6080:6080 -p 5554:5554 -p 4723:4723 -p 5555:5555 -e DEVICE="Samsung Galaxy S6" --name android-container budtmo/docker-android-x86-8.1

然后我连接到设备,使用:

$ adb connect localhost:5555

我看到了设备:

>> $ adb devices
List of devices attached
localhost:5555  device

效果很好!

现在我正在尝试通过 GKE 做同样的事情:

这是吊舱:

apiVersion: v1
kind: Pod
metadata:
  name: android
  labels:
    app: android
spec:
  containers:
  - name: android
    image: budtmo/docker-android-x86-8.1
    securityContext:
      privileged: true   
    ports:
    - containerPort: 6080
    - containerPort: 5554
    - containerPort: 5555
    - containerPort: 4723
    env:
    - name: DEVICE
      value: "Samsung Galaxy S6"

这是服务:

apiVersion: v1
kind: Service
metadata:
  name: android-service
spec:
  ports:
  - port: 6080
    name: serving
    protocol: TCP
  - port: 5555
    name: srv
    protocol: TCP
  - port: 5554
    name: srv2
    protocol: TCP
  - port: 4723
    name: novnc
    protocol: TCP
  selector:
    app: android
  type: LoadBalancer
  loadBalancerIp: "35.X.X.X"

然后我尝试连接到模拟器(从我的计算机),但在它声称连接后,我没有看到任何连接的设备:

>> $ adb connect 35.X.X.X:5555
connected to 35.X.X.X:5555
>> $ adb devices
List of devices attached
*empty*

我也尝试从 GKE 终端本地连接:

adb connect 35.X.X.X:5555
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
connected to 35.X.X.X:5555

再说一遍:

>> $ adb devices
List of devices attached
*empty*     

知道问题出在哪里,我该如何解决?

【问题讨论】:

    标签: android kubernetes google-cloud-platform adb google-kubernetes-engine


    【解决方案1】:

    复制了你的步骤,唯一不同的是:我没有在服务下指定loadBalancerIp

    ---
    apiVersion: v1
    kind: Pod
    metadata:
      name: android
      labels:
        app: android
    spec:
      containers:
      - name: android
        image: budtmo/docker-android-x86-8.1
        securityContext:
          privileged: true
        ports:
        - containerPort: 6080
        - containerPort: 5554
        - containerPort: 5555
        - containerPort: 4723
        env:
        - name: DEVICE
          value: "Samsung Galaxy S6"
    
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: android-service
    spec:
      ports:
      - port: 6080
        name: serving
        protocol: TCP
      - port: 5555
        name: srv
        protocol: TCP
      - port: 5554
        name: srv2
        protocol: TCP
      - port: 4723
        name: novnc
        protocol: TCP
      selector:
        app: android
      type: LoadBalancer
    

    使用提供的 yaml,结果一切正常:

    kubectl get po,svc
    NAME          READY   STATUS    RESTARTS   AGE
    pod/android   1/1     Running   0          14m
    
    NAME                      TYPE           CLUSTER-IP   EXTERNAL-IP     PORT(S)                                                       AGE
    service/android-service   LoadBalancer   10.0.1.238   *.*.*.54   6080:31952/TCP,5555:30822/TCP,5554:30806/TCP,4723:30248/TCP   14m
    

    从本地电脑:

    adb connect *.*.*.54:5555
    already connected to *.*.*.54:5555
    
    adb devices
    List of devices attached
    *.*.*.54:5555   offline
    emulator-5554   device
    localhost:5555  device
    

    【讨论】:

    • 感谢您的奉献!我会尽快尝试,并告诉你它是否有效
    • 旁注,我建议不要分享机器的正确地址。
    • 删除后,我在外部 ip 中得到无限的“待处理”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    相关资源
    最近更新 更多