Kubernetes Deployment

What is Kubernetes deployment?

A Kubernetes Deployment provides declarative updates to Pods and ReplicaSets. A desired state is described in the Deployment, and the Deployment Controller changes the actual state to match the desired state. Deployments can be defined to create new ReplicaSets or to remove existing Deployments and adopt their resources with new Deployments.

What are Pods?

A Pod is the smallest deployable unit of computing that can be created and managed in Kubernetes. A Pod is a group of one or more containers with shared storage and network resources and specifications for how to run the containers.

 

 

What are services?

Services are Kubernetes objects that function as a way of communicating between pods, normally by way of a virtual IP address/HTTP request. They often require a proxy on top for other services to communicate and load balance pods under their control.

 

What are the benefits of using Kubernetes deployment?

The benefit of running Kubernetes Deployment is that it automates the functions involved in scaling, deploying, and updating your applications in a function. This automation frees up resources within your IT management by removing manual and repetitive tasks that would otherwise be necessary for this level of deployment. The deployment controller is always verifying that the pods and nodes are healthy, and it replaces or bypasses failed pods or down nodes. This automation ensures faster deployments and fewer errors when launching pod instances.

What are Kubernetes deployment strategies?

The two main Kubernetes deployment strategies are the rolling update strategy and the recreate strategy. Both strategies serve the purpose of manipulating container-based pod systems.

A rolling update strategy runs two versions of the container at the same time during the update process and provides a controlled replacement of an application’s pods. It maintains the minimum threshold for functionality and won’t kill old pods if it drops below that threshold, nor will it create new pods until enough of the old pods have been removed. In this strategy, there is no downtime while it runs. The update process must be architected to ensure that it can handle the destroy/create operations.

A recreate strategy removes all old pods simultaneously and recreates new ones in their place. There will be some downtime during the recreate process, occurring during the span of time when old containers are stopped and the new containers are not yet ready to handle incoming requests.

There are other deployment strategies as well, such as the ramped slow rollout, best-effort controlled rollout, and the canary rollout, all of which are variations on the rolling and recreate strategies.

What are use cases for Kubernetes deployments?

Kubernetes deployments can be used for a near-infinite number of app-update tasks, with real-world scenarios including the U.S. Department of Defense, consumer electronics companies, and international science organizations. Whether for-profit, non-profit, B2B, or B2C, any enterprise-scale organization can use Kubernetes deployments for cloud-based app upkeep.  Broadly, the following are examples of some typical use cases for deployments:

  • Create a Deployment to rollout a ReplicaSet.
  • Declare the new state of the Pods.
  • Rollback to an earlier Deployment revision.
  • Scale up the Deployment to facilitate more load.
  • Pause the rollout of a Deployment.
  • Use the status of the Deployment as an indicator that a rollout has stuck.
  • Clean up older ReplicaSets.

HPE and Kubernetes deployment solutions

HPE Ezmeral Runtime Enterprise, a hybrid native enterprise-grade container orchestration platform built on open-source Kubernetes, allows organizations to use containers across the enterprise—even for applications with monolithic architecture and persistent data storage. With this platform, enterprises can run both cloud-native and non-cloud-native applications using 100 percent open source Kubernetes—running on bare-metal or virtual machines (VMs), in the data center, on any public cloud, or at the edge. By accommodating different deployment models, the platform supports any cloud strategies while ensuring enterprise-class security and reliability.