<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Susant Sahani</title>
    <description>The latest articles on DEV Community by Susant Sahani (@ssahani).</description>
    <link>https://dev.to/ssahani</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F112748%2Fbfff41ec-bec9-4b25-b8ed-d972c6664071.jpeg</url>
      <title>DEV Community: Susant Sahani</title>
      <link>https://dev.to/ssahani</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ssahani"/>
    <language>en</language>
    <item>
      <title>PacketWolf: Bringing eBPF Network Intelligence to Kubernetes and Virtual Machines</title>
      <dc:creator>Susant Sahani</dc:creator>
      <pubDate>Mon, 10 Aug 2026 08:46:04 +0000</pubDate>
      <link>https://dev.to/ssahani/packetwolf-bringing-ebpf-network-intelligence-to-kubernetes-and-virtual-machines-18ek</link>
      <guid>https://dev.to/ssahani/packetwolf-bringing-ebpf-network-intelligence-to-kubernetes-and-virtual-machines-18ek</guid>
      <description>&lt;p&gt;Modern infrastructure networking has a visibility problem.&lt;/p&gt;

&lt;p&gt;We can usually answer questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which IP talked to which IP?&lt;/li&gt;
&lt;li&gt;Which port was used?&lt;/li&gt;
&lt;li&gt;How many bytes were transferred?&lt;/li&gt;
&lt;li&gt;Which Kubernetes service received traffic?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those answers are useful.&lt;/p&gt;

&lt;p&gt;But when something goes wrong, infrastructure teams usually need much more context.&lt;/p&gt;

&lt;p&gt;They need to know:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Which workload initiated the connection?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which process caused it?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Was that communication expected?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which policy allowed it?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Should this flow exist at all?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the problem we're working on with &lt;strong&gt;PacketWolf&lt;/strong&gt; at Zyvor AI Labs.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is PacketWolf?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;PacketWolf&lt;/strong&gt; is a network intelligence and policy platform designed around modern Linux networking technologies including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;eBPF&lt;/li&gt;
&lt;li&gt;Cilium&lt;/li&gt;
&lt;li&gt;Hubble&lt;/li&gt;
&lt;li&gt;Kubernetes&lt;/li&gt;
&lt;li&gt;KubeVirt&lt;/li&gt;
&lt;li&gt;Linux networking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The objective is to move infrastructure visibility beyond raw packets and IP addresses.&lt;/p&gt;

&lt;p&gt;We want to connect:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text id="7jv7ec"&lt;br&gt;
Process&lt;br&gt;
   ↓&lt;br&gt;
Workload&lt;br&gt;
   ↓&lt;br&gt;
Network connection&lt;br&gt;
   ↓&lt;br&gt;
Destination&lt;br&gt;
   ↓&lt;br&gt;
Policy&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


That context changes how networking can be operated.

## Traditional network visibility stops too early

Consider a flow:



```text id="c1oq4j"
10.20.3.14:49218
        ↓
10.20.8.22:5432
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Traditional tooling might tell us:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text id="l09e65"&lt;br&gt;
Source:      10.20.3.14&lt;br&gt;
Destination: 10.20.8.22&lt;br&gt;
Port:        5432&lt;br&gt;
Protocol:    TCP&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


But an engineer still needs to determine:



```text id="xry3ti"
What is 10.20.3.14?

Which application owns it?

Which process created the connection?

Why is it talking to PostgreSQL?

Is this expected behavior?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;In a dynamic Kubernetes environment, even the IP address itself may be temporary.&lt;/p&gt;

&lt;p&gt;Network intelligence therefore needs workload context.&lt;/p&gt;
&lt;h2&gt;
  
  
  Kubernetes changed network identity
&lt;/h2&gt;

&lt;p&gt;Traditional infrastructure often treated IP addresses as relatively stable identities.&lt;/p&gt;

&lt;p&gt;Kubernetes changed that assumption.&lt;/p&gt;

&lt;p&gt;Pods are created and destroyed continuously.&lt;/p&gt;

&lt;p&gt;An application might move from:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text id="eey6h2"&lt;br&gt;
10.0.1.18&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


to:



```text id="o2vzto"
10.0.7.43
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;without the application logically changing at all.&lt;/p&gt;

&lt;p&gt;The meaningful identity isn't necessarily:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text id="5rtylz"&lt;br&gt;
10.0.7.43&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


It may be:



```text id="hwje0e"
namespace: payments
service: checkout
workload: checkout-api
pod: checkout-api-7f7c8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This is one reason identity-aware networking becomes so important in Kubernetes.&lt;/p&gt;
&lt;h2&gt;
  
  
  Cilium and eBPF
&lt;/h2&gt;

&lt;p&gt;Cilium uses eBPF to provide networking, observability, and security capabilities in Linux and Kubernetes environments.&lt;/p&gt;

&lt;p&gt;eBPF allows programs to run safely inside the Linux kernel at strategic points.&lt;/p&gt;

&lt;p&gt;That creates powerful possibilities for observing network behavior without relying entirely on traditional packet capture.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text id="e78wsp"&lt;br&gt;
Application&lt;br&gt;
    │&lt;br&gt;
    ▼&lt;br&gt;
 Linux socket&lt;br&gt;
    │&lt;br&gt;
    ▼&lt;br&gt;
   eBPF&lt;br&gt;
    │&lt;br&gt;
    ▼&lt;br&gt;
 Network stack&lt;br&gt;
    │&lt;br&gt;
    ▼&lt;br&gt;
 Network&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


Instead of only observing packets after the fact, we can gain context much closer to where communication originates.

## Hubble provides flow visibility

Hubble adds network observability on top of Cilium.

It can provide visibility into flows such as:



```text id="aavkxc"
frontend
    │
    ▼
checkout-api
    │
    ▼
payment-service
    │
    ▼
database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This is extremely valuable.&lt;/p&gt;

&lt;p&gt;But we think there is another layer of intelligence that can be built on top.&lt;/p&gt;

&lt;p&gt;PacketWolf focuses on turning observed network behavior into operational answers.&lt;/p&gt;
&lt;h2&gt;
  
  
  From flows to relationships
&lt;/h2&gt;

&lt;p&gt;A raw network flow is an event.&lt;/p&gt;

&lt;p&gt;Infrastructure teams need relationships.&lt;/p&gt;

&lt;p&gt;Instead of displaying thousands of entries like:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text id="nzec31"&lt;br&gt;
A → B&lt;br&gt;
A → C&lt;br&gt;
B → D&lt;br&gt;
A → B&lt;br&gt;
C → D&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


we want to build a model like:



```text id="meuv2z"
                  frontend
                     │
                     ▼
                checkout-api
                  /       \
                 ▼         ▼
          payment-api   inventory
                 │
                 ▼
             postgres
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now the network becomes understandable as an application system rather than a stream of packet metadata.&lt;/p&gt;
&lt;h2&gt;
  
  
  Service maps
&lt;/h2&gt;

&lt;p&gt;One of PacketWolf's core ideas is automatically building service relationships from observed communication.&lt;/p&gt;

&lt;p&gt;A useful service map should help answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which services communicate?&lt;/li&gt;
&lt;li&gt;Which dependencies are new?&lt;/li&gt;
&lt;li&gt;Which workloads are unexpectedly exposed?&lt;/li&gt;
&lt;li&gt;Which destinations are external?&lt;/li&gt;
&lt;li&gt;Which communications disappeared?&lt;/li&gt;
&lt;li&gt;Which flows violate the expected architecture?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The map becomes particularly useful during incidents.&lt;/p&gt;

&lt;p&gt;Instead of manually correlating logs across multiple systems, an operator can begin from the communication graph.&lt;/p&gt;
&lt;h2&gt;
  
  
  Process-to-network attribution
&lt;/h2&gt;

&lt;p&gt;One of the areas we're particularly interested in is connecting network flows back to processes.&lt;/p&gt;

&lt;p&gt;Imagine observing:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text id="15mfvg"&lt;br&gt;
VM: finance-app-04&lt;br&gt;
Process: java&lt;br&gt;
PID: 4821&lt;br&gt;
Destination: 172.20.8.15&lt;br&gt;
Port: 5432&lt;br&gt;
Protocol: TCP&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


That is significantly more useful than:



```text id="cf3pi1"
172.20.2.41 → 172.20.8.15:5432
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now an operator has immediate application context.&lt;/p&gt;

&lt;p&gt;This becomes valuable for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Incident investigation&lt;/li&gt;
&lt;li&gt;Security analysis&lt;/li&gt;
&lt;li&gt;Dependency discovery&lt;/li&gt;
&lt;li&gt;Migration validation&lt;/li&gt;
&lt;li&gt;Network policy generation&lt;/li&gt;
&lt;li&gt;Application modernization&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  What about virtual machines?
&lt;/h2&gt;

&lt;p&gt;Network intelligence shouldn't stop at Kubernetes pods.&lt;/p&gt;

&lt;p&gt;Enterprise environments contain both:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text id="3ypdjf"&lt;br&gt;
Containers&lt;br&gt;
+&lt;br&gt;
Virtual Machines&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


KubeVirt makes this especially interesting because VMs can operate alongside container workloads inside Kubernetes-managed infrastructure.

A topology could look like:



```text id="3nvl1m"
                Kubernetes
                    │
        ┌───────────┴───────────┐
        │                       │
       Pods                    VMs
        │                       │
        └───────────┬───────────┘
                    │
                 Cilium
                    │
                  eBPF
                    │
              Network fabric
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The operational challenge is creating a consistent network view across both workload types.&lt;/p&gt;

&lt;p&gt;That is one of PacketWolf's goals.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why this matters for VM migration
&lt;/h2&gt;

&lt;p&gt;Imagine migrating a VMware VM to KVM or KubeVirt.&lt;/p&gt;

&lt;p&gt;The disk conversion succeeds.&lt;/p&gt;

&lt;p&gt;The VM boots.&lt;/p&gt;

&lt;p&gt;The network interface is online.&lt;/p&gt;

&lt;p&gt;Is the migration successful?&lt;/p&gt;

&lt;p&gt;Not necessarily.&lt;/p&gt;

&lt;p&gt;The application might depend on:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text id="ftzq40"&lt;br&gt;
Database&lt;br&gt;
LDAP&lt;br&gt;
DNS&lt;br&gt;
NTP&lt;br&gt;
License server&lt;br&gt;
Internal APIs&lt;br&gt;
Message queue&lt;br&gt;
External SaaS endpoint&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


If even one dependency is broken, the VM may be technically alive but operationally unusable.

Network intelligence can make post-migration validation much stronger.

Instead of checking only:



```text id="b8lo3m"
VM booted ✓
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;we can check:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text id="vmtzbf"&lt;br&gt;
VM booted                 ✓&lt;br&gt;
Expected services reached ✓&lt;br&gt;
Database dependency       ✓&lt;br&gt;
DNS                       ✓&lt;br&gt;
External endpoint         ✓&lt;br&gt;
Unexpected traffic        none&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


This turns networking into part of migration assurance.

## Observe first, then create policy

Network policy is powerful.

But writing policies before understanding application behavior can be dangerous.

A better workflow is:



```text id="4el8wa"
Observe
   ↓
Learn
   ↓
Model dependencies
   ↓
Recommend policy
   ↓
Review
   ↓
Enforce
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That is much safer than immediately denying traffic based on assumptions.&lt;/p&gt;
&lt;h2&gt;
  
  
  AutoPolicy
&lt;/h2&gt;

&lt;p&gt;PacketWolf's &lt;strong&gt;AutoPolicy&lt;/strong&gt; concept is based on observed communication.&lt;/p&gt;

&lt;p&gt;Suppose an application consistently communicates only with:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text id="a01yb5"&lt;br&gt;
frontend → api&lt;br&gt;
api → postgres&lt;br&gt;
api → redis&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


PacketWolf can use those relationships as input for a proposed network policy.

Conceptually:



```yaml id="4t9ynp"
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
  name: api-policy
spec:
  endpointSelector:
    matchLabels:
      app: api
  egress:
    - toEndpoints:
        - matchLabels:
            app: postgres
    - toEndpoints:
        - matchLabels:
            app: redis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The important point isn't automatically generating YAML.&lt;/p&gt;

&lt;p&gt;The useful part is understanding &lt;strong&gt;why&lt;/strong&gt; those rules should exist.&lt;/p&gt;

&lt;p&gt;Policy should be based on observed workload behavior and explicit operator review.&lt;/p&gt;
&lt;h2&gt;
  
  
  Unexpected communication is often the interesting communication
&lt;/h2&gt;

&lt;p&gt;Suppose a service normally communicates with:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text id="f1wfer"&lt;br&gt;
database&lt;br&gt;
redis&lt;br&gt;
internal-api&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


Then suddenly it starts communicating with:



```text id="cbow0j"
unknown external IP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That difference can be more useful than another dashboard showing total network throughput.&lt;/p&gt;

&lt;p&gt;PacketWolf can conceptually compare:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text id="9jds8b"&lt;br&gt;
Expected graph&lt;br&gt;
     vs&lt;br&gt;
Observed graph&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


and surface deviations.

This becomes useful for both reliability and security.

## Network health

Network troubleshooting often begins with a vague symptom:

&amp;gt; The application is slow.

The cause might be:

* Packet loss
* DNS failures
* Policy drops
* Connection retries
* Service availability
* Latency
* Routing changes
* Backend instability

A network intelligence platform should connect infrastructure signals together rather than force engineers to inspect them individually.

For example:



```text id="yp5v3w"
checkout-api degraded
        │
        ├── latency increased
        │
        ├── postgres retries increased
        │
        └── network policy unchanged
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That is closer to an operational answer.&lt;/p&gt;
&lt;h2&gt;
  
  
  Policy visibility matters too
&lt;/h2&gt;

&lt;p&gt;Having a network policy does not automatically mean operators understand it.&lt;/p&gt;

&lt;p&gt;A workload may be affected by multiple layers of policy.&lt;/p&gt;

&lt;p&gt;What infrastructure teams often want to know is:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text id="95csh9"&lt;br&gt;
Can workload A talk to workload B?&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


And if not:



```text id="0xy6s1"
Why not?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The answer should ideally explain:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text id="p4ehxz"&lt;br&gt;
checkout-api&lt;br&gt;
     │&lt;br&gt;
     ▼&lt;br&gt;
 payment-api&lt;br&gt;
     │&lt;br&gt;
     ✕&lt;br&gt;
Blocked by:&lt;br&gt;
CiliumNetworkPolicy/payment-restricted&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


That is more useful than simply reporting a dropped packet.

## Infrastructure needs explainability

As infrastructure becomes more automated, explainability becomes increasingly important.

Automation shouldn't just say:



```text id="68swl6"
Denied.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;It should say:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text id="k3ma5h"&lt;br&gt;
Connection denied because workload&lt;br&gt;
"checkout-api" attempted TCP/5432 toward&lt;br&gt;
"analytics-db", but the active egress policy&lt;br&gt;
permits only "payments-db".&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


That turns policy into something operators can reason about.

## Security and operations are converging

Network observability used to be largely an operations concern.

Network security was handled separately.

eBPF makes that boundary much less clear.

The same network context can help answer:

### Operations

Why is the application slow?

### Security

Why is this workload communicating externally?

### Platform engineering

Which services depend on this database?

### Migration

Did the migrated VM restore all required connections?

### Architecture

What does the actual application dependency graph look like?

One source of network intelligence can support all of these workflows.

## PacketWolf and Zeus OS

PacketWolf is designed to complement **Zeus OS**.

Zeus OS answers:



```text id="1gzjgp"
What infrastructure is running?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;PacketWolf answers:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text id="mdsg4u"&lt;br&gt;
How is that infrastructure communicating?&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


Together, the model becomes:



```text id="y5trzt"
             Zeus OS
                │
     Infrastructure topology
                │
                ▼
           PacketWolf
                │
        Network topology
                │
                ▼
      eBPF + Cilium + Hubble
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The combination gives infrastructure operators both resource and communication context.&lt;/p&gt;
&lt;h2&gt;
  
  
  The broader Zyvor stack
&lt;/h2&gt;

&lt;p&gt;PacketWolf is one part of the HyperSDK platform.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text id="prm6pa"&lt;br&gt;
                  HyperSDK&lt;br&gt;
                     │&lt;br&gt;
       ┌─────────────┼─────────────┐&lt;br&gt;
       │             │             │&lt;br&gt;
   Migration     Operations     Network&lt;br&gt;
       │             │             │&lt;br&gt;
 hyper2kvm        Zeus OS      PacketWolf&lt;br&gt;
 GuestKit         Machina&lt;br&gt;
       │             │             │&lt;br&gt;
       └─────────────┼─────────────┘&lt;br&gt;
                     │&lt;br&gt;
              Kubernetes / KVM&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


The idea is that migration, operations, and networking shouldn't live in completely disconnected systems.

## The network should tell a story

Infrastructure produces enormous amounts of telemetry.

The challenge isn't collecting more data.

The challenge is converting it into answers.

Instead of:



```text id="zvsl3g"
2.4 million flows observed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;we want infrastructure teams to see:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;```text id="fakfne"&lt;br&gt;
Payment service created a new external dependency.&lt;/p&gt;

&lt;p&gt;Three migrated VMs lost connectivity to DNS.&lt;/p&gt;

&lt;p&gt;One production workload is communicating outside its expected policy.&lt;/p&gt;

&lt;p&gt;Database latency increased after a network path change.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


That is the direction we're taking with PacketWolf.

## What's next?

We're interested in the intersection between:

* eBPF
* Cilium
* Hubble
* Kubernetes
* KubeVirt
* Virtual machines
* Network policy
* Service topology
* Process attribution
* Migration validation

because we think enterprise networking needs to become much more workload-aware.

Packets are useful.

Flows are better.

But the real goal is understanding:

&amp;gt; **Who communicated, why they communicated, whether they should have communicated, and what changed.**

That's the problem **PacketWolf** is being built to solve.

If you're operating Cilium, KubeVirt, or mixed VM/container infrastructure, we'd be interested in hearing what network visibility is still missing for your team.

**What is harder today: discovering dependencies, troubleshooting flows, or building correct network policies?**

**Zyvor AI Labs**
https://zyvor.dev

**HyperSDK Platform**
https://zyvor.dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>ebpf</category>
      <category>kubernetes</category>
      <category>networking</category>
      <category>devops</category>
    </item>
    <item>
      <title>Zeus OS: Building a Kubernetes-Native Operating Layer for Virtual Machines</title>
      <dc:creator>Susant Sahani</dc:creator>
      <pubDate>Mon, 10 Aug 2026 08:15:22 +0000</pubDate>
      <link>https://dev.to/ssahani/zeus-os-building-a-kubernetes-native-operating-layer-for-virtual-machines-5gi8</link>
      <guid>https://dev.to/ssahani/zeus-os-building-a-kubernetes-native-operating-layer-for-virtual-machines-5gi8</guid>
      <description>&lt;p&gt;Kubernetes transformed how organizations operate containers.&lt;/p&gt;

&lt;p&gt;But enterprise infrastructure isn't made entirely of containers.&lt;/p&gt;

&lt;p&gt;There are still thousands of workloads running as virtual machines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Windows Server&lt;/li&gt;
&lt;li&gt;Enterprise databases&lt;/li&gt;
&lt;li&gt;Legacy applications&lt;/li&gt;
&lt;li&gt;Commercial software&lt;/li&gt;
&lt;li&gt;Stateful middleware&lt;/li&gt;
&lt;li&gt;Network appliances&lt;/li&gt;
&lt;li&gt;Internal business applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For many organizations, replacing every VM with a container isn't realistic.&lt;/p&gt;

&lt;p&gt;The more practical question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Can we operate virtual machines and containers through the same infrastructure control plane?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's the problem we're working on with &lt;strong&gt;Zeus OS&lt;/strong&gt; at Zyvor AI Labs.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Zeus OS?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Zeus OS&lt;/strong&gt; is a visual infrastructure operating layer built around Kubernetes and KubeVirt.&lt;/p&gt;

&lt;p&gt;Its purpose is to make Kubernetes-native virtualization practical for infrastructure teams.&lt;/p&gt;

&lt;p&gt;Instead of maintaining one operational model for Kubernetes and another for traditional virtualization, Zeus OS works toward a unified model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Applications
     │
     ├── Containers
     │
     └── Virtual Machines
              │
              ▼
        Kubernetes + KubeVirt
              │
              ▼
           Zeus OS
              │
              ▼
   Compute · Network · Storage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The objective isn't to pretend virtual machines are containers.&lt;/p&gt;

&lt;p&gt;They aren't.&lt;/p&gt;

&lt;p&gt;The objective is to use Kubernetes as an infrastructure control plane while preserving VM semantics where they are required.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why KubeVirt?
&lt;/h2&gt;

&lt;p&gt;KubeVirt extends Kubernetes so virtual machines can become first-class Kubernetes-managed workloads.&lt;/p&gt;

&lt;p&gt;A simplified VM definition might look conceptually like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;kubevirt.io/v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;VirtualMachine&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;windows-server&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;running&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;windows-server&lt;/span&gt;
    &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;domain&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;devices&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;disks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;rootdisk&lt;/span&gt;
              &lt;span class="na"&gt;disk&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="na"&gt;bus&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;virtio&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now infrastructure objects can participate in the Kubernetes API model.&lt;/p&gt;

&lt;p&gt;That gives us interesting possibilities around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Declarative VM definitions&lt;/li&gt;
&lt;li&gt;API-driven provisioning&lt;/li&gt;
&lt;li&gt;RBAC&lt;/li&gt;
&lt;li&gt;Scheduling&lt;/li&gt;
&lt;li&gt;Automation&lt;/li&gt;
&lt;li&gt;Policies&lt;/li&gt;
&lt;li&gt;Observability&lt;/li&gt;
&lt;li&gt;Infrastructure-as-code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But exposing raw Kubernetes resources isn't enough for most virtualization teams.&lt;/p&gt;

&lt;p&gt;That's where an operating layer becomes important.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kubernetes APIs are powerful — but infrastructure teams need workflows
&lt;/h2&gt;

&lt;p&gt;A virtualization administrator usually thinks in terms such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create VM
Start VM
Stop VM
Clone VM
Take snapshot
Attach disk
Configure network
Migrate VM
Open console
Check health
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;They shouldn't have to translate every operation into several Kubernetes manifests and controllers.&lt;/p&gt;

&lt;p&gt;The infrastructure platform needs to convert familiar operational intent into Kubernetes-native actions.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Infrastructure intent
        ↓
      Zeus OS
        ↓
 Kubernetes APIs
        ↓
     KubeVirt
        ↓
       KVM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That abstraction is important.&lt;/p&gt;

&lt;p&gt;The goal isn't to hide Kubernetes completely.&lt;/p&gt;

&lt;p&gt;It's to make Kubernetes usable as infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Virtual machines become declarative infrastructure
&lt;/h2&gt;

&lt;p&gt;Traditional virtualization platforms are often heavily state-driven.&lt;/p&gt;

&lt;p&gt;An administrator clicks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create VM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and the platform creates something.&lt;/p&gt;

&lt;p&gt;Kubernetes introduces a different model.&lt;/p&gt;

&lt;p&gt;You describe the state you want.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VM should exist
VM should have 8 CPUs
VM should have 16 GB RAM
VM should use this disk
VM should connect to this network
VM should be running
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Controllers continuously reconcile reality with that desired state.&lt;/p&gt;

&lt;p&gt;This means the infrastructure model becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Desired state
      ↓
Reconciliation
      ↓
Actual infrastructure
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is one of the most important advantages of applying Kubernetes principles to virtualization.&lt;/p&gt;

&lt;h2&gt;
  
  
  VMs and containers under one API
&lt;/h2&gt;

&lt;p&gt;Consider an enterprise application with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Frontend
   ↓
Containers

API
   ↓
Containers

Legacy service
   ↓
Windows VM

Database
   ↓
Linux VM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Traditionally, these workloads might be operated through entirely separate systems.&lt;/p&gt;

&lt;p&gt;With Kubernetes and KubeVirt, the potential architecture becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;             Kubernetes API
                   │
          ┌────────┴────────┐
          │                 │
     Containers             VMs
          │                 │
      containerd        KubeVirt
                            │
                           KVM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Zeus OS sits above this environment to provide infrastructure-focused workflows and visibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  The VMware migration question
&lt;/h2&gt;

&lt;p&gt;A major reason organizations are evaluating KubeVirt today is infrastructure modernization.&lt;/p&gt;

&lt;p&gt;When leaving a traditional virtualization stack, organizations face two decisions.&lt;/p&gt;

&lt;p&gt;First:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Where do we move the virtual machines?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Second:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What should operate them afterward?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;KVM solves the hypervisor question.&lt;/p&gt;

&lt;p&gt;KubeVirt can solve part of the orchestration question.&lt;/p&gt;

&lt;p&gt;But enterprises still need an operational experience around the resulting infrastructure.&lt;/p&gt;

&lt;p&gt;At Zyvor, we're building the migration path and the target operating environment together.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VMware
   │
   ▼
Guest inspection
   │
   ▼
hyper2kvm
   │
   ▼
KVM / KubeVirt
   │
   ▼
Zeus OS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This matters because &lt;strong&gt;migration without day-two operations is only half a solution&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  VM lifecycle
&lt;/h2&gt;

&lt;p&gt;Once VMs are running, infrastructure teams need normal lifecycle operations.&lt;/p&gt;

&lt;p&gt;That includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create&lt;/li&gt;
&lt;li&gt;Start&lt;/li&gt;
&lt;li&gt;Stop&lt;/li&gt;
&lt;li&gt;Restart&lt;/li&gt;
&lt;li&gt;Delete&lt;/li&gt;
&lt;li&gt;Clone&lt;/li&gt;
&lt;li&gt;Resize&lt;/li&gt;
&lt;li&gt;Attach storage&lt;/li&gt;
&lt;li&gt;Configure networking&lt;/li&gt;
&lt;li&gt;Access console&lt;/li&gt;
&lt;li&gt;Inspect health&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These operations need to feel like infrastructure operations even when Kubernetes is underneath them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Storage matters
&lt;/h2&gt;

&lt;p&gt;Virtual machines are often much more storage-sensitive than stateless container workloads.&lt;/p&gt;

&lt;p&gt;A useful VM platform needs to understand concepts such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VirtualMachine
      │
      ▼
DataVolume / PVC
      │
      ▼
StorageClass
      │
      ▼
CSI
      │
      ▼
Underlying storage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kubernetes storage primitives are powerful, but VM users care about outcomes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a disk&lt;/li&gt;
&lt;li&gt;Import an image&lt;/li&gt;
&lt;li&gt;Expand a disk&lt;/li&gt;
&lt;li&gt;Clone a disk&lt;/li&gt;
&lt;li&gt;Snapshot a VM&lt;/li&gt;
&lt;li&gt;Restore a VM&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The platform should expose the outcome while using Kubernetes storage primitives underneath.&lt;/p&gt;

&lt;h2&gt;
  
  
  Windows is critical
&lt;/h2&gt;

&lt;p&gt;Any serious enterprise virtualization platform must treat Windows as a first-class workload.&lt;/p&gt;

&lt;p&gt;Enterprise estates contain enormous numbers of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Windows Server workloads&lt;/li&gt;
&lt;li&gt;Active Directory-connected applications&lt;/li&gt;
&lt;li&gt;Microsoft SQL Server&lt;/li&gt;
&lt;li&gt;.NET applications&lt;/li&gt;
&lt;li&gt;Vendor appliances&lt;/li&gt;
&lt;li&gt;Internal Windows services&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A Kubernetes-native virtualization platform therefore needs workflows around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Windows installation&lt;/li&gt;
&lt;li&gt;VirtIO drivers&lt;/li&gt;
&lt;li&gt;Disk preparation&lt;/li&gt;
&lt;li&gt;Networking&lt;/li&gt;
&lt;li&gt;VM templates&lt;/li&gt;
&lt;li&gt;Console access&lt;/li&gt;
&lt;li&gt;Migration preparation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;KubeVirt cannot be positioned only as a Linux virtualization technology if the goal is enterprise VM modernization.&lt;/p&gt;

&lt;h2&gt;
  
  
  Networking becomes interesting
&lt;/h2&gt;

&lt;p&gt;Virtual machine networking inside Kubernetes opens up powerful possibilities.&lt;/p&gt;

&lt;p&gt;You now have multiple layers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application
    │
   VM
    │
KubeVirt
    │
Pod network / secondary network
    │
CNI
    │
Physical network
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Technologies such as Cilium and eBPF make this even more interesting.&lt;/p&gt;

&lt;p&gt;Instead of viewing networking only as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VM → vSwitch → VLAN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;we can begin thinking about workload identity, policy, observability, and infrastructure networking through a common programmable layer.&lt;/p&gt;

&lt;p&gt;This is also where Zeus OS connects naturally with another Zyvor project: &lt;strong&gt;PacketWolf&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Infrastructure topology
&lt;/h2&gt;

&lt;p&gt;One of the problems with increasingly distributed infrastructure is understanding relationships.&lt;/p&gt;

&lt;p&gt;Operators need to understand:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cluster
 ├── Node
 │    ├── VM
 │    ├── VM
 │    └── Pod
 │
 ├── Node
 │    ├── VM
 │    └── Pod
 │
 └── Network
      ├── Services
      └── Policies
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A useful infrastructure UI shouldn't just display independent tables.&lt;/p&gt;

&lt;p&gt;It should help operators understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where a workload runs&lt;/li&gt;
&lt;li&gt;Which network it uses&lt;/li&gt;
&lt;li&gt;Which storage backs it&lt;/li&gt;
&lt;li&gt;What services depend on it&lt;/li&gt;
&lt;li&gt;Whether it is healthy&lt;/li&gt;
&lt;li&gt;What changed recently&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Infrastructure operations are ultimately about relationships.&lt;/p&gt;

&lt;h2&gt;
  
  
  Observability should cross the VM boundary
&lt;/h2&gt;

&lt;p&gt;Traditional VM monitoring often stops at:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CPU
Memory
Disk
Network
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Useful, but incomplete.&lt;/p&gt;

&lt;p&gt;Modern infrastructure should be able to correlate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VM
 ↓
Process
 ↓
Connection
 ↓
Service
 ↓
Network policy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Combining KubeVirt, Kubernetes observability, eBPF, and infrastructure intelligence creates the possibility of much deeper operational context.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Why is this VM using network bandwidth?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;we want to eventually answer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which process inside which workload is communicating with which service, through which policy path?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is a much more useful infrastructure question.&lt;/p&gt;

&lt;h2&gt;
  
  
  Policy becomes API-driven
&lt;/h2&gt;

&lt;p&gt;Once infrastructure is represented through APIs, policy becomes much easier to automate.&lt;/p&gt;

&lt;p&gt;Imagine rules such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Production VMs require backups.

Internet-facing workloads require approved network policies.

Windows templates require VirtIO drivers.

VMs above a resource threshold require approval.

Migration candidates must pass readiness validation.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of documenting these requirements in a spreadsheet, the platform can eventually enforce them as infrastructure policy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Multi-cluster infrastructure
&lt;/h2&gt;

&lt;p&gt;Enterprise infrastructure rarely stays inside one cluster.&lt;/p&gt;

&lt;p&gt;Organizations may have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Datacenter A
     │
 Kubernetes cluster

Datacenter B
     │
 Kubernetes cluster

Edge location
     │
 Kubernetes cluster
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Infrastructure teams need visibility across those environments.&lt;/p&gt;

&lt;p&gt;The long-term operating model becomes less about managing individual hypervisor hosts and more about managing fleets of infrastructure clusters.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                Zeus OS
                   │
       ┌───────────┼───────────┐
       │           │           │
   Cluster A   Cluster B   Edge Cluster
       │           │           │
      VMs          VMs       VMs + Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That changes the abstraction level of virtualization management.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kubernetes should not make virtualization harder
&lt;/h2&gt;

&lt;p&gt;Kubernetes provides powerful primitives.&lt;/p&gt;

&lt;p&gt;But power without usability creates another form of complexity.&lt;/p&gt;

&lt;p&gt;We don't believe virtualization administrators should need to become Kubernetes API experts before they can create or troubleshoot a VM.&lt;/p&gt;

&lt;p&gt;Likewise, Kubernetes engineers shouldn't need a completely separate infrastructure stack simply because a workload still requires a VM.&lt;/p&gt;

&lt;p&gt;The goal should be convergence.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Traditional virtualization
          +
      Kubernetes
          ↓
Unified infrastructure operations
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What Zeus OS is trying to become
&lt;/h2&gt;

&lt;p&gt;We're building Zeus OS around a simple idea:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Kubernetes can become an infrastructure operating layer, not just a container orchestrator.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That means bringing together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kubernetes&lt;/li&gt;
&lt;li&gt;KubeVirt&lt;/li&gt;
&lt;li&gt;KVM&lt;/li&gt;
&lt;li&gt;VM lifecycle&lt;/li&gt;
&lt;li&gt;Storage&lt;/li&gt;
&lt;li&gt;Networking&lt;/li&gt;
&lt;li&gt;Migration&lt;/li&gt;
&lt;li&gt;Observability&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Automation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;into an operational experience designed for infrastructure teams.&lt;/p&gt;

&lt;h2&gt;
  
  
  The larger Zyvor architecture
&lt;/h2&gt;

&lt;p&gt;Zeus OS isn't being developed in isolation.&lt;/p&gt;

&lt;p&gt;Across the Zyvor platform:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GuestKit&lt;/strong&gt; helps understand virtual machines before migration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;hyper2kvm&lt;/strong&gt; handles VMware-to-KVM conversion and remediation workflows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Machina&lt;/strong&gt; provides KVM and libvirt operations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PacketWolf&lt;/strong&gt; focuses on network intelligence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HyperCluster&lt;/strong&gt; manages Kubernetes cluster lifecycle.&lt;/p&gt;

&lt;p&gt;And &lt;strong&gt;Zeus OS&lt;/strong&gt; provides the visual operating layer for the resulting Kubernetes and KubeVirt infrastructure.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 HyperSDK
                    │
       ┌────────────┼────────────┐
       │            │            │
   Migration     Operations   Intelligence
       │            │            │
 hyper2kvm      Zeus OS      PacketWolf
 GuestKit       Machina
                    │
                    ▼
           Kubernetes + KubeVirt
                    │
                    ▼
                   KVM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The post-VMware opportunity
&lt;/h2&gt;

&lt;p&gt;The VMware discussion shouldn't end with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which hypervisor replaces VMware?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The bigger question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What should enterprise virtualization look like for the next decade?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We think the answer will increasingly involve open infrastructure built around technologies such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linux&lt;/li&gt;
&lt;li&gt;KVM&lt;/li&gt;
&lt;li&gt;Kubernetes&lt;/li&gt;
&lt;li&gt;KubeVirt&lt;/li&gt;
&lt;li&gt;Cilium&lt;/li&gt;
&lt;li&gt;eBPF&lt;/li&gt;
&lt;li&gt;CSI&lt;/li&gt;
&lt;li&gt;Open APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But the open-source components alone aren't the complete product.&lt;/p&gt;

&lt;p&gt;Enterprises still need lifecycle management, migration workflows, policies, observability, security, and an operational experience.&lt;/p&gt;

&lt;p&gt;That's the layer we're working on with &lt;strong&gt;Zeus OS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you're currently experimenting with KubeVirt or planning a VMware exit, we'd love to hear what's missing from today's Kubernetes virtualization experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What would your infrastructure team need before it could operate production VMs on Kubernetes?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zyvor AI Labs&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://zyvor.dev" rel="noopener noreferrer"&gt;https://zyvor.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HyperSDK Platform&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://zyvor.dev" rel="noopener noreferrer"&gt;https://zyvor.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>kubevirt</category>
      <category>virtualization</category>
      <category>devops</category>
    </item>
    <item>
      <title>VMware to KVM Migration: Why Disk Conversion Is Only the Beginning</title>
      <dc:creator>Susant Sahani</dc:creator>
      <pubDate>Mon, 10 Aug 2026 07:58:51 +0000</pubDate>
      <link>https://dev.to/ssahani/vmware-to-kvm-migration-why-disk-conversion-is-only-the-beginning-19ji</link>
      <guid>https://dev.to/ssahani/vmware-to-kvm-migration-why-disk-conversion-is-only-the-beginning-19ji</guid>
      <description>&lt;p&gt;Moving a virtual machine from VMware to KVM sounds simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VMDK → QCOW2 → Boot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In practice, that is often the easiest part.&lt;/p&gt;

&lt;p&gt;A disk can convert perfectly and still leave you with a virtual machine that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fails to find its root filesystem,&lt;/li&gt;
&lt;li&gt;drops into an initramfs shell,&lt;/li&gt;
&lt;li&gt;cannot see its virtual disk,&lt;/li&gt;
&lt;li&gt;loses its network configuration,&lt;/li&gt;
&lt;li&gt;fails because of firmware differences,&lt;/li&gt;
&lt;li&gt;or boots into Windows recovery.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At &lt;strong&gt;Zyvor AI Labs&lt;/strong&gt;, we see VM migration as a guest-operating-system problem as much as a disk-format problem.&lt;/p&gt;

&lt;p&gt;That is one of the reasons we built &lt;strong&gt;hyper2kvm&lt;/strong&gt; and &lt;strong&gt;GuestKit&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  A converted disk is not a migrated VM
&lt;/h2&gt;

&lt;p&gt;Tools such as &lt;code&gt;qemu-img&lt;/code&gt; can convert virtual disk formats very effectively.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;qemu-img convert &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-f&lt;/span&gt; vmdk &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-O&lt;/span&gt; qcow2 &lt;span class="se"&gt;\&lt;/span&gt;
  source.vmdk &lt;span class="se"&gt;\&lt;/span&gt;
  destination.qcow2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At this point you have a QCOW2 image.&lt;/p&gt;

&lt;p&gt;You do &lt;strong&gt;not&lt;/strong&gt; necessarily have a bootable KVM virtual machine.&lt;/p&gt;

&lt;p&gt;The guest operating system was originally installed against a particular virtual hardware environment.&lt;/p&gt;

&lt;p&gt;Changing that environment can affect:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Storage controllers&lt;/li&gt;
&lt;li&gt;Network adapters&lt;/li&gt;
&lt;li&gt;Firmware&lt;/li&gt;
&lt;li&gt;Bootloader configuration&lt;/li&gt;
&lt;li&gt;Kernel modules&lt;/li&gt;
&lt;li&gt;Device naming&lt;/li&gt;
&lt;li&gt;Filesystem references&lt;/li&gt;
&lt;li&gt;Windows drivers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Successful migration therefore requires understanding what is &lt;em&gt;inside&lt;/em&gt; the disk.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 1: Storage drivers
&lt;/h2&gt;

&lt;p&gt;One of the most common migration issues is storage.&lt;/p&gt;

&lt;p&gt;A VMware guest may have been running against VMware virtual storage hardware.&lt;/p&gt;

&lt;p&gt;The KVM target may expose disks using VirtIO.&lt;/p&gt;

&lt;p&gt;Linux generally has excellent VirtIO support, but the required modules still need to be available at the right point during boot.&lt;/p&gt;

&lt;p&gt;Relevant modules can include:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;virtio
virtio_pci
virtio_blk
virtio_scsi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the required storage driver is not available inside the initramfs, the kernel may start successfully but fail to locate the root filesystem.&lt;/p&gt;

&lt;p&gt;The migration looks like it failed at KVM.&lt;/p&gt;

&lt;p&gt;The real problem is inside the guest.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 2: initramfs
&lt;/h2&gt;

&lt;p&gt;Linux systems frequently depend on an initial RAM filesystem to load storage and filesystem modules before mounting the real root filesystem.&lt;/p&gt;

&lt;p&gt;After changing virtual hardware, the existing initramfs may not contain what the new environment requires.&lt;/p&gt;

&lt;p&gt;This is why migration tooling needs to inspect and, where required, rebuild the initramfs.&lt;/p&gt;

&lt;p&gt;Depending on the distribution, that could involve tools such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dracut
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;update-initramfs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The exact workflow differs across Linux distributions.&lt;/p&gt;

&lt;p&gt;A migration system therefore needs to understand the guest rather than blindly apply one repair command.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 3: GRUB and boot paths
&lt;/h2&gt;

&lt;p&gt;The next problem is boot configuration.&lt;/p&gt;

&lt;p&gt;A virtual machine may originally have been configured for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;BIOS&lt;/li&gt;
&lt;li&gt;UEFI&lt;/li&gt;
&lt;li&gt;GPT&lt;/li&gt;
&lt;li&gt;MBR&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The target environment needs to reproduce a compatible boot path.&lt;/p&gt;

&lt;p&gt;GRUB configurations can also reference disks by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;UUID&lt;/li&gt;
&lt;li&gt;filesystem label&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/dev/sdX&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/dev/vdX&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;LVM paths&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hard-coded device names are particularly fragile.&lt;/p&gt;

&lt;p&gt;A VMware disk that appeared as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/dev/sda
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;could appear under KVM as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/dev/vda
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;if VirtIO block devices are used.&lt;/p&gt;

&lt;p&gt;The filesystem still exists.&lt;/p&gt;

&lt;p&gt;The operating system simply may not know where to find it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 4: &lt;code&gt;/etc/fstab&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Consider an entry like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/dev/sda2 / ext4 defaults 0 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After migration, &lt;code&gt;/dev/sda2&lt;/code&gt; may no longer exist under that name.&lt;/p&gt;

&lt;p&gt;A more resilient system may use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;UUID=&amp;lt;filesystem-uuid&amp;gt; / ext4 defaults 0 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Migration assessment should therefore examine filesystem references before cutover.&lt;/p&gt;

&lt;p&gt;Otherwise a perfectly healthy converted disk can fail during boot because one configuration file expects a device name that changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 5: Windows is different
&lt;/h2&gt;

&lt;p&gt;Windows migration introduces another set of challenges.&lt;/p&gt;

&lt;p&gt;Moving a Windows VM from VMware to KVM may require making VirtIO drivers available before the machine boots on the target hypervisor.&lt;/p&gt;

&lt;p&gt;Potential requirements include drivers for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VirtIO storage&lt;/li&gt;
&lt;li&gt;SCSI&lt;/li&gt;
&lt;li&gt;Network adapters&lt;/li&gt;
&lt;li&gt;Balloon devices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If Windows cannot access the boot disk through the new controller, it may fail long before a user can install the missing driver manually.&lt;/p&gt;

&lt;p&gt;That means driver preparation often needs to happen &lt;strong&gt;offline&lt;/strong&gt;, before first boot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 6: Networking
&lt;/h2&gt;

&lt;p&gt;Even after the operating system boots, networking can still break.&lt;/p&gt;

&lt;p&gt;The guest sees different virtual NIC hardware.&lt;/p&gt;

&lt;p&gt;That can interact with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MAC-address-based configuration&lt;/li&gt;
&lt;li&gt;interface naming&lt;/li&gt;
&lt;li&gt;static IP configuration&lt;/li&gt;
&lt;li&gt;udev rules&lt;/li&gt;
&lt;li&gt;NetworkManager profiles&lt;/li&gt;
&lt;li&gt;netplan&lt;/li&gt;
&lt;li&gt;systemd-networkd&lt;/li&gt;
&lt;li&gt;legacy Linux network scripts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A machine that successfully reaches a login prompt but has no network connectivity is not a successful enterprise migration.&lt;/p&gt;

&lt;p&gt;Validation must extend beyond "did it boot?"&lt;/p&gt;

&lt;h2&gt;
  
  
  This is why we built GuestKit
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GuestKit&lt;/strong&gt; approaches migration from the other direction.&lt;/p&gt;

&lt;p&gt;Instead of first booting a migrated VM and discovering what broke, GuestKit examines the guest disk &lt;strong&gt;offline&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The idea is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Inspect before cutover.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GuestKit can analyze virtual disk formats such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VMDK&lt;/li&gt;
&lt;li&gt;QCOW2&lt;/li&gt;
&lt;li&gt;RAW&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and gather information about what is inside the guest.&lt;/p&gt;

&lt;p&gt;That can include areas such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Operating system identification&lt;/li&gt;
&lt;li&gt;Boot configuration&lt;/li&gt;
&lt;li&gt;Filesystems&lt;/li&gt;
&lt;li&gt;Drivers&lt;/li&gt;
&lt;li&gt;initramfs&lt;/li&gt;
&lt;li&gt;GRUB&lt;/li&gt;
&lt;li&gt;fstab&lt;/li&gt;
&lt;li&gt;Potential migration blockers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The objective is to determine whether a guest is migration-ready before putting it into a cutover window.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fleet migration changes the problem
&lt;/h2&gt;

&lt;p&gt;Testing one virtual machine manually is manageable.&lt;/p&gt;

&lt;p&gt;Testing 1,000 is not.&lt;/p&gt;

&lt;p&gt;At fleet scale, migration teams need answers such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Which VMs are ready?
Which VMs require remediation?
Which Windows guests are missing drivers?
Which Linux guests have risky boot configurations?
Which systems should not enter the current migration wave?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That requires structured inspection.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VM → migrate → boot → debug
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;we prefer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VM
 ↓
Offline inspection
 ↓
Readiness assessment
 ↓
Remediation plan
 ↓
Conversion
 ↓
Validation
 ↓
Cutover
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allows infrastructure teams to move failure discovery earlier in the process.&lt;/p&gt;

&lt;h2&gt;
  
  
  hyper2kvm handles the migration workflow
&lt;/h2&gt;

&lt;p&gt;Where GuestKit focuses on understanding the guest, &lt;strong&gt;hyper2kvm&lt;/strong&gt; focuses on the actual VMware-to-KVM migration workflow.&lt;/p&gt;

&lt;p&gt;The migration process can involve:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Source VM
   ↓
Disk acquisition
   ↓
Guest inspection
   ↓
Driver preparation
   ↓
Disk conversion
   ↓
Boot remediation
   ↓
Target configuration
   ↓
Validation
   ↓
KVM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is much closer to the real problem than treating migration as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;qemu-img convert
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Preflight matters
&lt;/h2&gt;

&lt;p&gt;Enterprise migration projects should ideally identify problematic machines before the scheduled cutover.&lt;/p&gt;

&lt;p&gt;A preflight system can ask:&lt;/p&gt;

&lt;h3&gt;
  
  
  Is the disk readable?
&lt;/h3&gt;

&lt;p&gt;If not, stop.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is the operating system identifiable?
&lt;/h3&gt;

&lt;p&gt;If not, flag it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is the boot configuration understood?
&lt;/h3&gt;

&lt;p&gt;If not, investigate.&lt;/p&gt;

&lt;h3&gt;
  
  
  Are target storage drivers available?
&lt;/h3&gt;

&lt;p&gt;If not, inject or rebuild them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Are filesystem mounts safe?
&lt;/h3&gt;

&lt;p&gt;If not, remediate them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is the firmware configuration compatible?
&lt;/h3&gt;

&lt;p&gt;If not, adjust the target definition.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can we verify the resulting guest?
&lt;/h3&gt;

&lt;p&gt;If not, do not treat conversion success as migration success.&lt;/p&gt;

&lt;h2&gt;
  
  
  Validation should be explicit
&lt;/h2&gt;

&lt;p&gt;A migration pipeline should produce a clear result.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"guest"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"finance-db-07"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"source"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"vmware"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"target"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"kvm"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"disk_conversion"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"passed"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"boot_readiness"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"passed"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"virtio_storage"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"present"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"network_review"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"required"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"migration_status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ready_with_warning"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is far more useful than:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Conversion completed successfully.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first result tells an engineer what still needs attention.&lt;/p&gt;

&lt;p&gt;The second only tells us that bytes were copied successfully.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real migration unit is the guest
&lt;/h2&gt;

&lt;p&gt;Hypervisors operate virtual hardware.&lt;/p&gt;

&lt;p&gt;Applications run inside operating systems.&lt;/p&gt;

&lt;p&gt;That distinction matters during migration.&lt;/p&gt;

&lt;p&gt;If we only look at the disk format, we miss the systems responsible for actually starting the workload:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Firmware
   ↓
Bootloader
   ↓
Kernel
   ↓
Initramfs
   ↓
Storage
   ↓
Root filesystem
   ↓
Networking
   ↓
Application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every layer can introduce a migration failure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where we're taking this
&lt;/h2&gt;

&lt;p&gt;At Zyvor, our goal is to make VMware-to-KVM migration more deterministic.&lt;/p&gt;

&lt;p&gt;That means moving from:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Convert and hope&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inspect → understand → remediate → convert → validate&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;hyper2kvm handles the migration path.&lt;/p&gt;

&lt;p&gt;GuestKit provides offline intelligence about what is inside the guest.&lt;/p&gt;

&lt;p&gt;And HyperSDK provides the broader orchestration layer around discovery, migration, validation, and infrastructure operations.&lt;/p&gt;

&lt;p&gt;If you're planning VMware-to-KVM migrations, we're particularly interested in hearing about the failures that are hardest to automate.&lt;/p&gt;

&lt;p&gt;What causes the most trouble in your environment: &lt;strong&gt;Windows drivers, bootloader issues, Linux initramfs, networking, or application validation?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zyvor AI Labs&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://zyvor.dev" rel="noopener noreferrer"&gt;https://zyvor.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GuestKit:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://zyvor.dev/blog/guestkit-offline-disk-intelligence" rel="noopener noreferrer"&gt;https://zyvor.dev/blog/guestkit-offline-disk-intelligence&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;VMware → KVM migration:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://zyvor.dev/blog/windows-vm-migration-kvm" rel="noopener noreferrer"&gt;https://zyvor.dev/blog/windows-vm-migration-kvm&lt;/a&gt;&lt;/p&gt;

</description>
      <category>virtualization</category>
      <category>kvm</category>
      <category>linux</category>
      <category>devops</category>
    </item>
    <item>
      <title>Introducing Zyvor AI Labs: Building Open Infrastructure for the Post-VMware Era</title>
      <dc:creator>Susant Sahani</dc:creator>
      <pubDate>Mon, 10 Aug 2026 07:56:20 +0000</pubDate>
      <link>https://dev.to/zyvor/introducing-zyvor-ai-labs-building-open-infrastructure-for-the-post-vmware-era-m3a</link>
      <guid>https://dev.to/zyvor/introducing-zyvor-ai-labs-building-open-infrastructure-for-the-post-vmware-era-m3a</guid>
      <description>&lt;p&gt;Enterprise infrastructure is changing.&lt;/p&gt;

&lt;p&gt;VMware licensing changes, rising public-cloud costs, Kubernetes adoption, growing AI workloads, and increasing infrastructure complexity are forcing organizations to rethink how they operate compute infrastructure.&lt;/p&gt;

&lt;p&gt;At &lt;strong&gt;Zyvor AI Labs&lt;/strong&gt;, we're building an open infrastructure platform for that transition.&lt;/p&gt;

&lt;p&gt;Our goal is straightforward:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Give enterprises the freedom to migrate, run, secure, automate, and operate workloads without becoming locked into another infrastructure vendor.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Meet HyperSDK
&lt;/h2&gt;

&lt;p&gt;At the center of Zyvor is &lt;strong&gt;HyperSDK&lt;/strong&gt;, our infrastructure modernization and orchestration platform.&lt;/p&gt;

&lt;p&gt;We don't see infrastructure modernization as simply converting a VMware virtual machine into another disk format.&lt;/p&gt;

&lt;p&gt;The lifecycle is much bigger:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Discover → Assess → Migrate → Validate → Operate → Secure → Automate&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;HyperSDK brings together technologies for virtualization, migration, Kubernetes, networking, automation, AI infrastructure, and operational intelligence.&lt;/p&gt;

&lt;h2&gt;
  
  
  hyper2kvm: VMware to KVM migration
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;hyper2kvm&lt;/strong&gt; is focused on migrating virtual machines toward KVM-based infrastructure.&lt;/p&gt;

&lt;p&gt;Migration can involve much more than converting a VMDK to QCOW2.&lt;/p&gt;

&lt;p&gt;The guest operating system must still boot correctly afterward.&lt;/p&gt;

&lt;p&gt;hyper2kvm addresses areas such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Disk conversion&lt;/li&gt;
&lt;li&gt;VirtIO preparation&lt;/li&gt;
&lt;li&gt;Windows migration readiness&lt;/li&gt;
&lt;li&gt;Boot-path remediation&lt;/li&gt;
&lt;li&gt;initramfs repair&lt;/li&gt;
&lt;li&gt;GRUB repair&lt;/li&gt;
&lt;li&gt;Post-conversion validation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our goal is to make VM migration repeatable and automatable rather than treating every VM as a manual project.&lt;/p&gt;

&lt;h2&gt;
  
  
  GuestKit: Know before you migrate
&lt;/h2&gt;

&lt;p&gt;One of the biggest migration risks is discovering a problem &lt;strong&gt;after&lt;/strong&gt; cutover.&lt;/p&gt;

&lt;p&gt;That's why we built &lt;strong&gt;GuestKit&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;GuestKit provides offline VM disk intelligence so infrastructure teams can inspect guest disks before booting or migrating them.&lt;/p&gt;

&lt;p&gt;It can help answer questions such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is this VM likely to boot after migration?&lt;/li&gt;
&lt;li&gt;Are the necessary drivers present?&lt;/li&gt;
&lt;li&gt;Is the bootloader healthy?&lt;/li&gt;
&lt;li&gt;What migration blockers exist?&lt;/li&gt;
&lt;li&gt;What should be fixed before cutover?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GuestKit works with common virtual disk formats including QCOW2, VMDK, and RAW.&lt;/p&gt;

&lt;p&gt;This becomes especially valuable when assessing hundreds or thousands of machines ahead of a migration wave.&lt;/p&gt;

&lt;h2&gt;
  
  
  Zeus OS: Virtual machines on Kubernetes
&lt;/h2&gt;

&lt;p&gt;Containers aren't replacing every enterprise VM.&lt;/p&gt;

&lt;p&gt;A large number of organizations need to operate both.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zeus OS&lt;/strong&gt; is our visual infrastructure operating layer around Kubernetes and KubeVirt.&lt;/p&gt;

&lt;p&gt;We're building it to make Kubernetes-based virtualization practical for infrastructure teams managing both traditional VMs and modern containerized workloads.&lt;/p&gt;

&lt;h2&gt;
  
  
  Machina: KVM operations
&lt;/h2&gt;

&lt;p&gt;After migration, someone still needs to operate the infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Machina&lt;/strong&gt; focuses on KVM and libvirt management, VM lifecycle operations, provisioning, automation, and day-two infrastructure management.&lt;/p&gt;

&lt;p&gt;The objective is to make open virtualization infrastructure easier to operate at enterprise scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  PacketWolf: Network intelligence
&lt;/h2&gt;

&lt;p&gt;Modern infrastructure isn't only about compute.&lt;/p&gt;

&lt;p&gt;Understanding how workloads communicate is equally important.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PacketWolf&lt;/strong&gt; focuses on network intelligence and security, connecting workload and process activity with network behavior.&lt;/p&gt;

&lt;p&gt;We're working with technologies including eBPF, Cilium, and Hubble to provide deeper infrastructure-level visibility and policy automation.&lt;/p&gt;

&lt;h2&gt;
  
  
  HyperCluster: Kubernetes lifecycle
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;HyperCluster&lt;/strong&gt; focuses on Kubernetes cluster lifecycle automation.&lt;/p&gt;

&lt;p&gt;That includes workflows around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Preflight validation&lt;/li&gt;
&lt;li&gt;Deployment&lt;/li&gt;
&lt;li&gt;Scaling&lt;/li&gt;
&lt;li&gt;Upgrades&lt;/li&gt;
&lt;li&gt;Cluster operations&lt;/li&gt;
&lt;li&gt;Infrastructure teardown&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Running Kubernetes is easy to demonstrate.&lt;/p&gt;

&lt;p&gt;Operating it consistently across real environments is much harder.&lt;/p&gt;

&lt;p&gt;That's the problem HyperCluster is intended to address.&lt;/p&gt;

&lt;h2&gt;
  
  
  Aether: Workload portability
&lt;/h2&gt;

&lt;p&gt;Infrastructure teams shouldn't have to redesign an application every time its runtime changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Aether&lt;/strong&gt; explores a portable model for deploying and operating workloads across environments such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kubernetes&lt;/li&gt;
&lt;li&gt;KubeVirt&lt;/li&gt;
&lt;li&gt;Podman&lt;/li&gt;
&lt;li&gt;Bare metal&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The broader principle is simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Applications should be portable. Infrastructure should remain a choice.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Forge: AI infrastructure
&lt;/h2&gt;

&lt;p&gt;AI is becoming another major infrastructure workload.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Forge&lt;/strong&gt; focuses on operating enterprise AI and GPU infrastructure, including areas such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPU placement&lt;/li&gt;
&lt;li&gt;Utilization&lt;/li&gt;
&lt;li&gt;Governance&lt;/li&gt;
&lt;li&gt;Cost visibility&lt;/li&gt;
&lt;li&gt;Networking&lt;/li&gt;
&lt;li&gt;AI infrastructure operations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI workloads shouldn't require organizations to abandon everything they already know about infrastructure engineering.&lt;/p&gt;

&lt;h2&gt;
  
  
  Infrastructure should belong to the customer
&lt;/h2&gt;

&lt;p&gt;One principle influences nearly everything we're building at Zyvor:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Infrastructure should belong to the customer, not the infrastructure vendor.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;An enterprise should be able to decide where a workload runs according to its own requirements.&lt;/p&gt;

&lt;p&gt;That might be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;KVM&lt;/li&gt;
&lt;li&gt;Kubernetes&lt;/li&gt;
&lt;li&gt;KubeVirt&lt;/li&gt;
&lt;li&gt;Private cloud&lt;/li&gt;
&lt;li&gt;Public cloud&lt;/li&gt;
&lt;li&gt;Bare metal&lt;/li&gt;
&lt;li&gt;Edge infrastructure&lt;/li&gt;
&lt;li&gt;Hybrid environments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The infrastructure platform should help organizations make those choices.&lt;/p&gt;

&lt;p&gt;It shouldn't remove them.&lt;/p&gt;

&lt;h2&gt;
  
  
  VMware exit is only the beginning
&lt;/h2&gt;

&lt;p&gt;A lot of conversations today start with:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"How do we move away from VMware?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's an important question.&lt;/p&gt;

&lt;p&gt;But migration is only the first part.&lt;/p&gt;

&lt;p&gt;After migration, organizations still need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Virtual machine lifecycle management&lt;/li&gt;
&lt;li&gt;Networking&lt;/li&gt;
&lt;li&gt;Observability&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Automation&lt;/li&gt;
&lt;li&gt;Disaster recovery&lt;/li&gt;
&lt;li&gt;Cost visibility&lt;/li&gt;
&lt;li&gt;Windows workload support&lt;/li&gt;
&lt;li&gt;Kubernetes integration&lt;/li&gt;
&lt;li&gt;AI infrastructure management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Moving a VM solves a migration problem.&lt;/p&gt;

&lt;p&gt;Operating the next infrastructure platform solves a much larger one.&lt;/p&gt;

&lt;p&gt;That's why we're building Zyvor as an infrastructure platform rather than only a VM conversion utility.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why open infrastructure?
&lt;/h2&gt;

&lt;p&gt;We believe the next generation of enterprise infrastructure will increasingly be built around open technologies such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linux&lt;/li&gt;
&lt;li&gt;KVM&lt;/li&gt;
&lt;li&gt;Kubernetes&lt;/li&gt;
&lt;li&gt;KubeVirt&lt;/li&gt;
&lt;li&gt;libvirt&lt;/li&gt;
&lt;li&gt;eBPF&lt;/li&gt;
&lt;li&gt;Cilium&lt;/li&gt;
&lt;li&gt;Containers&lt;/li&gt;
&lt;li&gt;Open APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are already powerful building blocks.&lt;/p&gt;

&lt;p&gt;The opportunity is making them easier to deploy, integrate, migrate to, and operate as one coherent infrastructure environment.&lt;/p&gt;

&lt;p&gt;That's what we're working on at &lt;strong&gt;Zyvor AI Labs&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we'll publish on DEV
&lt;/h2&gt;

&lt;p&gt;This will not just be a product announcement channel.&lt;/p&gt;

&lt;p&gt;We'll share technical engineering content covering topics such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VMware to KVM migration&lt;/li&gt;
&lt;li&gt;Windows VM migration&lt;/li&gt;
&lt;li&gt;KubeVirt&lt;/li&gt;
&lt;li&gt;Kubernetes infrastructure&lt;/li&gt;
&lt;li&gt;KVM and libvirt&lt;/li&gt;
&lt;li&gt;eBPF&lt;/li&gt;
&lt;li&gt;Cilium and Hubble&lt;/li&gt;
&lt;li&gt;Offline VM inspection&lt;/li&gt;
&lt;li&gt;Boot troubleshooting&lt;/li&gt;
&lt;li&gt;Infrastructure automation&lt;/li&gt;
&lt;li&gt;Network intelligence&lt;/li&gt;
&lt;li&gt;AI infrastructure&lt;/li&gt;
&lt;li&gt;Architecture deep dives&lt;/li&gt;
&lt;li&gt;Lessons learned while building HyperSDK&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're working on virtualization modernization, VMware migration, Kubernetes infrastructure, or open infrastructure, we'd love to hear about the problems you're running into.&lt;/p&gt;

&lt;p&gt;What part of the post-VMware infrastructure stack do you think still needs the most work?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explore Zyvor AI Labs:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://zyvor.dev" rel="noopener noreferrer"&gt;https://zyvor.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HyperSDK:&lt;/strong&gt; Open infrastructure for migration, virtualization, Kubernetes, networking, automation, and AI infrastructure.&lt;/p&gt;

</description>
      <category>virtualization</category>
      <category>kubernetes</category>
      <category>devops</category>
      <category>opensource</category>
    </item>
    <item>
      <title>api-routerd</title>
      <dc:creator>Susant Sahani</dc:creator>
      <pubDate>Mon, 24 Dec 2018 21:31:00 +0000</pubDate>
      <link>https://dev.to/ssahani/api-routerd-4694</link>
      <guid>https://dev.to/ssahani/api-routerd-4694</guid>
      <description>&lt;p&gt;bit.ly/2Rexr4r&lt;/p&gt;

</description>
      <category>linux</category>
      <category>systemd</category>
      <category>remotemanagement</category>
      <category>restapi</category>
    </item>
    <item>
      <title>systemd-netlogd</title>
      <dc:creator>Susant Sahani</dc:creator>
      <pubDate>Tue, 06 Nov 2018 18:49:51 +0000</pubDate>
      <link>https://dev.to/ssahani/systemd-netlogd-26fp</link>
      <guid>https://dev.to/ssahani/systemd-netlogd-26fp</guid>
      <description>

</description>
    </item>
    <item>
      <title>Ansible systemd</title>
      <dc:creator>Susant Sahani</dc:creator>
      <pubDate>Tue, 06 Nov 2018 18:45:58 +0000</pubDate>
      <link>https://dev.to/ssahani/ansible-networkd--4jlm</link>
      <guid>https://dev.to/ssahani/ansible-networkd--4jlm</guid>
      <description></description>
    </item>
  </channel>
</rss>
