Docker Kubernetes Volume 網絡數據卷

Docker Kubernetes Volume 網絡數據卷html

因爲支持網絡數據卷衆多 今天只拿nfs做爲案例。nginx

支持網絡數據卷vim

  • nfs
  • iscsi
  • glusterfs
  • awsElasticBlockStore
  • cephfs
  • azureFileVolume
  • azureDiskVolume
  • vsphereVolume
  • .....

環境:api

  • 系統:Centos 7.4 x64
  • Docker版本:18.09.0
  • Kubernetes版本:v1.8
  • 管理節點:192.168.1.79
  • 工做節點:192.168.1.78
  • 工做節點:192.168.1.77

1、搭建NFS服務與客戶端bash

一、管理節點:安裝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

二、工做節點:安裝nfs客戶端、啓動服務網絡

yum install nfs-utils -y
# 開啓rpc服務
systemctl start rpcbind
# 啓動服務並設置開機自啓
systemctl start nfs

2、共享NFS網絡數據卷app

一、管理節點:建立yaml文件async

vim nginx-nfs.yamlide

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
文件註解

二、管理節點:建立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
查看詳細信息

三、測試

# 一、宿主端nfs共享文件內建立文件
命令:touch /data/123

# 二、進入容器內查看文件是否共享
命令:kubectl exec nginx-deployment-nfs-5fbcddddb6-sf6bz -it bash

root@nginx-deployment-nfs-5fbcddddb6-sf6bz:/# ls /var/www/html/
123
相關文章
相關標籤/搜索