Skip to content

Commit 5bdf3bc

Browse files
authored
Merge pull request #46769 from MikeSpreitzer/discuss-apf-recursion
Add section to APF page about recursive scenarios
2 parents ebb553a + eeca4ac commit 5bdf3bc

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

content/en/docs/concepts/cluster-administration/flow-control.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,37 @@ kube-apiserver \
6767
The command-line flag `--enable-priority-and-fairness=false` will disable the
6868
API Priority and Fairness feature.
6969

70+
## Recursive server scenarios
71+
72+
API Priority and Fairness must be used carefully in recursive server
73+
scenarios. These are sccenarios in which some server A, while serving
74+
a request, issues a subsidiary request to some server B. Perhaps
75+
server B might even make a further subsidiary call back to server
76+
A. In situations where Priority and Fairness control is applied to
77+
both the original request and some subsidiary ones(s), no matter how
78+
deep in the recursion, there is a danger of priority inversions and/or
79+
deadlocks.
80+
81+
One example of recursion is when the `kube-apiserver` issues an
82+
admission webhook call to server B, and while serving that call,
83+
server B makes a further subsidiary request back to the
84+
`kube-apiserver`. Another example of recursion is when an `APIService`
85+
object directs the `kube-apiserver` to delegate requests about a
86+
certain API group to a custom external server B (this is one of the
87+
things called "aggregation").
88+
89+
When the original request is known to belong to a certain priority
90+
level, and the subsidiary controlled requests are classified to higher
91+
priority levels, this is one possible solution. When the original
92+
requests can belong to any priority level, the subsidiary controlled
93+
requests have to be exempt from Priority and Fairness limitation. One
94+
way to do that is with the objects that configure classification and
95+
handling, discussed below. Another way is to disable Priority and
96+
Fairness on server B entirely, using the techniques discussed above. A
97+
third way, which is the simplest to use when server B is not
98+
`kube-apisever`, is to build server B with Priority and Fairness
99+
disabled in the code.
100+
70101
## Concepts
71102

72103
There are several distinct features involved in the API Priority and Fairness

0 commit comments

Comments
 (0)