Home

Awesome

<!-- markdownlint-disable MD033 --> <h1> <img src="https://github.com/sighupio/fury-distribution/blob/main/docs/assets/fury-epta-white.png?raw=true" align="left" width="90" style="margin-right: 15px"/> Kubernetes Fury Networking </h1> <!-- markdownlint-enable MD033 -->

Release License Slack

<!-- <KFD-DOCS> -->

Kubernetes Fury Networking implements in-cluster networking functionality for the Kubernetes Fury Distribution (KFD) via Container Network Interface (CNI) plugins.

If you are new to KFD please refer to the official documentation on how to get started with KFD.

Overview

Kubernetes has adopted the Container Network Interface (CNI) specification for managing network resources on a cluster.

Kubernetes Fury Networking makes use of CNCF recommended Project Calico, open-source networking and network security solution for containers, virtual machines, and bare-metal workloads, to bring networking features to the Kubernetes Fury Distribution.

Calico deployment consists of a daemon set running on every node (including control-plane nodes) and a controller.

Packages

Kubernetes Fury Networking provides the following packages:

PackageVersionDescription
calico3.27.3Calico CNI Plugin. For cluster with < 50 nodes.
cilium1.15.2Cilium CNI Plugin. For cluster with < 200 nodes.
tigera1.32.7Tigera Operator, a Kubernetes Operator for Calico, provides pre-configured installations for on-prem and for EKS in policy-only mode.
ip-masq2.8.0The ip-masq-agent configures iptables rules to implement IP masquerading functionality

The resources in these packages are going to be deployed in kube-system namespace. Except for the operator.

Click on each package to see its full documentation.

Compatibility

Kubernetes VersionCompatibilityNotes
1.26.x:white_check_mark:No known issues
1.27.x:white_check_mark:No known issues
1.28.x:white_check_mark:No known issues
1.29.x:white_check_mark:No known issues

Check the compatibility matrix for additional information on previous releases of the module.

Usage

Prerequisites

ToolVersionDescription
furyctl>=0.6.0The recommended tool to download and manage KFD modules and their packages. To learn more about furyctl read the official documentation.
kustomize=3.5.3Packages are customized using kustomize. To learn how to create your customization layer with kustomize, please refer to their repository.

Deployment

⚠️ Please notice that the Calico packages is for cluster with less the 50 nodes. If your cluster has more than 50 nodes, you'll need to switch to Calico + Typha or to the Tigera Operator.

  1. List the packages you want to deploy and their version in a Furyfile.yml
bases:
  - name: networking
    version: "v1.17.0"

See furyctl documentation for additional details about Furyfile.yml format.

  1. Execute furyctl vendor -H to download the packages

  2. Inspect the download packages under ./vendor/katalog/networking.

  3. Define a kustomization.yaml that includes the ./vendor/katalog/networking directory as a resource.

resources:
  - ./vendor/katalog/networking/calico

Or if you want to use Cilium:

resources:
  - ./vendor/katalog/networking/cilium
  1. To deploy the packages to your cluster, execute:
kustomize build . | kubectl apply -f -

Monitoring

The Networking module includes out-of-the-box metrics monitoring and alerting features for its components.

You can monitor the status of the networking stack from the provided Grafana dashboards:

<!-- markdownlint-disable MD033 -->

<a href="docs/images/screenshots/calico-felix-dashboard.png"><img src="docs/images/screenshots/calico-felix-dashboard.png" width="250"/></a> <a href="docs/images/screenshots/calico-typha-dashboard.png"><img src="docs/images/screenshots/calico-typha-dashboard.png" width="250"/></a>

<!-- markdownlint-enable MD033 -->

click on each screenshot for the full screen version

The following set of alerts is included with the networking module:

Alert NameSummaryDescription
CalicoDataplaneFailuresHighA high number of dataplane failures within Felix are happeningCalico node pod {{ $labels.pod }} ({{ $labels.instance }}) has seen {{ $value }} dataplane failures within the last hour
CalicoIpsetErrorsHighA high number of ipset errors within Felix are happeningCalico node pod {{ $labels.pod }} ({{ $labels.instance }}) has seen {{ $value }} ipset errors within the last hour
CalicoIptableSaveErrorsHighA high number of iptable save errors within Felix are happeningCalico node pod {{ $labels.pod }} ({{ $labels.instance }}) has seen {{ $value }} iptable save errors within the last hour
CalicoIptableRestoreErrorsHighA high number of iptable restore errors within Felix are happeningCalico node pod {{ $labels.pod }} ({{ $labels.instance }}) has seen {{ $value }} iptable restore errors within the last hour
CalicoErrorsWhileLoggingHighA high number of errors within Felix while loggging are happeningCalico node pod {{ $labels.pod }} ({{ $labels.instance }}) has seen {{ $value }} errors while logging within the last ten minutes
TyphaPingLatencyTypha Round-trip ping latency to client (cluster {{ $labels.cluster }})Typha latency is growing (ping operations > 100ms). VALUE = {{ $value }}. LABELS = {{ $labels }}
TyphaClientWriteLatencyTypha unusual write latency (instance {{ $labels.cluster }})Typha client latency is growing (write operations > 100ms). VALUE = {{ $value }}. LABELS = {{ $labels }}
TyphaErrorsWhileLoggingHighA high number of errors within Typha while loggging are happeningTypha pod {{ $labels.pod }} ({{ $labels.instance }}) has seen {{ $value }} errors while logging within the last ten minutes
<!-- Links --> <!-- </KFD-DOCS> --> <!-- <FOOTER> -->

Contributing

Before contributing, please read first the Contributing Guidelines.

Reporting Issues

In case you experience any problems with the module, please open a new issue.

License

This module is open-source and it's released under the following LICENSE

<!-- </FOOTER> -->