Kubernetes Management
AIVory Architect includes comprehensive Kubernetes management features for deploying manifests, monitoring pods, and managing clusters directly from your IDE.
- Deploy manifests directly from the designer or editor
- Real-time monitoring of pod status and resource usage
- Container access via exec shell and log streaming
- Visual pod assignment to map pods to VMs on the canvas
- Namespace management with context switching across clusters
Requirements
Before using Kubernetes features, ensure you have the following configured:
Verify Setup
kubectl cluster-info
kubectl get nodes
Connecting to a Cluster
Architect automatically detects clusters from:
- Your
~/.kube/configfile KUBECONFIGenvironment variable- Cloud provider managed Kubernetes (EKS, AKS, GKE)
Switching Clusters
If you have multiple clusters configured:
- Open the context dropdown in the K8s panel
- Select the cluster context
- Architect reconnects to the new cluster
Adding a New Cluster
Add new clusters by editing kubeconfig:
# Merge a new cluster config
KUBECONFIG=~/.kube/config:new-cluster.yaml kubectl config view --flatten > merged-config
mv merged-config ~/.kube/config
Or use cloud provider CLI tools:
# AWS EKS
aws eks update-kubeconfig --name my-cluster
# Azure AKS
az aks get-credentials --resource-group myRG --name myCluster
# GCP GKE
gcloud container clusters get-credentials my-cluster --zone us-central1-a
Viewing Resources
Browse Kubernetes resources organized by:
- By Resource Type: Pods, Deployments, Services, ConfigMaps, etc.
- By Namespace: Resources grouped by Kubernetes namespace
Resource Tree
The Kubernetes panel shows a tree view:
Resource Details
Click any resource to view its details:
| Resource | Details Shown |
|---|---|
| Pods | Status, containers, restart count, node, events |
| Deployments | Replicas, strategy, conditions, revision history |
| Services | Type, ports, endpoints, selectors |
| ConfigMaps | Keys and values |
| Secrets | Keys (values hidden until revealed) |
Pod Monitoring
Status View
The pod monitoring panel shows real-time status with color-coded indicators:
| Status | Color | Meaning |
|---|---|---|
| Running | 🟢 Green | Pod is healthy |
| Pending | 🟡 Yellow | Waiting for resources |
| Failed | 🔴 Red | Container crashed |
| Succeeded | ⚪ Gray | Job completed |
| Unknown | ⚫ Black | Cannot determine status |
Real-Time Updates
Pod status updates automatically (configurable interval, default 30s).
Resource Metrics
View CPU and memory usage per pod:
- Requires metrics-server installed in cluster
- Shows current vs. requested resources
- Visual indicators for over-limit usage
- Click to see detailed resource breakdown
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml to enable resource metrics.
Pod Assignment
Assign Kubernetes pods to specific VMs in your infrastructure design.
Visual Assignment
- Add a Server/VM to your canvas
- Open the Pod Assignment panel
- Drag pods from your manifests to the server
- Connections show pod-to-VM assignments
Use Cases
Container Actions
For Pods
For Deployments
Log Streaming
View real-time logs from containers with powerful filtering.
Viewing Logs
- Click a pod in the monitoring panel
- Select a container (if multiple)
- Click View Logs
- Logs stream in real-time
Log Controls
| Control | Function |
|---|---|
| Search | Find text in logs (supports regex) |
| Filter | Filter by level (info, warn, error) |
| Tail Lines | Number of historical lines to load |
| Timestamps | Show/hide timestamps |
| Pause | Stop auto-scroll while still receiving |
| Download | Save logs to file |
| Clear | Clear the log display |
error|warn shows all errors and warnings.
Multi-Container Logs
For pods with multiple containers:
- Select which container’s logs to view
- Or choose “All Containers” for interleaved logs
Exec Into Containers
Connect to running containers for debugging.
Opening a Shell
- Click a pod in the monitoring panel
- Select a container (if multiple)
- Click Open Terminal or Exec
- Interactive shell opens in IDE terminal
Default Shell
Architect tries shells in order:
/bin/bash/bin/sh- Custom shell (configurable)
Deploying Manifests
From the Editor
- Open a
.yamlfile containing Kubernetes manifests - Right-click in the editor
- Select Apply to Cluster
- Or use Command Palette →
Architect: Apply Kubernetes Manifest
From the Designer
- Create or import Kubernetes manifests
- Click Deploy to Kubernetes in the toolbar
- Select target namespace
- Review and confirm deployment
Supported Resources
| Resource | Status |
|---|---|
| Deployment | Supported |
| Service | Supported |
| ConfigMap | Supported |
| Secret | Supported |
| Ingress | Supported |
| PersistentVolumeClaim | Supported |
| StatefulSet | Supported |
| DaemonSet | Supported |
| Job | Supported |
| CronJob | Supported |
| NetworkPolicy | Supported |
| ServiceAccount | Supported |
Namespace Management
Switch Namespaces
- Open namespace dropdown in the K8s panel
- Select target namespace
- Resources filter to selected namespace
Create Namespace
- Click + next to namespace dropdown
- Enter namespace name
- Click Create
View All Namespaces
Toggle “All Namespaces” to see resources across the entire cluster.
Manifest Generation
Architect can generate Kubernetes manifests from your infrastructure design.
Generate from Design
- Select resources on canvas
- Click Generate K8s Manifests
- Choose output format (single file or per-resource)
- Review and save
Example Generated Output
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-server
labels:
app: web
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: web
image: nginx:latest
ports:
- containerPort: 80
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "256Mi"
cpu: "500m"
---
# service.yaml
apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
selector:
app: web
ports:
- port: 80
targetPort: 80
type: LoadBalancer
Troubleshooting
Connection refused
- Check kubectl can connect:
kubectl cluster-info - Verify kubeconfig path in settings
- Check cluster is running and accessible
- Ensure VPN is connected if required
Permission denied
- Check your RBAC permissions
- Verify service account has required roles
- Contact cluster admin for access
Pods stuck in Pending
- Check node resources:
kubectl describe nodes - Check pod events:
kubectl describe pod <name> - Verify resource requests don’t exceed node capacity
- Check for node taints that prevent scheduling
Container keeps restarting
- Check logs:
kubectl logs <pod> --previous - Check resource limits (OOMKilled = out of memory)
- Verify image exists and is pullable
- Check liveness probe configuration
Logs not streaming
- Verify the container is running
- Check container has stdout/stderr output
- Try
kubectl logs <pod>directly to verify
Best Practices
Resource Limits
Always set resource requests and limits:
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "256Mi"
cpu: "500m"
This ensures fair scheduling and prevents runaway containers from affecting other workloads.
Health Checks
Add liveness and readiness probes:
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
Security Recommendations
- Don’t run containers as root
- Use read-only file systems where possible
- Scan images for vulnerabilities
- Use network policies to restrict traffic
- Store secrets in Kubernetes Secrets, not ConfigMaps