问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

如何在Docker上部署Kubernetes

发布网友 发布时间:2022-04-20 17:07

我来回答

2个回答

懂视网 时间:2022-04-09 22:44

CouchDB是Apache组织发布的一款开源的、面向文档类型的NoSQL数据库。由Erlang编写,使用json格式保存数据。CouchDB以RESTful的格式提供服务

可以很方便的对接各种语言的客户端

CouchDB最大的竞争对手就是熟悉的MangoDB。它们的不同点比较会在另外一篇里面写入

CouchDB 目标是做下一代的Web应用存储系统

CouchDB下载,安装:

官网:http://couchdb.apache.org/ 目前只有2.0.0版本 2016年9月份

CouchDB 安装完成后自动启动,默认是5984


Docker下的安装配置:

1、先创建一个couchdb容器,并赋值给couch1

COUCH1=$(docker run -d -p 5984 -v /var/lib/couchdb couchdb)
root@ubuntu:~# echo $COUCH1
6d708f72e25e9f0d693aa5a8ce5afd1a61e945355f728f409bc5a90676e0524c

2、给couchDB中插入数据

  要确保你的HOST是可用的

$ HOST=localhost #这里如果localhost不行,就更换成主机ip
$ URL="http://$HOST:$(docker port $COUCH1 5984 | grep -o ‘[1-9][0-9]*$‘)/_utils/"
$ echo "Navigate to $URL in your browser, and use the couch interface to add data"

操作结果:

root@ubuntu:~# HOST=123.xx.xx.x8 #这里是公网ip就不显示出来了
root@ubuntu:~# URL="http://$HOST:$(docker port $COUCH1 5984 | grep -o ‘[1-9][0-9]*$‘)/_utils/"
root@ubuntu:~# docker port $COUCH1 5984 #这里映射到了宿主机32768端口,并监听所有ip
0.0.0.0:32768
root@ubuntu:~# echo "Navigate to $URL in your browser, and use the couch interface to add data"
Navigate to http://123.xx.xx.x8:32768/_utils/ in your browser, and use the couch interface to add data
# 打开浏览器输入http://123.xx.xx.x8:32768/_utils/ 将会显示couchDB的页面

技术分享


创建数据库账号

控制台页面的左边的主要部分列出了当前数据库,并提供了一个 Create Database … 的操作;右边的侧边栏呢,从上到下分别提供了 工具、 文档 、 诊断 和 当前数据库 3个菜单。最右下角是版本号和一句话:“Welcome to Admin Party! Everyone is admin. Fix this”,什么意思呢?就是说ConchDB默认用户都是admin,对于用惯了关系型数据库的我们,本能的就会感觉这并不安全,没错,其实就是不安全!!!!,所以,点击 Fix this 来新建一个用户吧。

技术分享


注意:如果使用中发现某些按钮是灰色的或者 Compact & Cleanup 一直在转圈等待,请先看看自己是不是管理员。

点击 Create Database … 并输入一个数据库名称就可以新建一个数据啦

技术分享

创建成功后会跳转到当前新建的数据库,如果我们返回Overview页面就会发现刚才新建的数据库已经被添加到列表中了。

技术分享

CouchDB的增删改操作【INSERT/UPDATE/DELETE】

在新建的数据库的管理页面中点击 New Document,我们就可以新建一个文档,其中会包含一个默认的Id字段作为唯一标识,我们可以不用管他,同时也可以点击 Add Field 来新增字段,这里假设我们新增一个人,字段如下图:

技术分享

点击右面的“source”按钮,就能看到json格式的内容

技术分享

点击上面的“Save doucement”来保存数据,然后再主页就能看到我们新创建的数据库了

技术分享

双击Field或者Value列的单元格可以更改字段名或字段值

点击右侧的绿色对勾按钮后,该字段的值将会被保存,此时切换到Source标签就可以看到json格式的数据

编辑完成后点击上方的 Save Document 按钮就可以将刚才的json数据保存到数据库中,保存成功后系统会自动为我们添加一个 rev 字段,这个字段代表当前文档的版本号


更新操作呢也比较简单,只需要单击当前文档的Key或者双击Value就可以进入编辑页面,在编辑页面中不但能修改字段的Key/Value,还可以新增和删除字段,同样,点击 Save Document 即可保存当前修改,同时,我们可以注意到,该文档的 rev 值已经发生了变化,这代表该文档的版本号已经被更新

技术分享

同样,进入当前记录的详情页我们就可以看到 Delete Document 按钮,点击之后当前文档就会被删除。

但是,值得注意的是,当我们使用 Delete Document 操作将文档删除后,表面看是没有数据了,但是该数据仍然占用了那么多空间,并没有减少,如下图:

技术分享

这时我们需要进入数据库详情页,使用 Compact & Cleanup… 中的 Compact Database 操作来清理被占用的空间,如果发现此功能点击之后一直在转圈等待,去看看自己是不是管理员用户吧。


使用Docker再次创建一个couchDB

 COUCH2=$(docker run -d -p 5984 --volumes-from $COUCH1 couchdb)

使用浏览器浏览第二个数据库

HOST=localhost #这里如果localhost不行,就更换成主机ip
URL="http://$HOST:$(docker port $COUCH2 5984 | grep -o ‘[1-9][0-9]*$‘)/_utils/"
echo "Navigate to $URL in your browser, and use the couch interface to add data"

这里可以看到数据已经同步到couchdb的第二台上面临

技术分享


使用 cURL 通过 RESTful API 对 CouchDB 进行增删查改

Tips: 对cURL还不太了解的亲们可以搜索下,很好用的工具,可以从这里下载: http://curl.haxx.se/download/

注意:为了测试方便,我们删除原来的数据库。

前面已经介绍过,CouchDB支持使用RESTful API的方式来对数据进行操作,例如,我们在浏览器中输入 http://x.x.x.x:32768/demo 就可以查看demo数据库中详细信息。如图:

技术分享

下面是借鉴别人的操作流程,自己没有时间敲了,大家随意感受一下CouchDB流畅的RESTful操作方式:

 # 获取CouchDB相关信息
curl -X GET http://127.0.0.1:5984
{"couchdb":"Welcome","uuid":"a853c053a5a54a4d3ccbaad0d9ffd3b0","version":"1.6.1","vendor":{"version":"1.6.1","name":"The Apache Software Foundation"}}

# 创建demo数据库(需要admin权限,参照下一条命令)
curl -X PUT http://127.0.0.1:5984/demo
{"error":"unauthorized","reason":"You are not a server admin."}

# 使用用户名密码登录CouchDB,并创建demo数据库
curl -X PUT http://username:password@127.0.0.1:5984/demo
{"ok":true}

# 查看所有数据库
curl -X GET http://127.0.0.1:5984/_all_dbs
["_replicator","_users","demo"]

# 查看demo数据库相关信息
curl -X GET http://127.0.0.1:5984/demo
{"db_name":"demo","doc_count":0,"doc_del_count":0,"update_seq":0,"purge_seq":0,"compact_running":false,"disk_size":79,"data_size":0,"instance_start_time":"1452000207199340","disk_format_version":6,"committed_update_seq":0}

# 向demo数据库中添加一个文档(自动生成Id),注意:windows下需要使用Content-Type:application/json的HttpHeader
curl -H "Content-Type:application/json"  -X POST http://127.0.0.1:5984/demo -d {"name":"fooly"}
{"ok":true,"id":"3ebb59dd78ff448f283f48817800321c","rev":"1-0e4ea534f2c1e7f05e21804b5f2f7a71"}

# 查看demo数据库中的所有文档
curl -X GET http://127.0.0.1:5984/demo/_all_docs
{"total_rows":1,"offset":0,"rows":[
{"id":"3ebb59dd78ff448f283f48817800321c","key":"3ebb59dd78ff448f283f48817800321c","value":{"rev":"1-0e4ea534f2c1e7f05e21804b5f2f7a71"}}
]}

# 获取一个uuid
curl -X GET http://127.0.0.1:5984/_uuids
{"uuids":["3ebb59dd78ff448f283f4881780033c0"]}

# 向demo数据库中添加一个文档(使用获取到的uuid作为Id)
curl -H "Content-Type:application/json"  -X PUT http://127.0.0.1:5984/demo/3ebb59dd78ff448f283f4881780033c0 -d {"name":"momo314"}
{"ok":true,"id":"3ebb59dd78ff448f283f4881780033c0","rev":"1-eb393d36ac1ad38ada8361d94fc5d0b6"}

# 更新指定Id的文档(但是失败了,因为CouchDB是按版本提交的,同一个源提交多次会造成一定的混乱。所以,需要指定文档版本进行控制。)
curl -H "Content-Type:application/json"  -X PUT http://127.0.0.1:5984/demo/3ebb59dd78ff448f283f4881780033c0 -d {"name":"momo314","age":18}
{"error":"conflict","reason":"Document update conflict."}

# 更新指定Id和指定版本的文档
curl -H "Content-Type:application/json"  -X PUT http://127.0.0.1:5984/demo/3ebb59dd78ff448f283f4881780033c0 -d {"_rev":"1-eb393d36ac1ad38ada8361d94fc5d0b6","name":"momo314","age":18}
{"ok":true,"id":"3ebb59dd78ff448f283f4881780033c0","rev":"2-5d081e17588c03c27340035e420edecd"}

# 获取指定Id的文档内容
curl -X GET http://127.0.0.1:5984/demo/3ebb59dd78ff448f283f4881780033c0
{"_id":"3ebb59dd78ff448f283f4881780033c0","_rev":"2-5d081e17588c03c27340035e420edecd","name":"momo314","age":18}

# 删除指定Id和rev版本号的文档
curl -X DELETE http://username:password@127.0.0.1:5984/demo/3ebb59dd78ff448f283f4881780033c0?rev=2-5d081e17588c03c27340035e420edecd
{"ok":true,"id":"3ebb59dd78ff448f283f4881780033c0","rev":"2-5d081e17588c03c27340035e420edecd"}

# 查看demo数据库中的所有文档(刚才的文档确实被删除掉了)
curl -X GET http://127.0.0.1:5984/demo/_all_docs
{"total_rows":1,"offset":0,"rows":[
{"id":"3ebb59dd78ff448f283f48817800321c","key":"3ebb59dd78ff448f283f48817800321c","value":{"rev":"1-0e4ea534f2c1e7f05e21804b5f2f7a71"}}
]}

# 删除demo数据库(需要admin权限,参照下一条命令)
curl -X DELETE http://127.0.0.1:5984/demo
{"error":"unauthorized","reason":"You are not a server admin."}

# 使用用户名密码登录CouchDB,并删除demo数据库
curl -X DELETE http://username:password@127.0.0.1:5984/demo
{"ok":true}

# 查看所有数据库(demo数据库确实被删除掉了)
curl -X GET http://127.0.0.1:5984/_all_dbs
["_replicator","_users"]

博文参考:http://magic-conch.cool/article/2016/01/05/windows-couchdb-1

官网参考:https://docs.docker.com/engine/examples/couchdb_data_volumes/#create-first-database


本文出自 “圈中一鸟” 博客,谢绝转载!

Docker部署CouchDB

标签:couchdb   docker   

热心网友 时间:2022-04-09 19:52

为了解决跨minion之间Pod的通信问题,我们在每个minion上安装Open vSwtich,并使用GRE或者VxLAN使得跨机器之间Pod能相互通信,本文使用GRE,而VxLAN通常用在需要隔离的大规模网络中。对于Open vSwitch的具体安装步骤,可参考这篇博客,我们在这里就不再详细介绍安装步骤了。安装完Open vSwitch后,接下来便建立minion1和minion2之间的隧道。首先在minion1和minion2上建立OVS Bridge,
[root@minion1 ~]# ovs-vsctl add-br obr0

接下来建立gre,并将新建的gre0添加到obr0,在minion1上执行如下命令,
[root@minion1 ~]# ovs-vsctl add-port obr0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.230.5

在minion2上执行,
[root@minion2 ~]# ovs-vsctl add-port obr0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.230.4

至此,minion1和minion2之间的隧道已经建立。然后我们在minion1和minion2上创建Linux网桥kbr0替代Docker默认的docker0(我们假设minion1和minion2都已安装Docker),设置minion1的kbr0的地址为172.17.1.1/24, minion2的kbr0的地址为172.17.2.1/24,并添加obr0为kbr0的接口,以下命令在minion1和minion2上执行。
[root@minion1 ~]# brctl addbr kbr0 //创建linux bridge
[root@minion1 ~]# brctl addif kbr0 obr0 //添加obr0为kbr0的接口
[root@minion1 ~]# ip link set dev docker0 down //设置docker0为down状态
[root@minion1 ~]# ip link del dev docker0 //删除docker0

为了使新建的kbr0在每次系统重启后任然有效,我们在/etc/sysconfig/network-scripts/目录下新建minion1的ifcfg-kbr0如下:
DEVICE=kbr0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.17.1.1
NETMASK=255.255.255.0
GATEWAY=172.17.1.0
USERCTL=no
TYPE=Bridge
IPV6INIT=no

同样在minion2上新建ifcfg-kbr0,只需修改ipaddr为172.17.2.1和gateway为172.17.2.0即可,然后执行systemctl restart network重启系统网络服务,你能在minion1和minion2上发现kbr0都设置了相应的IP地址。为了验证我们创建的隧道是否能通信,我们在minion1和minion2上相互ping对方kbr0的IP地址,从下面的结果发现是不通的,经查找这是因为在minion1和minion2上缺少访问172.17.1.1和172.17.2.1的路由,因此我们需要添加路由保证彼此之间能通信。
[root@minion1 network-scripts]# ping 172.17.2.1
PING 172.17.2.1 (172.17.2.1) 56(84) bytes of data.
^C
--- 172.17.2.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms

[root@minion2 ~]# ping 172.17.1.1
PING 172.17.1.1 (172.17.1.1) 56(84) bytes of data.
^C
--- 172.17.1.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms

由于通过ip route add添加的路由会在下次系统重启后失效,为此我们在/etc/sysconfig/network-scripts目录下新建一个文件route-eth0存储路由,这里需要注意的是route-eth0和ifcfg-eth0的黑体部分必须保持一致,否则不能工作,这样添加的路由在下次重启后不会失效。为了保证两台minion的kbr0能相互通信,我们在minion1的route-eth0里添加路由172.17.2.0/24 via 192.168.230.5 dev eno16777736,eno16777736是minion1的网卡,同样在minion2的route-eth0里添加路由172.17.1.0/24 via 192.168.230.4 dev eno16777736。重启网络服务后再次验证,彼此kbr0的地址可以ping通,如:
[root@minion2 network-scripts]# ping 172.17.1.1
PING 172.17.1.1 (172.17.1.1) 56(84) bytes of data.
64 bytes from 172.17.1.1: icmp_seq=1 ttl=64 time=2.49 ms
64 bytes from 172.17.1.1: icmp_seq=2 ttl=64 time=0.512 ms
^C
--- 172.17.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 0.512/1.505/2.498/0.993 ms
Kubernetes1.25.6部署文档 使用cri-docker部署K8s1.25.6

Kubernetes 1.25.6部署指南: 使用cri-docker部署K8s集群要通过cri-docker部署K8s 1.25.6,首先需要在3台服务器(或虚拟机)上进行环境准备,每台服务器需要至少2个核心CPU和2GB RAM,以确保初始化过程顺利。环境搭建所有节点同时进行以下步骤:配置主机名并更新Hosts文件关闭SELINUX,禁用swap,调整内核参...

ARM64 CPU架构下安装部署Docker + Rancher + K8S 说明文档

安装Docker:下载并解压安装包,复制文件,创建containerd服务文件,启动docker 部署K8S:关闭SELinux和Swap分区,配置iptables,调整网络设置,管理yum源 安装kubelet, kubeadm, kubectl:设置开机启动,初始化集群Master 添加节点:在其他节点上安装相关组件,执行初始化命令 部署Rancher(可选):拉取镜像,启动...

k8s集群部署,手把手教你部署集群,最新版本1.24.3

在安装Docker及其CRI-dockerd时,要先安装docker-ce,启动服务,并调整cgroup启动方式,重启docker。cri-dockerd的安装则通过yum源,编辑/k8s.repo文件并进行安装,确保kubelet与docker的cgroup配置一致,且kubelet开机启动。使用阿里云镜像初始化kubeadm,初始化成功后,根据提示的node join方式添加节点。在安装C...

基于Kind的Kubernetes环境部署

搭建单节点集群,Kind允许你通过命令快速创建,首次创建可能因镜像拉取需要时间。确认node镜像后,先下载镜像再创建集群。若需要多节点集群,可通过配置文件配置节点数量和端口映射,然后使用--config命令创建。部署Kubernetes Dashboard,需下载配置文件,创建服务账户和Secret,最后通过kubectl apply命令部署并获取...

linux安装部署k8s(kubernetes)和解决遇到的坑

在部署Kubernetes(K8s)之前,首先需要安装Docker。对于Centos7的离线安装,确保镜像已下载到本地,然后运行安装脚本,设置主机名称。接着,禁用SELinux和关闭系统Swap,以优化Docker性能,并配置docker使用国内镜像加速。私有仓库地址设为192.168.1.5,同时修改配置以采用systemd驱动,确保更高的兼容性和性能。

使用KubeKey v3.1.1 离线部署原生 Kubernetes v1.28.8 实战

修改离线集群配置文件中的 Cluster 小节,配置控制平面节点、etcd 节点和工作节点。离线部署镜像仓库 本文将使用 KubeKey 部署镜像仓库 Docker Registry,以验证离线部署镜像仓库服务的能力。安装镜像仓库并推送离线镜像至私有仓库。离线部署 Kubernetes 集群 执行命令部署 Kubernetes 集群,并检查集群状态。在控制...

kubernetes(k8s) - 实战进阶篇:搭建Registry&Harbor私有仓库、Dockerfil...

首先,安装Harbor,可通过GitHub官网下载离线安装包并上传至服务器。接着,设置host,以通过域名访问Harbor。修改Harbor配置文件,创建伪证书以开启HTTPS。执行安装步骤并配置docker/daemon.json,以指定连接Harbor的每台机器的私有仓库地址。访问Harbor服务器地址,确认搭建成功。若访问失败,可尝试重启相关服务,...

...docker 和 沙盒、虚拟机以及 Kubernetes 的关系

Docker 公司自己有一款名为 Docker Swarm的产品,它是一个容器集群和调度工具,功能类似于Kubernetes。相比 Kubernetes,Swarm在集群搭建和使用上要相对简单一些,学习和部署成本相对低一些。较新版本的Docker已经集成了Swarm。Swarm支持跨多个主机进行编排,管理较小规模的容器集群也绰绰有余,对于初学者也可以...

从Docker到Kubernetes

2017年10月,Docker公司将自己的主打产品Docker EE 内置Kubernetes项目,预示着Kubernetes的胜出,成为容器编排的标准。2017年11月 ,K8s支持containerd 2018年 k8s集成containerd,正式GA,把CRI plugin嵌入 containerd中 2019年 rkt 终止使命被CNCF归档 2019 年 Mirantis 收购 Docker 的企业服务 OCI...

k8s安装部署

kubernetes集群搭建完成。 在k8s集群中创建pod,如果出现如下错误 其中最主要的问题是:details: (open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory) 解决方案: 查看/etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt (该链接就是上图中的说明) 是一...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
花露水十大品牌排名,花露水哪个牌子的好 青海民族大学研究生公寓一晚上多少钱 ...男生研究生宿舍几人一间,室内有无独立卫生间,能否洗澡? 苹果电脑插上耳机没声音怎么办? 为什么电脑重启后网络连接连不上 但是过一段时间在连又可以连上了? 青海民族大学的宿舍条件如何? 电脑连不上网络是怎么回事? ...连不上,图标显示未识别网络,这是怎么回事?是电脑还是宽带问题,该怎 ... 2020今年甘肃省临洮县太石第三中学初中升高中分数线是多小? 临洮县哪些初中比较好啊? 怎么在ubuntu上安装kubernetes 如何入门k8s? 搭建k8s有哪些方式 空调遥控器上的图标都是什么意思? 万能空调遥控器上显示pm是什么意思 pmv模式是什么意思 空调遥控器pmv是什么意思 诛仙3榛子仁在哪 ··姓:王 名:榛。性别:女。农历2009年3月28日早8... 火柴榛数学题3一3一3二7 榛怎么念?拼音?急!!!! 感谢闺蜜寄东西给我的说说 闺蜜的礼物很感动的句子有哪些 感谢闺蜜送礼物的朋友圈说说 闺密送了自己生日礼物,想发朋友圈,要怎么说谢谢 闺密送了自己礼物,想发朋友圈,要怎么发朋友圈说谢谢 感谢闺蜜送礼物的说说 感谢闺蜜送的礼物的句子 闺蜜送礼物发朋友圈的词句 晒闺蜜送礼物幽默说说 如何在本地搭建k8s的server k8s deploy 部署在哪个node Kubernetes如何入门? k8s cronjob 启动顺序 k8s如何发布应用 如何在裸机中自动安装部署CoreOS和Kubernetes 如何向部署好的Kubernetes上添加node 如何在Kubernetes中部署一个高可用的PostgreSQL集... 怎么在kubernetes里面搭建hadoop集群 如何配置Kubernetes的kubedns 如何配置kubernetes dns 苹果笔记本mac pro键盘功能图解 为什么苹果macbookPro键盘最上面的一排键不管用,... macbookpro键盘不起作用 求人来扫盲一下,macbook pro的键盘是机械键盘吗 15款macbookpro键盘手感不一样 Macbook Pro键盘有必要带键盘膜吗?(正常使用灰尘... 苹果笔记本macbookpro键盘失灵怎么维修 如何清洗 MacBook pro 的键盘 macbookpro怎么外接键盘
  • 焦点

最新推荐

猜你喜欢

热门推荐