Docker Kubernetes Volume 网络数据卷
Docker Kubernetes Volume 网络数据卷
由于支持网络数据卷众多 今天只拿nfs作为案例。
支持网络数据卷
- nfs
- iscsi
- glusterfs
- awsElasticBlockStore
- cephfs
- azureFileVolume
- azureDiskVolume
- vsphereVolume
- .....
环境:
- 系统:Centos 7.4 x64
- Docker版本:18.09.0
- Kubernetes版本:v1.8
- 管理节点:192.168.1.79
- 工作节点:192.168.1.78
- 工作节点:192.168.1.77
一、搭建NFS服务与客户端
1、管理节点:安装nfs服务端、配置nfs主配置文件、添加权限、启动
yum install nfs-utils -y
vim /etc/exports
# 添加目录给相应网段访问并添加读写权限 /data 192.168.1.0/24(insecure,rw,async,no_root_squash)
# 创建共享目录,添加权限 mkdir -p /data chmod 777 /data
# 开启rpc服务 systemctl start rpcbind
# 启动服务并设置开机自启 systemctl start nfs
2、工作节点:安装nfs客户端、启动服务
yum install nfs-utils -y
# 开启rpc服务 systemctl start rpcbind # 启动服务并设置开机自启 systemctl start nfs
二、共享NFS网络数据卷
1、管理节点:创建yaml文件
vim nginx-nfs.yaml
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: nginx-deployment-nfs spec: replicas: 3 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.10 volumeMounts: - name: wwwroot mountPath: /var/www/html ports: - containerPort: 80 volumes: - name: nfs: server: 192.168.1.79 path: /data
# 指定api版本 apiVersion: extensions/v1beta1 # 指定需要创建的资源对象 kind: Deployment # 源数据、可以写name,命名空间,对象标签 metadata: # 指定对象名称 name: nginx-deployment2-nfs # 描述资源相关信息 spec: # 指定pod 副本数,默认1 replicas: 3 # 描述资源具体信息 template: # 匹配标签字段 metadata: # 指定pod标签value:key labels: # 标签名 app: nginx # 管理容器 spec: # 指定容器信息 containers: # 指定容器名称 - name: nginx # 指定镜像名称 image: nginx:1.10 # 网络数据卷管理 volumeMounts: # 数据卷名称 - name: wwwroot # 容器数据卷挂载路径 mountPath: /var/www/html # 端口管理 ports: # 暴露端口 - containerPort: 80 # 网络共享数据卷管理 volumes: # 数据卷名称两边需要相同 - name: wwwroot # 数据卷类型为nfs nfs: # NFS服务器地址 server: 192.168.1.79 # 服务端共享路径 path: /data
2、管理节点:创建Deployment
kubectl create -f nginx-nfs.yaml
命令:kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE nginx-deployment-nfs-5fbcddddb6-7btt4 1/1 Running 0 55s 172.17.2.11 192.168.1.78 nginx-deployment-nfs-5fbcddddb6-sf6bz 1/1 Running 0 55s 172.17.2.10 192.168.1.78 nginx-deployment-nfs-5fbcddddb6-ws8wk 1/1 Running 0 55s 172.17.1.9 192.168.1.77
命令:kubectl describe nginx-deployment-nfs-5fbcddddb6-sf6bz Mounts: /var/www/html from wwwroot (rw) Conditions: Type Status Initialized True Ready True PodScheduled True Volumes: wwwroot: Type: NFS (an NFS mount that lasts the lifetime of a pod) Server: 192.168.1.79 Path: /data ReadOnly: false QoS Class: BestEffort Node-Selectors: <none> Tolerations: <none> reated container
3、测试
# 1、宿主端nfs共享文件内创建文件 命令:touch /data/123 # 2、进入容器内查看文件是否共享 命令:kubectl exec nginx-deployment-nfs-5fbcddddb6-sf6bz -it bash root@nginx-deployment-nfs-5fbcddddb6-sf6bz:/# ls /var/www/html/ 123