couchbase_Kubernetes上的Couchbase

couchbase

由于此推文,该博客是可能的!

Kubernetes是Google针对Docker容器开发的一个开放源码编排系统。 它管理跨多个主机的容器化应用程序,并提供用于部署,维护和扩展应用程序的基本机制。

它允许用户为所需状态提供声明性原语,例如“需要5个Couchbase服务器”。 Kubernetes的自我修复机制(例如自动重新启动,重新调度和复制容器)可确保满足此状态。 用户只需定义状态,Kubernetes可以确保始终在集群上满足该状态。

Kubernetes的关键概念解释了Kubernetes的关键概念。

这个由多部分组成的博客系列将展示如何以多种方式在Kubernetes上运行Couchbase 。 第一部分从使用Vagrant的简单设置开始。

Kubernetes入门

运行Kubernetes的方法有多种,但我发现了简单的方法(不一定是可预测的��方法是使用Vagrant运行。

  • 在撰写本文时,下载最新的Kubernetes版本 1.1.8,并扩展档案。
  • 以以下方式启动Kubernetes集群:
    cd kubernetes
     
    export KUBERNETES_PROVIDER=vagrant
    ./cluster/kube-up.sh

    输出显示为:

    kubernetes-1.1.8 > ./kubernetes/cluster/kube-up.sh 
    ... Starting cluster using provider: vagrant
    ... calling verify-prereqs
    ... calling kube-up
    Bringing machine 'master' up with 'virtualbox' provider...
    Bringing machine 'minion-1' up with 'virtualbox' provider...
    ==> master: Importing base box 'kube-fedora21'...
     
    . . .
     
    Validate output:
    NAME                 STATUS    MESSAGE              ERROR
    controller-manager   Healthy   ok                   nil
    scheduler            Healthy   ok                   nil
    etcd-0               Healthy   {"health": "true"}   nil
    etcd-1               Healthy   {"health": "true"}   nil
    Cluster validation succeeded
    Done, listing cluster services:
     
    Kubernetes master is running at https://10.245.1.2
    Heapster is running at https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/heapster
    KubeDNS is running at https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/kube-dns
    KubeUI is running at https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/kube-ui
    Grafana is running at https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/monitoring-grafana
    InfluxDB is running at https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/monitoring-influxdb

在Kubernetes集群上运行Couchbase

在Kubernetes中开始运行Docker容器的最简单方法是使用kubectl run命令。

该命令的用法是:

kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [flags]

该命令运行一个特定的映像,该映像可能已复制。 通过创建复制控制器来管理创建的容器来处理映像复制。

可以使用以下命令查看运行此命令的选项的完整列表:

./cluster/kubectl.sh run --help

Couchbase Docker容器介绍了Couchbase的不同Docker容器。 对于此博客,我们将使用预先配置的arungupta/couchbase映像。

./cluster/kubectl.sh run couchbase --image=arungupta/couchbase

显示输出:

replicationcontroller "couchbase" created

输出确认已创建复制控制器。 让我们验证一下:

./kubernetes/cluster/kubectl.sh get rc
CONTROLLER   CONTAINER(S)   IMAGE(S)              SELECTOR        REPLICAS   AGE
couchbase    couchbase      arungupta/couchbase   run=couchbase   1          17s

现在,检查吊舱:

./kubernetes/cluster/kubectl.sh get po
NAME              READY     STATUS    RESTARTS   AGE
couchbase-tzdhl   0/1       Pending   0          36s

让我们检查吊舱的状态:

./kubernetes/cluster/kubectl.sh describe pod couchbase-tzdhl
Name:                couchbase-tzdhl
Namespace:            default
Image(s):            arungupta/couchbase
Node:                10.245.1.4/10.245.1.4
Start Time:            Fri, 26 Feb 2016 18:05:10 -0800
Labels:                run=couchbase
Status:                Running
Reason:                
Message:            
IP:                10.246.67.2
Replication Controllers:    couchbase (1/1 replicas created)
Containers:
  couchbase:
    Container ID:    docker://56dddb66bf60a590e588b972d5cae997ec96149066a9fb8075548c982eb14961
    Image:        arungupta/couchbase
    Image ID:        docker://080e2e96b3fc22964f3dec079713cdf314e15942d6eb135395134d629e965062
    QoS Tier:
      cpu:    Burstable
    Requests:
      cpu:        100m
    State:        Running
      Started:        Fri, 26 Feb 2016 18:05:56 -0800
    Ready:        True
    Restart Count:    0
    Environment Variables:
Conditions:
  Type        Status
  Ready     True 
Volumes:
  default-token-clfeb:
    Type:    Secret (a secret that should populate this volume)
    SecretName:    default-token-clfeb
Events:
  FirstSeen    LastSeen    Count    From            SubobjectPath                Reason        Message
  ─────────    ────────    ─────    ────            ─────────────                ──────        ───────
  1m        1m        1    {scheduler }                            Scheduled    Successfully assigned couchbase-tzdhl to 10.245.1.4
  1m        1m        1    {kubelet 10.245.1.4}    implicitly required container POD    Pulling        Pulling image "gcr.io/google_containers/pause:0.8.0"
  59s        59s        1    {kubelet 10.245.1.4}    implicitly required container POD    Created        Created with docker id 2dac5f81f4c2
  59s        59s        1    {kubelet 10.245.1.4}    spec.containers{couchbase}        Pulling        Pulling image "arungupta/couchbase"
  59s        59s        1    {kubelet 10.245.1.4}    implicitly required container POD    Started        Started with docker id 2dac5f81f4c2
  59s        59s        1    {kubelet 10.245.1.4}    implicitly required container POD    Pulled        Successfully pulled image "gcr.io/google_containers/pause:0.8.0"
  19s        19s        1    {kubelet 10.245.1.4}    spec.containers{couchbase}        Pulled        Successfully pulled image "arungupta/couchbase"
  18s        18s        1    {kubelet 10.245.1.4}    spec.containers{couchbase}        Created        Created with docker id 56dddb66bf60
  18s        18s        1    {kubelet 10.245.1.4}    spec.containers{couchbase}        Started        Started with docker id 56dddb66bf60

输出的第五行显示该节点的IP为10.245.1.4。 以后将使用它来访问Web控制台。

此输出的最后一行显示窗格已准备就绪。 再次检查窗格的状态将显示:

./kubernetes/cluster/kubectl.sh get po
NAME              READY     STATUS    RESTARTS   AGE
couchbase-tzdhl   1/1       Running   0          2m

Kubernetes集群上的Couchbase Web控制台

现在,您的Couchbase容器正在Kubernetes集群中运行,您可能想要查看Web控制台

每个Pod分配有一个唯一的IP地址,但是该地址只能在群集中访问。 可以使用kubectl expose命令kubectl expose

该命令采用Replication Controller,Service或Pod,并将其公开为新的Kubernetes Service。 可以通过给出以下命令来完成:

./cluster/kubectl.sh expose rc couchbase --target-port=8091 --port=8091 --external-ip=10.245.1.4
service "couchbase" exposed

在此命令中:

  • --target-port是服务应将流量定向到的容器上--target-port的名称或端口号
  • --port是服务应在其上服务的端口
  • --external-ip是要为服务设置的外部IP地址。 请注意,此IP地址是使用kubectl describe pod命令获得的。

现在,您可以通过http://10.245.1.4:8091访问Couchbase Web控制台,外观如下:

couchbase-kubernetes-控制台着陆页

输入密码凭据作为Administrator / password 。 这些凭证是在Docker映像创建期间在github.com/arun-gupta/docker-images/blob/master/couchbase/configure-cluster.sh#L9中指定的。

couchbase-web-console-kubernetes-主页面-1024x445

瞧!

StackOverflowCouchbase论坛上与我们讨论 。 您也可以通过@couchbasedev@couchbase关注我们。

翻译自: https://www.javacodegeeks.com/2016/03/couchbase-on-kubernetes.html

couchbase

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值