Kubernetes でのストレージ ボリュームの使用量

目次

1. ストレージボリュームを使用する理由は何ですか?

2. emptyDir ストレージ ボリューム

1. コンセプト

2. ポッドの emptyDir を作成する

3. emptyDir ストレージ ボリュームを確認する

 3. hostPathストレージボリューム

1. コンセプト

2. ポッドのホストパスを作成する

 3. hostPath ストレージ ボリュームを確認する

3.nfs共有ストレージボリューム

1. コンセプト

2. nfs をインストールし、nfs サービスを構成します

 3.ポッドの作成

4.NFSストレージボリュームを確認する


1. ストレージボリュームを使用する理由は何ですか?

コンテナー ディスク上のファイルのライフ サイクルは短期間であるため、コンテナー内で重要なアプリケーションを実行するときにいくつかの問題が発生します。まず、コンテナがクラッシュすると、kubelet はコンテナを再起動しますが、コンテナ内のファイルは失われます。コンテナはクリーンな状態 (イメージの元の状態) で再起動されます。次に、複数のコンテナがポッド内で同時に実行されている場合、通常はこれらのコンテナ間でファイルを共有する必要があります。Kubernetes のボリューム抽象化は、これらの問題を非常にうまく解決します。ポッド内のコンテナは、一時停止コンテナを通じてボリュームを共有します。

2. emptyDir ストレージ ボリューム

1. コンセプト

ポッドがノードに割り当てられると、emptyDir ボリュームが最初に作成され、ポッドがノード上で実行されている限り存在します。ボリュームの名前が示すように、最初は空です。ポッド内のコンテナは emptyDir ボリューム内の同じファイルを読み書きできますが、ボリュームは各コンテナ内の同じパスまたは異なるパスにマウントできます。何らかの理由でポッドがノードから削除されると、emptyDir 内のデータは完全に削除されます。

2. ポッドの emptyDir を作成する

vim pod-emptydir.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-emptydir
  labels:
    app: myapp
    tier: frontend
spec:
  containers:
  - name: myapp
    image: nginx:1.14
    imagePullPolicy: IfNotPresent
    ports:
    - name: http
      containerPort: 80
    volumeMounts:                              #定义容器挂载详细信息
    - name: html                               #挂载存储卷的名称,如果跟下面volume字段name值相同,则表示使用volume的这个存储卷
      mountPath: /usr/share/nginx/html/        #挂载到容器中的目录路径
  - name: busybox
    image: busybox:latest
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - name: html
      mountPath: /data/                        #挂载到容器中的目录路径
    command: ["/bin/sh","-c","while true;do echo $(date) >> /data/index.html;sleep 2;done"]  #执行死循环,向挂载的目录下文件写入数据
  volumes:         #定义存储卷
  - name: html     #定义存储卷名称
    emptyDir: {}   #定义存储卷类型

3. emptyDir ストレージ ボリュームを確認する

kubectl apply -f pod-emptydir.yaml
kubectl get pods -o wide

在上面定义了2个容器,其中一个容器是输入日期到index.html中,然后验证访问nginx的html是否可以获取日期。以验证两个容器之间挂载的emptyDir实现共享。
curl 10.244.2.58

 3. hostPathストレージボリューム

1. コンセプト

hostPath を使用すると、ノード上のファイル システムをポッドにマウントできます。ポッドがノード上のファイルを使用する必要がある場合は、hostPath を使用できます。同じノード上で実行され、hostPath ボリューム内の同じパスを使用するポッドは、同じファイルを参照できます。

  • hostPath ボリュームは、ノードのファイル システム内のファイルまたはディレクトリをクラスターにマウントします。
  • hostPath は永続的なストレージを実現できますが、ノードに障害が発生した場合にはデータ損失も発生します。

2. ポッドのホストパスを作成する

vim pod-hostpath.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-hostpath
spec:
  containers:
  - name: myapp
    image: nginx:1.14
    volumeMounts:
    - name: html
      mountPath: /usr/share/nginx/html
      readOnly: false
  volumes:                       #volumes字段定义了paues容器关联的宿主机或分布式文件系统存储卷
  - name: html                   #定义存储卷名称              
    hostPath:                    #定义宿主机存储路径
      path: /data/pod/volume1    #挂载宿主机目录的路径
      type: DirectoryOrCreate    #定义类型,如果宿主机没有此目录则自动创建

 3. hostPath ストレージ ボリュームを確認する

kubectl apply -f pod-hostpath.yaml 
kubectl get pods -owide

#在node01节点
echo 'node01.com' > /data/pod/volume1/index.html

curl 10.244.2.60

3.nfs共有ストレージボリューム

1. コンセプト

NFSとはNetwork File Systemの略で、ネットワークファイルシステムのことです。Kubernetes では、簡単な設定で NFS を Pod にマウントでき、NFS 内のデータを永続的に保存できると同時に、NFS は同時書き込み操作をサポートします。

emptyDir は、異なるコンテナ間でファイル共有を提供できますが、保存できません。hostPath は、異なるコンテナ間でファイル共有とストレージを提供できますが、ノード制限によって制限され、ノード間で共有できません。現時点では、ネットワーク ストレージ (NAS) が必要です。コンテナーを保存するのに便利で、どのクラスター ノードからでもアクセスできます。この記事では、テストの例として NFS を使用します。

2. nfs をインストールし、nfs サービスを構成します

#配置nfs服务
mkdir /data/volumes -p
chmod 777 /data/volumes
echo '<h1> nfs <h1>' > /data/volumes

vim /etc/exports
/data/volumes 192.168.88.0/24(rw,no_root_squash,sync)

systemctl start rpcbind
systemctl start nfs

showmount -e

 3.ポッドの作成

vim pod-nfs.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-nfs
spec:
  containers:
  - name: myapp
    image: nginx:1.14
    volumeMounts:
    - name: html
      mountPath: /usr/share/nginx/html
  volumes:
  - name: html
    nfs:                          #定义nfs存储卷信息
      path: /data/volumes         #挂载nfs服务器的共享目录
      server: 192.168.88.60       #nfs服务器的ip地址

4.NFSストレージボリュームを確認する

kubectl apply -f pod-nfs.yaml

curl 10.244.2.61

 

おすすめ

転載: blog.csdn.net/q1y2y3/article/details/132231832