Skip to content

希望sandbox-server可以管理通过k8s创建的沙箱 #409

@GGGsk

Description

@GGGsk

现在的sandbox-server只能获取到通过SDK创建的沙箱,无法获取到通过kubectl apply -f xxxxxx.yaml创建的,例如

apiVersion: sandbox.opensandbox.io/v1alpha1
kind: BatchSandbox
metadata:
  name: batch-sample
  namespace: sail-workspace
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: example
    spec:
      volumes:
        - name: sandbox-storage
          emptyDir: {}
        - name: opensandbox-bin
          emptyDir: {}
      initContainers:
        - name: task-executor-installer
          image: sandbox-registry.cn-zhangjiakou.cr.aliyuncs.com/opensandbox/task-executor:v0.1.0
          command: ["/bin/sh", "-c"]
          args:
            - |
              cp /workspace/server /opt/opensandbox/bin/task-executor &&
              chmod +x /opt/opensandbox/bin/task-executor
          volumeMounts:
            - name: opensandbox-bin
              mountPath: /opt/opensandbox/bin
        - name: execd-installer
          image: sandbox-registry.cn-zhangjiakou.cr.aliyuncs.com/opensandbox/execd:v1.0.6
          command: ["/bin/sh", "-c"]
          args:
            - |
              cp ./execd /opt/opensandbox/bin/execd &&
              cp ./bootstrap.sh /opt/opensandbox/bin/bootstrap.sh &&
              chmod +x /opt/opensandbox/bin/execd &&
              chmod +x /opt/opensandbox/bin/bootstrap.sh
          volumeMounts:
            - name: opensandbox-bin
              mountPath: /opt/opensandbox/bin
      containers:
        - name: sandbox
          image: sandbox-registry.cn-zhangjiakou.cr.aliyuncs.com/opensandbox/code-interpreter:v1.0.1
          command:
            - "/bin/sh"
            - "-c"
            - |
              /opt/opensandbox/bin/task-executor -listen-addr=0.0.0.0:5758 >/tmp/task-executor.log 2>&1
          env:
            - name: SANDBOX_MAIN_CONTAINER
              value: main
            - name: EXECD_ENVS
              value: /opt/opensandbox/.env
            - name: EXECD
              value: /opt/opensandbox/bin/execd
          volumeMounts:
            - name: sandbox-storage
              mountPath: /var/lib/sandbox
            - name: opensandbox-bin
              mountPath: /opt/opensandbox/bin
      tolerations:
        - operator: "Exists"

使用这个yaml创建完成后,通过SDK访问server获取集群中存在的沙箱

import asyncio
import os
from datetime import timedelta

from code_interpreter import CodeInterpreter, SupportedLanguage
from opensandbox import Sandbox
from opensandbox.manager import SandboxManager
from opensandbox.models.sandboxes import SandboxFilter
from opensandbox.config import ConnectionConfig


async def main() -> None:
    domain = os.getenv("SANDBOX_DOMAIN", "localhost:32067")
    api_key = os.getenv("SANDBOX_API_KEY")
    image = os.getenv(
        "SANDBOX_IMAGE",
        "sandbox-registry.cn-zhangjiakou.cr.aliyuncs.com/opensandbox/code-interpreter:v1.0.1",
    )

    config = ConnectionConfig(
        domain=domain,
        api_key=api_key,
        request_timeout=timedelta(seconds=60),
        use_server_proxy=True,
    )

    async with await SandboxManager.create(connection_config=config) as manager:

        # 列出运行中的沙箱
        sandboxes = await manager.list_sandbox_infos(
            SandboxFilter(
                page_size=10
            )
        )

        print(sandboxes.sandbox_infos)

        for info in sandboxes.sandbox_infos:
            print(f"找到沙箱: {info.id}")
            print(info.__dir__())

    return

main()

得到的结果是
[]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions