{"id":2472,"date":"2017-01-03T08:54:20","date_gmt":"2017-01-03T08:54:20","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2472"},"modified":"2023-06-22T06:01:46","modified_gmt":"2023-06-22T13:01:46","slug":"couchbase-on-kubernetes","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/","title":{"rendered":"Couchbase on Kubernetes"},"content":{"rendered":"<p>This blog is possible because of this tweet!<\/p>\n<blockquote class=\"twitter-tweet\">\n<p dir=\"ltr\">Had a great <a href=\"https:\/\/twitter.com\/hashtag\/Couchbase?src=hash\">#Couchbase<\/a> <a href=\"https:\/\/twitter.com\/hashtag\/Kubernetes?src=hash\">#Kubernetes<\/a> hacking session with <a href=\"https:\/\/twitter.com\/saturnism\">@saturnism<\/a>, learned a lot, look forward to some nice blogs.<\/p>\n<p>\u2014 Arun Gupta (@arungupta) <a href=\"https:\/\/twitter.com\/arungupta\/status\/703378246432231424\">February 27, 2016<\/a><\/p><\/blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-12277 alignleft\" src=\"\/wp-content\/original-assets\/kubernetes-logo.png\" alt=\"kubernetes-logo\" width=\"106\" height=\"94\" \/><\/p>\n<p>Kubernetes is an open source orchestration system by Google for Docker containers.\u00a0\u00a0It manages\u00a0containerized applications\u00a0across multiple hosts\u00a0and\u00a0provides basic mechanisms for deployment, maintenance, and scaling of applications. It allows\u00a0the user to\u00a0provide declarative primitives for the desired state, for example \u201cneed 5 Couchbase\u00a0servers\u201d.\u00a0Kubernetes self-healing mechanisms, such as auto-restarting, re-scheduling, and replicating containers then ensure that this state is met. The user just define the state and Kubernetes ensures that the state is met at all times on the cluster. <a href=\"https:\/\/blog.arungupta.me\/key-concepts-kubernetes\/\">Key Concepts of Kubernetes<\/a>\u00a0explains the key concepts of Kubernetes. This\u00a0multi-part blog series will show\u00a0how to run <a href=\"https:\/\/developer.couchbase.com\/server\">Couchbase<\/a>\u00a0on\u00a0Kubernetes in multiple ways. The first part starts with a simple setup using Vagrant.<\/p>\n<h2>Getting Started with Kubernetes<\/h2>\n<p>There are multiple ways to run Kubernetes but I found the simples (not necessarily predictable ;) way is to run using Vagrant.<\/p>\n<ul>\n<li>Download the latest <a href=\"https:\/\/github.com\/kubernetes\/kubernetes\/releases\/latest\">Kubernetes release<\/a>, 1.1.8 as of this writing,\u00a0and expand the archive.<\/li>\n<li>Start the\u00a0Kubernetes cluster as:\n<pre class=\"lang:default decode:true\">cd kubernetes\r\n\r\nexport KUBERNETES_PROVIDER=vagrant\r\n.\/cluster\/kube-up.sh<\/pre>\n<p>This shows the output as:<\/p>\n<pre class=\"lang:default decode:true\">kubernetes-1.1.8 &gt; .\/kubernetes\/cluster\/kube-up.sh \r\n... Starting cluster using provider: vagrant\r\n... calling verify-prereqs\r\n... calling kube-up\r\nBringing machine 'master' up with 'virtualbox' provider...\r\nBringing machine 'minion-1' up with 'virtualbox' provider...\r\n==&gt; master: Importing base box 'kube-fedora21'...\r\n\r\n. . .\r\n\r\nValidate output:\r\nNAME                 STATUS    MESSAGE              ERROR\r\ncontroller-manager   Healthy   ok                   nil\r\nscheduler            Healthy   ok                   nil\r\netcd-0               Healthy   {\"health\": \"true\"}   nil\r\netcd-1               Healthy   {\"health\": \"true\"}   nil\r\nCluster validation succeeded\r\nDone, listing cluster services:\r\n\r\nKubernetes master is running at https:\/\/10.245.1.2\r\nHeapster is running at https:\/\/10.245.1.2\/api\/v1\/proxy\/namespaces\/kube-system\/services\/heapster\r\nKubeDNS is running at https:\/\/10.245.1.2\/api\/v1\/proxy\/namespaces\/kube-system\/services\/kube-dns\r\nKubeUI is running at https:\/\/10.245.1.2\/api\/v1\/proxy\/namespaces\/kube-system\/services\/kube-ui\r\nGrafana is running at https:\/\/10.245.1.2\/api\/v1\/proxy\/namespaces\/kube-system\/services\/monitoring-grafana\r\nInfluxDB is running at https:\/\/10.245.1.2\/api\/v1\/proxy\/namespaces\/kube-system\/services\/monitoring-influxdb<\/pre>\n<\/li>\n<\/ul>\n<h2>Run Couchbase\u00a0on Kubernetes Cluster<\/h2>\n<p>The easiest way to start running a Docker container in Kubernetes is using the <code><a href=\"https:\/\/github.com\/kubernetes\/kubernetes\/blob\/release-1.1\/docs\/user-guide\/kubectl\/kubectl_run.md\">kubectl run<\/a><\/code> command. The command usage is:<\/p>\n<pre class=\"lang:default decode:true\">kubectl run NAME --image=image [--env=\"key=value\"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [flags]<\/pre>\n<p>The command runs a particular image, possibly replicated. The image replication is handled by creating\u00a0a Replication Controller to manage the created container(s). Complete list of options\u00a0to run this command can be seen using:<\/p>\n<pre class=\"lang:default decode:true\">.\/cluster\/kubectl.sh run --help<\/pre>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-docker-container\/\">Couchbase Docker Container<\/a>\u00a0explains the different Docker container for Couchbase.\u00a0For this blog, we&#8217;ll use <code>arungupta\/couchbase<\/code> image as that is pre-configured.<\/p>\n<pre class=\"lang:default decode:true\">.\/cluster\/kubectl.sh run couchbase --image=arungupta\/couchbase<\/pre>\n<p>This shows the output:<\/p>\n<pre class=\"lang:default decode:true\">replicationcontroller \"couchbase\" created<\/pre>\n<p>The output confirms that a Replication Controller is created. Lets verify it:<\/p>\n<pre class=\"lang:default decode:true\">.\/kubernetes\/cluster\/kubectl.sh get rc\r\nCONTROLLER   CONTAINER(S)   IMAGE(S)              SELECTOR        REPLICAS   AGE\r\ncouchbase    couchbase      arungupta\/couchbase   run=couchbase   1          17s<\/pre>\n<p>Now, check the pods:<\/p>\n<pre class=\"lang:default decode:true\">.\/kubernetes\/cluster\/kubectl.sh get po\r\nNAME              READY     STATUS    RESTARTS   AGE\r\ncouchbase-tzdhl   0\/1       Pending   0          36s<\/pre>\n<p>Lets check the status of the pod:<\/p>\n<pre class=\"lang:default decode:true\">.\/kubernetes\/cluster\/kubectl.sh describe pod couchbase-tzdhl\r\nName:    couchbase-tzdhl\r\nNamespace:   default\r\nImage(s):   arungupta\/couchbase\r\nNode:    10.245.1.4\/10.245.1.4\r\nStart Time:   Fri, 26 Feb 2016 18:05:10 -0800\r\nLabels:    run=couchbase\r\nStatus:    Running\r\nReason:    \r\nMessage:   \r\nIP:    10.246.67.2\r\nReplication Controllers: couchbase (1\/1 replicas created)\r\nContainers:\r\n  couchbase:\r\n    Container ID: docker:\/\/56dddb66bf60a590e588b972d5cae997ec96149066a9fb8075548c982eb14961\r\n    Image:  arungupta\/couchbase\r\n    Image ID:  docker:\/\/080e2e96b3fc22964f3dec079713cdf314e15942d6eb135395134d629e965062\r\n    QoS Tier:\r\n      cpu: Burstable\r\n    Requests:\r\n      cpu:  100m\r\n    State:  Running\r\n      Started:  Fri, 26 Feb 2016 18:05:56 -0800\r\n    Ready:  True\r\n    Restart Count: 0\r\n    Environment Variables:\r\nConditions:\r\n  Type  Status\r\n  Ready  True \r\nVolumes:\r\n  default-token-clfeb:\r\n    Type: Secret (a secret that should populate this volume)\r\n    SecretName: default-token-clfeb\r\nEvents:\r\n  FirstSeen LastSeen Count From   SubobjectPath    Reason  Message\r\n  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500   \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500    \u2500\u2500\u2500\u2500\u2500\u2500  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  1m  1m  1 {scheduler }       Scheduled Successfully assigned couchbase-tzdhl to 10.245.1.4\r\n  1m  1m  1 {kubelet 10.245.1.4} implicitly required container POD Pulling  Pulling image \"gcr.io\/google_containers\/pause:0.8.0\"\r\n  59s  59s  1 {kubelet 10.245.1.4} implicitly required container POD Created  Created with docker id 2dac5f81f4c2\r\n  59s  59s  1 {kubelet 10.245.1.4} spec.containers{couchbase}  Pulling  Pulling image \"arungupta\/couchbase\"\r\n  59s  59s  1 {kubelet 10.245.1.4} implicitly required container POD Started  Started with docker id 2dac5f81f4c2\r\n  59s  59s  1 {kubelet 10.245.1.4} implicitly required container POD Pulled  Successfully pulled image \"gcr.io\/google_containers\/pause:0.8.0\"\r\n  19s  19s  1 {kubelet 10.245.1.4} spec.containers{couchbase}  Pulled  Successfully pulled image \"arungupta\/couchbase\"\r\n  18s  18s  1 {kubelet 10.245.1.4} spec.containers{couchbase}  Created  Created with docker id 56dddb66bf60\r\n  18s  18s  1 {kubelet 10.245.1.4} spec.containers{couchbase}  Started  Started with docker id 56dddb66bf60<\/pre>\n<p>Fifth line of the output says the node&#8217;s IP is 10.245.1.4. This would be\u00a0used to access the Web Console later. The last line in this output shows that the\u00a0pod is now ready.\u00a0Checking the status of the pod again shows:<\/p>\n<pre class=\"lang:default decode:true\">.\/kubernetes\/cluster\/kubectl.sh get po\r\nNAME              READY     STATUS    RESTARTS   AGE\r\ncouchbase-tzdhl   1\/1       Running   0          2m<\/pre>\n<h2>Couchbase Web Console on\u00a0Kubernetes Cluster<\/h2>\n<p>Now that your Couchbase container is running in Kubernetes cluster, you may\u00a0like to view the <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/admin\/ui-intro.html\">Web Console<\/a>. Each pod is assigned a unique IP address, but this address is only accessible within the cluster. It can\u00a0exposed\u00a0using the <code>kubectl expose<\/code> command. This command takes a\u00a0Replication Controller, Service or Pod and expose it as new Kubernetes Service. This can be done by giving the command:<\/p>\n<pre class=\"lang:default decode:true\">.\/cluster\/kubectl.sh expose rc couchbase --target-port=8091 --port=8091 --external-ip=10.245.1.4\r\nservice \"couchbase\" exposed<\/pre>\n<p>In this command:<\/p>\n<ul>\n<li><code>--target-port<\/code> is the\u00a0name or number for the port on the container that the service should direct traffic to<\/li>\n<li><code>--port<\/code> is\u00a0the port that the service should serve on<\/li>\n<li><code>--external-ip<\/code> is\u00a0the external IP address to set for the service.\u00a0Note, this IP address\u00a0was obtained with\u00a0<code>kubectl describe pod<\/code> command earlier.<\/li>\n<\/ul>\n<p>Now, you can access the Couchbase Web\u00a0Console at https:\/\/10.245.1.4:8091 and looks like:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13681\" src=\"\/wp-content\/original-assets\/february-2016\/couchbase-on-kubernetes\/couchbase-kubernetes-console-landing-page.png\" alt=\"Couchbase Web Console on Kubernetes\" width=\"715\" height=\"467\" \/><br \/>\nEnter the password credentials as <code>Administrator<\/code>\/<code>password<\/code>.<\/p>\n<p><a href=\"\/wp-content\/original-assets\/february-2016\/couchbase-on-kubernetes\/couchbase-web-console-kubernetes-main-page-1024x445.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-13682\" src=\"\/wp-content\/original-assets\/february-2016\/couchbase-on-kubernetes\/couchbase-web-console-kubernetes-main-page-1024x445.png\" alt=\"Couchbase Web Console in Kubernetes\" width=\"604\" height=\"262\" \/><\/a><br \/>\nVoila!<br \/>\nDiscuss with us at <a href=\"https:\/\/stackoverflow.com\/questions\/tagged\/couchbase\">StackOverflow<\/a> or <a href=\"https:\/\/www.couchbase.com\/forums\/\">Couchbase Forums<\/a>. You can also follow us at <a href=\"https:\/\/twitter.com\/couchbasedev\">@couchbasedev<\/a> and <a href=\"https:\/\/twitter.com\/couchbase\">@couchbase<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This blog is possible because of this tweet! Had a great #Couchbase #Kubernetes hacking session with @saturnism, learned a lot, look forward to some nice blogs. \u2014 Arun Gupta (@arungupta) February 27, 2016 Kubernetes is an open source orchestration system [&hellip;]<\/p>\n","protected":false},"author":58,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816],"tags":[],"ppma_author":[8933],"class_list":["post-2472","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Couchbase on Kubernetes - The Couchbase Blog<\/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:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase on Kubernetes\" \/>\n<meta property=\"og:description\" content=\"This blog is possible because of this tweet! Had a great #Couchbase #Kubernetes hacking session with @saturnism, learned a lot, look forward to some nice blogs. \u2014 Arun Gupta (@arungupta) February 27, 2016 Kubernetes is an open source orchestration system [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-03T08:54:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-22T13:01:46+00:00\" \/>\n<meta name=\"author\" content=\"Arun Gupta, VP, Developer Advocacy, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@arungupta\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Arun Gupta, VP, Developer Advocacy, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/\"},\"author\":{\"name\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f\"},\"headline\":\"Couchbase on Kubernetes\",\"datePublished\":\"2017-01-03T08:54:20+00:00\",\"dateModified\":\"2023-06-22T13:01:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/\"},\"wordCount\":506,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Couchbase Server\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/\",\"name\":\"Couchbase on Kubernetes - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-01-03T08:54:20+00:00\",\"dateModified\":\"2023-06-22T13:01:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase on Kubernetes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f\",\"name\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8900a75409c646948fe0bd80f6240337\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g\",\"caption\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\"},\"description\":\"Arun Gupta is the vice president of developer advocacy at Couchbase. He has built and led developer communities for 10+ years at Sun, Oracle, and Red Hat. He has deep expertise in leading cross-functional teams to develop and execute strategy, planning and execution of content, marketing campaigns, and programs. Prior to that he led engineering teams at Sun and is a founding member of the Java EE team. Gupta has authored more than 2,000 blog posts on technology. He has extensive speaking experience in more than 40 countries on myriad topics and is a JavaOne Rock Star for three years in a row. Gupta also founded the Devoxx4Kids chapter in the US and continues to promote technology education among children. An author of several books on technology, an avid runner, a globe trotter, a Java Champion, a JUG leader, NetBeans Dream Team member, and a Docker Captain, he is easily accessible at @arungupta.\",\"sameAs\":[\"https:\/\/x.com\/arungupta\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/arun-gupta\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbase on Kubernetes - The Couchbase Blog","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:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/","og_locale":"en_US","og_type":"article","og_title":"Couchbase on Kubernetes","og_description":"This blog is possible because of this tweet! Had a great #Couchbase #Kubernetes hacking session with @saturnism, learned a lot, look forward to some nice blogs. \u2014 Arun Gupta (@arungupta) February 27, 2016 Kubernetes is an open source orchestration system [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-01-03T08:54:20+00:00","article_modified_time":"2023-06-22T13:01:46+00:00","author":"Arun Gupta, VP, Developer Advocacy, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@arungupta","twitter_misc":{"Written by":"Arun Gupta, VP, Developer Advocacy, Couchbase","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/"},"author":{"name":"Arun Gupta, VP, Developer Advocacy, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f"},"headline":"Couchbase on Kubernetes","datePublished":"2017-01-03T08:54:20+00:00","dateModified":"2023-06-22T13:01:46+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/"},"wordCount":506,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Couchbase Server"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/","name":"Couchbase on Kubernetes - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-01-03T08:54:20+00:00","dateModified":"2023-06-22T13:01:46+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase on Kubernetes"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f","name":"Arun Gupta, VP, Developer Advocacy, Couchbase","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8900a75409c646948fe0bd80f6240337","url":"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g","caption":"Arun Gupta, VP, Developer Advocacy, Couchbase"},"description":"Arun Gupta is the vice president of developer advocacy at Couchbase. He has built and led developer communities for 10+ years at Sun, Oracle, and Red Hat. He has deep expertise in leading cross-functional teams to develop and execute strategy, planning and execution of content, marketing campaigns, and programs. Prior to that he led engineering teams at Sun and is a founding member of the Java EE team. Gupta has authored more than 2,000 blog posts on technology. He has extensive speaking experience in more than 40 countries on myriad topics and is a JavaOne Rock Star for three years in a row. Gupta also founded the Devoxx4Kids chapter in the US and continues to promote technology education among children. An author of several books on technology, an avid runner, a globe trotter, a Java Champion, a JUG leader, NetBeans Dream Team member, and a Docker Captain, he is easily accessible at @arungupta.","sameAs":["https:\/\/x.com\/arungupta"],"url":"https:\/\/www.couchbase.com\/blog\/author\/arun-gupta\/"}]}},"authors":[{"term_id":8933,"user_id":58,"is_guest":0,"slug":"arun-gupta","display_name":"Arun Gupta, VP, Developer Advocacy, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g","author_category":"","last_name":"Gupta","first_name":"Arun","job_title":"","user_url":"","description":"Arun Gupta is the vice president of developer advocacy at Couchbase. He has built and led developer communities for 10+ years at Sun, Oracle, and Red Hat. He has deep expertise in leading cross-functional teams to develop and execute strategy, planning and execution of content, marketing campaigns, and programs. Prior to that he led engineering teams at Sun and is a founding member of the Java EE team.\r\n\r\nGupta has authored more than 2,000 blog posts on technology. He has extensive speaking experience in more than 40 countries on myriad topics and is a JavaOne Rock Star for three years in a row. Gupta also founded the Devoxx4Kids chapter in the US and continues to promote technology education among children. An author of several books on technology, an avid runner, a globe trotter, a Java Champion, a JUG leader, NetBeans Dream Team member, and a Docker Captain, he is easily accessible at @arungupta."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2472","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/58"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=2472"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2472\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=2472"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=2472"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=2472"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=2472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}