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 &gt; 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>