All notable changes to this project will be documented in this file.
- Support overlay (vxlan) network
- Support hybrid overlay/underlay container network
- Full support for ipv4/ipv6 dual-stack
- Node need only one physical nic if container network is in the same vlan with node network
- Non-zero-netId subnet and zero-netId subnet can be on the same node
- Webhook configuration can be managed by an independent yaml
- Use default-ip-retain global flag and ip-retain pod annotation to reallocate/retain IP
- Remove overlay logs for underlay-only mode
- Fix error of using prefer interfaces list
- Fix timeout error of pod creation on large scale
- Add checks for pod using the same subnet with node
- Support setting linux kernel neigh gc thresh parameters
- Only choose vtep and node ip as node internal overlay container networking ip, support extra selection
- Remove duplicated routes
- Adapt to underlay physical environment with arp sender ip check
- Add prechecking for check pod network configuration, if not ready, pod will not be created successfully
- Fix error data path for overlay pod to access underlay gateway and excluded ip addresses
- Clear stale neigh entries for overlay network
- Change project name to "hybridnet", which is completely forward-compatible
- Network type will be auto selected while pod has a specified network
- Fix wrong masquerading for remote pod to access local pod (update daemon image and rebuild pod will take effect)
- Fix daemon iptables-restore execute error on CentOS 8
- Support multicluster feature, which can connect the network between the two clusters (pod ip only)
- Recycle IP instances for Completed or Evicted pods
- Use controller-gen to generate crd ini yaml file
- Fix masquerade error sometimes overlay pod access to underlay pod
- Fix high CPU cost of hybridnet daemon in large scale cluster
- Fix wrong underlay pod scheduling if not all the nodes belong to an underlay network while an overlay network exists
- Detect OS parameters for disabling IPv6-related operations
- Disallow unexpected CIDR notation in APIs
- Avoid permanent exit of arp proxy on large-scale clusters
- Short-circuit terminating pods before enqueuing in manager controller
- Fix ipv6 address range calculation error
- Fix nil point dereference error while creating a vlan interface
- Introduce flag
enable-vlan-arp-enhancement
to disable setting enhanced addresses by default
- Prevent enhanced addresses from source selection
- Support BGP mode for an Underlay type Network
- Support specifying namespace with network/subnet/network-type/ip-family
- Introduce Felix for NetworkPolicy
- Refactor daemon/manager/webhook with controller-runtime
- Deny the creation of /32 or /128 Subnets in webhook
- Only IPv4 feature valid if DualStack feature-gate is false
- Specify subnet without a specified Network
- Gateway field becomes optional for VXLAN/BGP Subnets
- Fix specifying subnets error for DualStack pod
- Fix updating failure of nodes' vxlan fdb for a new node
- Adjust client QPS and Burst configuration of manager
- Mute useless logs of manager
- Fix "file exists" error while creating pod
- Fix creating ip-retained sts pod error when it is recreated and rescheduled to another node
- Introduce flag
enable-vlan-arp-enhancement
for daemon to enable/disable enhanced addresses - Introduce
DEFAULT_IP_FAMILY
environment variable on dual-stack mode - Skip webhook validation on host-networking pods
- Introduce
vtep-address-cidrs
flag for daemon to help select vtep address
- Fix daemon policy container init error on ipv6-only node
- Node annotation changed should trigger the reconcile of daemon Node controller
- Fix "to overlay subnet route table 40000 is used by others" error of daemon. It happens if an ipv6 subnet with excluded ip ranges is created
- Fix daemon update dual-stack IPInstance status error
- Fix the error that arp enhanced addresses will be taken as source IP address by mistake
- Fix the error that deprecated bgp rules and routes are not cleaned
- Fix the error that nodes get "empty" quota while the Underlay Network still have available addresses to allocate
- Fix daemon policy container exit with ip6tables-legacy-save error
- Change IPInstance APIs and optimize IP allocation performance of manager
- Introduce GlobalBGP type Network
- Bump controller-runtime from v0.8.3 to v0.9.7
- Fix address duplication error while active-standby switch of manager pods happens
- Remove DualStack feature gate and make it built in
- Support to retain ip for kubevirt VMs
- Bump golang from v1.16 to v1.17
- Add limitations for creating overlapped subnets
- Disable the automatic iptables mode detection of felix
- Print statistics for Network CR
- Remove conversion process from IPInstance v1.1 to v1.2
- Support global service when MultiCluster feature is enabled
- Support specifying MAC addresses for stateful workloads
- Remove
onlink
flag of the default route in pods to adapt to Kata - Change the
failurePolicy
of hybridnet pod mutating/validating webhook configuration toIgnore
, to reduce the risk caused by hybridnet webhook - Make cni conf configurable on nodes
- Ensure routes of
169.254.1.1
on host if it's unreachable, to make sureproxy_arp
can work - Refine integration test cases for manager
- Improve the format of daemon logs
- Fix kube-proxy nodeport datapath error, this happens usually if the endpoints are underlay VLAN pod (Network jitters of nodeport traffic might happen during the upgrade for old versions)
- Fix the scheduling problem of ip-retained VM pods
- Fix daemon bug to allow to create dualstack pod with different v4/v6 vlan id
- Fix the error that underlay ip-retained pods will keep being Pending after they are deleted and recreated, if the underlay addresses run out
- Remove all the
onlink
route flag usages to avoid ipv6 kernel bugs
- Support modifying ipv6 route GC sysctl parameters by daemon (#326)
- Enable RecoverPanic to handle unexpected panics and avoid unnecessary restarts (#323)
- Ensure felix ready before start pod (#327)
- Introduce typha for large scale (#333)
- List/watch NodeInfo CR objects instead of Node objects in daemon to reduce communication load (#323)
- Add scripts to clean felix iptables rules automatically while policy is disabled (#330 #333)
- Fix issue of manager getting stuck in processing subnet which starts with IP like 0.X.X.X (#342)
- Fix the access error of NodePort while the externalTrafficPolicy is "Local" (#343)
- Handle possible cache sync failure for manager (#338)
- Fix capacity calculation error of
0.X.X.X
subnets (#348 ) - Fix invalid validation of vlan id in daemon (#352 )
- Fix retained ip pods' suddenlly getting stuck in
Terminating
if their owner referrence is removed (#353 ) - Skip unscheduled pods in pod reconciliation in manager (#354 )
- Switch package
ioutil
toos
because of deprecation (#349 )
- Fix ipv6 subnet capacity calculation error because of int64 overflow. (#366 )
- Fix felix crash because of cni-daemon's executing ipset frequently. (#364 )
- Reserve ips for evicted and completed ip-retained pod. (#365 )
- Check
accept_ra
sysctl before enableipv6.forwarding
. (#367 )
- Support multiple bgp peers for bgp network. (#370 )
- Make unestablished BGP peers' blocking Pod creation can be optional. (#370 )
- Update gobgp to v3.11.0 and golang to 1.9.
- Add
pkg/client
to release tag.
- Skip local vtep when generate vxlan fdb entry. (#373)
- Add underlay network nodes conflict validation in webhook. (#377)
- Allow no routable bgp peer exists for a BGP Network and inherit node default route in such cases. (#378)
- Drop possible endless VLAN underlay traffic to avoid route loop. (#379)
- Allow Pod names to be over 63 characters length. (#385)
- Make hybridnet support chained plugins. (#384)
- Add created host interface into CNI result for chained plugins like bandwidth. (#388)
- Fix nil pointer error which might happen in daemon during initializiation. (#391)
- Fix the error that ipv6 "local underlay net" ipset name is longer than 31 characters. (#391)
- Fix nil pointer error which might happen in daemon during initializiation. (#391)
- Fix the error that ipv6 "local underlay net" ipset name is longer than 31 characters. (#391)
- Forbid flooing for unicast dst mac address in vxlan network. (#397)
- Only reserve ip instance after pod terminated. (#403)
- Introduce
--update-ipinstance-status
flag for daemon to enable/disable daemon's patching IPInstance CR status while creating pod. (#402)
- Avoid waiting containers block stateful pods' deletion. (#407)
- Support
--pod-label-selector
flag to only handle selected pods