Kubernetes创建挂载共享存储的容器
原文链接:https://www.58jb.com/html/135.html
在上一次的Mysql容器中,已经使用过了配置宿主机目录挂载的方式,这样虽然方便但是不够安全;一般都是把数据存储在远程服务器上如:NFS,GlusterFS,ceph等;一般目前主流的还是使用ceph、GlusterFS;
本次实验使用最简单的方式NFS来配置一个通过挂载共享存储的nginx容器;
两台机器:
kubernetes: 10.0.10.135 [Centos7.2]
nfs: 10.0.10.31 [Centos6.5的机器]
由于kubernetes还是之前的实验机器,所以就直接弄好NFS服务器先;
nfs服务器操作:
- yum install rpcbind nfs-utils -y
- mkdir -p /data/www-data
添加共享目录配置:
- cat >/etc/exports<<-EOF
- /data/www-data 10.0.10.0/24(rw,sync)
- EOF
添加到开机启动:
- chkconfig rpcbind on
- chkconfig nfs on
- service nfs start
- service rpcbind start
检查一下配置:
- [root@nfs ~]# exportfs
- /data/www-data 10.0.10.0/24
再回到kubernetess机器上要安装一个包:
- yum install nfs-utils -y
- [root@node5 ~]# showmount -e 10.0.10.31
- Export list for 10.0.10.31:
- /data/www-data 10.0.10.0/24
- [root@node5 ~]# mount 10.0.10.31:/data/www-data /mnt
- [root@node5 ~]# ls /mnt
- css fonts img index.html js
因为事先准备了一些文件,所以就可以看到效果,已经成功挂载过来了说明主机可以挂载;
创建一个rc,并定义两个容器数量,配置文件如下:
- cat >nginx_pod_volume_nfs.yaml<<-EOF
- apiVersion: v1
- kind: ReplicationController
- metadata:
- name: nginx
- spec:
- replicas: 2
- selector:
- app: web01
- template:
- metadata:
- name: nginx
- labels:
- app: web01
- spec:
- containers:
- - name: nginx
- image: reg.docker.tb/harbor/nginx
- ports:
- - containerPort: 80
- volumeMounts:
- - mountPath: /usr/share/nginx/html
- readOnly: false
- name: nginx-data
- volumes:
- - name: nginx-data
- nfs:
- server: 10.0.10.31
- path: "/data/www-data"
- EOF
- [root@node5 test_418]# kubectl create -f nginx_pod_volume_nfs.yaml
- replicationcontroller "nginx" created
检查一下服务是否正在运行:
- [root@node5 test_418]# kubectl get pods
- NAME READY STATUS RESTARTS AGE
- nginx-64zrd 1/1 Running 0 15s
- nginx-f0z39 1/1 Running 0 15s
- [root@node5 test_418]# kubectl get rc
- NAME DESIRED CURRENT READY AGE
- nginx 2 2 1 8s
创建一个Service,负责对外提供负载;
- cat >nginx_service.yaml<<-EOF
- apiVersion: v1
- kind: Service
- metadata:
- name: nginx-service
- spec:
- externalIPs:
- - 10.0.10.135
- ports:
- - port: 8000
- targetPort: 80
- protocol: TCP
- selector:
- app: web01
- EOF
检查一下service是否成功运行:
- [root@node5 test_418]# kubectl get svc
- NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
- kubernetes 10.254.0.1 <none> 443/TCP 17d
- my-mysql 10.254.93.211 10.0.10.135 3306/TCP 7d
- nginx-service 10.254.155.182 10.0.10.135 8000/TCP 4s
打开浏览器,访问一下:
http://10.0.10.135:8000/

此处是一个集群哦!由两个容器提供,哪怕删除其中一个都可以访问;只是因为配置文件中配置了复制份数为2,所以删除任意一个又会很快创建出一个来,最重要的是不用你管理它自动就加入到些集群中;
注:其实这个方式跟本地挂载的方式差不多,只是把远程的目录挂载到Kubernetes主机上再挂载到容器里,这个在实验环境中发现:
- [root@node5 test_418]# mount|grep "10.0.10.31"
- 10.0.10.31:/data/www-data on /var/lib/kubelet/pods/65f7cd9e-23ec-11e7-b0e2-000c29d4cebd/volumes/kubernetes.io~nfs/nginx-data type nfs4 (rw,relatime,vers=4.0,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.0.10.135,local_lock=none,addr=10.0.10.31)
- 10.0.10.31:/data/www-data on /var/lib/kubelet/pods/65f7db49-23ec-11e7-b0e2-000c29d4cebd/volumes/kubernetes.io~nfs/nginx-data type nfs4 (rw,relatime,vers=4.0,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.0.10.135,local_lock=none,addr=10.0.10.31)
很明显看到两个Pod容器都挂载了一相同的目录,而此目录就是挂载远程NFS服务器的目录;
Kubernetes创建挂载共享存储的容器的更多相关文章
- Linux下搭建iSCSI共享存储
转至:https://www.linuxidc.com/Linux/2016-09/135655.htm Linux下搭建iSCSI共享存储 拓扑: 实验步骤: ------------------- ...
- 负载均衡LVS之DR(附:NFS共享存储) 五分钟搭建手册
一:DR-模式 调度器Ip:192.168.1.254 服务器ip:192.168.1.1/192.168.1.2 VIP:192.168.1.10 ——配置负载均衡调度器: 关闭重定向响应配置: V ...
- 基于NFS共享存储实现KVM虚拟机动态迁移
基于NFS共享存储实现KVM虚拟机动态迁移 一:配置环境 二:安装相关的依赖包 三:实现NFS共享存储 四:KVM机配置相同的步骤 五:安装KVM01安装虚拟机 六:实现迁移 实验初始配置:所有主机 ...
- k8s入坑之路(15)kubernetes共享存储与StatefulSet有状态
共享存储 docker默认是无状态,当有状态服务时需要用到共享存储 为什么需要共享存储: 1.最常见有状态服务,本地存储有些程序会把文件保存在服务器目录中,如果容器重新启停则会丢失. 2.如果使用vo ...
- 011.Kubernetes使用共享存储持久化数据
本次实验是以前面的实验为基础,使用的是模拟使用kubernetes集群部署一个企业版的wordpress为实例进行研究学习,主要的过程如下: 1.mysql deployment部署, wordpre ...
- 在vmware下为oracle RAC 创建共享存储的总结
首先,介绍下用命令行vm-diskmanager形式创建磁盘文件的方法(其实,图形界面添加新磁盘就是调用此命令). 很多网上文章提及plainmaker.exe去创建共享磁盘,是以前的版本 ...
- k8s之共享存储概述以及演示
共享存储机制 k8s对有状态的容器应用或者需要对数据进行持久化的应用,在之前的篇章说过,可以将容器内的目录挂载到宿主机的容器目录或者emptyDir临时存储卷. 另外,k8s还开放了两个资源,分别是P ...
- 014.Docker Harbor+Keepalived+LVS+共享存储高可用架构
一 多Harbor高可用介绍 共享后端存储是一种比较标准的方案,将多个Harbor实例共享同一个后端存储,任何一个实例持久化到存储的镜像,都可被其他实例中读取.通过前置LB组件,如Keepalived ...
- [k8s]k8s配置nfs做后端存储&配置多nginx共享存储&&statefulset配置
所有节点安装nfs yum install nfs-utils rpcbind -y mkdir -p /ifs/kubernetes echo "/ifs/kubernetes 192.1 ...
随机推荐
- 【鸟哥的Linux私房菜】笔记1
Linux是什么 从操作系统与cpu架构关系到linux Richard Mathew Stallman GPL 关于GNU计划 Linux的发展 Linux的核心版本 Linux的特色 Linux ...
- 三 ip dns等配置
一IP.端口.协议基本概念 ip的简单概念 互联网上的计算机,都会有一个唯一的32位的地址,ip地址 我们访问服务器,就必须通过ip地址 局域网里也有预留的ip地址 192/10/172.居于王的i ...
- Openfire部署和配置说明
一.程序部署 1.1 程序和脚本 将文件拷贝到对应目录下,文件包括:Openfire.tar和setup.sh脚本.Openfire.tar为可执行文件库.配置等的压缩包,setup.sh为解压和部署 ...
- 算法总结之 在两个排序数组中找到第K小的数
给定两个有序数组arr1 和 arr2 ,再给定一个int K,返回所有的数中第K小的数 要求长度如果分别为 N M,时间复杂度O(log(min{M,N}),额外空间复杂度O(1) 解决此题的方法跟 ...
- springcloud-Api网关服务Zuul
springcloud项目例子:链接:https://pan.baidu.com/s/1O1PKrdvrq5c8sQUb7dQ5Pg 密码:ynir 1.由来: 如果我的微服务中有很多个独立服务都要对 ...
- MVC 中 System.Web.Optimization 找不到引用
在MVC4的开发中,如果创建的项目为空MVC项目,那么在App_Start目录下没有BundleConfig.cs项的内容,在手动添加时在整个库中都找不到:System.Web.Optimizatio ...
- 树分治learning
学习了树的点分治,树的边分治似乎因为复杂度过高而并不出众,于是没学 自己总结了一下 有些时候面对一些树上的结构 并且解决的是和路径有关的问题的时候 如果是多个询问 关注点在每次给出两个点,求一些关于这 ...
- Tensorflow中的transpose函数解析
transpose函数作用是对矩阵进行转换操作 相信说完上面这一句,大家和我一样都是懵逼状态,完全不知道是怎么回事,那么接下来和我一起探讨吧 1.二维数组 x = [[1,3,5], [2,4,6] ...
- spring:自定义限定符注解@interface, 首选bean
spring:自定义限定符注解@interface, 首选bean 1.首选bean 在声明bean的时候,通过将其中一个可选的bean设置为首选(primary)bean能够避免自动装配时的歧义性. ...
- Linux命令之sort用法
linux之sort用法 sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式: sort [-bcfMnrtk][源文件][-o 输出文件] 补充说明:sort可针对文本文件的内 ...