sigs.k8s.io/cluster-api@v1.7.1/docs/proposals/images/machine-health-check/mhc.svg (about) 1 <?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="727px" preserveAspectRatio="none" style="width:702px;height:727px;" version="1.1" viewBox="0 0 702 727" width="702px" zoomAndPan="magnify"><defs><filter height="300%" id="ffy31wj92py31" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><ellipse cx="243.5" cy="20" fill="#000000" filter="url(#ffy31wj92py31)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#ffy31wj92py31)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="223" x="132" y="50"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="203" x="142" y="71.1387">Machine Health Check controller</text><rect fill="#FEFECE" filter="url(#ffy31wj92py31)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="97" x="195" y="191.9688"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="77" x="205" y="213.1074">Watch MHCs</text><rect fill="#FEFECE" filter="url(#ffy31wj92py31)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="444" x="21.5" y="253.4375"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="424" x="31.5" y="274.5762">Find unhealthy targets: Need remediation or going towards timeout</text><polygon fill="#FEFECE" filter="url(#ffy31wj92py31)" points="243.5,147.9688,255.5,159.9688,243.5,171.9688,231.5,159.9688,243.5,147.9688" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#ffy31wj92py31)" points="145.5,307.4063,341.5,307.4063,353.5,319.4063,341.5,331.4063,145.5,331.4063,133.5,319.4063,145.5,307.4063" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="196" x="145.5" y="323.2144">unhealthyTargets > maxUnhealthy</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="353.5" y="316.812">yes</text><polygon fill="#FEFECE" filter="url(#ffy31wj92py31)" points="243.5,103.9688,255.5,115.9688,243.5,127.9688,231.5,115.9688,243.5,103.9688" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#ffy31wj92py31)" points="32,372.9028,455,372.9028,467,384.9028,455,396.9028,32,396.9028,20,384.9028,32,372.9028" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="423" x="32" y="388.7109">API server machine deletion requests for machines that need remediation</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="223" x="467" y="382.3086">requeue with minTime to timeout delay</text><rect fill="#ADD8E6" filter="url(#ffy31wj92py31)" height="61.9063" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="391" x="48" y="438.3018"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="371" x="58" y="459.4404">The machine owner controller watches deletion timestamp.</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="297" x="58" y="473.4092">Reconciles towards desired number of replicas.</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="314" x="58" y="487.3779">The process to create a new machine/node starts</text><rect fill="#ADD8E6" filter="url(#ffy31wj92py31)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="334" x="76.5" y="520.208"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="314" x="86.5" y="541.3467">The machine controller drains the unhealthy node</text><rect fill="#ADD8E6" filter="url(#ffy31wj92py31)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="419" x="34" y="574.1768"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="399" x="44" y="595.3154">The machine controller provider deletes the unhealthy instance</text><rect fill="#ADD8E6" filter="url(#ffy31wj92py31)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="420" x="33.5" y="628.1455"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="400" x="43.5" y="649.2842">The machine controller removes the unhealthy machine finalizer</text><rect fill="#ADD8E6" filter="url(#ffy31wj92py31)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="374" x="56.5" y="682.1143"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="354" x="66.5" y="703.2529">The API server removes the unhealthy machine resource</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="243.5" x2="243.5" y1="30" y2="50"/><polygon fill="#A80036" points="239.5,40,243.5,50,247.5,40,243.5,44" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="243.5" x2="243.5" y1="225.9375" y2="253.4375"/><polygon fill="#A80036" points="239.5,243.4375,243.5,253.4375,247.5,243.4375,243.5,247.4375" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="243.5" x2="243.5" y1="171.9688" y2="191.9688"/><polygon fill="#A80036" points="239.5,181.9688,243.5,191.9688,247.5,181.9688,243.5,185.9688" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="353.5" x2="477.5" y1="319.4063" y2="319.4063"/><polygon fill="#A80036" points="473.5,245.9375,477.5,235.9375,481.5,245.9375,477.5,241.9375" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="477.5" x2="477.5" y1="159.9688" y2="319.4063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="477.5" x2="255.5" y1="159.9688" y2="159.9688"/><polygon fill="#A80036" points="265.5,155.9688,255.5,159.9688,265.5,163.9688,261.5,159.9688" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="243.5" x2="243.5" y1="287.4063" y2="307.4063"/><polygon fill="#A80036" points="239.5,297.4063,243.5,307.4063,247.5,297.4063,243.5,301.4063" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="243.5" x2="243.5" y1="127.9688" y2="147.9688"/><polygon fill="#A80036" points="239.5,137.9688,243.5,147.9688,247.5,137.9688,243.5,141.9688" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="467" x2="501.5" y1="384.9028" y2="384.9028"/><polygon fill="#A80036" points="497.5,245.9375,501.5,235.9375,505.5,245.9375,501.5,241.9375" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="501.5" x2="501.5" y1="115.9688" y2="384.9028"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="501.5" x2="255.5" y1="115.9688" y2="115.9688"/><polygon fill="#A80036" points="265.5,111.9688,255.5,115.9688,265.5,119.9688,261.5,115.9688" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="243.5" x2="243.5" y1="331.4063" y2="372.9028"/><polygon fill="#A80036" points="239.5,362.9028,243.5,372.9028,247.5,362.9028,243.5,366.9028" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="247.5" y="352.7109">no</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="243.5" x2="243.5" y1="83.9688" y2="103.9688"/><polygon fill="#A80036" points="239.5,93.9688,243.5,103.9688,247.5,93.9688,243.5,97.9688" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #0000FF; stroke-width: 1.5; stroke-dasharray: 7.0,7.0;" x1="243.5" x2="243.5" y1="396.9028" y2="438.3018"/><polygon fill="#0000FF" points="239.5,428.3018,243.5,438.3018,247.5,428.3018,243.5,432.3018" style="stroke: #0000FF; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="67" x="247.5" y="418.2075">Out of band</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="243.5" x2="243.5" y1="500.208" y2="520.208"/><polygon fill="#A80036" points="239.5,510.208,243.5,520.208,247.5,510.208,243.5,514.208" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="243.5" x2="243.5" y1="554.1768" y2="574.1768"/><polygon fill="#A80036" points="239.5,564.1768,243.5,574.1768,247.5,564.1768,243.5,568.1768" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="243.5" x2="243.5" y1="608.1455" y2="628.1455"/><polygon fill="#A80036" points="239.5,618.1455,243.5,628.1455,247.5,618.1455,243.5,622.1455" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="243.5" x2="243.5" y1="662.1143" y2="682.1143"/><polygon fill="#A80036" points="239.5,672.1143,243.5,682.1143,247.5,672.1143,243.5,676.1143" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[c76ae935b8891c05edf39b6d46d7784c] 2 @startuml 3 start; 4 :Machine Health Check controller; 5 repeat 6 repeat 7 :Watch MHCs; 8 :Find unhealthy targets: Need remediation or going towards timeout; 9 repeat while (unhealthyTargets > maxUnhealthy) is (yes) 10 -> no; 11 repeat while (API server machine deletion requests for machines that need remediation) is (requeue with minTime to timeout delay) 12 13 -[#blue,dashed]-> Out of band; 14 #LightBlue:The machine owner controller watches deletion timestamp. 15 Reconciles towards desired number of replicas. 16 The process to create a new machine/node starts; 17 #LightBlue:The machine controller drains the unhealthy node; 18 #LightBlue:The machine controller provider deletes the unhealthy instance; 19 #LightBlue:The machine controller removes the unhealthy machine finalizer; 20 #LightBlue:The API server removes the unhealthy machine resource; 21 @enduml 22 23 PlantUML version 1.2019.12(Sun Nov 03 10:24:54 UTC 2019) 24 (GPL source distribution) 25 Java Runtime: Java(TM) SE Runtime Environment 26 JVM: Java HotSpot(TM) 64-Bit Server VM 27 Java Version: 1.7.0_25-b15 28 Operating System: Linux 29 Default Encoding: UTF-8 30 Language: en 31 Country: US 32 --></g></svg>