Node-networking configuration driven by Kubernetes and executed by nmstate.
Project page kubernetes-nmstate
NodeNetworkState
objects are created per each node in the cluster and can be
used to report available interfaces and network configuration. These objects
are created by kubernetes-nmstate and must not be touched by a user.
Example of NodeNetworkState
listing network configuration of node01, the full
object can be found at Node Network State tutorial:
apiVersion: nmstate.io/v1alpha1
kind: NodeNetworkState
metadata:
name: node01
status:
currentState:
interfaces:
- name: eth0
type: ethernet
state: up
mac-address: 52:55:00:D1:55:01
mtu: 1500
ipv4:
address:
- ip: 192.168.66.101
prefix-length: 24
dhcp: true
enabled: true
...
NodeNetworkConfigurationPolicy
objects can be used to specify desired
networking state per node or set of nodes. It uses API similar to
NodeNetworkState
.
Example of a NodeNetworkConfigurationPolicy
creating Linux bond bond1
using
ens8
and ens9
as slaves in all the nodes in the cluster:
apiVersion: nmstate.io/v1alpha1
kind: NodeNetworkConfigurationPolicy
metadata:
name: bond1
spec:
desiredState:
interfaces:
- name: bond1
type: bond
ipv4:
auto-dns: false
auto-gateway: false
auto-routes: false
dhcp: true
enabled: true
state: up
link-aggregation:
mode: balance-rr
options:
miimon: '140'
slaves:
- ens8
- ens9
To deploy kubernetes-nmstate use the ./deploy.sh
script in this folder.
For testing you can use the ./testing.sh
script in this folder.
The test will create a bond interface with the name bond1
and attach ens8
and ens9
as the slave interfaces.
Note: You can change the bond name and the slave interface names by editing the myenv.file
file.
10: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
inet 192.X.X.100/24 brd 192.X.X.255 scope global noprefixroute bond1
valid_lft forever preferred_lft forever
11: bond1.20@bond1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
inet 192.X.Y.100/24 brd 192.X.Y.255 scope global noprefixroute bond1.20
valid_lft forever preferred_lft forever
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 140
Up Delay (ms): 0
Down Delay (ms):
Slave Interface: enp3s0f2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: XX:XX:XX:XX:XX:XX
Slave queue ID: 0
Slave Interface: enp3s0f3
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: XX:XX:XX:XX:XX:XX
Slave queue ID: 0