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服务器操作:


  1. yum install rpcbind nfs-utils -y
  2. mkdir -p /data/www-data

添加共享目录配置:


  1. cat >/etc/exports<<-EOF
  2. /data/www-data  10.0.10.0/24(rw,sync)
  3. EOF

添加到开机启动:


  1. chkconfig rpcbind on
  2. chkconfig nfs on
  3. service nfs start
  4. service rpcbind start

检查一下配置:


  1. [[email protected] ~]# exportfs
  2. /data/www-data  10.0.10.0/24

再回到kubernetess机器上要安装一个包:


  1. yum install nfs-utils -y

完成后就可以用命令检查nfs目享的目录了;


  1. [[email protected] ~]# showmount -e 10.0.10.31
  2. Export list for 10.0.10.31:
  3. /data/www-data    10.0.10.0/24

尝试挂载一下;


  1. [[email protected] ~]# mount 10.0.10.31:/data/www-data /mnt
  2. [[email protected] ~]# ls /mnt
  3. css  fonts  img  index.html  js

因为事先准备了一些文件,所以就可以看到效果,已经成功挂载过来了说明主机可以挂载;

创建一个rc,并定义两个容器数量,配置文件如下:


  1. cat >nginx_pod_volume_nfs.yaml<<-EOF
  2. apiVersion: v1
  3. kind: ReplicationController
  4. metadata:
  5. name: nginx
  6. spec:
  7. replicas: 2
  8. selector:
  9. app: web01
  10. template:
  11. metadata:
  12. name: nginx
  13. labels:
  14. app: web01
  15. spec:
  16. containers:
  17. - name: nginx
  18. image: reg.docker.tb/harbor/nginx
  19. ports:
  20. - containerPort: 80
  21. volumeMounts:
  22. - mountPath: /usr/share/nginx/html
  23. readOnly: false
  24. name: nginx-data
  25. volumes:
  26. - name: nginx-data
  27. nfs:
  28. server: 10.0.10.31
  29. path: "/data/www-data"
  30. EOF

创建容器:


  1. [[email protected] test_418]# kubectl create -f nginx_pod_volume_nfs.yaml
  2. replicationcontroller "nginx" created

检查一下服务是否正在运行:


  1. [[email protected] test_418]# kubectl get pods
  2. NAME          READY     STATUS    RESTARTS   AGE
  3. nginx-64zrd   1/1       Running   0          15s
  4. nginx-f0z39   1/1       Running   0          15s
  5. [[email protected] test_418]# kubectl get rc
  6. NAME      DESIRED   CURRENT   READY     AGE
  7. nginx     2         2         1         8s

此时已经成功运行了两个容器了,但是无法外部访问,这里还要再添加一个service;

创建一个Service,负责对外提供负载;


  1. cat >nginx_service.yaml<<-EOF
  2. apiVersion: v1
  3. kind: Service
  4. metadata:
  5. name: nginx-service
  6. spec:
  7. externalIPs:
  8. - 10.0.10.135
  9. ports:
  10. - port: 8000
  11. targetPort: 80
  12. protocol: TCP
  13. selector:
  14. app: web01
  15. EOF

检查一下service是否成功运行:


  1. [[email protected] test_418]# kubectl get svc
  2. NAME            CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
  3. kubernetes      10.254.0.1       <none>        443/TCP    17d
  4. my-mysql        10.254.93.211    10.0.10.135   3306/TCP   7d
  5. nginx-service   10.254.155.182   10.0.10.135   8000/TCP   4s

打开浏览器,访问一下:

http://10.0.10.135:8000/

此处是一个集群哦!由两个容器提供,哪怕删除其中一个都可以访问;只是因为配置文件中配置了复制份数为2,所以删除任意一个又会很快创建出一个来,最重要的是不用你管理它自动就加入到些集群中;

注:其实这个方式跟本地挂载的方式差不多,只是把远程的目录挂载到Kubernetes主机上再挂载到容器里,这个在实验环境中发现:


  1. [[email protected] test_418]# mount|grep "10.0.10.31"
  2. 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)
  3. 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服务器的目录;

原文地址:https://www.cnblogs.com/wangmo/p/8855460.html

时间: 2024-10-11 07:22:23

Kubernetes创建挂载共享存储的容器的相关文章

iSCSI磁盘阵列用作Proxmox VE的LVM共享存储

proxmox作为开源的虚拟化管理平台,支持集群管理和HA.在一般的中小规模虚拟化应用,完全可以替代VMware.VM热迁移.HA高可用等作为虚拟化应用的重要功能,必须用到共享存储.从其官方资料和一些网上资料称,proxmox除了支持常用的lvm,nfs,iscsi,还支持集群存储glusterfs和ceph等. 笔者用Proxmox VE 4.4在两台DELL R730服务器建立了两个节点(pve-01和pve-02)的群集.拟在一台iSCSI的DELL PS6000E磁盘阵列上划出一个2T的

搭建iscsi共享存储

拓扑: 实验步骤: -------------------------------------------------------------- 配置iscsi server: 方案1:(命令行配置,立即有效,重启无效) 1.在target上添加两块磁盘设备,sdb,sdc 2.安装程序包.启动服务 # yum install -y scsi-target-utils # service tgtd start 3.创建target # tgtadm --lld /dev/sdb --mode t

Oracle HA双机主备基于共享存储模式并利用keepalived管理实现高可用

HA概述 HA(High Available)即由两台计算机组成并对外提供一组相同的服务,也叫做一主一备模式.正常情况下由主服务器提供服务,备服务器处于待机备用,备机可以随时接替主服务器的工作.也就是当主服务器宕机或所提供的服务不可用时,备用服务器会主动激活并且替换主服务器继续提供服务,这时主服务器上的服务资源包括网络(IP).存储.服务(Web/数据库)就会转移到备机接管,从而提供不间断的服务.基于此,便可以将服务器的宕机时间减少到最低,对业务实现不中断或短暂中断. 由一组计算机(多台)组成一

基于NFS共享存储实现KVM虚拟机动态迁移

基于NFS共享存储实现KVM虚拟机动态迁移 一:配置环境 二:安装相关的依赖包 三:实现NFS共享存储 四:KVM机配置相同的步骤 五:安装KVM01安装虚拟机 六:实现迁移  实验初始配置:所有主机关闭防火墙与selinux [[email protected] ~]# iptables -F [[email protected] ~]# systemctl stop firewalld [[email protected] ~]# systemctl disable firewalld [[

Kubernetes使用NFS作为共享存储

Kubernetes使用NFS作为共享存储 kubernetes管理的容器是封装的,有时候我们需要将容器运行的日志,放到本地来或是共享存储来,以防止容器宕掉,日志还在还可以分析问题.kubernetes的共享存储方案目前比较流行的一般是三个,分别是:nfs,Glusterfs和ceph. 前面写过一篇kubernetes使用GlusterFS的文章,如果有兴趣也可以去实践下:http://blog.51cto.com/passed/2139299 今天要讲的是kubernetes使用nfs作为共

20.Kubernetes共享存储

Kubermetes对于有状态的容器应用或者对数据需要持久化的应用,不仅需要将容器内的目录挂载到宿主机的目录或者emptyDir临时存储卷,而且需要更加可靠的存储来保存应用产生的重要数据,以便容器应用在重建之后,仍然可以使用之前的数据.不过,存储资源和计算资源(CPU/内存)的管理方式完全不同.为了能够屏蔽底层存储实现的细节,让用户方便使用,同时能让管理员方便管理, Kubernetes从v1.0版本就引入PersistentVolume和PersistentVolumeClaim两个资源对象来

011.Kubernetes使用共享存储持久化数据

本次实验是以前面的实验为基础,使用的是模拟使用kubernetes集群部署一个企业版的wordpress为实例进行研究学习,主要的过程如下: 1.mysql deployment部署, wordpress deployment部署, wordpress连接mysql时,mysql的 pod ip易变 2.为mysql创建 service,申请固定 service lp 3. wordpress外部可访问,使用 node port类型的 service 4. nodeport类型的 service

WSS 模拟共享存储挂载esxi主机

1 安装windows 2008 r2 系统 2 安装iscsitarget3.3 软件 解压缩后包含: iscsitarget_public iscsitargeclient_public 3 由于windows2008r2自身包含iscsiclinet,故只安装iscsitarge_public 4 在"管理工具"--打开"iscsitarge software target" 5 右键"iscsi目标",选择"创建iscsi目标&

Kubernetes 1.11.2使用NFS作为共享存储

环境:NFS服务器: 192.168.0.252 /data/nfs Kubernetes Master: 192.168.0.210Kubernetes Node: 192.168.0.211Kubernetes Node: 192.168.0.212 本地我们使用NFS作为Nginx的网站目录,使所有的pod共享一套代码 1.NFS服务器搭建 yum -y install nfs-utils 创建共享目录mkdir -p /data/nfs 修改配置文件vim /etc/exports/da