クラウドネイティブ | K8s での VolumeMounts.subPath の賢い使い方

クラウドネイティブ | K8s での VolumeMounts.subPath の賢い使い方

1. 概要

場合によっては、単一の Pod 内で複数のパーティがボリュームを共有して使用すると便利なことがあります。 volumeMounts.subPath プロパティを使用すると、参照されるボリューム内のルート パスではなくサブパスを指定できます。

公式ドキュメント: https://kubernetes.io/zh-cn/docs/concepts/storage/volumes/#using-subpath

2. 使用シナリオ

  1. 複数のパスを使用してマウントされた 1 つの共有ボリューム。
  2. ConfigMap または Secret は特定のディレクトリ内の特定のパスにマウントされており、そのディレクトリ内に上書きしたくない他のファイルがあります。

3. 共有ボリュームで複数のパスをマウントするために使用する

configmap/secret として使用される場合、subPath は configmap/secret のサブパスを表します。

[例1] マウントディレクトリ、hostPath

 APIバージョン: v1
種類:ポッド
メタデータ:
名前:私のランプサイト
仕様:
nodeName : local - 168 - 182 - 110 # テストの便宜上、スケジューリングマシンを指定します
コンテナ:
-名前: mysql
画像: mysql
環境:
-名前: MYSQL_ROOT_PASSWORD
: "rootpasswd"
ボリュームマウント:
- mountPath : / var / lib / mysql #コンテナ内のパスにマウント
name : site - data #マウントされたデバイスの名前。ボリュームに対応している必要があります[ * ] .name
subPath : mysql # ボリューム パス内のサブパス (ボリューム パス ディレクトリの下に空の mysql ディレクトリが自動的に作成されます)
-名前: php
画像: PHP : 7.0 - Apache
ボリュームマウント:
- mountPath : / var / www / html #コンテナ内のパスにマウント
name : site - data # ボリューム パス内のサブパス (site - data [空のディレクトリ] はボリューム パス ディレクトリに自動的に作成されます)
サブパス: html
巻数:
- name : nginx #上記と同じです。これはローカル ファイル パスです。上記はコンテナ内のパスです。
ホストパス:
パス: / opt / k8s / subPath / lamp #このパスを作成する必要があります

[例2] ディレクトリpvcをマウントする

 # ストレージクラス
種類:ストレージクラス
apiバージョン:ストレージ.k8s .io / v1
メタデータ:
名前:ローカルストレージ
プロビジョナー: kubernetes .io / no -プロビジョナー
ボリュームバインディングモード: WaitForFirstConsumer
---
#PVC
APIバージョン: v1
種類:永続ボリューム
メタデータ:
名前:ローカルランプPV
ラベル:
名前:ローカルランプPV
仕様:
容量
ストレージ: 1 Gi
アクセスモード:
-一度だけ読み書き可能
persistentVolumeReclaimPolicy :保持
storageClassName :ローカル-ストレージ
地元
パス: / opt / k8s / subPath / lamp - pvc
ノードアフィニティ:
必須
ノードセレクタ用語:
-一致する表現:
-キー: kubernetes.io/ホスト名
演算子:

-ローカル- 168 - 182 - 110

---
#PVC
種類: PersistentVolumeClaim
APIバージョン: v1
メタデータ:
名前:私のランプサイトデータ
仕様:
アクセスモード:
-一度だけ読み書き可能
リソース
リクエスト:
ストレージ: 1 Gi
storageClassName :ローカル-ストレージ
セレクター:
マッチラベル:
名前:ローカルランプPV
---
APIバージョン: v1
種類:ポッド
メタデータ:
名前:私のランプサイトPVC
仕様:
コンテナ:
-名前: mysql
画像: mysql
環境:
-名前: MYSQL_ROOT_PASSWORD
: "rootpasswd"
ボリュームマウント:
-マウントパス: / var / lib / mysql
名前:サイト-データ
サブパス: mysql
-名前: php
画像: PHP : 7.0 - Apache
ボリュームマウント:
-マウントパス: / var / www / html
名前:サイト-データ
サブパス: html
巻数:
-名前:サイト-データ
永続ボリュームクレーム:
クレーム名:私のランプサイトデータ

PVC テンプレートを使用する場合は、PVC を手動で作成する必要はありません。次に例を示します。

 volumeClaimTemplates : #PVCテンプレートとして考えることができます
-メタデータ:
名前: nginx - pvc
仕様:
アクセスモード: [ "ReadWriteOnce" ]
storageClassName : "local-storage" #ストレージクラス名。これは上記の nginx - sc.yamlのメタデータ.nameです。
リソース
リクエスト:
ストレージ: 1 Gi

[例3] 1つのファイルを共有する subPath がフォルダーではなくファイルの場合はどうなるでしょうか?同様に、subPath を通じてファイルを指定するだけです。 subPath では相対ディレクトリを使用する必要があることに注意してください。詳細は以下の通りです。

 apiバージョン:アプリ/ v1
種類:デプロイメント
メタデータ:
名前:デプロイメント-テスト
仕様:
レプリカ 1
セレクター:
マッチラベル:
アプリ: nginx - pod
テンプレート
メタデータ:
ラベル:
アプリ: nginx - pod
仕様:
nodeName : local - 168 - 182 - 110 # テストの便宜上、スケジューリングマシンを指定します
コンテナ:
-名前: nginx
イメージ: docker .io / library / nginx :最新
ボリュームマウント:
-マウントパス: /etc/nginx/nginx.conf
名前: nginx - conf
サブパス: nginx - conf
巻数:
- name : nginx - conf #上記と同じです。これはローカル ファイル パスです。上記はコンテナ内のパスです。
ホストパス:
パス: / opt / k8s / subPath / nginx #このパスを作成する必要があります

[結論] ホストマシン上のファイルが優先され、ポッド内の元のデフォルトファイルの内容が上書きされます。

4. ConfigMapとSecretでsubPathを使用する

configmap/secret として使用される場合、subPath は configmap/secret のサブパスを表します。 subPath​ を使用しない場合、コンテナー内の元のファイル (volumeMounts.mountPath​ に対応するディレクトリ) はクリアされ、ConfigMap ファイルと Secret ファイルは volumeMounts.mountPath​ に対応するディレクトリに配置されます。

[例1] ConfigMap

 APIバージョン: v1
種類: ConfigMap
メタデータ:
名前: nginx - conf
データ
nginx.conf : |+
ワーカープロセス1 ;
イベント{
ワーカー接続1024 ;
}
http {
mime .typesをインクルードします
default_type アプリケーション/オクテットストリーム;
ファイル送信オン;
キープアライブタイムアウト65 ;
サーバー{
聞く80 ;
サーバー名 ローカルホスト;
位置/ {
ルートhtml ;
インデックス インデックス.htmlインデックス.htm ;
}
エラーページ500 502 503 504 / 50 x .html ;
場所= / 50 x .html {
ルートhtml ;
}
}
}
---
apiバージョン:アプリ/ v1
種類:デプロイメント
メタデータ:
名前:デプロイメント- test2
仕様:
レプリカ 1
セレクター:
マッチラベル:
アプリ: nginx - pod
テンプレート
メタデータ:
ラベル:
アプリ: nginx - pod
仕様:
nodeName : local - 168 - 182 - 110 # テストの便宜上、スケジューリングマシンを指定します
コンテナ:
-名前: nginx
イメージ: docker .io / library / nginx :最新
ボリュームマウント:
- name : nginx - cm # volumes.nameと同じ
マウントパス: /etc/nginx/nginx.conf
サブパス: nginx.conf
巻数:
-名前: nginx - cm
構成マップ:
名前: nginx - conf # configMap 名

[例1] 秘密

 APIバージョン: v1
種類:秘密
メタデータ:
名前: mysecret
タイプ:不透明
データ
ユーザー名: admin
パスワード: MWYyZDFlMmU2N2Rm

---

vim myapp -デモ.yaml
apiバージョン:アプリ/ v1
種類:デプロイメント
メタデータ:
名前: mysql -デモ
名前空間:デフォルト
仕様:
レプリカ 1
セレクター:
マッチラベル:
アプリ: myapp
テンプレート
メタデータ:
ラベル:
アプリ: myapp
仕様:
コンテナ:
-名前: myapp
画像: mysql
imagePullPolicy : IfNotPresent
ポート:
-名前: http
コンテナポート: 80
ボリュームマウント:
-名前: mysql
マウントパス: / tmp / data
サブパス:データ
巻数:
-名前: mysql
秘密
secretName :私の秘密

[結論] データファイル情報は /tmp ディレクトリに保存され、存在する場合は上書きされます。存在しない場合は自動的に作成されます。

最後に、volumeMounts.subPath についてまとめます。

  • SubPath は、実際にはボリュームによってマウントされたサブディレクトリまたは単一のファイルです。ディレクトリか単一ファイルかは、ボリュームでマウントされたディレクトリ内に、subPath で定義されたファイル (ファイルまたはディレクトリ) があるかどうかによって決まります。そうでない場合は、ボリュームに対応するディレクトリにサブパス ディレクトリが作成されます。
  • ConfigMap および Secret で subPath が使用されている場合、subPath が指定されていないと、volumeMounts.mountPath に対応するディレクトリ内のすべてのファイルがクリアされ、ConfigMap または Secret で定義されたファイルのみが保存されます。

volumeMounts.subPath の使い方は以上です。ご質問がございましたら、メッセージを残してください。次回の記事はさらに面白いものになる予定です。しばらくお待ちください〜

<<:  Kubernetes セキュリティからクラウドネイティブ アプリケーション セキュリティへ

>>:  IDCが2022年第3四半期のパブリッククラウドサービス市場レポートを発表、天一クラウドは中国のパブリッククラウドIaaS+PaaS市場で第3位にランクイン

推薦する

まずは7月の百度の大きな変化から始めましょう

清明節中の大きな変化を除けば、過去数か月間の百度の変化は穏やかなものと言える。ただ、先週の7月下旬に...

2021年の中国クラウドコンピューティング業界の地域パターンの発展状況を理解するための10のグラフ

この記事の核心データ:中国の都市におけるクラウドコンピューティングの発展レベルのスコア、各都市におけ...

SaaS製品の5つのコア指標の詳細な説明

1. 定期的な収入1. MRR/ARRとは何か経常収益とは、将来にわたって継続的に得られる収入のこと...

NetEase Cloudは業界のニーズに応えて高品質の顧客にサービスを提供し、金融業界の「インターネットサーフィン」を支援します。

金融とテクノロジーの組み合わせにより、金融サービスの境界が大幅に拡大し、包括的な金融が多数の小規模お...

なぜあなたのウェブサイトの記事は掲載されていないのですか?王奇は100%明確な分析を持っています

1. 概要現在、多くのウェブマスターのウェブサイトは適切にインクルードされていないか、ウェブサイトの...

新浪微博の10万アカウントのうち75,267件が個人攻撃の疑いで処罰された

曉報ニュース(劉洋記者)昨日、北京曉報の記者は北京インターネット協会から、「無敵小白痴1989」「王...

テンセントはゲーム業界から脱却できるか?

テンセントにとってゲーム事業の意味に大きな変化があった。テンセントは3月22日の午後、通期および第4...

ハロウィン: asmallorange - 全商品 50% オフ/ウェブホスティング/リセラー/VPS/サーバー

asmallorange.com ハロウィーンを記念して、今から全商品が 50% オフとなりますが、...

百度、自社コンテンツをクロールしたとして奇虎360を提訴、1億人民元の損害賠償請求

百度は、奇虎360が自社のウェブサイトのコンテンツをコピーしたことは不正競争に当たるとして、北京市第...

すべてのビジネスをクラウドで実行することは本当に良い戦略でしょうか?

ほとんどの銀行は現代的な感覚に適応しようと努めてきたが、リテールバンキングに対するアプローチ方法から...

BandwagonHostの登録に関するチュートリアル、BandwagonHostの登録の詳細について説明します

BandwagonHost VPS の登録プロセスは比較的簡単です。登録できない方もいらっしゃるでし...

Google vs. Naver: 覇者は地方の暴君を倒せない

Googleは現在、世界の検索市場の83%を占めていますが、中国や韓国など一部の国では徐々に衰退して...

外部リンクキーワードランキングの価値はどれくらいですか?

ウェブサイトの外部リンク情報の構築に多くの時間と労力を費やした後、Baiduの自然ランキングでいくつ...

ウェブサイトのトラフィックを増やすために、ウェブサイトのユーザーベースを決定するために適切なデータ分析を行う

みなさんこんにちは、Xiaosi です。今日は、データ分析を使用して Web サイトでユーザーを獲得...

mycustomhosting-kvm vps は年間 7.5 ドルから

mycustomhosting は 2009 年に設立されたと主張する VPS プロバイダーですが、...