coreweave-upgrade-migration
Upgrade CoreWeave deployments and migrate between GPU types. Use when migrating from A100 to H100, upgrading CUDA versions, or updating inference server versions. Trigger with phrases like "upgrade coreweave", "coreweave gpu migration", "coreweave cuda upgrade", "migrate coreweave".
What this skill does
# CoreWeave Upgrade & Migration
## Overview
CoreWeave is a GPU-specialized cloud provider running Kubernetes-native infrastructure. Migrations involve upgrading between GPU instance types (A100 to H100), updating CUDA driver versions, and handling Kubernetes API version changes across namespaces. Tracking API versions is critical because CoreWeave's instance type labels and resource quotas change between platform releases, and deploying to a deprecated instance class will cause scheduling failures.
## Version Detection
```typescript
import { KubeConfig, CoreV1Api } from "@kubernetes/client-node";
async function detectCoreWeaveVersion(): Promise<void> {
const kc = new KubeConfig();
kc.loadFromDefault();
const k8sApi = kc.makeApiClient(CoreV1Api);
// Check current namespace GPU allocations
const pods = await k8sApi.listNamespacedPod("my-namespace");
for (const pod of pods.body.items) {
const gpuClass = pod.spec?.nodeSelector?.["gpu.nvidia.com/class"];
const cudaVersion = pod.metadata?.labels?.["cuda-version"];
console.log(`Pod ${pod.metadata?.name}: GPU=${gpuClass}, CUDA=${cudaVersion}`);
}
// Detect deprecated instance types
const deprecated = ["A100_PCIE_40GB", "V100_PCIE_16GB", "RTX_A5000"];
const activeGpus = pods.body.items
.map((p) => p.spec?.nodeSelector?.["gpu.nvidia.com/class"])
.filter(Boolean);
const stale = activeGpus.filter((g) => deprecated.includes(g!));
if (stale.length > 0) console.warn(`Deprecated GPU types in use: ${stale.join(", ")}`);
}
```
## Migration Checklist
- [ ] Review CoreWeave release notes for deprecated instance types
- [ ] Audit all deployments for `gpu.nvidia.com/class` node selectors
- [ ] Verify CUDA version compatibility with target GPU (see matrix below)
- [ ] Update container base images to match new CUDA/cuDNN requirements
- [ ] Test inference latency on new GPU type in staging namespace
- [ ] Update resource requests (`nvidia.com/gpu`) for new instance memory
- [ ] Migrate persistent volumes if switching regions or availability zones
- [ ] Update Kubernetes API version in manifests (e.g., `apps/v1` changes)
- [ ] Validate HPA scaling behavior on new instance type throughput
- [ ] Run canary deployment with traffic split before full cutover
## Schema Migration
```typescript
// CoreWeave instance type labels changed in 2025 platform update
// Old: gpu.nvidia.com/class: "A100_PCIE_80GB"
// New: gpu.nvidia.com/class: "H100_SXM5_80GB"
interface DeploymentMigration {
oldSelector: Record<string, string>;
newSelector: Record<string, string>;
cudaMinVersion: string;
}
const GPU_MIGRATIONS: DeploymentMigration[] = [
{
oldSelector: { "gpu.nvidia.com/class": "A100_PCIE_80GB" },
newSelector: { "gpu.nvidia.com/class": "H100_SXM5_80GB" },
cudaMinVersion: "12.4",
},
{
oldSelector: { "gpu.nvidia.com/class": "A100_SXM4_80GB" },
newSelector: { "gpu.nvidia.com/class": "H100_SXM5_80GB" },
cudaMinVersion: "12.4",
},
];
function migrateNodeSelector(manifest: any, migration: DeploymentMigration): any {
const selector = manifest.spec?.template?.spec?.nodeSelector;
if (!selector) return manifest;
for (const [key, oldVal] of Object.entries(migration.oldSelector)) {
if (selector[key] === oldVal) {
selector[key] = migration.newSelector[key];
}
}
return manifest;
}
```
## Rollback Strategy
```typescript
import { AppsV1Api, KubeConfig } from "@kubernetes/client-node";
async function rollbackDeployment(namespace: string, name: string): Promise<void> {
const kc = new KubeConfig();
kc.loadFromDefault();
const appsApi = kc.makeApiClient(AppsV1Api);
// Kubernetes rollout undo — reverts to previous revision
const deployment = await appsApi.readNamespacedDeployment(name, namespace);
const currentRevision = deployment.body.metadata?.annotations?.["deployment.kubernetes.io/revision"];
console.log(`Rolling back ${name} from revision ${currentRevision}`);
// Patch to trigger rollback via revision annotation
await appsApi.patchNamespacedDeployment(name, namespace, {
spec: { template: { metadata: { annotations: { "kubectl.kubernetes.io/restartedAt": new Date().toISOString() } } } },
}, undefined, undefined, undefined, undefined, undefined, { headers: { "Content-Type": "application/strategic-merge-patch+json" } });
console.log(`Rollback initiated for ${name} in ${namespace}`);
}
```
## Error Handling
| Migration Issue | Symptom | Fix |
|----------------|---------|-----|
| GPU class not schedulable | Pod stuck in `Pending` with `Insufficient nvidia.com/gpu` | Verify instance type exists in target region; check quota |
| CUDA version mismatch | Container crashes with `CUDA driver version is insufficient` | Rebuild container with CUDA matching target GPU driver |
| Namespace quota exceeded | `Forbidden: exceeded quota` on deployment | Request quota increase for new instance type via CoreWeave dashboard |
| PVC migration failure | `VolumeAttachment` timeout on new node | Detach old PVC, recreate in target availability zone |
| API version deprecated | `no matches for kind "Deployment" in version "extensions/v1beta1"` | Update manifest to `apps/v1` and adjust spec fields |
## Resources
- [CoreWeave GPU Instances](https://docs.coreweave.com/docs/platform/instances/gpu-instances)
- CoreWeave Kubernetes Docs
- [CoreWeave Changelog](https://docs.coreweave.com/docs/release-notes)
## Next Steps
For CI/CD pipeline integration, see `coreweave-ci-integration`.
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.