{"id":39,"date":"2023-10-12T18:08:23","date_gmt":"2023-10-12T18:08:23","guid":{"rendered":"https:\/\/technodare.com\/?p=39"},"modified":"2023-10-18T14:24:42","modified_gmt":"2023-10-18T14:24:42","slug":"how-to-make-application-highly-available-in-kubernetes","status":"publish","type":"post","link":"https:\/\/technodare.com\/index.php\/2023\/10\/12\/how-to-make-application-highly-available-in-kubernetes\/","title":{"rendered":"How to make Application highly available in Kubernetes"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-47 aligncenter\" src=\"https:\/\/technodare.com\/wp-content\/uploads\/2023\/10\/podantiaffinity-2-300x156.png\" alt=\"\" width=\"627\" height=\"326\" srcset=\"https:\/\/technodare.com\/wp-content\/uploads\/2023\/10\/podantiaffinity-2-300x156.png 300w, https:\/\/technodare.com\/wp-content\/uploads\/2023\/10\/podantiaffinity-2-1024x532.png 1024w, https:\/\/technodare.com\/wp-content\/uploads\/2023\/10\/podantiaffinity-2-768x399.png 768w, https:\/\/technodare.com\/wp-content\/uploads\/2023\/10\/podantiaffinity-2-1536x798.png 1536w, https:\/\/technodare.com\/wp-content\/uploads\/2023\/10\/podantiaffinity-2-2048x1063.png 2048w, https:\/\/technodare.com\/wp-content\/uploads\/2023\/10\/podantiaffinity-2-1000x519.png 1000w, https:\/\/technodare.com\/wp-content\/uploads\/2023\/10\/podantiaffinity-2-230x119.png 230w, https:\/\/technodare.com\/wp-content\/uploads\/2023\/10\/podantiaffinity-2-350x182.png 350w, https:\/\/technodare.com\/wp-content\/uploads\/2023\/10\/podantiaffinity-2-480x249.png 480w\" sizes=\"auto, (max-width: 627px) 100vw, 627px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>High availability (HA) is the ability to make our application continuously operational without any failures. By configuring Pod Anti-affinity and Pod disruption budget together will make stateful or stateless application pods to highly available during any of the below scenarios:<\/p>\n<ol>\n<li>Any one\/many nodes is unavailable or under maintenance<\/li>\n<li>Cluster administrator deletes Kubernetes nodes by mistake<\/li>\n<li>Cluster administrator\/User deletes your application pods by mistake<\/li>\n<\/ol>\n<p>In this blog, We are going to configure both pod anti-affinity and Pod disruption budget for the kubernetes deployment<!--more--><\/p>\n<h3>Pod Anti-affinity:<\/h3>\n<p>Pod Anti-affinity: It help us not to schedule same type of pod in one node which means you will have only one pod in one node and other same type pod in another node. Hence scheduler will never co-locate the same type of pod in the same node<\/p>\n<p>For Example, if three pods of same deployment(replicas=3) are in one node and that node has crashed or unavailable, then our application will be impacted. When pod anti-affinity is configured, one node failure\/unavailable will not impact the whole application.<\/p>\n<p>1) Configure the below snippet under template.spec in the application deployment yaml<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">affinity:\r\n  podAntiAffinity:\r\n    requiredDuringSchedulingIgnoredDuringExecution:\r\n    - labelSelector:\r\n        matchExpressions:\r\n        - key: app\r\n          operator: In\r\n          values:\r\n          - myapp\r\n      topologyKey: \"kubernetes.io\/hostname\"<\/pre>\n<p>Note: Pod Antiaffinity uses Selector to match with key:app in value:myapp and uses node labels<\/p>\n<p>2) Sample deployment yaml with pod anti-affinity:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">apiVersion: apps\/v1\r\nkind: Deployment\r\nmetadata:\r\n  name: myapp\r\n  labels:\r\n    apptype: java\r\n    app: myapp\r\nspec:\r\n  replicas: 3\r\n  selector:\r\n    matchLabels:\r\n      app: myapp\r\n      apptype: java\r\n  template:\r\n    metadata:\r\n      labels:\r\n        apptype: java\r\n        app: myapp\r\n    spec:\r\n      affinity:\r\n        podAntiAffinity:\r\n          requiredDuringSchedulingIgnoredDuringExecution:\r\n          - labelSelector:\r\n              matchExpressions:\r\n              - key: app\r\n                operator: In\r\n                values:\r\n                - myapp\r\n            topologyKey: \"kubernetes.io\/hostname\"\r\n      containers:\r\n      - name: container-name\r\n        image: [Application GCR image]\r\n        command: [\"\/bin\/sh\"]\r\n        args: [\"java -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=\/var\/log\/my-heap-dump.hprof -Xloggc:\/var\/log\/myAppgc.log -jar [application.jar] --spring.config.location=[absolute path of the config map eg. \/config\/application\/[application.properties]] \"]\r\n        ports: \r\n        - containerPort: 8080\r\n        volumeMounts:\r\n        - name: appconfig\r\n          mountPath: \"\/config\/application\"\r\n          readOnly: true\r\n      volumes:\r\n      - name: appconfig\r\n        configMap:\r\n        name: [configmap-name]<\/pre>\n<p>3) Save the above mentioned deployment yaml and deploy it in kubernetes cluster by executing the below command<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">kubectl apply -y [deployment.yaml]<\/pre>\n<h3>Pod Disruption Budget:<\/h3>\n<p>Pod Disruption Budget help us to define how many minimum available and maximum unavailable pods must meet the condition even during disruption for stateful or stateless application. You can define minAvailable\/maxUnavailable values either as integer or percentage.<\/p>\n<p>You can configure Pod disruption budget in two ways or both:<\/p>\n<p>1) minAvailable &#8211; Specified value\/percentage of pod should be available always<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">cat &gt; pdbmin.yaml &lt;&lt; EOF\r\napiVersion: policy\/v1\r\n  kind: PodDisruptionBudget\r\n  metadata:\r\n    name: pdb-myapp\r\n  spec:\r\n    maxUnavailable: 1\r\n    selector:\r\n      matchLabels:\r\n        app: myapp\r\nEOF<\/pre>\n<p>2) maxUnavailable &#8211; Specified value\/percentage of pod can be acceptable during disruption<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">cat &gt; pdbmax.yaml &lt;&lt; EOF\r\napiVersion: policy\/v1\r\nkind: PodDisruptionBudget\r\nmetadata:\r\n  name: pdb2-myapp\r\nspec:\r\n  minAvailable: 2\r\n  selector:\r\n    matchLabels:\r\n      app: myapp\r\nEOF<\/pre>\n<p>Note: minAvailable and maxUnavailable cannot be both set in a single yaml. You need to create two pod disruption budget if you are configuring both minAvailable and maxUnavailable for your application deployment<\/p>\n<p>3) We have already deployed our application with label app: myapp. To configure pod disruption budget, save the above two PodDisruptionBudget yamls and deploy it in the kubernetes cluster by executing the below commands:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">kubectl apply -f pdbmin.yaml\r\n\r\nkubectl apply -f pdbmax.yaml<\/pre>\n<p>Note: Now Pod Disruption Budget is applied for the label app: myapp<\/p>\n<p>4) Verify the pod disruption budgets by executing the below command:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">kubectl get pdb<\/pre>\n<h3>Conclusion:<\/h3>\n<p>End of the day, Application needs to be highly available in production. Pod Anti-affinity and Pod Disruption Budget together will make the application run without zero downtime.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; High availability (HA) is the ability to make our application continuously operational without any failures. By configuring Pod Anti-affinity and Pod disruption budget together will make stateful or stateless application pods to highly available during any of the below scenarios: Any one\/many nodes is unavailable or under maintenance Cluster administrator deletes Kubernetes nodes by [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[11],"tags":[],"class_list":["post-39","post","type-post","status-publish","format-standard","hentry","category-kubernetes","post-preview"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to make Application highly available in Kubernetes - TechnoDare - Simplified in Learning Technologies<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/technodare.com\/index.php\/2023\/10\/12\/how-to-make-application-highly-available-in-kubernetes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to make Application highly available in Kubernetes - TechnoDare - Simplified in Learning Technologies\" \/>\n<meta property=\"og:description\" content=\"&nbsp; High availability (HA) is the ability to make our application continuously operational without any failures. By configuring Pod Anti-affinity and Pod disruption budget together will make stateful or stateless application pods to highly available during any of the below scenarios: Any one\/many nodes is unavailable or under maintenance Cluster administrator deletes Kubernetes nodes by [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/technodare.com\/index.php\/2023\/10\/12\/how-to-make-application-highly-available-in-kubernetes\/\" \/>\n<meta property=\"og:site_name\" content=\"TechnoDare - Simplified in Learning Technologies\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-12T18:08:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-18T14:24:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/technodare.com\/wp-content\/uploads\/2023\/10\/podantiaffinity-2-300x156.png\" \/>\n<meta name=\"author\" content=\"karthick\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"karthick\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/technodare.com\\\/index.php\\\/2023\\\/10\\\/12\\\/how-to-make-application-highly-available-in-kubernetes\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/technodare.com\\\/index.php\\\/2023\\\/10\\\/12\\\/how-to-make-application-highly-available-in-kubernetes\\\/\"},\"author\":{\"name\":\"karthick\",\"@id\":\"https:\\\/\\\/technodare.com\\\/#\\\/schema\\\/person\\\/5cb6594a35e47d8e28eb4efb6a5f323b\"},\"headline\":\"How to make Application highly available in Kubernetes\",\"datePublished\":\"2023-10-12T18:08:23+00:00\",\"dateModified\":\"2023-10-18T14:24:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/technodare.com\\\/index.php\\\/2023\\\/10\\\/12\\\/how-to-make-application-highly-available-in-kubernetes\\\/\"},\"wordCount\":428,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/technodare.com\\\/index.php\\\/2023\\\/10\\\/12\\\/how-to-make-application-highly-available-in-kubernetes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/technodare.com\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/podantiaffinity-2-300x156.png\",\"articleSection\":[\"Kubernetes\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/technodare.com\\\/index.php\\\/2023\\\/10\\\/12\\\/how-to-make-application-highly-available-in-kubernetes\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/technodare.com\\\/index.php\\\/2023\\\/10\\\/12\\\/how-to-make-application-highly-available-in-kubernetes\\\/\",\"url\":\"https:\\\/\\\/technodare.com\\\/index.php\\\/2023\\\/10\\\/12\\\/how-to-make-application-highly-available-in-kubernetes\\\/\",\"name\":\"How to make Application highly available in Kubernetes - TechnoDare - Simplified in Learning Technologies\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/technodare.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/technodare.com\\\/index.php\\\/2023\\\/10\\\/12\\\/how-to-make-application-highly-available-in-kubernetes\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/technodare.com\\\/index.php\\\/2023\\\/10\\\/12\\\/how-to-make-application-highly-available-in-kubernetes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/technodare.com\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/podantiaffinity-2-300x156.png\",\"datePublished\":\"2023-10-12T18:08:23+00:00\",\"dateModified\":\"2023-10-18T14:24:42+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/technodare.com\\\/#\\\/schema\\\/person\\\/5cb6594a35e47d8e28eb4efb6a5f323b\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/technodare.com\\\/index.php\\\/2023\\\/10\\\/12\\\/how-to-make-application-highly-available-in-kubernetes\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/technodare.com\\\/index.php\\\/2023\\\/10\\\/12\\\/how-to-make-application-highly-available-in-kubernetes\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/technodare.com\\\/index.php\\\/2023\\\/10\\\/12\\\/how-to-make-application-highly-available-in-kubernetes\\\/#primaryimage\",\"url\":\"https:\\\/\\\/technodare.com\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/podantiaffinity-2.png\",\"contentUrl\":\"https:\\\/\\\/technodare.com\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/podantiaffinity-2.png\",\"width\":2080,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/technodare.com\\\/index.php\\\/2023\\\/10\\\/12\\\/how-to-make-application-highly-available-in-kubernetes\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/technodare.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to make Application highly available in Kubernetes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/technodare.com\\\/#website\",\"url\":\"https:\\\/\\\/technodare.com\\\/\",\"name\":\"TechnoDare - Simplified in Learning Technologies\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/technodare.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/technodare.com\\\/#\\\/schema\\\/person\\\/5cb6594a35e47d8e28eb4efb6a5f323b\",\"name\":\"karthick\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2d00b84f82c7a7e83a35935c683fd508e266fdfe9367a2c8d158f717329131df?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2d00b84f82c7a7e83a35935c683fd508e266fdfe9367a2c8d158f717329131df?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2d00b84f82c7a7e83a35935c683fd508e266fdfe9367a2c8d158f717329131df?s=96&d=mm&r=g\",\"caption\":\"karthick\"},\"description\":\"https:\\\/\\\/www.linkedin.com\\\/in\\\/karthick-s-b045249b\\\/\",\"sameAs\":[\"https:\\\/\\\/technodare.com\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/karthick-s-b045249b\\\/\"],\"url\":\"https:\\\/\\\/technodare.com\\\/index.php\\\/author\\\/karthickshanmugamoorthy\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to make Application highly available in Kubernetes - TechnoDare - Simplified in Learning Technologies","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/technodare.com\/index.php\/2023\/10\/12\/how-to-make-application-highly-available-in-kubernetes\/","og_locale":"en_US","og_type":"article","og_title":"How to make Application highly available in Kubernetes - TechnoDare - Simplified in Learning Technologies","og_description":"&nbsp; High availability (HA) is the ability to make our application continuously operational without any failures. By configuring Pod Anti-affinity and Pod disruption budget together will make stateful or stateless application pods to highly available during any of the below scenarios: Any one\/many nodes is unavailable or under maintenance Cluster administrator deletes Kubernetes nodes by [&hellip;]","og_url":"https:\/\/technodare.com\/index.php\/2023\/10\/12\/how-to-make-application-highly-available-in-kubernetes\/","og_site_name":"TechnoDare - Simplified in Learning Technologies","article_published_time":"2023-10-12T18:08:23+00:00","article_modified_time":"2023-10-18T14:24:42+00:00","og_image":[{"url":"https:\/\/technodare.com\/wp-content\/uploads\/2023\/10\/podantiaffinity-2-300x156.png","type":"","width":"","height":""}],"author":"karthick","twitter_card":"summary_large_image","twitter_misc":{"Written by":"karthick","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/technodare.com\/index.php\/2023\/10\/12\/how-to-make-application-highly-available-in-kubernetes\/#article","isPartOf":{"@id":"https:\/\/technodare.com\/index.php\/2023\/10\/12\/how-to-make-application-highly-available-in-kubernetes\/"},"author":{"name":"karthick","@id":"https:\/\/technodare.com\/#\/schema\/person\/5cb6594a35e47d8e28eb4efb6a5f323b"},"headline":"How to make Application highly available in Kubernetes","datePublished":"2023-10-12T18:08:23+00:00","dateModified":"2023-10-18T14:24:42+00:00","mainEntityOfPage":{"@id":"https:\/\/technodare.com\/index.php\/2023\/10\/12\/how-to-make-application-highly-available-in-kubernetes\/"},"wordCount":428,"commentCount":0,"image":{"@id":"https:\/\/technodare.com\/index.php\/2023\/10\/12\/how-to-make-application-highly-available-in-kubernetes\/#primaryimage"},"thumbnailUrl":"https:\/\/technodare.com\/wp-content\/uploads\/2023\/10\/podantiaffinity-2-300x156.png","articleSection":["Kubernetes"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/technodare.com\/index.php\/2023\/10\/12\/how-to-make-application-highly-available-in-kubernetes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/technodare.com\/index.php\/2023\/10\/12\/how-to-make-application-highly-available-in-kubernetes\/","url":"https:\/\/technodare.com\/index.php\/2023\/10\/12\/how-to-make-application-highly-available-in-kubernetes\/","name":"How to make Application highly available in Kubernetes - TechnoDare - Simplified in Learning Technologies","isPartOf":{"@id":"https:\/\/technodare.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/technodare.com\/index.php\/2023\/10\/12\/how-to-make-application-highly-available-in-kubernetes\/#primaryimage"},"image":{"@id":"https:\/\/technodare.com\/index.php\/2023\/10\/12\/how-to-make-application-highly-available-in-kubernetes\/#primaryimage"},"thumbnailUrl":"https:\/\/technodare.com\/wp-content\/uploads\/2023\/10\/podantiaffinity-2-300x156.png","datePublished":"2023-10-12T18:08:23+00:00","dateModified":"2023-10-18T14:24:42+00:00","author":{"@id":"https:\/\/technodare.com\/#\/schema\/person\/5cb6594a35e47d8e28eb4efb6a5f323b"},"breadcrumb":{"@id":"https:\/\/technodare.com\/index.php\/2023\/10\/12\/how-to-make-application-highly-available-in-kubernetes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/technodare.com\/index.php\/2023\/10\/12\/how-to-make-application-highly-available-in-kubernetes\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/technodare.com\/index.php\/2023\/10\/12\/how-to-make-application-highly-available-in-kubernetes\/#primaryimage","url":"https:\/\/technodare.com\/wp-content\/uploads\/2023\/10\/podantiaffinity-2.png","contentUrl":"https:\/\/technodare.com\/wp-content\/uploads\/2023\/10\/podantiaffinity-2.png","width":2080,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/technodare.com\/index.php\/2023\/10\/12\/how-to-make-application-highly-available-in-kubernetes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/technodare.com\/"},{"@type":"ListItem","position":2,"name":"How to make Application highly available in Kubernetes"}]},{"@type":"WebSite","@id":"https:\/\/technodare.com\/#website","url":"https:\/\/technodare.com\/","name":"TechnoDare - Simplified in Learning Technologies","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/technodare.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/technodare.com\/#\/schema\/person\/5cb6594a35e47d8e28eb4efb6a5f323b","name":"karthick","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/2d00b84f82c7a7e83a35935c683fd508e266fdfe9367a2c8d158f717329131df?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2d00b84f82c7a7e83a35935c683fd508e266fdfe9367a2c8d158f717329131df?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2d00b84f82c7a7e83a35935c683fd508e266fdfe9367a2c8d158f717329131df?s=96&d=mm&r=g","caption":"karthick"},"description":"https:\/\/www.linkedin.com\/in\/karthick-s-b045249b\/","sameAs":["https:\/\/technodare.com","https:\/\/www.linkedin.com\/in\/karthick-s-b045249b\/"],"url":"https:\/\/technodare.com\/index.php\/author\/karthickshanmugamoorthy\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/technodare.com\/index.php\/wp-json\/wp\/v2\/posts\/39","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/technodare.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/technodare.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/technodare.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/technodare.com\/index.php\/wp-json\/wp\/v2\/comments?post=39"}],"version-history":[{"count":13,"href":"https:\/\/technodare.com\/index.php\/wp-json\/wp\/v2\/posts\/39\/revisions"}],"predecessor-version":[{"id":96,"href":"https:\/\/technodare.com\/index.php\/wp-json\/wp\/v2\/posts\/39\/revisions\/96"}],"wp:attachment":[{"href":"https:\/\/technodare.com\/index.php\/wp-json\/wp\/v2\/media?parent=39"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/technodare.com\/index.php\/wp-json\/wp\/v2\/categories?post=39"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/technodare.com\/index.php\/wp-json\/wp\/v2\/tags?post=39"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}