Rethinking Deployment: How We Traded Kubernetes for a Serverless Infrastructure

Kubernetes gives Pods their own IP addresses and a single DNS name for a set of Pods, and can load-balance across them. Container Attached Storage is a type of data storage that emerged as Kubernetes gained prominence. The Container Attached Storage approach or pattern relies on Kubernetes itself for certain capabilities while delivering primarily block, file, object and interfaces to workloads running on Kubernetes. In addition to the landscape, the Cloud Native Computing Foundation , has published other information about Kubernetes Persistent Storage including a blog helping to define the container attached storage pattern. This pattern can be thought of as one that uses Kubernetes itself as a component of the storage system or service. StatefulSets are controllers that enforce the properties of uniqueness and ordering amongst instances of a pod and can be used to run stateful applications.

kubernetes based development

To answer whether any application can be cloud-native we need to cover the different types of applications that can be developed. In this article, I will explain what Kubernetes native is, what it means, and why it should matter to developers and enterprises. Before we delve into Kubernetes native, I will recap what cloud-native application development is and how that leads us to Kubernetes-native application development. Once we decided that the new development environment was stable enough, we gave a company-wide demo and released the environment to all developers as an alternative way of developing services.

This serverless compute service further reduced our infrastructure management burden, while still providing the flexibility to handle unique application requirements. GKE implements full Kubernetes API, 4-way autoscaling, release channels, multi-cluster support, and scales up to nodes. Horizontal pod autoscaling can be based on CPU utilization or custom metrics. Cluster autoscaling works on a per-node-pool basis and vertical pod autoscaling continuously analyzes the CPU and memory usage of pods, automatically adjusting CPU and memory requests.

While early forms of containers were introduced decades ago , containers were democratized in 2013 when Docker brought them to the masses with a new developer-friendly and cloud-friendly implementation. Containersare lightweight, executable application components that combine application source code with all the operating system libraries and dependencies required to run the code in any environment. Kubernetes was first developed by engineers at Google before being open sourced in 2014. It is a descendant of Borg, a container orchestration platform used internally at Google. Kubernetes is Greek forhelmsmanorpilot, hence the helm in theKubernetes logo(link resides outside of

You are billed for each instance according to Compute Engine’s pricing. Global load-balancing technology helps you distribute incoming requests across pools of instances across multiple regions, so you can achieve maximum performance, throughput, and availability at low cost. GKE supports GPUs and TPUs and makes it easy to run ML, GPGPU, HPC, and other workloads that benefit from specialized hardware accelerators.

Starting a new project that deploys to Kubernetes can be a time consuming process. It’s easy to get caught up with configuring your infrastructure instead of actually writing your application’s business logic. Developer tools and practices that help streamline Kubernetes workflows, while keeping you focused on code, are key to driving your productivity.

A ReplicaSet’s purpose is to maintain a stable set of replica pods running at any given time. As such, it is often used to guarantee the availability of a specified number of identical Pods. The components of Kubernetes can be divided into those that manage an individual node and those that are part of the control plane. Replacing our home-made queuing system with Google Cloud Pub/Sub revolutionized our messaging and event-driven architectures. Pub/Sub provided a scalable, resilient, and manageable messaging solution, allowing us to decouple our producers and consumers without worrying about infrastructure or server management. A flat fee per cluster, plus the CPU, memory, and compute resources that are provisioned for your Pods.

Data Cloud Unify data across your organization with an open and simplified approach to data-driven transformation that is unmatched for speed, scale, and security with AI built-in. Architect for Multicloud Manage workloads across multiple clouds with a consistent platform. Telecommunications Hybrid and multi-cloud services to deploy and monetize 5G. Kubernetes is often used to deploy software that can be used anywhere, regardless of platform. The platform offers standard solutions for different use cases of systems.

According to the Cloud Native Computing Foundation there have been more than 148,000 commits across all Kubernetes-related repositories . Google worked with the Linux Foundation to form the Cloud Native Computing Foundation and offered Kubernetes as a seed technology. In February 2016, the Helm package manager for Kubernetes was released. ” after the Star Trek ex-Borg character Seven of Nine and gave its logo a seven-spoked wheel. Unlike Borg, which was written in C++, Kubernetes source code is in the Go language.

Subscribe to our newsletter, Red Hat Shares

This is why I believe that it will become more common in the future for developers to directly interact with Kubernetes, one way or the other. Potentially, even a combination of both approaches becomes the standard, e.g. if local environments are used only for quick tests while major changes as well as the staging environment are running in a remote environment. Automated rollouts and rollbacksYou can describe the desired state for your deployed containers using Kubernetes, and it can change the actual state to the desired state at a controlled rate. For example, you can automate Kubernetes to create new containers for your deployment, remove existing containers and adopt all their resources to the new container. Scaling stateless applications is only a matter of adding more running pods.

Kubernetes Applications Containerized apps with prebuilt deployment and unified billing. VMware Engine Fully managed, native VMware Cloud Foundation software stack. Apigee Integration API-first integration to connect existing data and applications. Virtual Desktops Remote work solutions for desktops and applications (VDI & DaaS). Active Assist Automatic cloud resource optimization and increased security.

How to easily deploy OpenShift on Azure using a GUI, Part 1

Our unique automated approach extracts critical application elements from the VM so you can easily insert those elements into containers in GKE or Anthos clusters without the VM layers that become unnecessary with containers. GKE’s Autopilot modeis a hands-off, fully managed Kubernetes platform that manages your cluster’s underlying compute infrastructure —while still delivering a complete Kubernetes experience. And with per-pod billing, Autopilot ensures you pay only for your running pods, not system components, operating system overhead, or unallocated capacity for up to 85% savings from resource and operational efficiency.

kubernetes based development

Virtualization allows better utilization of resources in a physical server and allows better scalability because an application can be added or updated easily, reduces hardware costs, and much more. With virtualization you can present a set of physical resources as a cluster of disposable virtual machines. Kubernetes provides a partitioning of the resources it manages into non-overlapping sets called namespaces. They are intended for use in environments with many users spread across multiple teams, or projects, or even separating environments like development, test, and production.


Containers support a unified environment for development, delivery, and automation, and make it easier to move apps between development, testing, and production environments. Watch this webinar series to get expert perspectives to help you establish the data platform on enterprise Kubernetes you need to build, run, deploy, and modernize applications. Metal3 is an upstream project for the fully automated deployment and lifecycle management of bare metal servers using Kubernetes. This handoff works with a multitude of services to automatically decide which node is best suited for the task.

  • ” after the Star Trek ex-Borg character Seven of Nine and gave its logo a seven-spoked wheel. Unlike Borg, which was written in C++, Kubernetes source code is in the Go language.
  • Cloud Load Balancing Service for distributing traffic across applications and regions.
  • Utilizing Firebase to serve our Angular applications has empowered us to deliver fast, responsive, and secure web applications.
  • Use Migrate to Containers to move and convert workloads directly into containers in GKE.
  • Migrate Oracle workloads to Google Cloud Rehost, replatform, rewrite your Oracle workloads.
  • Kubernetes gives you the orchestration and management capabilities required to deploy containers, at scale, for these workloads.

Etcd favors consistency over availability in the event of a network partition . The consistency is crucial for correctly scheduling and operating services. As Okteto co-founder and CEO Ramiro Berrelleza told me, the idea for the service came from his experience at companies like Microsoft and Atlassian. There, he noticed that Kubernetes and microservices made life easier for operations teams, but not necessarily for developers. Our 180-degree turn from Kubernetes to serverless technologies was a strategic decision that has paid off in numerous ways.

Kubernetes is a portable, extensible, open source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. A node, also known as a worker or a minion, is a machine where containers are deployed. Every node in the cluster must run a container runtime such as containerd, as well as the below-mentioned components, for communication with the primary for network configuration of these containers. The API server serves the Kubernetes API using JSON over HTTP, which provides both the internal and external interface to Kubernetes.

Serverless is a cloud application development and execution model that lets developers build and run code without managing servers or paying for idle cloud infrastructure. Kubernetes can deploy and scale pods, but it can’t manage or automate routing between them and doesn’t provide any tools to monitor, secure, or debug these connections. As the number of containers in a cluster grows, the number of possible connection paths between them escalates exponentially , creating a potential configuration and management nightmare. We’re assuming you are a developer, you have a favorite programming language, editor/IDE, and a testing framework available. The overarching goal is to introduce minimal changes to your current workflow when developing the app for Kubernetes.

Control plane

The alternative for giving developers access to Kubernetes is a remote cluster in a cloud environment. In another article, I described the underlying methodology of cloud development and why it might become a new standard in the future. Istio also provides a dashboard that DevOps teams and administrators can use to monitor latency, time-in-service errors, and other characteristics of the connections between containers. The deployment controls the creation and state of the containerized application and keeps it running. Skaffold is a tool that aims to provide portability for CI integrations with different build system, image registry and deployment tools.

The API server processes and validates REST requests and updates the state of the API objects in etcd, thereby allowing clients to configure workloads and containers across worker nodes. The API server uses etcd’s watch API to monitor the cluster, roll out critical configuration changes, or restore any divergences of the state of the cluster back to what the deployer declared. As an example, the deployer may specify that three instances of a particular “pod” need to be running. If the Deployment Controller finds that only two instances are running , it schedules the creation of an additional instance of that pod. The core idea behind Okteto is that the development environment should look exactly like the production environment. Backup for GKEis an easy way for customers running stateful workloads on GKE to protect, manage, and restore their containerized applications and data.

kubernetes based development

Intelligent Operations Tools for easily optimizing performance, security, and cost. Cloud Load Balancing Service for distributing traffic across applications and regions. Intelligent Management Tools for easily managing performance, security, and cost. Anthos Config Management Automate policy and security for your deployments. Cloud IoT Core IoT device management, integration, and connection service. Medical Imaging Suite Accelerate development of AI for medical imaging by making imaging data accessible, interoperable, and useful.

Kubernetes Cheat Sheet

Stateful workloads are harder, because the state needs to be preserved if a pod is restarted. If the application is scaled up or down, the state may need to be redistributed. When run in high-availability mode, many databases come with the notion of a primary instance and secondary instances. Other applications like Apache Kafka distribute the data amongst their brokers; hence, one broker is not the same as another.

Google Cloud’s pay-as-you-go pricing offers automatic savings based on monthly usage and discounted rates for prepaid resources. Cloud Debugger Real-time application state inspection and in-production debugging. Network Service Tiers Cloud network options based on performance, availability, and cost.

It’s still early days for Quarkus, and for our goal of fulfilling Kubernetes-native application development to the fullest extent possible. However, we’ve made great progress in a short amount of time, and we are committed to ensuring that Quarkus provides the best Kubernetes-native experience for all developers. Access Red Hat’s products and technologies without setup or configuration, and start developing quicker than ever before with our new, no-cost sandbox environments. Jason spent 4 months in Hootsuite (May-August 2018), where he joined Production Delivery team. He helped build Hootsuite’s Kubernetes-based development environment and serverless microservice for managing deployments. I wrote a separate post about the difference between these two methods of working with a remote cluster, but both have some common strengths and weaknesses that I want to focus on in this post.

Leave a Comment

Your email address will not be published. Required fields are marked *