Kubernetes - Sky Platform Integration

Run GPU-accelerated Kubernetes workloads on serverless infrastructure with Perian Sky Platform.

Overview

The Perian Virtual Kubelet Integration enables Kubernetes workloads to run seamlessly on the Perian Sky Platform, a cost-effective, GPU-powered serverless environment. With this integration, Pods scheduled through the Virtual Kubelet are automatically transformed into jobs executed on Perian Sky—no infrastructure management needed.

Key Features

  • Effortless Integration: Minimal configuration required to transform Kubernetes Pods into Perian Sky jobs.
  • Serverless GPU Acceleration: Access powerful GPU's without managing VMs or clusters.
  • Kubernetes-Compatible: Use your existing Kubernetes setup to leverage Perian's scalable infrastructure.
  1. Step 1: Clone the repository
git clone https://github.com/Perian-io/perian-virtual-kubelet.git
cd perian-virtual-kubelet

  1. Step 2: Build the Virtual Kubelet image

make build-docker

  1. Step 3: Create a Perian config yaml file

PerianServerURL: "https://api.perian.cloud"
PerianOrg: "perian-org"
PerianAuthToken: "perian-bearer-auth-token"
KubeletPort: "8080"
NodeName: "perian-vk-node"
InternalIP: "127.0.0.1"
KubernetesSecretName: "my-docker-secret"

  1. Step 4: Create a Pod definition yaml file to deploy Virtual Kubelet

apiVersion: v1
kind: Pod
metadata:
  name: perian-virtual-kubelet
  namespace: kube-system
spec:
  containers:
    - name: perian-virtual-kubelet
      image: perian-virtual-kubelet:latest
      imagePullPolicy: Never
      env:
        - name: CONFIG
          value: "/app/config/perian.yaml"
        - name: POD_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
      ports:
        - containerPort: 8080
      volumeMounts:
        - name: config-volume
          mountPath: "/app/config"
  volumes:
    - name: config-volume
      configMap:
        name: my-config

  1. Step 5: Deploy the Virtual Kubelet Pod to your cluster

kubectl apply -f virtualkubelet_pod.yaml

  1. Step 6: Add node name to your Pod definition to select Virtual 

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
  namespace: default
spec:
  nodeName: "node-name"
  ...

  1. Step 7: Deploy the Pod to your cluster on the Perian Sky Platform 

kubectl apply -f pod.yaml

  1. Optional: Adding docker registry credential as a secret

apiVersion: v1
kind: Secret
metadata:
  name: docker-secret
  namespace: default
type: Opaque
data:
  registryURL: "base64_encoded_url"
  username: "base64_encoded_username"
  password: "base64_encoded_password"
kubectl apply -f secret.yaml