外部nfsサーバーを使用して、ホームディレクトリをkubernetesコンテナにマウントします。コンテナが削除されると、nfs接続が「クローズ待機中」の状態で停止することがあります。
その結果、コンテナが配置されているノードは膨大なiowait時間値を生成します。これにより、ノードが再起動されるまで、すべてのコンテナはnfsディスクパフォーマンスの影響を受けます。
問題のあるインストールを手動で削除できましたが、iowaitがダウンしていませんでした。
私は問題の診断を助けるためにiotopをインストールしましたが、Pythonエラーが発生します。
2つの質問:
再起動せずにこの問題を解決する方法はありますか?この問題は、私たちが知らない多くの顧客に影響を与えていますか?
まず、これが起こる理由と解決策を考えてみましょう。 nfs サーバーが同期用に構成されています。非同期に切り替えると、この問題は解決しますか?
私はこれがkubernetesの問題だとは思わないが、kubernetes / nfsの1つの欠点は、とにかくクライアント接続を構成できないことです。
答え1
KubernetesでNFSマウントの問題(再起動せずにI / Oレイテンシが長くなる)を解決するには、NFSマウントポイントを強制(umount -f
)またはゆっくり()マウント解除してみます。umount -l
NFSサーバー構成をからに切り替えるとsync
パフォーマンスasync
が向上する可能性がありますが、データ整合性のリスクが発生します。特定のマウントオプション(たとえば、、nfsvers=4.1
およびrsize=1048576
)wsize=1048576
を使用してKubernetesで永続ボリューム(PV)定義を強化すると、パフォーマンスの問題を潜在的に軽減できます。たとえば、PV 構成には以下が含まれます。
nfs:
path: /path/to/dir
server: nfs-server.example.com
mountOptions:
- hard
- nfsvers=4.1
- rsize=1048576
- wsize=1048576
- timeo=14
CephやGlusterFSなどの代替ストレージソリューションの監視とナビゲーションと組み合わせたこのアプローチは、Kubernetes環境でNFS関連のパフォーマンス低下を軽減するように設計されています。