Kubernetes (K8s)
Kubernetes is an orchestration software that makes managing containerized applications (such as our dockerized apps) something that developers don't need to worry about. Kubernetes handles traffic routing, auto-restarts, configuration and secrets management, as well as ingress/egress ports.
At Simpatra we use kubernetes manifest files to manage our environment state and overall network routing (using Istio as a form of reverse proxy). This allows us to check in our environment's state into git and track version changes between releases, as well as very easily rollback any bad deploys. We auto-deploy from the git repo to the k8s cluster using FluxCD.
We have also opted to have GCP manage our Kubernetes control plane. Managing the Control Pane is probably the hardest aspect of running a k8s cluster.
In K8s, there is a worker node pool that is drawn from when a new pod needs to be scheduled. In reality, when a pod is running "in the k8s cluster" it is really running on one of the nodes (that is just a regular GCP vm). Each pod requires a minimum amount of vCPU and MEM on the nodes, and we can build out node pools that will satisfy this demand. In our clusters we are using n1-standard-2 vms for our Node Pools (part of this is that the Istio ingressgateway requires a significant memory footprint to run, and if we don't use nodes taht have enough memory on the single VM, K8s will declare the pod unschedulable).
Resources
Very good introductory video on what kubernetes is: Kubernetes Explained (IBM)