Kubernetes Nodes

Kubernetes Nodes in Thalassa Cloud

In Thalassa Cloud, a Kubernetes Node is a virtual machine that runs workloads within a Kubernetes cluster. Nodes are provisioned automatically and managed by the Thalassa Cloud Kubernetes Control Plane based on the Kubernetes Node Pool configured.

Each node includes the following core components:

  • Kubelet: Communicates with the API server and manages workloads on the node.
  • Container Runtime: Runs and manages containers (Thalassa Cloud supports containerd).
  • Kube-Proxy: Handles networking and service discovery within the cluster (can be disabled when using Cilium CNI).

Node Types

Thalassa Cloud offers different types of nodes, depending on the workload requirements:

Node TypeDescription
General Purpose NodesStandard compute nodes for most workloads.
High-Memory NodesOptimized for memory-intensive applications such as databases and in-memory processing.
GPU NodesDesigned for AI, ML, and GPU-accelerated workloads.

Node Labels in Thalassa Cloud

The Thalassa Cloud Controller Manager automatically assigns specific labels to nodes, which can be used for scheduling, node selection, and workload distribution.

Standard Node Labels

LabelExample ValueDescription
k8s.thalassa.cloud/regionnl-1The region where the node is deployed.
k8s.thalassa.cloud/zonenl-1aThe availability zone of the node.
kubernetes.io/hostnamenode-1The unique hostname of the node.
kubernetes.io/oslinuxThe operating system of the node.
kubernetes.io/archamd64The CPU architecture of the node.
node.kubernetes.io/instance-typepgp.largeThe instance type of the node.
k8s.thalassa.cloud/vpcvpc-123456The VPC ID where the node is running.
k8s.thalassa.cloud/subnetsubnet-abc123The subnet ID assigned to the node.
k8s.thalassa.cloud/node-poolgeneral-poolThe node pool to which the node belongs.
k8s.thalassa.cloud/gputrueIndicates whether the node has a GPU.

These labels can be used in node affinity rules and taints/tolerations to ensure workloads are scheduled appropriately.

Example: Scheduling a Pod on a Specific Node Type

To ensure a workload runs on a node of type pgp.large, use the following nodeSelector:

apiVersion: v1
kind: Pod
metadata:
  name: gpu-workload
spec:
  nodeSelector:
    node.kubernetes.io/instance-type: "pgp.large"
  containers:
    - name: app
      image: my-app:latest

Managing Nodes

Viewing Nodes in a Cluster

To list all nodes in your Kubernetes cluster:

kubectl get nodes

To get more details about a specific node:

kubectl describe node <node-name>

Taints and Tolerations

Taints prevent workloads from being scheduled on certain nodes unless they have a matching toleration.

To add a taint to a node:

kubectl taint nodes node-1 key=value:NoSchedule

To allow a pod to tolerate this taint:

apiVersion: v1
kind: Pod
metadata:
  name: tolerant-pod
spec:
  tolerations:
    - key: "key"
      operator: "Equal"
      value: "value"
      effect: "NoSchedule"
  containers:
    - name: app
      image: my-app:latest

Monitoring and Troubleshooting Nodes

Checking Node Resource Usage

kubectl top nodes

Viewing Node Events

kubectl get events --field-selector involvedObject.kind=Node

Summary

Thalassa Cloud provides flexible, scalable, and optimized Kubernetes nodes, automatically provisioned with labels, monitoring, and debugging support.

Key Takeaways:

  • Nodes are virtual machines running workloads in a cluster.
  • Cloud Controller Manager assigns predefined labels for scheduling and workload placement.
  • Taints and tolerations control where workloads can run.
  • Monitoring tools provide insights into node health and performance.

Additional Resources