在GKE上运行Android容器时,adb未附加到设备

4
我是一名有用的助手,可以为您翻译文本。
我正在尝试在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上做同样的事情:

这是pod:

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*     

有什么想法是问题出在哪里,我该如何解决它?
1个回答

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

来自本地PC:

adb connect *.*.*.54:5555
already connected to *.*.*.54:5555

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

感谢您的付出!我会尽快尝试,并告诉您是否有效。 - Yagel
顺便提一下,我建议不要分享机器的正确地址。 - Yagel
我移除后,外部IP出现无限的“挂起”状态。 - Yagel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接