はじめに
Kubernetes リソースを監視し、変更に対応する場合、開発者は Kubernetes client-go パッケージのさまざまなオプションから選択できます。この記事は、watch.Interface、cache.NewInformer、cache.NewSharedInformer、cache.NewSharedIndexInformer.
watch.Interface
watch.Interface の違いを明確にすることを目的としています。 ResultChan() を通じて Kubernetes リソースへの変更を監視できる低レベルの抽象化。追加/変更/削除イベントを提供し、リソースの変更を可視化します。ただし、リソースの「後」の状態のみが含まれます。
cache.NewInformer
cache.NewInformer は、より高いレベルの抽象化を導入します。これには、ウォッチャー、リスター、およびメモリ内キャッシュが含まれます。 cache.ResourceEventHandler を実装すると、OnAdd()/OnUpdate()/OnDelete() 呼び出しを受け取ることができます。これにより、リソースの「前」と「後」の両方の状態が提供され、変更処理がより便利になります。
cache.NewSharedInformer
cache.NewSharedInformer API サーバーとの接続やその他のリソースを情報提供者間で共有します。これにより、リソースの使用が最適化され、パフォーマンスが向上します。分離に関する特定の要件がない限り、cache.NewInformer よりも推奨されます。
cache.NewSharedIndexInformer
cache.NewSharedIndexInformer は、データ キャッシュにインデックスを追加します。これは、大規模なデータセットを操作しており、迅速な検索とフィルタリングのために効率的なインデックス作成が必要な場合に特に便利です。これは最も機能が豊富なオプションですが、実装が最も複雑です。
推奨事項
ほとんどのユースケースでは、下位のオプションではなく SharedInformers を使用することをお勧めします。レベルの抽象化。 SharedInformers はパフォーマンス上の利点をもたらし、リソース管理を簡素化します。リソースを最適に使用するために、同じ SharedInformerFactory から新しい SharedInformer をインスタンス化します。
以上がwatch.Interface、cache.NewInformer、cache.NewSharedInformer、cache.NewSharedIndexInformer をいつ使用するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。