2
Kubernetesオブジェクトのメタデータには、the concepts of resourceVersion
and generation
があります。私はresourceVersion
という概念を理解しています。これは楽観的な並行性制御メカニズムです。更新のたびに変更されます。それでは、generation
は何ですか?すべての上resourceVersionと世代の違いは何ですか?
Kubernetesオブジェクトのメタデータには、the concepts of resourceVersion
and generation
があります。私はresourceVersion
という概念を理解しています。これは楽観的な並行性制御メカニズムです。更新のたびに変更されます。それでは、generation
は何ですか?すべての上resourceVersionと世代の違いは何ですか?
resourceVersionの変更は、書き込み、およびいくつかのオブジェクトに楽観的同時実行制御
のために使用され、生成は、オブジェクトのspec
に影響を与える書き込みを永続化の一環として、サーバーによってインクリメントされます。
一部のオブジェクトのstatus
フィールドには、コントローラが最後に実行された世代を保持するためのサブフィールドがあります。
ありがとうございます。私はあなたの2番目の文を少し詳しく説明してもらえますか?これは "チェックポイント"のようなものですか?コントローラーは、着信リソースによって要求された状態を実現するために、2つの部分に書き込む必要がありますか? 「OK、私は第1段階を完了しましたが、まだ「仕様」を完全に変更していませんか? –
いいえ、コントローラーが仕様の中の何も変更されていないことを認識して、反応しなければならない簡単な方法です。コントローラがなければ、コントローラは最後に動作した仕様がどのように見えるかを追跡しなければなりません(メモリー内で、再起動時に失敗するか、どこかに永続化され、新しいデフォルトフィールドが追加されたときに失敗します)。コントローラはオブジェクトを読み取り、生成をpersistent status.observedGenerationと比較し、異なる場合は仕様に基づいて、新たに観測された世代の状態で結果を記録します。 –
ありがとうございます。これは私の最後の質問です: 'resourceVersion'を見ることで同じことを達成できないか、光がゆっくりと始まると、' resourceVersion'が'spec'以外のフィールドの結果として変化するかもしれないので変更すると、これには適していませんか? –