绘制详细的 k8s 架构图

2025-12-14
绘制详细的 k8s 架构图
思考过程
用户想要一个详细的 Kubernetes (k8s) 架构图。我需要创建一个清晰、专业的 K8s 架构图,展示其主要组件。 K8s 架构主要包括: **Control Plane (Master Node):** - API Server - 核心组件,所有通信的入口 - etcd - 分布式键值存储 - Controller Manager - 控制器管理器 - Scheduler - 调度器 **Worker Nodes:** - Kubelet - 节点代理 - Kube-proxy - 网络代理 - Container Runtime (Docker/containerd) - Pods (包含容器) **其他组件:** - kubectl (CLI) - Cloud Provider / Load Balancer - Ingress Controller - Services - ConfigMaps / Secrets - Volumes 我将创建一个层次清晰的架构图,包括: 1. 外部用户/开发者通过 kubectl 2. Control Plane 区域 3. Worker Nodes 区域 4. 网络层 让我规划布局: - 顶部:用户和 kubectl - 中间:Control Plane (Master) - 底部:Worker Nodes - 使用容器/分组来组织组件 我会使用合适的颜色来区分不同的组件类别。
我将为您绘制一个详细的 Kubernetes 架构图,包含控制平面(Control Plane)和工作节点(Worker Nodes)的主要组件。 **布局规划:** 1. **顶部**:用户/开发者通过 kubectl 访问 2. **中间**:Control Plane(API Server、etcd、Controller Manager、Scheduler) 3. **底部**:Worker Nodes(Kubelet、Kube-proxy、Container Runtime、Pods) 4. 使用不同颜色区分各层组件 ```xml <mxGraphModel dx="922" dy="646" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> <root> <mxCell id="0"/> <mxCell id="1" parent="0"/> <!-- Title --> <mxCell id="title" value="Kubernetes 架构图" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=20;fontStyle=1;fontColor=#326CE5;" vertex="1" parent="1"> <mxGeometry x="290" y="10" width="220" height="30" as="geometry"/> </mxCell> <!-- User/Developer --> <mxCell id="user" value="开发者/用户" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1"> <mxGeometry x="385" y="50" width="30" height="50" as="geometry"/> </mxCell> <!-- kubectl --> <mxCell id="kubectl" value="kubectl" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;fontStyle=1;" vertex="1" parent="1"> <mxGeometry x="355" y="115" width="90" height="35" as="geometry"/> </mxCell> <!-- Edge: User to kubectl --> <mxCell id="e1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;strokeWidth=1.5;" edge="1" parent="1" source="user" target="kubectl"> <mxGeometry relative="1" as="geometry"/> </mxCell> <!-- Control Plane Container --> <mxCell id="cp_container" value="Control Plane (Master Node)" style="swimlane;startSize=25;fillColor=#dae8fc;strokeColor=#326CE5;strokeWidth=2;rounded=1;fontStyle=1;fontSize=12;" vertex="1" parent="1"> <mxGeometry x="40" y="170" width="720" height="150" as="geometry"/> </mxCell> <!-- API Server --> <mxCell id="api_server" value="API Server" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#326CE5;strokeColor=#1a3a6e;fontColor=#ffffff;fontStyle=1;fontSize=11;" vertex="1" parent="cp_container"> <mxGeometry x="300" y="40" width="120" height="45" as="geometry"/> </mxCell> <!-- etcd --> <mxCell id="etcd" value="etcd&#xa;(分布式存储)" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=10;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontStyle=1;fontSize=10;" vertex="1" parent="cp_container"> <mxGeometry x="600" y="35" width="90" height="60" as="geometry"/> </mxCell> <!-- Controller Manager --> <mxCell id="controller_mgr" value="Controller&#xa;Manager" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#326CE5;strokeColor=#1a3a6e;fontColor=#ffffff;fontStyle=1;fontSize=11;" vertex="1" parent="cp_container"> <mxGeometry x="30" y="40" width="100" height="45" as="geometry"/> </mxCell> <!-- Scheduler --> <mxCell id="scheduler" value="Scheduler" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#326CE5;strokeColor=#1a3a6e;fontColor=#ffffff;fontStyle=1;fontSize=11;" vertex="1" parent="cp_container"> <mxGeometry x="160" y="40" width="100" height="45" as="geometry"/> </mxCell> <!-- Cloud Controller Manager --> <mxCell id="ccm" value="Cloud Controller&#xa;Manager" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#326CE5;strokeColor=#1a3a6e;fontColor=#ffffff;fontStyle=1;fontSize=10;" vertex="1" parent="cp_container"> <mxGeometry x="460" y="40" width="100" height="45" as="geometry"/> </mxCell> <!-- Controllers detail --> <mxCell id="controllers_detail" value="• Node Controller&#xa;• Replication Controller&#xa;• Endpoints Controller&#xa;• Service Account Controller" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;fontSize=9;fontColor=#666666;" vertex="1" parent="cp_container"> <mxGeometry x="20" y="90" width="150" height="55" as="geometry"/> </mxCell> <!-- Scheduler detail --> <mxCell id="scheduler_detail" value="• 资源调度&#xa;• 节点选择&#xa;• 亲和性/反亲和性" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;fontSize=9;fontColor=#666666;" vertex="1" parent="cp_container"> <mxGeometry x="160" y="90" width="110" height="55" as="geometry"/> </mxCell> <!-- API Server detail --> <mxCell id="api_detail" value="REST API&#xa;认证/授权/准入控制" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=top;whiteSpace=wrap;rounded=0;fontSize=9;fontColor=#666666;" vertex="1" parent="cp_container"> <mxGeometry x="295" y="90" width="130" height="30" as="geometry"/> </mxCell> <!-- Edge: kubectl to API Server --> <mxCell id="e2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;strokeWidth=2;strokeColor=#326CE5;flowAnimation=1;" edge="1" parent="1" source="kubectl" target="api_server"> <mxGeometry relative="1" as="geometry"/> </mxCell> <!-- Edge: API Server to etcd --> <mxCell id="e3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;startArrow=classic;strokeWidth=1.5;strokeColor=#666666;" edge="1" parent="1" source="api_server" target="etcd"> <mxGeometry relative="1" as="geometry"/> </mxCell> <!-- Edge: Controller to API --> <mxCell id="e4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;startArrow=classic;strokeWidth=1.5;strokeColor=#326CE5;" edge="1" parent="1" source="controller_mgr" target="api_server"> <mxGeometry relative="1" as="geometry"/> </mxCell> <!-- Edge: Scheduler to API --> <mxCell id="e5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;startArrow=classic;strokeWidth=1.5;strokeColor=#326CE5;" edge="1" parent="1" source="scheduler" target="api_server"> <mxGeometry relative="1" as="geometry"/> </mxCell> <!-- Edge: CCM to API --> <mxCell id="e6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;startArrow=classic;strokeWidth=1.5;strokeColor=#326CE5;" edge="1" parent="1" source="ccm" target="api_server"> <mxGeometry relative="1" as="geometry"/> </mxCell> <!-- Worker Node 1 --> <mxCell id="worker1" value="Worker Node 1" style="swimlane;startSize=22;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;rounded=1;fontStyle=1;fontSize=11;" vertex="1" parent="1"> <mxGeometry x="40" y="340" width="350" height="250" as="geometry"/> </mxCell> <!-- Kubelet 1 --> <mxCell id="kubelet1" value="Kubelet" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#82b366;strokeColor=#4a7a3a;fontColor=#ffffff;fontStyle=1;fontSize=10;" vertex="1" parent="worker1"> <mxGeometry x="20" y="35" width="80" height="35" as="geometry"/> </mxCell> <!-- Kube-proxy 1 --> <mxCell id="kube_proxy1" value="Kube-proxy" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#82b366;strokeColor=#4a7a3a;fontColor=#ffffff;fontStyle=1;fontSize=10;" vertex="1" parent="worker1"> <mxGeometry x="120" y="35" width="80" height="35" as="geometry"/> </mxCell> <!-- Container Runtime 1 --> <mxCell id="runtime1" value="Container Runtime&#xa;(containerd/Docker)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#82b366;strokeColor=#4a7a3a;fontColor=#ffffff;fontStyle=1;fontSize=9;" vertex="1" parent="worker1"> <mxGeometry x="220" y="30" width="110" height="45" as="geometry"/> </mxCell> <!-- Pod 1 --> <mxCell id="pod1" value="Pod" style="swimlane;startSize=20;fillColor=#e1d5e7;strokeColor=#9673a6;rounded=1;fontSize=10;fontStyle=1;" vertex="1" parent="worker1"> <mxGeometry x="20" y="90" width="150" height="70" as="geometry"/> </mxCell> <!-- Container in Pod 1 --> <mxCell id="container1" value="Container" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#9673a6;strokeColor=#6a4c7a;fontColor=#ffffff;fontSize=9;" vertex="1" parent="pod1"> <mxGeometry x="10" y="30" width="60" height="30" as="geometry"/> </mxCell> <!-- Container in Pod 1-2 --> <mxCell id="container1b" value="Container" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#9673a6;strokeColor=#6a4c7a;fontColor=#ffffff;fontSize=9;" vertex="1" parent="pod1"> <mxGeometry x="80" y="30" width="60" height="30" as="geometry"/> </mxCell> <!-- Pod 2 --> <mxCell id="pod2" value="Pod" style="swimlane;startSize=20;fillColor=#e1d5e7;strokeColor=#9673a6;rounded=1;fontSize=10;fontStyle=1;" vertex="1" parent="worker1"> <mxGeometry x="185" y="90" width="80" height="70" as="geometry"/> </mxCell> <!-- Container in Pod 2 --> <mxCell id="container2" value="Container" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#9673a6;strokeColor=#6a4c7a;fontColor=#ffffff;fontSize=9;" vertex="1" parent="pod2"> <mxGeometry x="10" y="30" width="60" height="30" as="geometry"/> </mxCell> <!-- Pod 3 --> <mxCell id="pod3" value="Pod" style="swimlane;startSize=20;fillColor=#e1d5e7;strokeColor=#9673a6;rounded=1;fontSize=10;fontStyle=1;" vertex="1" parent="worker1"> <mxGeometry x="280" y="90" width="55" height="70" as="geometry"/> </mxCell> <!-- Container in Pod 3 --> <mxCell id="container3" value="App" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#9673a6;strokeColor=#6a4c7a;fontColor=#ffffff;fontSize=9;" vertex="1" parent="pod3"> <mxGeometry x="7" y="30" width="40" height="30" as="geometry"/> </mxCell> <!-- Service 1 --> <mxCell id="service1" value="Service&#xa;(ClusterIP)" style="ellipse;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontStyle=1;fontSize=9;" vertex="1" parent="worker1"> <mxGeometry x="20" y="175" width="75" height="55" as="geometry"/> </mxCell> <!-- ConfigMap --> <mxCell id="configmap1" value="ConfigMap" style="shape=note;whiteSpace=wrap;html=1;size=14;fillColor=#f8cecc;strokeColor=#b85450;fontSize=9;fontStyle=1;" vertex="1" parent="worker1"> <mxGeometry x="110" y="180" width="60" height="50" as="geometry"/> </mxCell> <!-- Secret --> <mxCell id="secret1" value="Secret" style="shape=note;whiteSpace=wrap;html=1;size=14;fillColor=#f8cecc;strokeColor=#b85450;fontSize=9;fontStyle=1;" vertex="1" parent="worker1"> <mxGeometry x="180" y="180" width="55" height="50" as="geometry"/> </mxCell> <!-- Volume --> <mxCell id="volume1" value="Volume&#xa;(PV/PVC)" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=8;fillColor=#f5f5f5;strokeColor=#666666;fontSize=9;fontStyle=1;" vertex="1" parent="worker1"> <mxGeometry x="250" y="175" width="70" height="55" as="geometry"/> </mxCell> <!-- Worker Node 2 --> <mxCell id="worker2" value="Worker Node 2" style="swimlane;startSize=22;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;rounded=1;fontStyle=1;fontSize=11;" vertex="1" parent="1"> <mxGeometry x="410" y="340" width="350" height="250" as="geometry"/> </mxCell> <!-- Kubelet 2 --> <mxCell id="kubelet2" value="Kubelet" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#82b366;strokeColor=#4a7a3a;fontColor=#ffffff;fontStyle=1;fontSize=10;" vertex="1" parent="worker2"> <mxGeometry x="20" y="35" width="80" height="35" as="geometry"/> </mxCell> <!-- Kube-proxy 2 --> <mxCell id="kube_proxy2" value="Kube-proxy" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#82b366;strokeColor=#4a7a3a;fontColor=#ffffff;fontStyle=1;fontSize=10;" vertex="1" parent="worker2"> <mxGeometry x="120" y="35" width="80" height="35" as="geometry"/> </mxCell> <!-- Container Runtime 2 --> <mxCell id="runtime2" value="Container Runtime&#xa;(containerd/Docker)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#82b366;strokeColor=#4a7a3a;fontColor=#ffffff;fontStyle=1;fontSize=9;" vertex="1" parent="worker2"> <mxGeometry x="220" y="30" width="110" height="45" as="geometry"/> </mxCell> <!-- Pod 4 --> <mxCell id="pod4" value="Pod" style="swimlane;startSize=20;fillColor=#e1d5e7;strokeColor=#9673a6;rounded=1;fontSize=10;fontStyle=1;" vertex="1" parent="worker2"> <mxGeometry x="20" y="90" width="80" height="70" as="geometry"/> </mxCell> <!-- Container in Pod 4 --> <mxCell id="container4" value="App" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#9673a6;strokeColor=#6a4c7a;fontColor=#ffffff;fontSize=9;" vertex="1" parent="pod4"> <mxGeometry x="10" y="30" width="60" height="30" as="geometry"/> </mxCell> <!-- Pod 5 --> <mxCell id="pod5" value="Pod" style="swimlane;startSize=20;fillColor=#e1d5e7;strokeColor=#9673a6;rounded=1;fontSize=10;fontStyle=1;" vertex="1" parent="worker2"> <mxGeometry x="115" y="90" width="110" height="70" as="geometry"/> </mxCell> <!-- Container in Pod 5 --> <mxCell id="container5" value="Sidecar" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#9673a6;strokeColor=#6a4c7a;fontColor=#ffffff;fontSize=9;" vertex="1" parent="pod5"> <mxGeometry x="10" y="30" width="45" height="30" as="geometry"/> </mxCell> <!-- Container in Pod 5-2 --> <mxCell id="container5b" value="App" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#9673a6;strokeColor=#6a4c7a;fontColor=#ffffff;fontSize=9;" vertex="1" parent="pod5"> <mxGeometry x="60" y="30" width="40" height="30" as="geometry"/> </mxCell> <!-- Pod 6 --> <mxCell id="pod6" value="Pod" style="swimlane;startSize=20;fillColor=#e1d5e7;strokeColor=#9673a6;rounded=1;fontSize=10;fontStyle=1;" vertex="1" parent="worker2"> <mxGeometry x="240" y="90" width="80" height="70" as="geometry"/> </mxCell> <!-- Container in Pod 6 --> <mxCell id="container6" value="DB" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#9673a6;strokeColor=#6a4c7a;fontColor=#ffffff;fontSize=9;" vertex="1" parent="pod6"> <mxGeometry x="10" y="30" width="60" height="30" as="geometry"/> </mxCell> <!-- Service 2 --> <mxCell id="service2" value="Service&#xa;(NodePort)" style="ellipse;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontStyle=1;fontSize=9;" vertex="1" parent="worker2"> <mxGeometry x="20" y="175" width="75" height="55" as="geometry"/> </mxCell> <!-- Ingress --> <mxCell id="ingress1" value="Ingress" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#ffe6cc;strokeColor=#d79b00;fontStyle=1;fontSize=10;" vertex="1" parent="worker2"> <mxGeometry x="110" y="185" width="80" height="40" as="geometry"/> </mxCell> <!-- Deployment --> <mxCell id="deployment1" value="Deployment/&#xa;ReplicaSet" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontStyle=1;fontSize=9;" vertex="1" parent="worker2"> <mxGeometry x="210" y="180" width="80" height="50" as="geometry"/> </mxCell> <!-- DaemonSet --> <mxCell id="daemonset1" value="DaemonSet" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontStyle=1;fontSize=9;" vertex="1" parent="worker2"> <mxGeometry x="295" y="180" width="45" height="50" as="geometry"/> </mxCell> <!-- Edge: API to Kubelet 1 --> <mxCell id="e7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;startArrow=classic;strokeWidth=2;strokeColor=#82b366;flowAnimation=1;" edge="1" parent="1" source="api_server" target="kubelet1"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="270" y="235"/> <mxPoint x="270" y="392"/> </Array> </mxGeometry> </mxCell> <!-- Edge: API to Kubelet 2 --> <mxCell id="e8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;startArrow=classic;strokeWidth=2;strokeColor=#82b366;flowAnimation=1;" edge="1" parent="1" source="api_server" target="kubelet2"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="530" y="235"/> <mxPoint x="530" y="392"/> </Array> </mxGeometry> </mxCell> <!-- Legend --> <mxCell id="legend" value="图例" style="swimlane;startSize=20;fillColor=#f5f5f5;strokeColor=#666666;rounded=1;fontSize=10;fontStyle=1;" vertex="1" parent="1"> <mxGeometry x="40" y="605" width="720" height="55" as="geometry"/> </mxCell> <mxCell id="leg1" value="Control Plane 组件" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#326CE5;strokeColor=#1a3a6e;fontColor=#ffffff;fontSize=9;" vertex="1" parent="legend"> <mxGeometry x="10" y="25" width="100" height="22" as="geometry"/> </mxCell> <mxCell id="leg2" value="Node 组件" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#82b366;strokeColor=#4a7a3a;fontColor=#ffffff;fontSize=9;" vertex="1" parent="legend"> <mxGeometry x="120" y="25" width="80" height="22" as="geometry"/> </mxCell> <mxCell id="leg3" value="Pod/Container" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#9673a6;strokeColor=#6a4c7a;fontColor=#ffffff;fontSize=9;" vertex="1" parent="legend"> <mxGeometry x="210" y="25" width="80" height="22" as="geometry"/> </mxCell> <mxCell id="leg4" value="Service" style="ellipse;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=9;" vertex="1" parent="legend"> <mxGeometry x="300" y="22" width="60" height="28" as="geometry"/> </mxCell> <mxCell id="leg5" value="Config" style="shape=note;whiteSpace=wrap;html=1;size=10;fillColor=#f8cecc;strokeColor=#b85450;fontSize=9;" vertex="1" parent="legend"> <mxGeometry x="370" y="22" width="50" height="28" as="geometry"/> </mxCell> <mxCell id="leg6" value="Storage" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=6;fillColor=#f5f5f5;strokeColor=#666666;fontSize=9;" vertex="1" parent="legend"> <mxGeometry x="430" y="22" width="55" height="28" as="geometry"/> </mxCell> <mxCell id="leg7" value="Workload" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=9;" vertex="1" parent="legend"> <mxGeometry x="495" y="22" width="60" height="28" as="geometry"/> </mxCell> <mxCell id="leg8" value="Ingress" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#ffe6cc;strokeColor=#d79b00;fontSize=9;" vertex="1" parent="legend"> <mxGeometry x="565" y="22" width="60" height="28" as="geometry"/> </mxCell> <mxCell id="leg9" value="数据流" style="endArrow=classic;html=1;strokeWidth=2;strokeColor=#326CE5;flowAnimation=1;" edge="1" parent="legend"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="640" y="36" as="sourcePoint"/> <mxPoint x="710" y="36" as="targetPoint"/> </mxGeometry> </mxCell> </root> </mxGraphModel>