{"id":2184,"date":"2017-01-03T19:46:07","date_gmt":"2017-01-03T19:46:06","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2184"},"modified":"2025-06-13T17:14:11","modified_gmt":"2025-06-14T00:14:11","slug":"kubernetes-cluster-amazon-expose-service","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/","title":{"rendered":"Kubernetes Cluster on Amazon and Expose Couchbase Service"},"content":{"rendered":"<p>This blog is part of a multi-part\u00a0blog series that shows how to run your applications\u00a0on Kubernetes. It will use the\u00a0<a href=\"https:\/\/developer.couchbase.com\/server\">Couchbase<\/a>, an open source NoSQL distributed document database, as the\u00a0\u00a0Docker<br \/>\ncontainer.<\/p>\n<p>The first part (<a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-on-kubernetes\/\">Couchbase on Kubernetes<\/a>)\u00a0explained\u00a0how to start the\u00a0Kubernetes cluster using Vagrant.\u00a0That is a simple and easy way to\u00a0develop, test, and deploy<br \/>\nKubernetes cluster on your local machine. But this could be\u00a0of limited use rather soon as the resources are constrained by the local machine. So what do you do?<\/p>\n<p>Kubernetes cluster can be installed on Amazon as well.\u00a0This second part will show:<\/p>\n<ul>\n<li>How to setup and start the\u00a0Kubernetes cluster on\u00a0Amazon Web Services<\/li>\n<li>Run Docker container in the Kubernetes cluster<\/li>\n<li>Expose Pod on Kubernetes as Service<\/li>\n<li>Shutdown the cluster<\/li>\n<\/ul>\n<p>Here is a quick overview:<\/p>\n<p><a href=\"\/wp-content\/original-assets\/march-2016\/kubernetes-cluster-on-amazon-and-expose-couchbase-service\/couchbase-kubernetes-cluster-amazon-overview-1024x600.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-13709\" src=\"\/wp-content\/original-assets\/march-2016\/kubernetes-cluster-on-amazon-and-expose-couchbase-service\/couchbase-kubernetes-cluster-amazon-overview-1024x600.png\" alt=\"Kubernetes Cluster on Amazon with Couchbase\" width=\"604\" height=\"354\" \/><\/a><\/p>\n<p>Let&#8217;s dig into the details!<\/p>\n<h2>Setup Kubernetes Cluster on Amazon Web Services<\/h2>\n<p><a href=\"https:\/\/kubernetes.io\/v1.1\/docs\/getting-started-guides\/aws.html\">Getting Started on AWS EC2<\/a>\u00a0provide complete instructions to start Kubernetes cluster on Amazon. Make sure to have the pre-requisites (AWS account, AWS CLI, Full EC2 access)<br \/>\nmet before you follow these instructions. Kubernetes cluster can be created on Amazon as:<\/p>\n<pre class=\"lang:default decode:true\">set KUBERNETES_PROVIDER=aws\r\n.\/cluster\/kube-up.sh<\/pre>\n<p>By default, this provisions\u00a0a new VPC and a 4 node Kubernetes cluster in <code>us-west-2a<\/code> (Oregon) with <code>t2.micro\u00a0<\/code>instances running on Ubuntu. This means 5 AMIs (one for master and 4 for the worker nodes) are created.\u00a0Some<br \/>\nproperties that are worth updating:<\/p>\n<ul>\n<li>Set <code>NUM_MINIONS<\/code> environment variable to whatever number of nodes are required in the cluster. Set it to 2 if you want only two worker nodes to\u00a0be created.<\/li>\n<li>Each instance size is 1.1.x is <code>t2.micro<\/code>. Set <code>MASTER_SIZE<\/code> and <code>MINION_SIZE<\/code> environment variables to\u00a0<code>m3.medium\u00a0<\/code>otherwise the nodes are going to crawl.<\/li>\n<\/ul>\n<p>If you downloaded Kubernetes from <a href=\"https:\/\/github.com\/kubernetes\/kubernetes\/releases\">github.com\/kubernetes\/kubernetes\/releases<\/a>, then all the values can be changed in\u00a0<code>cluster\/aws\/config-default.sh<\/code>. Starting Kubernetes on<br \/>\nAmazon shows the following log:<\/p>\n<pre class=\"lang:default decode:true\">.\/kubernetes\/cluster\/kube-up.sh\r\n... Starting cluster using provider: aws\r\n... calling verify-prereqs\r\n... calling kube-up\r\nStarting cluster using os distro: vivid\r\nUploading to Amazon S3\r\n+++ Staging server tars to S3 Storage: kubernetes-staging-0eaf81fbc51209dd47c13b6d8b424149\/devel\r\n{\r\n    \"InstanceProfile\": {\r\n        \"InstanceProfileId\": \"AIPAJMNMKZSXNWXQBHXHI\",\r\n        \"Roles\": [\r\n            {\r\n                \"RoleName\": \"kubernetes-master\",\r\n                \"AssumeRolePolicyDocument\": {\r\n                    \"Version\": \"2012-10-17\",\r\n                    \"Statement\": [\r\n                        {\r\n                            \"Action\": \"sts:AssumeRole\",\r\n                            \"Effect\": \"Allow\",\r\n                            \"Principal\": {\r\n                                \"Service\": \"ec2.amazonaws.com\"\r\n                            }\r\n                        }\r\n                    ]\r\n                },\r\n                \"CreateDate\": \"2016-02-29T23:19:17Z\",\r\n                \"Path\": \"\/\",\r\n                \"RoleId\": \"AROAJW7ER37BPXX5KFTFS\",\r\n                \"Arn\": \"arn:aws:iam::598307997273:role\/kubernetes-master\"\r\n            }\r\n        ],\r\n        \"Arn\": \"arn:aws:iam::598307997273:instance-profile\/kubernetes-master\",\r\n        \"CreateDate\": \"2016-02-29T23:19:19Z\",\r\n        \"Path\": \"\/\",\r\n        \"InstanceProfileName\": \"kubernetes-master\"\r\n    }\r\n}\r\n{\r\n    \"InstanceProfile\": {\r\n        \"InstanceProfileId\": \"AIPAILRAU7RF4R2SDCULG\",\r\n        \"Path\": \"\/\",\r\n        \"Arn\": \"arn:aws:iam::598307997273:instance-profile\/kubernetes-minion\",\r\n        \"Roles\": [\r\n            {\r\n                \"Path\": \"\/\",\r\n                \"AssumeRolePolicyDocument\": {\r\n                    \"Statement\": [\r\n                        {\r\n                            \"Effect\": \"Allow\",\r\n                            \"Action\": \"sts:AssumeRole\",\r\n                            \"Principal\": {\r\n                                \"Service\": \"ec2.amazonaws.com\"\r\n                            }\r\n                        }\r\n                    ],\r\n                    \"Version\": \"2012-10-17\"\r\n                },\r\n                \"RoleName\": \"kubernetes-minion\",\r\n                \"Arn\": \"arn:aws:iam::598307997273:role\/kubernetes-minion\",\r\n                \"RoleId\": \"AROAIBEPV6VW4IEE6MRHS\",\r\n                \"CreateDate\": \"2016-02-29T23:19:21Z\"\r\n            }\r\n        ],\r\n        \"InstanceProfileName\": \"kubernetes-minion\",\r\n        \"CreateDate\": \"2016-02-29T23:19:22Z\"\r\n    }\r\n}\r\nUsing SSH key with (AWS) fingerprint: 39:b3:cb:c1:af:6a:86:de:98:95:01:3d:9a:56:bb:8b\r\nCreating vpc.\r\nAdding tag to vpc-7b46ac1f: Name=kubernetes-vpc\r\nAdding tag to vpc-7b46ac1f: KubernetesCluster=kubernetes\r\nUsing VPC vpc-7b46ac1f\r\nCreating subnet.\r\nAdding tag to subnet-cc906fa8: KubernetesCluster=kubernetes\r\nUsing subnet subnet-cc906fa8\r\nCreating Internet Gateway.\r\nUsing Internet Gateway igw-40055525\r\nAssociating route table.\r\nCreating route table\r\nAdding tag to rtb-f2dc1596: KubernetesCluster=kubernetes\r\nAssociating route table rtb-f2dc1596 to subnet subnet-cc906fa8\r\nAdding route to route table rtb-f2dc1596\r\nUsing Route Table rtb-f2dc1596\r\nCreating master security group.\r\nCreating security group kubernetes-master-kubernetes.\r\nAdding tag to sg-308b3357: KubernetesCluster=kubernetes\r\nCreating minion security group.\r\nCreating security group kubernetes-minion-kubernetes.\r\nAdding tag to sg-3b8b335c: KubernetesCluster=kubernetes\r\nUsing master security group: kubernetes-master-kubernetes sg-308b3357\r\nUsing minion security group: kubernetes-minion-kubernetes sg-3b8b335c\r\nStarting Master\r\nAdding tag to i-b71a6f70: Name=kubernetes-master\r\nAdding tag to i-b71a6f70: Role=kubernetes-master\r\nAdding tag to i-b71a6f70: KubernetesCluster=kubernetes\r\nWaiting for master to be ready\r\nAttempt 1 to check for master nodeWaiting for instance i-b71a6f70 to spawn\r\nSleeping for 3 seconds...\r\nWaiting for instance i-b71a6f70 to spawn\r\nSleeping for 3 seconds...\r\nWaiting for instance i-b71a6f70 to spawn\r\nSleeping for 3 seconds...\r\nWaiting for instance i-b71a6f70 to spawn\r\nSleeping for 3 seconds...\r\nWaiting for instance i-b71a6f70 to spawn\r\nSleeping for 3 seconds...\r\nWaiting for instance i-b71a6f70 to spawn\r\nSleeping for 3 seconds...\r\n [master running @52.34.244.195]\r\nAttaching persistent data volume (vol-e072d316) to master\r\n{\r\n    \"Device\": \"\/dev\/sdb\",\r\n    \"State\": \"attaching\",\r\n    \"InstanceId\": \"i-b71a6f70\",\r\n    \"VolumeId\": \"vol-e072d316\",\r\n    \"AttachTime\": \"2016-03-02T18:10:15.985Z\"\r\n}\r\nAttempt 1 to check for SSH to master [ssh to master working]\r\nAttempt 1 to check for salt-master [salt-master not working yet]\r\nAttempt 2 to check for salt-master [salt-master not working yet]\r\nAttempt 3 to check for salt-master [salt-master not working yet]\r\nAttempt 4 to check for salt-master [salt-master not working yet]\r\nAttempt 5 to check for salt-master [salt-master not working yet]\r\nAttempt 6 to check for salt-master [salt-master not working yet]\r\nAttempt 7 to check for salt-master [salt-master not working yet]\r\nAttempt 8 to check for salt-master [salt-master not working yet]\r\nAttempt 9 to check for salt-master [salt-master not working yet]\r\nAttempt 10 to check for salt-master [salt-master not working yet]\r\nAttempt 11 to check for salt-master [salt-master not working yet]\r\nAttempt 12 to check for salt-master [salt-master not working yet]\r\nAttempt 13 to check for salt-master [salt-master not working yet]\r\nAttempt 14 to check for salt-master [salt-master running]\r\nCreating minion configuration\r\nCreating autoscaling group\r\n 0 minions started; waiting\r\n 0 minions started; waiting\r\n 0 minions started; waiting\r\n 0 minions started; waiting\r\n 2 minions started; ready\r\nWaiting 3 minutes for cluster to settle\r\n..................Re-running salt highstate\r\nWaiting for cluster initialization.\r\n\r\n  This will continually check to see if the API for kubernetes is reachable.\r\n  This might loop forever if there was some uncaught error during start\r\n  up.\r\n\r\nKubernetes cluster created.\r\ncluster \"aws_kubernetes\" set.\r\nuser \"aws_kubernetes\" set.\r\ncontext \"aws_kubernetes\" set.\r\nswitched to context \"aws_kubernetes\".\r\nWrote config for aws_kubernetes to \/Users\/arungupta\/.kube\/config\r\nSanity checking cluster...\r\nAttempt 1 to check Docker on node @ 52.37.172.215 ...not working yet\r\nAttempt 2 to check Docker on node @ 52.37.172.215 ...not working yet\r\nAttempt 3 to check Docker on node @ 52.37.172.215 ...working\r\nAttempt 1 to check Docker on node @ 52.27.90.19 ...working\r\n\r\nKubernetes cluster is running.  The master is running at:\r\n\r\n  https:\/\/52.34.244.195\r\n\r\nThe user name and password to use is located in \/Users\/arungupta\/.kube\/config.\r\n\r\n... calling validate-cluster\r\nWaiting for 2 ready nodes. 1 ready nodes, 2 registered. Retrying.\r\nFound 2 node(s).\r\nNAME                                        LABELS                                                             STATUS    AGE\r\nip-172-20-0-92.us-west-2.compute.internal   kubernetes.io\/hostname=ip-172-20-0-92.us-west-2.compute.internal   Ready     56s\r\nip-172-20-0-93.us-west-2.compute.internal   kubernetes.io\/hostname=ip-172-20-0-93.us-west-2.compute.internal   Ready     35s\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:\/\/52.34.244.195\r\nElasticsearch is running at https:\/\/52.34.244.195\/api\/v1\/proxy\/namespaces\/kube-system\/services\/elasticsearch-logging\r\nHeapster is running at https:\/\/52.34.244.195\/api\/v1\/proxy\/namespaces\/kube-system\/services\/heapster\r\nKibana is running at https:\/\/52.34.244.195\/api\/v1\/proxy\/namespaces\/kube-system\/services\/kibana-logging\r\nKubeDNS is running at https:\/\/52.34.244.195\/api\/v1\/proxy\/namespaces\/kube-system\/services\/kube-dns\r\nKubeUI is running at https:\/\/52.34.244.195\/api\/v1\/proxy\/namespaces\/kube-system\/services\/kube-ui\r\nGrafana is running at https:\/\/52.34.244.195\/api\/v1\/proxy\/namespaces\/kube-system\/services\/monitoring-grafana\r\nInfluxDB is running at https:\/\/52.34.244.195\/api\/v1\/proxy\/namespaces\/kube-system\/services\/monitoring-influxdb<\/pre>\n<p>Amazon Console shows:<\/p>\n<p><a href=\"\/wp-content\/original-assets\/march-2016\/kubernetes-cluster-on-amazon-and-expose-couchbase-service\/kubernetes-cluster-amazon-1024x222.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-13705\" src=\"\/wp-content\/original-assets\/march-2016\/kubernetes-cluster-on-amazon-and-expose-couchbase-service\/kubernetes-cluster-amazon-1024x222.png\" alt=\"Kubernetes Cluster on Amazon\" width=\"604\" height=\"131\" \/><\/a><\/p>\n<p>Three instances are created as shown &#8211; one for master node and two for worker nodes. Username and password for the\u00a0Kubernetes master are stored in\u00a0<code>\/Users\/arungupta\/.kube\/config<\/code>. Look for a section like:<\/p>\n<pre class=\"lang:default decode:true\">- name: aws_kubernetes\r\n  user:\r\n    client-certificate-data: DATA\r\n    client-key-data: DATA\r\n    password: 3FkxcAURLCWBXc9H\r\n    username: admin<\/pre>\n<h2>Run Docker container in Kubernetes Cluster on Amazon<\/h2>\n<p>Now that the cluster is up and running,\u00a0get a list of all the nodes:<\/p>\n<pre class=\"lang:default decode:true\">.\/kubernetes\/cluster\/kubectl.sh get no\r\nNAME                                        LABELS                                                             STATUS    AGE\r\nip-172-20-0-92.us-west-2.compute.internal   kubernetes.io\/hostname=ip-172-20-0-92.us-west-2.compute.internal   Ready     18m\r\nip-172-20-0-93.us-west-2.compute.internal   kubernetes.io\/hostname=ip-172-20-0-93.us-west-2.compute.internal   Ready     18m<\/pre>\n<p>It shows two worker nodes. Create a new Couchbase pod:<\/p>\n<pre class=\"lang:default decode:true\">.\/kubernetes\/cluster\/kubectl.sh run couchbase --image=arungupta\/couchbase\r\nreplicationcontroller \"couchbase\" created<\/pre>\n<p>Notice, how the image name can be specified on the CLI. This command\u00a0creates a Replication Controller with a single pod. The pod uses <a href=\"https:\/\/github.com\/arun-gupta\/docker-images\/tree\/master\/couchbase\">arungupta\/couchbase<\/a> Docker image<br \/>\nthat provides a pre-configured Couchbase server. Any Docker image can be specified here. Get all the RC resources:<\/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          12m<\/pre>\n<p>This shows the Replication Controller that is created for you. Get all the\u00a0Pods:<\/p>\n<pre class=\"lang:default decode:true\">.\/kubernetes\/cluster\/kubectl.sh get po\r\nNAME              READY     STATUS    RESTARTS   AGE\r\ncouchbase-kil4y   1\/1       Running   0          12m<\/pre>\n<p>The output\u00a0shows\u00a0the Pod that is created\u00a0as part of the Replication Controller. Get more details about the Pod:<\/p>\n<pre class=\"lang:default decode:true\">.\/kubernetes\/cluster\/kubectl.sh describe po couchbase-kil4y\r\nName:    couchbase-kil4y\r\nNamespace:   default\r\nImage(s):   arungupta\/couchbase\r\nNode:    ip-172-20-0-93.us-west-2.compute.internal\/172.20.0.93\r\nStart Time:   Wed, 02 Mar 2016 10:25:47 -0800\r\nLabels:    run=couchbase\r\nStatus:    Running\r\nReason:    \r\nMessage:   \r\nIP:    10.244.1.4\r\nReplication Controllers: couchbase (1\/1 replicas created)\r\nContainers:\r\n  couchbase:\r\n    Container ID: docker:\/\/1c33e4f28978a5169a5d166add7c763de59839ed1f12865f4643456efdc0c60e\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:  Wed, 02 Mar 2016 10:26:18 -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-xuxn5:\r\n    Type: Secret (a secret that should populate this volume)\r\n    SecretName: default-token-xuxn5\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  13m  13m  1 {scheduler }         Scheduled Successfully assigned couchbase-kil4y to ip-172-20-0-93.us-west-2.compute.internal\r\n  13m  13m  1 {kubelet ip-172-20-0-93.us-west-2.compute.internal} implicitly required container POD Pulled  Container image \"gcr.io\/google_containers\/pause:0.8.0\" already present on machine\r\n  13m  13m  1 {kubelet ip-172-20-0-93.us-west-2.compute.internal} implicitly required container POD Created  Created with docker id 3830f504a7b6\r\n  13m  13m  1 {kubelet ip-172-20-0-93.us-west-2.compute.internal} implicitly required container POD Started  Started with docker id 3830f504a7b6\r\n  13m  13m  1 {kubelet ip-172-20-0-93.us-west-2.compute.internal} spec.containers{couchbase}  Pulling  Pulling image \"arungupta\/couchbase\"\r\n  12m  12m  1 {kubelet ip-172-20-0-93.us-west-2.compute.internal} spec.containers{couchbase}  Pulled  Successfully pulled image \"arungupta\/couchbase\"\r\n  12m  12m  1 {kubelet ip-172-20-0-93.us-west-2.compute.internal} spec.containers{couchbase}  Created  Created with docker id 1c33e4f28978\r\n  12m  12m  1 {kubelet ip-172-20-0-93.us-west-2.compute.internal} spec.containers{couchbase}  Started  Started with docker id 1c33e4f28978<\/pre>\n<h2>Expose Pod\u00a0on Kubernetes as Service<\/h2>\n<p>Now that our pod is running, how do I access the Couchbase server? You need to expose it outside the Kubernetes cluster. The <code>kubectl expose<\/code> command takes a pod, service or replication controller and expose it as a Kubernetes Service. Let&#8217;s<br \/>\nexpose the replication controller\u00a0previously created and expose it:<\/p>\n<pre class=\"lang:default decode:true\">.\/kubernetes\/cluster\/kubectl.sh expose rc couchbase --target-port=8091 --port=8091 --type=LoadBalancer\r\nservice \"couchbase\" exposed<\/pre>\n<p>Get more details about the Service:<\/p>\n<pre class=\"lang:default decode:true\">.\/kubernetes\/cluster\/kubectl.sh describe svc couchbase\r\nName:   couchbase\r\nNamespace:  default\r\nLabels:   run=couchbase\r\nSelector:  run=couchbase\r\nType:   LoadBalancer\r\nIP:   10.0.158.93\r\nLoadBalancer Ingress: a44d3f016e0a411e5888f0206c9933da-1869988881.us-west-2.elb.amazonaws.com\r\nPort:    8091\/TCP\r\nNodePort:   32415\/TCP\r\nEndpoints:  10.244.1.4:8091\r\nSession Affinity: None\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  7s  7s  1 {service-controller }   CreatingLoadBalancer Creating load balancer\r\n  5s  5s  1 {service-controller }   CreatedLoadBalancer Created load balancer<\/pre>\n<p>The <code>Loadbalancer<\/code> attribute Ingress gives you the address of\u00a0the load balancer that is now publicly accessible. Wait for 3 minutes to let the load balancer\u00a0settle down. Access it using port 8091\u00a0and\u00a0the login page\u00a0for<br \/>\nCouchbase Web Console shows up:<br \/>\n<a href=\"\/wp-content\/original-assets\/march-2016\/kubernetes-cluster-on-amazon-and-expose-couchbase-service\/couchbase-kubernetes-login-page.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13707\" src=\"\/wp-content\/original-assets\/march-2016\/kubernetes-cluster-on-amazon-and-expose-couchbase-service\/couchbase-kubernetes-login-page.png\" alt=\"Kubernetes on Amazon - Couchbase Login Page\" width=\"790\" height=\"468\" \/><\/a><\/p>\n<p>Enter the credentials as &#8220;Administrator&#8221; and &#8220;password&#8221; to see the Web Console:<br \/>\n<a href=\"\/wp-content\/original-assets\/march-2016\/kubernetes-cluster-on-amazon-and-expose-couchbase-service\/cuochbase-kubernetes-amazon-web-console-1024x544.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-13708\" src=\"\/wp-content\/original-assets\/march-2016\/kubernetes-cluster-on-amazon-and-expose-couchbase-service\/cuochbase-kubernetes-amazon-web-console-1024x544.png\" alt=\"Kubernetes on Amazon - Couchbase Web Console\" width=\"604\" height=\"321\" \/><\/a><\/p>\n<p>And so you just\u00a0accessed your pod outside the Kubernetes cluster.<\/p>\n<h2>Shutdown Kubernetes\u00a0Cluster<\/h2>\n<p>Finally, shutdown the cluster using <code>cluster\/kube-down.sh<\/code> script.<\/p>\n<pre class=\"lang:default decode:true\">.\/kubernetes\/cluster\/kube-down.sh \r\nBringing down cluster using provider: aws\r\nDeleting ELBs in: vpc-7b46ac1f\r\nWaiting for ELBs to be deleted\r\nAll ELBs deleted\r\nDeleting auto-scaling group: kubernetes-minion-group\r\nDeleting auto-scaling launch configuration: kubernetes-minion-group\r\nDeleting instances in VPC: vpc-7b46ac1f\r\nWaiting for instances to be deleted\r\nInstances not yet deleted: i-45077282 i-44077283 i-b71a6f70\r\nSleeping for 3 seconds...\r\nInstances not yet deleted: i-45077282 i-44077283 i-b71a6f70\r\nSleeping for 3 seconds...\r\nInstances not yet deleted: i-45077282 i-44077283 i-b71a6f70\r\nSleeping for 3 seconds...\r\nInstances not yet deleted: i-45077282 i-44077283 i-b71a6f70\r\nSleeping for 3 seconds...\r\nInstances not yet deleted: i-45077282 i-44077283 i-b71a6f70\r\nSleeping for 3 seconds...\r\nInstances not yet deleted: i-45077282 i-44077283 i-b71a6f70\r\nSleeping for 3 seconds...\r\nInstances not yet deleted: i-45077282 i-44077283 i-b71a6f70\r\nSleeping for 3 seconds...\r\nInstances not yet deleted: i-45077282 i-44077283 i-b71a6f70\r\nSleeping for 3 seconds...\r\nInstances not yet deleted: i-45077282 i-44077283 i-b71a6f70\r\nSleeping for 3 seconds...\r\nInstances not yet deleted: i-45077282 i-44077283 i-b71a6f70\r\nSleeping for 3 seconds...\r\nInstances not yet deleted: i-45077282 i-44077283 i-b71a6f70\r\nSleeping for 3 seconds...\r\nInstances not yet deleted: i-45077282 i-44077283 i-b71a6f70\r\nSleeping for 3 seconds...\r\nInstances not yet deleted: i-44077283 i-b71a6f70\r\nSleeping for 3 seconds...\r\nAll instances deleted\r\nDeleting VPC: vpc-7b46ac1f\r\nCleaning up security group: sg-308b3357\r\nCleaning up security group: sg-3b8b335c\r\nCleaning up security group: sg-e3813984\r\nDeleting security group: sg-308b3357\r\nDeleting security group: sg-3b8b335c\r\nDeleting security group: sg-e3813984\r\nDone<\/pre>\n<p>For a complete clean up, you still need to explicitly delete the S3 bucket where Kubernetes binaries are stored.<\/p>\n<p>Enjoy!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This blog is part of a multi-part\u00a0blog series that shows how to run your applications\u00a0on Kubernetes. It will use the\u00a0Couchbase, an open source NoSQL distributed document database, as the\u00a0\u00a0Docker container. The first part (Couchbase on Kubernetes)\u00a0explained\u00a0how to start the\u00a0Kubernetes cluster [&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":[10124,1545],"ppma_author":[8933],"class_list":["post-2184","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","tag-amazon-web-services-aws","tag-kubernetes"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Kubernetes Cluster on Amazon and Expose Couchbase Service - 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\/kubernetes-cluster-amazon-expose-service\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kubernetes Cluster on Amazon and Expose Couchbase Service\" \/>\n<meta property=\"og:description\" content=\"This blog is part of a multi-part\u00a0blog series that shows how to run your applications\u00a0on Kubernetes. It will use the\u00a0Couchbase, an open source NoSQL distributed document database, as the\u00a0\u00a0Docker container. The first part (Couchbase on Kubernetes)\u00a0explained\u00a0how to start the\u00a0Kubernetes cluster [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-03T19:46:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T00:14:11+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=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/\"},\"author\":{\"name\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f\"},\"headline\":\"Kubernetes Cluster on Amazon and Expose Couchbase Service\",\"datePublished\":\"2017-01-03T19:46:06+00:00\",\"dateModified\":\"2025-06-14T00:14:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/\"},\"wordCount\":607,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"Amazon Web Services (AWS)\",\"kubernetes\"],\"articleSection\":[\"Couchbase Server\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/\",\"name\":\"Kubernetes Cluster on Amazon and Expose Couchbase Service - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-01-03T19:46:06+00:00\",\"dateModified\":\"2025-06-14T00:14:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/#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\/kubernetes-cluster-amazon-expose-service\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kubernetes Cluster on Amazon and Expose Couchbase Service\"}]},{\"@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":"Kubernetes Cluster on Amazon and Expose Couchbase Service - 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\/kubernetes-cluster-amazon-expose-service\/","og_locale":"en_US","og_type":"article","og_title":"Kubernetes Cluster on Amazon and Expose Couchbase Service","og_description":"This blog is part of a multi-part\u00a0blog series that shows how to run your applications\u00a0on Kubernetes. It will use the\u00a0Couchbase, an open source NoSQL distributed document database, as the\u00a0\u00a0Docker container. The first part (Couchbase on Kubernetes)\u00a0explained\u00a0how to start the\u00a0Kubernetes cluster [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-01-03T19:46:06+00:00","article_modified_time":"2025-06-14T00:14:11+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":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/"},"author":{"name":"Arun Gupta, VP, Developer Advocacy, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f"},"headline":"Kubernetes Cluster on Amazon and Expose Couchbase Service","datePublished":"2017-01-03T19:46:06+00:00","dateModified":"2025-06-14T00:14:11+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/"},"wordCount":607,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["Amazon Web Services (AWS)","kubernetes"],"articleSection":["Couchbase Server"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/","url":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/","name":"Kubernetes Cluster on Amazon and Expose Couchbase Service - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-01-03T19:46:06+00:00","dateModified":"2025-06-14T00:14:11+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/kubernetes-cluster-amazon-expose-service\/#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\/kubernetes-cluster-amazon-expose-service\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Kubernetes Cluster on Amazon and Expose Couchbase Service"}]},{"@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\/2184","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=2184"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2184\/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=2184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=2184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=2184"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=2184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}