Przejdź do głównej zawartości

Twoja pierwsza aplikacja

Pomyśl o każdej aplikacji w CGC jako o zasobie compute lub database. To kontener, który działa w ramach POD, zarządzany przez DEPLOYMENT lub STATEFUL-SET.

Poniższy przykład pokazuje szybkie wdrożenie kontenera Nginx w CGC.

Niestandardowa aplikacja Nginx

# Import the SDK resource
import cgc.sdk.resource as resource

# Create a web server - it's like installing an app!
result = resource.resource_create(
name="my-first-app", # What you want to call it
image_name="nginx:latest", # The application to run (nginx is a web server)
cpu=1, # How many CPU cores (like computer processors)
memory=2 # How much RAM in gigabytes
)

# Check if it worked
if result['code'] == 200:
print("Success! Your web server is starting up.")
else:
print(f"Something went wrong: {result['message']}")

Używanie gotowych aplikacji

Dodanie entity z prawidłowym ciągiem znaków pozwala na uruchamianie wstępnie skonfigurowanych obrazów w CGC.

Przykład Nvidia Pytorch

response = resource.resource_create(
# Required parameters
name="advanced-app", # Unique identifier

# Resource specifications
entity="nvidia-pytorch", # Entity type (default: "custom")
cpu=4, # CPU cores
memory=16, # Memory in GB
shm_size=2, # Shared memory in GB
gpu=1, # Number of GPUs
gpu_type="A5000", # GPU model
environment_data=["ENV=production", "DEBUG=false"],
)

Uzyskaj listę encji

# Get all available entity types
entities = resource.get_entity_list()
print("Available entities:", entities)

Dostępne typy GPU

from cgc.commands.compute.compute_models import GPUsList
print(GPUsList.get_list())

Alokacja zasobów

W zależności od potrzeb, oto niektóre typowe specyfikacje dla aplikacji, które można uruchomić:

  • Prosta strona internetowa: 1 CPU, 2GB pamięci
  • Baza danych: 2-4 CPU, 8-16GB pamięci
  • Przetwarzanie danych: 4-8 CPU, 16-32GB pamięci

Wyświetlanie zasobów

Zasoby są podzielone na trzy typy: compute, db, jobs. Ta część opisuje zarówno compute, jak i db.

Wyświetl wszystkie zasoby obliczeniowe

import cgc.sdk.resource as resource

# Get all compute resources
compute_resources = resource.compute_list()

# Parse the response
if compute_resources['code'] == 200:
pods = compute_resources['details']['pods_list']
for pod in pods:
if 'app-name' in pod.get('labels', {}):
name = pod['labels']['app-name']
status = pod['status']
print(f"{name}: {status}")

Wyświetl wszystkie zasoby bazy danych

# Get all database resources
db_resources = resource.db_list()

if db_resources['code'] == 200:
for db in db_resources['details']['pods_list']:
print(f"Database: {db['labels'].get('app-name', 'unknown')}")

Rozwiązywanie problemów z zasobami

Zasób nie uruchamia się

  • Sprawdź, czy nazwa obrazu jest prawidłowa
  • Zweryfikuj, czy masz wystarczający limit
  • Sprawdź składnię komendy startowej

Nie można połączyć się z zasobem

  • Zweryfikuj, czy porty są prawidłowo skonfigurowane
  • Sprawdź, czy zasób jest gotowy
  • Upewnij się, że ingress jest włączony dla dostępu zewnętrznego

Zasób ciągle się restartuje

  • Sprawdź logi pod kątem błędów
  • Zweryfikuj zmienne środowiskowe
  • Upewnij się, że przydzielono wystarczającą ilość pamięci