| 1 | <?xml version='1.0' encoding='UTF-8'?> |
| 2 | <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 720" width="1280" height="720"> |
| 3 | <defs> |
| 4 | <pattern id="bpGridMajor" x="0" y="0" width="40" height="40" patternUnits="userSpaceOnUse" data-pptx-pattern="lgGrid"> |
| 5 | <rect width="40" height="40" fill="#0E2A47" /> |
| 6 | <path d="M 40 0 L 0 0 0 40" fill="none" stroke="#2D4A6B" stroke-width="0.6" /> |
| 7 | </pattern> |
| 8 | <pattern id="bpGridMinor" x="0" y="0" width="8" height="8" patternUnits="userSpaceOnUse" data-pptx-pattern="smGrid"> |
| 9 | <rect width="8" height="8" fill="#0E2A47" /> |
| 10 | <path d="M 8 0 L 0 0 0 8" fill="none" stroke="#1A3A5C" stroke-width="0.3" /> |
| 11 | </pattern> |
| 12 | </defs> |
| 13 | |
| 14 | <g id="bg"> |
| 15 | <rect width="1280" height="720" fill="#0E2A47" /> |
| 16 | <rect width="1280" height="720" fill="url(#bpGridMinor)" opacity="0.4" /> |
| 17 | <rect width="1280" height="720" fill="url(#bpGridMajor)" opacity="0.6" /> |
| 18 | </g> |
| 19 | |
| 20 | <g id="header"> |
| 21 | <text x="60" y="42" font-family="Arial, 'Microsoft YaHei', sans-serif" font-size="30" font-weight="bold" fill="#F0F4F8">Two Planes, One Spine</text> |
| 22 | <text x="1220" y="42" font-family="Consolas, 'Courier New', monospace" font-size="11" fill="#A0B8D0" text-anchor="end">P02 / 10</text> |
| 23 | <line x1="60" y1="58" x2="1220" y2="58" stroke="#2D4A6B" stroke-width="0.5" /> |
| 24 | <text x="60" y="78" font-family="Arial, 'Microsoft YaHei', sans-serif" font-size="13" fill="#6B85A3">EVERY DECISION GOES THROUGH <tspan fill="#FFB627" font-family="Consolas, 'Courier New', monospace">kube-apiserver</tspan></text> |
| 25 | </g> |
| 26 | |
| 27 | <g id="cp-zone-decor"> |
| 28 | <rect x="80" y="105" width="1120" height="240" fill="#1A3A5C" fill-opacity="0.35" stroke="#3E7AB8" stroke-width="0.6" stroke-dasharray="4 4" /> |
| 29 | <text x="100" y="130" font-family="Consolas, 'Courier New', monospace" font-size="12" fill="#FFB627" letter-spacing="2">[ CONTROL PLANE ]</text> |
| 30 | <text x="100" y="148" font-family="Arial, 'Microsoft YaHei', sans-serif" font-size="13" fill="#A0B8D0">Global decision-making · desired-state holder</text> |
| 31 | </g> |
| 32 | |
| 33 | <g id="cp-apiserver"> |
| 34 | <rect x="540" y="180" width="200" height="120" fill="#0E2A47" stroke="#FFB627" stroke-width="2" /> |
| 35 | <rect x="540" y="180" width="200" height="22" fill="#FFB627" /> |
| 36 | <text x="640" y="196" font-family="Consolas, 'Courier New', monospace" font-size="11" fill="#0E2A47" text-anchor="middle" font-weight="bold">▲ HUB</text> |
| 37 | <text x="640" y="234" font-family="Consolas, 'Courier New', monospace" font-size="15" fill="#FFB627" text-anchor="middle" font-weight="bold">kube-apiserver</text> |
| 38 | <text x="640" y="258" font-family="Arial, 'Microsoft YaHei', sans-serif" font-size="11" fill="#F0F4F8" text-anchor="middle">REST + admission</text> |
| 39 | <text x="640" y="276" font-family="Arial, 'Microsoft YaHei', sans-serif" font-size="11" fill="#F0F4F8" text-anchor="middle">+ validation gateway</text> |
| 40 | <text x="640" y="294" font-family="Consolas, 'Courier New', monospace" font-size="9" fill="#A0B8D0" text-anchor="middle">↕ talks to etcd only</text> |
| 41 | </g> |
| 42 | |
| 43 | <g id="cp-etcd"> |
| 44 | <rect x="120" y="195" width="160" height="90" fill="#0E2A47" stroke="#5BA3E0" stroke-width="1.5" /> |
| 45 | <text x="200" y="220" font-family="Consolas, 'Courier New', monospace" font-size="13" fill="#5BA3E0" text-anchor="middle" font-weight="bold">etcd</text> |
| 46 | <text x="200" y="244" font-family="Arial, 'Microsoft YaHei', sans-serif" font-size="11" fill="#F0F4F8" text-anchor="middle">key-value store</text> |
| 47 | <text x="200" y="260" font-family="Arial, 'Microsoft YaHei', sans-serif" font-size="11" fill="#A0B8D0" text-anchor="middle">Raft · quorum</text> |
| 48 | <text x="200" y="276" font-family="Consolas, 'Courier New', monospace" font-size="9" fill="#6B85A3" text-anchor="middle">3 or 5 members</text> |
| 49 | </g> |
| 50 | |
| 51 | <g id="cp-sched"> |
| 52 | <rect x="320" y="195" width="180" height="90" fill="#0E2A47" stroke="#5BA3E0" stroke-width="1.5" /> |
| 53 | <text x="410" y="220" font-family="Consolas, 'Courier New', monospace" font-size="13" fill="#5BA3E0" text-anchor="middle" font-weight="bold">kube-scheduler</text> |
| 54 | <text x="410" y="244" font-family="Arial, 'Microsoft YaHei', sans-serif" font-size="11" fill="#F0F4F8" text-anchor="middle">filter → score → bind</text> |
| 55 | <text x="410" y="260" font-family="Arial, 'Microsoft YaHei', sans-serif" font-size="11" fill="#A0B8D0" text-anchor="middle">picks node per Pod</text> |
| 56 | </g> |
| 57 | |
| 58 | <g id="cp-ctrl"> |
| 59 | <rect x="780" y="195" width="200" height="90" fill="#0E2A47" stroke="#5BA3E0" stroke-width="1.5" /> |
| 60 | <text x="880" y="220" font-family="Consolas, 'Courier New', monospace" font-size="12" fill="#5BA3E0" text-anchor="middle" font-weight="bold">controller-manager</text> |
| 61 | <text x="880" y="244" font-family="Arial, 'Microsoft YaHei', sans-serif" font-size="11" fill="#F0F4F8" text-anchor="middle">watch · diff · act</text> |
| 62 | <text x="880" y="260" font-family="Arial, 'Microsoft YaHei', sans-serif" font-size="11" fill="#A0B8D0" text-anchor="middle">N reconcile loops</text> |
| 63 | </g> |
| 64 | |
| 65 | <g id="cp-cloud"> |
| 66 | <rect x="1020" y="195" width="160" height="90" fill="#0E2A47" stroke="#3E7AB8" stroke-width="1.5" stroke-dasharray="4 3" /> |
| 67 | <text x="1100" y="220" font-family="Consolas, 'Courier New', monospace" font-size="12" fill="#3E7AB8" text-anchor="middle" font-weight="bold">cloud-ctrl-mgr</text> |
| 68 | <text x="1100" y="244" font-family="Arial, 'Microsoft YaHei', sans-serif" font-size="11" fill="#A0B8D0" text-anchor="middle">cloud only</text> |
| 69 | <text x="1100" y="260" font-family="Arial, 'Microsoft YaHei', sans-serif" font-size="11" fill="#A0B8D0" text-anchor="middle">LB · routes · nodes</text> |
| 70 | <text x="1100" y="277" font-family="Consolas, 'Courier New', monospace" font-size="9" fill="#6B85A3" text-anchor="middle">optional</text> |
| 71 | </g> |
| 72 | |
| 73 | <g id="cp-zone-decor-arrows"> |
| 74 | <path d="M 260,285 Q 260,318 420,318 Q 580,318 580,290" fill="none" stroke="#FFB627" stroke-width="1.2"/> |
| 75 | <polygon points="580,290 575,300 585,300" fill="#FFB627"/> |
| 76 | <line x1="740" y1="240" x2="780" y2="240" stroke="#FFB627" stroke-width="1.2" /> |
| 77 | <line x1="980" y1="240" x2="1020" y2="240" stroke="#3E7AB8" stroke-width="1" stroke-dasharray="3 3" /> |
| 78 | </g> |
| 79 | |
| 80 | <g id="spine"> |
| 81 | <line x1="640" y1="345" x2="640" y2="415" stroke="#FFB627" stroke-width="2" /> |
| 82 | <polygon points="640,415 634,405 646,405" fill="#FFB627" /> |
| 83 | <polygon points="640,345 634,355 646,355" fill="#FFB627" /> |
| 84 | <rect x="555" y="368" width="170" height="22" fill="#0E2A47" /> |
| 85 | <text x="640" y="384" font-family="Consolas, 'Courier New', monospace" font-size="12" fill="#FFB627" text-anchor="middle">API-MEDIATED</text> |
| 86 | </g> |
| 87 | |
| 88 | <g id="dp-zone-decor"> |
| 89 | <rect x="80" y="415" width="1120" height="220" fill="#1A3A5C" fill-opacity="0.35" stroke="#3E7AB8" stroke-width="0.6" stroke-dasharray="4 4" /> |
| 90 | <text x="100" y="440" font-family="Consolas, 'Courier New', monospace" font-size="12" fill="#5BA3E0" letter-spacing="2">[ DATA PLANE ]</text> |
| 91 | <text x="100" y="458" font-family="Arial, 'Microsoft YaHei', sans-serif" font-size="13" fill="#A0B8D0">Pod execution · workload runtime</text> |
| 92 | <line x1="640" y1="415" x2="640" y2="445" stroke="#5BA3E0" stroke-width="1" stroke-dasharray="3 3" opacity="0.5" /> |
| 93 | <line x1="270" y1="445" x2="640" y2="445" stroke="#5BA3E0" stroke-width="1" stroke-dasharray="3 3" opacity="0.5" /> |
| 94 | <line x1="640" y1="445" x2="1010" y2="445" stroke="#5BA3E0" stroke-width="1" stroke-dasharray="3 3" opacity="0.5" /> |
| 95 | <line x1="270" y1="445" x2="270" y2="490" stroke="#5BA3E0" stroke-width="1" stroke-dasharray="3 3" opacity="0.5" /> |
| 96 | <line x1="640" y1="445" x2="640" y2="490" stroke="#5BA3E0" stroke-width="1" stroke-dasharray="3 3" opacity="0.5" /> |
| 97 | <line x1="1010" y1="445" x2="1010" y2="490" stroke="#5BA3E0" stroke-width="1" stroke-dasharray="3 3" opacity="0.5" /> |
| 98 | </g> |
| 99 | |
| 100 | <g id="dp-node-1"> |
| 101 | <polygon points="270,490 360,535 360,605 270,650 180,605 180,535" fill="#0E2A47" stroke="#5BA3E0" stroke-width="1.5" /> |
| 102 | <line x1="270" y1="490" x2="270" y2="570" stroke="#5BA3E0" stroke-width="1" /> |
| 103 | <line x1="270" y1="570" x2="180" y2="535" stroke="#5BA3E0" stroke-width="1" /> |
| 104 | <line x1="270" y1="570" x2="360" y2="535" stroke="#5BA3E0" stroke-width="1" /> |
| 105 | <rect x="230" y="595" width="22" height="14" fill="none" stroke="#7FD99F" stroke-width="1" /> |
| 106 | <rect x="259" y="595" width="22" height="14" fill="none" stroke="#7FD99F" stroke-width="1" /> |
| 107 | <rect x="288" y="595" width="22" height="14" fill="none" stroke="#7FD99F" stroke-width="1" /> |
| 108 | <text x="270" y="675" font-family="Consolas, 'Courier New', monospace" font-size="12" fill="#A0B8D0" text-anchor="middle">worker-node-01</text> |
| 109 | </g> |
| 110 | |
| 111 | <g id="dp-node-2"> |
| 112 | <polygon points="640,490 730,535 730,605 640,650 550,605 550,535" fill="#0E2A47" stroke="#5BA3E0" stroke-width="1.5" /> |
| 113 | <line x1="640" y1="490" x2="640" y2="570" stroke="#5BA3E0" stroke-width="1" /> |
| 114 | <line x1="640" y1="570" x2="550" y2="535" stroke="#5BA3E0" stroke-width="1" /> |
| 115 | <line x1="640" y1="570" x2="730" y2="535" stroke="#5BA3E0" stroke-width="1" /> |
| 116 | <rect x="600" y="595" width="22" height="14" fill="none" stroke="#7FD99F" stroke-width="1" /> |
| 117 | <rect x="629" y="595" width="22" height="14" fill="none" stroke="#7FD99F" stroke-width="1" /> |
| 118 | <rect x="658" y="595" width="22" height="14" fill="none" stroke="#7FD99F" stroke-width="1" /> |
| 119 | <text x="640" y="675" font-family="Consolas, 'Courier New', monospace" font-size="12" fill="#A0B8D0" text-anchor="middle">worker-node-02</text> |
| 120 | </g> |
| 121 | |
| 122 | <g id="dp-node-3"> |
| 123 | <polygon points="1010,490 1100,535 1100,605 1010,650 920,605 920,535" fill="#0E2A47" stroke="#5BA3E0" stroke-width="1.5" /> |
| 124 | <line x1="1010" y1="490" x2="1010" y2="570" stroke="#5BA3E0" stroke-width="1" /> |
| 125 | <line x1="1010" y1="570" x2="920" y2="535" stroke="#5BA3E0" stroke-width="1" /> |
| 126 | <line x1="1010" y1="570" x2="1100" y2="535" stroke="#5BA3E0" stroke-width="1" /> |
| 127 | <rect x="970" y="595" width="22" height="14" fill="none" stroke="#7FD99F" stroke-width="1" /> |
| 128 | <rect x="999" y="595" width="22" height="14" fill="none" stroke="#7FD99F" stroke-width="1" /> |
| 129 | <text x="1010" y="675" font-family="Consolas, 'Courier New', monospace" font-size="12" fill="#A0B8D0" text-anchor="middle">worker-node-03</text> |
| 130 | </g> |
| 131 | |
| 132 | <g id="footer"> |
| 133 | <line x1="60" y1="680" x2="1220" y2="680" stroke="#2D4A6B" stroke-width="0.5" /> |
| 134 | <text x="60" y="700" font-family="Consolas, 'Courier New', monospace" font-size="11" fill="#6B85A3">K8S-ARCH-2026 · DRAWING 02 OF 10 · TOPOLOGY OVERVIEW</text> |
| 135 | <text x="1220" y="700" font-family="Consolas, 'Courier New', monospace" font-size="11" fill="#6B85A3" text-anchor="end">SHEET 02 OF 10</text> |
| 136 | </g> |
| 137 | </svg> |