Katkat

Design first-time Kubernetes deployment in new cloud

NVIDIASoftware Engineer · Technical Screen

Last updated

This problem tests your ability to design a foundational Kubernetes infrastructure architecture in a new cloud environment, focusing on secure bootstrapping and operational readiness.

Problem Statement

You are a platform engineer tasked with deploying the first production-ready Kubernetes cluster for a new NVIDIA software team in a public cloud environment (e.g., AWS, GCP, or Azure). The cluster must support GPU-accelerated workloads and adhere to enterprise security standards.

Functional Requirements

  • Provisioning: Define how the cluster is bootstrapped (e.g., IaC tools, base image selection).
  • Networking: Design the VPC/Subnet structure, including communication paths between the control plane, worker nodes, and external traffic.
  • Access Control: Describe the integration of Identity and Access Management (IAM) with Kubernetes RBAC for human operators and service accounts.
  • Observability: Outline the minimum logging and monitoring stack required to verify cluster health.

Non-Functional Requirements

  • Security: Ensure nodes are hardened and traffic is encrypted at rest and in transit.
  • Scalability: The architecture must allow for the dynamic addition of GPU-enabled node pools.
  • Day-2 Operations: Explain how upgrades and secret management will be handled post-deployment.

Deliverables

  1. A high-level architecture diagram (described in text).
  2. A strategy for node pool isolation and GPU resource scheduling.
  3. A brief plan for bootstrapping secrets (e.g., Kms/Vault integration).

Hints

Hint 1

Consider using Infrastructure as Code tools like Terraform or Pulumi to ensure environment reproducibility.

Hint 2

Think about how to use Taints and Tolerations to ensure that GPU-intensive workloads are scheduled only on nodes with the appropriate hardware accelerators.

Hint 3

Identify how service-to-service communication can be secured using a service mesh or standard NetworkPolicies.

Follow-up questions

  • How would you handle the lifecycle of GPU drivers and CUDA versions across the cluster nodes?
  • If a service experiences latency spikes, what metrics and logs would you investigate first to determine if it is a node-level or container-level bottleneck?
  • How would you implement a 'GitOps' workflow to ensure that the cluster configuration remains in sync with a version-controlled repository?