k8s_cache

ソース ホーム

を使用して有効にする
k8s_cache:github.com/delta10/k8s_cache

k8s_cache は、指定されたポッドに対して早期更新するキャッシュプラグインです。

説明

これは cache の派生です。ラベル k8s-cache.coredns.io/early-refresh=true を持つポッドに、まず更新されたポジティブキャッシュアイテムを送信するオプションを追加します。その他のポッドは一定時間経過後でのみ取得します。これにより、DNS で解決される、Stable FQDNNetworkPolicies を使用するドメイン名に基づいて、安定した NetworkPolicy ホワイトリストを実装できます。

この実装では、「過遅れキャッシュ」と呼ばれる追加のキャッシュストアを使用し、これが数秒シフトされます。期限が切れると、過遅れキャッシュ内にあるアイテムは、存在する場合は早期キャッシュ内のアイテムで置き換えられます。リクエストが入ると、プラグインは通常はまず、過遅れキャッシュに、次に早期キャッシュにレスポンスがキャッシュされているかどうかをチェックします。送信元 IP がラベル k8s-cache.coredns.io/early-refresh=true を持つポッドと一致する場合、過遅れキャッシュはスキップされ、直ちに早期キャッシュが参照されます。

このプラグインは cache プラグインの置き換えとして意図されており、これと組み合わせて使用するべきではありません。

このプラグインのコードは、最大限に cache と同期します。

構文

k8s_cache [TTL] [ZONES...] {
    earlyrefresh [DURATION]
    success CAPACITY [TTL] [MINTTL]
    denial CAPACITY [TTL] [MINTTL]
    prefetch AMOUNT [[DURATION] [PERCENTAGE%]]
    serve_stale [DURATION] [REFRESH_MODE]
    servfail DURATION
    disable success|denial [ZONES...]
    keepttl
}

詳細については、キャッシュのドキュメント を参照してください。このプラグインは 1 つの引数を追加し、他の引数の一部の意味を若干変更します。

  • earlyrefresh early-refresh ポッドが最新のリプライを取得するまでの **継続時間** (例: 「5s」) を設定します。このオプションは、実際に、早期更新ラベルを持たないポッドに対して成功応答のキャッシュ継続時間を 増大 します。各クライアントは それ自身 に対する現行のキャッシュ継続時間を TTL 応答として受け取ります。
  • prefetch cache の場合と同様に動作しますが、早期更新のキャッシュの有効期限を使用して、プリフェッチを行うべきかどうかを計算します。
  • serve_stale cache の場合と同様に動作しますが、**継続時間** は早期更新のキャッシュの有効期限からカウントされます。過遅れキャッシュにキャッシュされた肯定的応答に対して、serve_stale は、過遅れキャッシュの有効期限が切れた場合にのみ効果を持ち始めます。過遅れキャッシュが期限切れになると、スタールの提供は 継続時間 マイナス earlyrefresh の継続時間の間続行されます。早期更新ラベルを持つポッドには、決してスタール応答は提供されません。

肯定および否定キャッシュサイズを 10000 (デフォルト) に維持し、早期更新ラベルを持つポッドに 5 秒早くキャッシュ更新を送信します。

.:5300 {
  k8s_cache {
    success 10000
    denial 10000
    earlyrefresh 5s
  }
  forward . 8.8.8.8
}

一般的なキャッシュの例については、キャッシュのドキュメント を参照してください。