{"id":21131,"date":"2021-01-12T10:26:50","date_gmt":"2021-01-12T09:26:50","guid":{"rendered":"https:\/\/www.inovex.de\/blog\/?p=20467"},"modified":"2025-12-17T07:59:37","modified_gmt":"2025-12-17T06:59:37","slug":"einfuehrung-in-kubeedge","status":"publish","type":"post","link":"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/","title":{"rendered":"Einf\u00fchrung in KubeEdge"},"content":{"rendered":"<p>Diese dreiteilige Artikelserie bildet ein Tutorial f\u00fcr KubeEdge, in dem die Technologie erkl\u00e4rt und anhand eines Anwendungsbeispiels n\u00e4her beschrieben wird. In diesem ersten Teil gehe ich n\u00e4her auf den Aufbau und die Funktionsweise von KubeEdge ein.<!--more--><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\"><\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/#Was-ist-Edge-Computing\" >Was ist Edge Computing<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/#KubeEdge\" >KubeEdge<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/#KubeEdge-und-Kubernetes\" >KubeEdge und Kubernetes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/#Komponenten\" >Komponenten<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/#Cloud-Komponenten\" >Cloud-Komponenten<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/#Edge-Komponente\" >Edge Komponente<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/#Ausblick\" >Ausblick<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/#Verweise\" >Verweise<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Was-ist-Edge-Computing\"><\/span>Was ist Edge Computing<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Edge Computing ist eine offene IT-Architektur, welche beim Mobile Computing oder im Internet of Things (IoT) (oder bei Industrial Internet of Things (IIoT)) eingesetzt wird. Das Ziel von Edge Computing ist die Reduzierung der Latenz und des Datenvolumen. Zur Umsetzung dieser Ziele wird die Datenverarbeitung bereits zum Teil auf den\u00a0 erhebenden Ger\u00e4ten selbst durchgef\u00fchrt oder auf lokale Systeme. Die vorverarbeiteten Daten werden dann f\u00fcr zentrale Analysen in ein zentrales Cloud System gesendet. Ein weiteres Ziel ist die Unabh\u00e4ngige Funktionalit\u00e4t von Edge Rechenzentren ohne zentrale Kontrollinstanz. Bei dem Beispiel IIoT w\u00e4re es denkbar unvorteilhaft wenn eine smarte Fabrik nur arbeiten kann wenn diese auch mit dem zentralen Cloud System kommunizieren kann.<\/p>\n<p>In diesem Use-Case werden die Daten direkt am Sensor aufbereitet und in einer entsprechenden Form direkt an die KubeEdge MQTT API gesendet.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"KubeEdge\"><\/span>KubeEdge<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><a href=\"https:\/\/github.com\/kubeedge\/kubeedge\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft\" src=\"https:\/\/raw.githubusercontent.com\/kubeedge\/kubeedge\/master\/docs\/images\/kubeedge-logo-only.png\" alt=\"KubeEdge - Logo\" width=\"118\" height=\"118\" \/><\/a><\/p>\n<p>Im Dezember 2018 wurde KubeEdge von Mitarbeiter:innen des Unternehmens Huawei in der Version v0.1 unter der Apache 2 Lizenz ver\u00f6ffentlicht [1]. KubeEdge leitet sich aus den Namen Kubernetes und Edge ab und ist wie bereits Kubernetes in der Programmiersprache Golang (oder kurz Go) geschrieben.<\/p>\n<p>\u00dcber das vergangene Jahr wurde vor allem die Cloud-Komponente verallgemeinert, sodass diese nicht nur mit der Huawei-Cloud kompatibel ist. Es sind aber auch weitere Teile, wie einige Device Mapper f\u00fcr die Device-Schnittstelle zu KubeEdge oder ein Installationsprogramm, hinzugekommen. Die hier beschriebenen und genutzten Prozesse sind bereits seit der Version v0.3.0 in KubeEdge implementiert. KubeEdge ist aktuell als Sandbox-Projekt bei der Cloud Native Computing Foundation (CNCF) registriert. Die CNCF ist eine Tochter der Linux Foundation. Die KubeEdge Community ist offen f\u00fcr weitere Anwendungsf\u00e4lle die mit KubeEdge gel\u00f6st werden k\u00f6nnen. Um die Grundlagen von KubeEdge besser zu verstehen, geht der n\u00e4chste Abschnitt n\u00e4her auf die grundlegende Funktionalit\u00e4t von Kubernetes ein.<\/p>\n<p><a href=\"https:\/\/github.com\/kubernetes\/kubernetes\"><img loading=\"lazy\" decoding=\"async\" class=\" alignleft\" src=\"https:\/\/raw.githubusercontent.com\/kubernetes\/kubernetes\/master\/logo\/logo.png\" alt=\"Kubernetes - Logo\" width=\"107\" height=\"104\" \/><\/a>Kubernetes wurde initial 2014 als Open-Source-Projekt ver\u00f6ffentlicht und hat sich seitdem zu einem De-facto-Standard f\u00fcr Container-Orchestrierung entwickelt. Ein Kubernetes Cluster \u00fcbernimmt hierbei das Life-Cycle-Management von Applikationen im Cluster. Zum Life-Cycle-Management geh\u00f6ren neben dem Instanziieren von Applikationen auch das \u00dcberpr\u00fcfen, ob diese noch funktionsf\u00e4hig sind. Unter dem Begriff Autoscaling bietet Kubernetes die M\u00f6glichkeit, auf unterschiedliche Lasten zu reagieren und so weitere Instanzen einer Applikation zu erstellen \u2013 oder diese bei Bedarf wieder zu l\u00f6schen. Der Kubernetes Scheduler, die Komponente die die Applikationen im Cluster verteilt, erm\u00f6glicht, die Applikationen anhand von Affinit\u00e4tsregeln zu verteilen. Ein einfaches Beispiel f\u00fcr eine Affinit\u00e4tsregel ist die Zuordnung einer Applikation zu Rechenknoten, die eine GPU verbaut haben.k<\/p>\n<p>KubeEdge baut auf der Funktionalit\u00e4t von Kubernetes auf und erweitert bzw. modifiziert diese f\u00fcr Anwendungsf\u00e4lle auf Edge-Knoten. KubeEdge selbst ist dabei in verschiedene Komponenten aufgeteilt (siehe: Komponenten). Die zentrale Cloud-Komponente, die f\u00fcr das Management der Edge-Knoten ben\u00f6tigt wird, kommuniziert mit dem API Server eines Kubernetes Clusters. Der notwendige Kubernetes Cluster kann auch f\u00fcr das Hosten der KubeEdge Cloud-Komponente verwendet werden. Durch die starke Integration von Kubernetes in KubeEdge k\u00f6nnen Anwender:innen die g\u00e4ngigen Kubernetes-Kommandozeilenbefehle nutzen. Zudem bietet KubeEdge dadurch die M\u00f6glichkeit, die Standard-API-Ressourcen von Kubernetes, wie z. B. Pods und Deployments, wie gewohnt zu verwenden.<\/p>\n<p>Kubernetes unterst\u00fctzt seit der Version 1.7 das Erstellen von eigenen API-Ressourcen mithilfe von sogenannten \u201eCustom Resource Definitions\u201c (CRD). Um KubeEdge in allen Teilen nutzen zu k\u00f6nnen, m\u00fcssen eigene CRDs im Cluster vorinstalliert werden. Die CRDs werden im weiteren Verlauf des Artikels beschreiben.<\/p>\n<div style=\"background-color: #f2f5fe; padding: 10px;\">\n<h3><span class=\"ez-toc-section\" id=\"KubeEdge-und-Kubernetes\"><\/span>KubeEdge und Kubernetes<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>KubeEdge hat sich bewusst daf\u00fcr entschieden, eine starke Kubernetes-Integration anzustreben, um so von der Funktionalit\u00e4t von Kubernetes zu profitieren. Der deklarative Ansatz von Kubernetes bietet die M\u00f6glichkeit, immer einen Abgleich zwischen Ist- und Soll-Zustand zu machen. Falls bei diesem Vergleich Unterschiede identifiziert werden, k\u00fcmmert sich Kubernetes darum, den gew\u00fcnschten Ist-Zustand wieder zu erreichen. Durch den deklarativen Ansatz kann eine Entkopplung der Kubernetes-internen (und -externen) Komponenten erreicht werden. Der Ausfall einer Komponente muss damit nicht sofort Auswirkungen auf die Applikationen in dem Cluster haben. So k\u00f6nnen die Kubernetes-Knoten z. B. selbst\u00e4ndig weiterarbeiten \u2013 auch wenn der API Server nicht erreichbar ist. Dieses Verhalten ist in Edge-Umgebungen sehr hilfreich, da dort meistens keine stabile Netzwerkverbindung vorhanden ist oder auf den Mobilfunk zur\u00fcckgegriffen wird.Ein weiterer Vorteil der Entkopplung einzelner Komponenten ist ihre Austauschbarkeit. KubeEdge macht von diesem Architekturansatz gebrauch und implementiert einige Komponenten anders, als es die Kubernetes-Standardimplementierung f\u00fcr diese Komponenten vorsieht.<\/p>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"Komponenten\"><\/span>Komponenten<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>In diesem Abschnitt erkl\u00e4re ich die Grundlagen von KubeEdge und dessen Aufbau. Als \u00dcbersicht und Orientierungshilfe arbeiten wir uns an dem Architekturbild von KubeEdge (Abbildung: Architektur KubeEdge) entlang.<\/p>\n<figure id=\"attachment_20469\" aria-describedby=\"caption-attachment-20469\" style=\"width: 741px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-20469\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/01\/Zeichenflaeche-1-300x168.png\" alt=\"Architekturplan KubeEdge\" width=\"741\" height=\"415\" srcset=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/01\/Zeichenflaeche-1-300x168.png 300w, https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/01\/Zeichenflaeche-1-1024x575.png 1024w, https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/01\/Zeichenflaeche-1-768x431.png 768w, https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/01\/Zeichenflaeche-1-1536x862.png 1536w, https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/01\/Zeichenflaeche-1-400x225.png 400w, https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/01\/Zeichenflaeche-1-360x202.png 360w, https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/01\/Zeichenflaeche-1.png 1600w\" sizes=\"auto, (max-width: 741px) 100vw, 741px\" \/><figcaption id=\"caption-attachment-20469\" class=\"wp-caption-text\">Architektur KubeEdge<\/figcaption><\/figure>\n<h4><span class=\"ez-toc-section\" id=\"Cloud-Komponenten\"><\/span>Cloud-Komponenten<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Die Cloud-Komponente muss so ausgef\u00fchrt werden, dass sie \u00fcber HTTP oder HTTPS auf den Kubernetes API Server zugreifen kann. Um die Verbindung zu konfigurieren, wird die Kubernetes Config verwendet. L\u00e4sst man den CloudCore in einem Kubernetes Cluster laufen, kann die Erstellung der Kubernetes Config von dem Cluster selbst \u00fcbernommen werden. In unserem Use Case wird diese Variante verwendet und ein Service Account generiert \u2013 und damit implizit auch ein Access Token. Man kann aber auch eine User-Password-Kombination verwenden. Bei der Verwendung von Role Based Access Control (RBAC) kann dem CloudCore eine eingeschr\u00e4nkte Rolle zugewiesen werden.<\/p>\n<p>Im Konzept von KubeEdge \u00fcbernimmt der CloudCore die Funktionalit\u00e4t eines Verbindungspunktes, der \u00fcber einen Cloud Hub mit den Edge Nodes kommuniziert.<\/p>\n<p>Diese Kommunikation kann entweder \u00fcber das Websocket-Protokoll, HTTP(S) oder \u00fcber Quick realisiert werden. Die Informationen, die vom Edge Node \u00fcber den Cloud Hub kommen, werden an die beiden Controller weitergegeben. Die Hauptaufgabe der Controller ist es, die Informationen zwischen den Kubernetes-Ressourcen und den Edge Nodes zu synchronisieren. Der DeviceController \u00fcbernimmt dabei die Aufgabe, die Device- und DeviceModel-Ressource zum entsprechenden Edge Node zu synchronisieren. Der EdgeController synchronisiert die Edge-Node-Informationen, wie die Auslastung des Edge Nodes oder welche Pods auf dem Edge Node gestartet werden sollen.<\/p>\n<p>Wie bereits mehrfach angedeutet, nutzt KubeEdge zwei CRDs. Die erste CRD definiert ein sogenanntes DeviceModel, mit der zweiten CRD kann eine Instanz von diesem DeviceModel erstellt werden. Beide Ressourcen befinden sich beim KubeEdge-Projekt noch im Alpha Level. Das Alpha Level beschreibt die Stabilit\u00e4t einer API &#8211; weitere Abstufungen sind Beta Level und Stable Level. Beim Alpha Level k\u00f6nnen \u00c4nderungen sofort gemacht werden. Die Anwender:innen m\u00fcssen daf\u00fcr nicht benachrichtigt werden. Damit die API das Beta Level erreichen kann, muss sie bereits gut getestet worden sein und alle geforderten Features unterst\u00fctzen. Bei dem Stable Level hingegen \u00e4ndert sich die API \u00fcber viele Versionen nicht mehr. Das DeviceModel soll eine Vorlage f\u00fcr ein Device geben und sich im Besonderen um die Zugriffsberechtigungen k\u00fcmmern, w\u00e4hrend das Device eine Instanz von einem DeviceModel ist. Die CRDs f\u00fcr das Release 1.0 k\u00f6nnen in dem GitHub Projekt von KubeEdge gefunden werden [2].<\/p>\n<pre class=\"lang:yaml decode:true \" title=\"DeviceModel.yaml\">apiVersion: devices.kubeedge.io\/v1alpha1\r\n\r\nkind: DeviceModel\r\n\r\nmetadata:\r\n\r\n  name: cpu-sensor\r\n\r\nspec:\r\n\r\n  properties:\r\n\r\n  - name: Temperatur\r\n\r\n    description: current cpu temperatur\r\n\r\n    type:\r\n\r\n      int:\r\n\r\n        accessMode: ReadWrite\r\n\r\n        defaultValue: \u201c0\u201c\r\n\r\n        unit: Degree Celsius\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Im DeviceMode (siehe Block DeviceModel)l kann zu den einzelnen Eigenschaften eine genauere Spezifizierung erstellt werden. In dieser k\u00f6nnen wir z. B. festlegen, ob der Wert von anderen Systemen ver\u00e4ndert werden darf. Eine \u00c4nderung des Wertes wird \u00fcber Edge auf den Sensor synchronisiert. Dieser muss selbst\u00e4ndig entscheiden, welche Aktionen er nun durchf\u00fchren muss. Beispiele f\u00fcr eine Anwendung sind z. B. Starten einer Messung oder das Stoppen einer Maschine.<\/p>\n<pre class=\"lang:yaml decode:true \" title=\"DeviceResource.yaml\">apiVersion: devices.kubeedge.io\/v1alpha1\r\n\r\nkind: Device\r\n\r\nmetadata:\r\n\r\n  name: device-name\r\n\r\n  labels:\r\n\r\n    description: CPU-Sensor\r\n\r\n    model: cpu-sensor\r\n\r\nspec:\r\n\r\n  deviceModelRef:\r\n\r\n    name: cpu-sensor\r\n\r\n  nodeSelector:\r\n\r\n    nodeSelectorTerms:\r\n\r\n   - matchFields:\r\n\r\n      - key: ''.metadata.name\u201c\r\n\r\n        operator: In\r\n\r\n        values:\r\n\r\n        - edge\r\n\r\nstatus:\r\n\r\n  twins:\r\n\r\n  - propertyName: Temperatur\r\n\r\n    reported:\r\n\r\n      metadata:\r\n\r\n        timestamp: '1550049403598'\r\n\r\n        type: int\r\n\r\n      value: \u201c21\u201c\r\n\r\n    desired:\r\n\r\n      metadata:\r\n\r\n        timestamp: '1550049403598'\r\n\r\n        type: int\r\n\r\n      value: \u201c22\u201c\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Die Device-Definition Device-Resource.yaml (siehe Block Device-Resource.yaml) legt einen Sensor an. Dieser Sensor speichert in einem String die aktuell gemessene Temperatur ab. In den Manifest-Feldern \u201ekind\u201c und \u201eapiVersion\u201c wird definiert, welches API-Objekt in welcher API-Version erstellt werden soll. Wie gewohnt werden die Metadaten, z. B. Name und Namespace des Objektes, und die Spezifikation des Objektes in den entsprechenden Feldern definiert. Unter dem Feld \u201enodeSelector\u201c kann spezifiziert werden auf welchen Edge Nodes das entsprechende Device synchronisiert werden soll. F\u00fcr die Selektion der Edge Nodes stehen die bekannten Mechanismen von Kubernetes und dessen NodeSelector zur Verf\u00fcgung, so kann ein Device z. B. auf Knoten in einer bestimmten Zone synchronisiert werden oder wenn sie ein bestimmtes Label haben. In der Device-Definition (siehe Block\u00a0 Device-Resource.yaml.) wird die \u201ematchFields\u201c-Variante des NodeSelectors verwendet und selektiert alle Knoten, die den Namen \u201eedge\u201c haben.<\/p>\n<p>Das Feld \u201edeviceModelRef\u201c referenziert auf ein DeviceModel. In dem Statusblock werden die Device Twins und deren erfassten Werte abgespeichert. Die Beziehung hierbei ist immer eine 1 zu m Beziehung. Ein Device kann mehrere Sensoren haben, ein Sensor kann jedoch nur einem Device zugeordnet werden. Jeder Twin beinhaltet den propertyName, der sich aus dem DeviceModel ableitet, und den erfassten Werten inklusive des Zeitstempels wann dieser Werte erfasst wurde.<\/p>\n<p>Die Felder \u201edesired\u201c und \u201ereported\u201c unterscheiden sich nur in der Interpretation der Software. Das Feld \u201ereported\u201c definiert die tats\u00e4chlich gemessenen Werte eines Sensors, wohingegen der Feld \u201edesired\u201c den Soll-Zustand des Sensors beschreibt. Der Edge Node synchronisiert die gemessenen Sensordaten in den CloudCore und liest hier den Soll-Zustand (\u201edesired\u201c) aus. Bei einem Sensorwert-Update wird der Eigenschaft-Value des \u201ereported\u201c-Feldes, so wie der Zeitstempel, geupdated.<\/p>\n<p>Das Aktualisieren eines Sensorwertes f\u00fchrt zu einem Update-Event in der Kubernetes API. Diese Events, die Erstellung, L\u00f6schung oder \u00c4nderung eines API-Objektes, kann ein System bei dem Kubernetes API Server abonnieren. Die Abonnierung solcher Events kann f\u00fcr spezielle Ressourcen durchgef\u00fchrt werden. So kann ein System nur die Events der Ressourcenart \u201eDevice\u201c abonnieren. Diese Event-Architektur erlaubt es, bei \u00c4nderungen der Werte weitere Verarbeitungsschritte einzuleiten.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Edge-Komponente\"><\/span>Edge Komponente<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Die Verbindung zwischen Cloud und Edge Node endet auf dem Edge Node im EdgeHub. Der EdgeHub dient als Kommunikationsendpunkt und verteilt die Informationen an die Subkomponenten. Die Synchronisation der Devices und DeviceModels wird \u00fcber die DeviceTwin-Komponente vorgenommen. Der DeviceTwin schreibt die Informationen in eine lokale SQLite3-Datenbank (auf der Abbildung als Data Store bezeichnet). Die persistenten Informationen werden zus\u00e4tzlich an den EventBus gesendet, wo die Informationen \u00fcber eine MQTT-Schnittstelle an den DeviceMapper oder direkt an das Device geleitet werden. Informationen \u00fcber die Erstellung oder Entfernung von Devices werden nur im Data Store persistiert.<\/p>\n<p>Die Synchronisation des Node-Status und der Pods wird \u00fcber den MetaManager vorgenommen, der diese Informationen ebenfalls in den Data Store schreibt und die Information dem Edged zur Verf\u00fcgung stellt. Der Edged ist eine angepasste Implementierung des Kubernetes Kubelet. Zu den Aufgaben des Kubelets\/Edged geh\u00f6ren das Starten, Stoppen und Verwalten von Pods. Erg\u00e4nzend werden Metriken der laufenden Pods und des Knoten selbst gesammelt und dem Kubernetes API Server zur Verf\u00fcgung gestellt. Der MetaManager sammelt diese Metriken und sendet diese \u00fcber den EdgeHub and den CloudCore.<\/p>\n<p>F\u00fcr die Synchronisierung der Sensordaten auf dem Edge-Node bietet KubeEdge eine MQTT-Schnittstelle an, die entweder direkt von einem Sensor oder \u00fcber einen sogenannten Mapper angesprochen werden kann. Ein Mapper kommt dann zum Einsatz,\u00a0 wenn die Sensoren nicht das von KubeEdge geforderte Protokoll bzw. Format direkt unterst\u00fctzen. Wenn ein Sensor Daten sendet bevor der DeviceTwin auf dem Edge Node synchronisiert ist, werden alle Daten verworfen und mit einer Fehlermeldung beantwortet.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Ausblick\"><\/span>Ausblick<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Im n\u00e4chsten Teil des Tutorials wird die Basisinfrastruktur f\u00fcr den Anwendungsfall aufgesetzt. Hierf\u00fcr wird auf einem PC ein lokales Kubernetes Cluster mit dem CloudCore aufgesetzt. Zus\u00e4tzlich wird auf einem Raspberry Pi die Edge Komponente von KubeEdge installiert. Zum Verproben des Setups werden erste Testdaten gesendet.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Verweise\"><\/span>Verweise<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>[1] <a href=\"https:\/\/github.com\/kubeedge\/kubeedge\">https:\/\/github.com\/kubeedge\/kubeedge<\/a><\/p>\n<p>[2] <a href=\"https:\/\/github.com\/kubeedge\/kubeedge\/tree\/release-1.0\/build\/crds\/devices\">https:\/\/github.com\/kubeedge\/kubeedge\/tree\/release-1.0\/build\/crds\/devices<\/a><\/p>\n<p>[3] <a href=\"https:\/\/kubeedge.io\/en\">https:\/\/kubeedge.io\/en<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Die Inhalte dieser Arbeit stammen aus dem Projekt\u00a0<a class=\"c-link\" href=\"https:\/\/www.interaktive-technologien.de\/projekte\/kosmos\" target=\"_blank\" rel=\"noopener noreferrer\" link=\"http:\/\/kosmos-bmbf.de\/\" sk=\"tooltip_parent\">KOSMoS<\/a>\u00a0\u2013 Kollaborative Smart Contracting Plattform f\u00fcr digitale Wertsch\u00f6pfungsnetze. Dieses Forschungs- und Entwicklungsprojekt wird mit Mitteln des Bundesministeriums f\u00fcr Bildung und Forschung (BMBF) im Programm \u201eInnovationen f\u00fcr die Produktion, Dienstleistung und Arbeit von morgen\u201c (F\u00f6rderkennzeichen 02P17D026) gef\u00f6rdert und vom Projekttr\u00e4ger Karlsruhe (PTKA) betreut. Die Verantwortung f\u00fcr den Inhalt dieser Ver\u00f6ffentlichung liegt bei den Autor:innen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Diese dreiteilige Artikelserie bildet ein Tutorial f\u00fcr KubeEdge, in dem die Technologie erkl\u00e4rt und anhand eines Anwendungsbeispiels n\u00e4her beschrieben wird. In diesem ersten Teil gehe ich n\u00e4her auf den Aufbau und die Funktionsweise von KubeEdge ein.<\/p>\n","protected":false},"author":22,"featured_media":20456,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"ep_exclude_from_search":false,"footnotes":""},"tags":[166,74,114],"service":[423],"coauthors":[{"id":22,"display_name":"Johannes M. Scheuermann","user_nicename":"jscheuermann"},{"id":203,"display_name":"Jan Unterbrink","user_nicename":"junterbrink"}],"class_list":["post-21131","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-edge-computing","tag-iot","tag-kubernetes","service-kubernetes"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Einf\u00fchrung in KubeEdge - inovex GmbH<\/title>\n<meta name=\"description\" content=\"In diesem ersten Teil der Vorstellung von KubeEdge werfen wir einen Blick auf die Grundlagen. Genauere Betrachtung findet dabei der interne Aufbau und die Funktionsweise von KubeEdge.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Einf\u00fchrung in KubeEdge - inovex GmbH\" \/>\n<meta property=\"og:description\" content=\"In diesem ersten Teil der Vorstellung von KubeEdge werfen wir einen Blick auf die Grundlagen. Genauere Betrachtung findet dabei der interne Aufbau und die Funktionsweise von KubeEdge.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/\" \/>\n<meta property=\"og:site_name\" content=\"inovex GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inovexde\" \/>\n<meta property=\"article:published_time\" content=\"2021-01-12T09:26:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-17T06:59:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/01\/kubeedge-tutorial-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Johannes M. Scheuermann, Jan Unterbrink\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/01\/kubeedge-tutorial-1-1024x576.png\" \/>\n<meta name=\"twitter:creator\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:site\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Johannes M. Scheuermann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"10\u00a0Minuten\" \/>\n\t<meta name=\"twitter:label3\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data3\" content=\"Johannes M. Scheuermann, Jan Unterbrink\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/einfuehrung-in-kubeedge\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/einfuehrung-in-kubeedge\\\/\"},\"author\":{\"name\":\"Johannes M. Scheuermann\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/0bacb2c9ca9064212903a844e408fb12\"},\"headline\":\"Einf\u00fchrung in KubeEdge\",\"datePublished\":\"2021-01-12T09:26:50+00:00\",\"dateModified\":\"2025-12-17T06:59:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/einfuehrung-in-kubeedge\\\/\"},\"wordCount\":1984,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/einfuehrung-in-kubeedge\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/01\\\/kubeedge-tutorial-1.png\",\"keywords\":[\"Edge-Computing\",\"IoT\",\"Kubernetes\"],\"articleSection\":[\"General\",\"Infrastructure\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/einfuehrung-in-kubeedge\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/einfuehrung-in-kubeedge\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/einfuehrung-in-kubeedge\\\/\",\"name\":\"Einf\u00fchrung in KubeEdge - inovex GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/einfuehrung-in-kubeedge\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/einfuehrung-in-kubeedge\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/01\\\/kubeedge-tutorial-1.png\",\"datePublished\":\"2021-01-12T09:26:50+00:00\",\"dateModified\":\"2025-12-17T06:59:37+00:00\",\"description\":\"In diesem ersten Teil der Vorstellung von KubeEdge werfen wir einen Blick auf die Grundlagen. Genauere Betrachtung findet dabei der interne Aufbau und die Funktionsweise von KubeEdge.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/einfuehrung-in-kubeedge\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/einfuehrung-in-kubeedge\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/einfuehrung-in-kubeedge\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/01\\\/kubeedge-tutorial-1.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/01\\\/kubeedge-tutorial-1.png\",\"width\":1920,\"height\":1080,\"caption\":\"Grafische Darstellung von drei Cloud-Symbolen. Wobei zwei leicht ausgeblendet sind.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/einfuehrung-in-kubeedge\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Einf\u00fchrung in KubeEdge\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"name\":\"inovex GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\",\"name\":\"inovex GmbH\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"width\":1921,\"height\":1081,\"caption\":\"inovex GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/inovexde\",\"https:\\\/\\\/x.com\\\/inovexgmbh\",\"https:\\\/\\\/www.instagram.com\\\/inovexlife\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/inovex\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UC7r66GT14hROB_RQsQBAQUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/0bacb2c9ca9064212903a844e408fb12\",\"name\":\"Johannes M. Scheuermann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d3df0e3e0fa19f031fc539be1bd60a808d56719e4f9d367bf9b116ef6d653b1b?s=96&d=retro&r=gf922827beb705676e2040c1ecc2b6370\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d3df0e3e0fa19f031fc539be1bd60a808d56719e4f9d367bf9b116ef6d653b1b?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d3df0e3e0fa19f031fc539be1bd60a808d56719e4f9d367bf9b116ef6d653b1b?s=96&d=retro&r=g\",\"caption\":\"Johannes M. Scheuermann\"},\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/author\\\/jscheuermann\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Einf\u00fchrung in KubeEdge - inovex GmbH","description":"In diesem ersten Teil der Vorstellung von KubeEdge werfen wir einen Blick auf die Grundlagen. Genauere Betrachtung findet dabei der interne Aufbau und die Funktionsweise von KubeEdge.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/","og_locale":"de_DE","og_type":"article","og_title":"Einf\u00fchrung in KubeEdge - inovex GmbH","og_description":"In diesem ersten Teil der Vorstellung von KubeEdge werfen wir einen Blick auf die Grundlagen. Genauere Betrachtung findet dabei der interne Aufbau und die Funktionsweise von KubeEdge.","og_url":"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/","og_site_name":"inovex GmbH","article_publisher":"https:\/\/www.facebook.com\/inovexde","article_published_time":"2021-01-12T09:26:50+00:00","article_modified_time":"2025-12-17T06:59:37+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/01\/kubeedge-tutorial-1.png","type":"image\/png"}],"author":"Johannes M. Scheuermann, Jan Unterbrink","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/01\/kubeedge-tutorial-1-1024x576.png","twitter_creator":"@inovexgmbh","twitter_site":"@inovexgmbh","twitter_misc":{"Verfasst von":"Johannes M. Scheuermann","Gesch\u00e4tzte Lesezeit":"10\u00a0Minuten","Written by":"Johannes M. Scheuermann, Jan Unterbrink"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/#article","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/"},"author":{"name":"Johannes M. Scheuermann","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/0bacb2c9ca9064212903a844e408fb12"},"headline":"Einf\u00fchrung in KubeEdge","datePublished":"2021-01-12T09:26:50+00:00","dateModified":"2025-12-17T06:59:37+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/"},"wordCount":1984,"commentCount":0,"publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/01\/kubeedge-tutorial-1.png","keywords":["Edge-Computing","IoT","Kubernetes"],"articleSection":["General","Infrastructure"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/","url":"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/","name":"Einf\u00fchrung in KubeEdge - inovex GmbH","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/#primaryimage"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/01\/kubeedge-tutorial-1.png","datePublished":"2021-01-12T09:26:50+00:00","dateModified":"2025-12-17T06:59:37+00:00","description":"In diesem ersten Teil der Vorstellung von KubeEdge werfen wir einen Blick auf die Grundlagen. Genauere Betrachtung findet dabei der interne Aufbau und die Funktionsweise von KubeEdge.","breadcrumb":{"@id":"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/#primaryimage","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/01\/kubeedge-tutorial-1.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/01\/kubeedge-tutorial-1.png","width":1920,"height":1080,"caption":"Grafische Darstellung von drei Cloud-Symbolen. Wobei zwei leicht ausgeblendet sind."},{"@type":"BreadcrumbList","@id":"https:\/\/www.inovex.de\/de\/blog\/einfuehrung-in-kubeedge\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inovex.de\/de\/"},{"@type":"ListItem","position":2,"name":"Einf\u00fchrung in KubeEdge"}]},{"@type":"WebSite","@id":"https:\/\/www.inovex.de\/de\/#website","url":"https:\/\/www.inovex.de\/de\/","name":"inovex GmbH","description":"","publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inovex.de\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.inovex.de\/de\/#organization","name":"inovex GmbH","url":"https:\/\/www.inovex.de\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","width":1921,"height":1081,"caption":"inovex GmbH"},"image":{"@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inovexde","https:\/\/x.com\/inovexgmbh","https:\/\/www.instagram.com\/inovexlife\/","https:\/\/www.linkedin.com\/company\/inovex","https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ"]},{"@type":"Person","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/0bacb2c9ca9064212903a844e408fb12","name":"Johannes M. Scheuermann","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/d3df0e3e0fa19f031fc539be1bd60a808d56719e4f9d367bf9b116ef6d653b1b?s=96&d=retro&r=gf922827beb705676e2040c1ecc2b6370","url":"https:\/\/secure.gravatar.com\/avatar\/d3df0e3e0fa19f031fc539be1bd60a808d56719e4f9d367bf9b116ef6d653b1b?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d3df0e3e0fa19f031fc539be1bd60a808d56719e4f9d367bf9b116ef6d653b1b?s=96&d=retro&r=g","caption":"Johannes M. Scheuermann"},"url":"https:\/\/www.inovex.de\/de\/blog\/author\/jscheuermann\/"}]}},"_links":{"self":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/21131","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/users\/22"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/comments?post=21131"}],"version-history":[{"count":5,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/21131\/revisions"}],"predecessor-version":[{"id":65468,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/21131\/revisions\/65468"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media\/20456"}],"wp:attachment":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media?parent=21131"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/tags?post=21131"},{"taxonomy":"service","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/service?post=21131"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/coauthors?post=21131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}