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