- #Microservice deplyment using docker and kubernetes how to#
- #Microservice deplyment using docker and kubernetes update#
- #Microservice deplyment using docker and kubernetes code#
Using deployment pods can be rolled out predictably (rolling update strategy) so that none of the users of your application experience downtime. Rollout a RelicaSet: when you create a deployment, Kubernetes internally creates a replicaset and desired numbers of pods.Kubernetes deployment, like other Kubernetes objects, can be created and updated by storing object configuration files (YAML manifest file) in a directory and using kubectl apply to recursively create and update those objects as needed. What does the declarative declaration of Kubernetes Deployment mean? DeploymentĪ Kubernetes deployment is a higher-level object that allows you to provide a declarative update to the pods and the replicaset. The Kubernetes deployment manages replicaset and provides other useful features. You can use replicaset to maintain the desired number of pods but what if you need to roll back your changes to a previous version or you need to do a rolling update, so that your customer never experiences any downtime? These can be achieved by using a higher-level concept called deployment. In this case, replicaset will acquire an already created pod and create two new pods as defined in the pod template section of replicaset spec definition YAML. What happens when you have a running pod with label app: Product, and you create a replicaset with matchLabels selector app: Product? If you run the command kubectl get pods, you’ll see something like:Īs you can see, the pod product-dndls has been deleted but a new pod product-pfw99 has been created. To confirm this behavior, let’s delete one of the pods by running the command kubectl delete pod product-dndls. One of the purposes of the replicaset is to ensure that desired number of pods are running. You can confirm this by running the command kubectl get pods. This will delete the replicaset and all pods associated with it. To delete replicaset run the command kubectl delete replicaset product. To see all pods created by the relicaset, run command kubectl get pods. The command kubectl get replicaset (shorthand kubectl get rs) returns information about replicaset as: To create replicaset run command kubectl apply -f deployments/product-replicaset-definition.yaml from ~\product-svc directory. While creating replicas it tries to match specified labels ( as field. spec.replicas field defines how many pods to run. The labels defined in the pod template are used by relicaset to create the desired numbers of replicas. It also defines the labels of pod which constitute relicaset. spec.template field defines the pod template. The label field is only applied to the replicaset, not to the pods created by the replicaset. Metadata – metadata field defines name and labels.ApiVersion, Kind – apiVersion, kind, and metadata is a required field.
#Microservice deplyment using docker and kubernetes how to#
A replicaset definition contains a selector that specifies how to identify pods it can acquire, a number of replicas indicating how many pods should be maintained, and a pod template specifying the data of new pods it should create to meet the number of replicas criteria.Ī replicaset spec for Product service can be defined as: The purpose of replicaset is to ensure the desired number of identical pods are running at any given time. In fact in production, most likely, you will never deploy a single pod.Ī Kubernetes replicaset solves the problem of creating multiple replicas of your pods. In other words, it didn’t create a new pod but just updates the existing pods. What if you need to run multiple replicas of a pod for high availability and scaling purposes? If you run kubectl apply -f deployments/product-pod-definition.yaml again you’ll see something like pod/product-svc unchanged. Kubernetes Objectsīuilding and deploying a single pod is not meant for production. This article assumes that you have Kind installed locally but you can run this example in any Kubernetes cluster.
#Microservice deplyment using docker and kubernetes code#
The working code example of this article is listed on GitHub. The deployment architecture of such microservices applications may look like as: Deployment Architecture Code Example We will learn how to deploy a microservices application with multiple replicas using Deployment and access the application externally using Service and Ingress.
In this article, we will take some steps further towards a production deployment. However, the port-forwarding approach is mostly suitable for debugging, not for production. In the last article Building and deploying microservices application locally in the Kubernetes, we understood how to build a simple microservice-based application and deploy it in a local Kubernetes cluster using port-forwarding.