說明
這是 cache 的分支。它增加了一個選項,可以優先將刷新的正面快取項目發送到具有標籤 k8s-cache.coredns.io/early-refresh=true
的 Pod。其他 Pod 則只在指定的持續時間後才會收到。這使得基於使用 DNS 解析的網域名稱,並使用 穩定的 FQDNNetworkPolicies 來實現穩定的 NetworkPolicy 白名單成為可能。
此實作使用一個額外的快取儲存區,稱為「晚期快取」,它會延遲數秒。過期時,晚期快取中的項目會被早期快取中的項目取代(如果存在)。當請求傳入時,此外掛程式通常會先檢查回應是否快取在晚期快取中,然後再檢查早期快取。如果來源 IP 符合具有標籤 k8s-cache.coredns.io/early-refresh=true
的 Pod,則會跳過晚期快取,並立即查詢早期快取。
此外掛程式旨在取代 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
}
有關詳細資訊,請參閱 cache 文件。此外掛程式增加了一個參數,並稍微修改了其他一些參數的含義。
earlyrefresh
設定 持續時間(例如,「5s」),在此期間,具有early-refresh
標籤的 Pod 會收到新的回應。此選項實際上會為沒有提前刷新標籤的 Pod 增加 成功回應的快取持續時間。每個用戶端都會收到針對它的目前快取持續時間作為 TTL 回應。prefetch
其運作方式與 cache 中相同,但它使用早期快取的過期時間來計算是否應進行預先擷取。serve_stale
其運作方式與 cache 中相同,但 持續時間 是從早期快取的過期時間開始計算的。對於快取在晚期快取中的正面回應,serve_stale
僅在晚期快取過期時才開始生效。在晚期快取過期後,過時的服務將持續 持續時間 減去earlyrefresh
的持續時間。具有提前刷新標籤的 Pod 永遠不會收到過時的回應。
範例
保持 10000(預設)的正面和負面快取大小,並將快取刷新提前 5 秒發送到具有提前刷新標籤的 Pod。
.:5300 {
k8s_cache {
success 10000
denial 10000
earlyrefresh 5s
}
forward . 8.8.8.8
}
有關一般快取範例,請參閱 cache 文件。