diff --git a/.github/workflows/deploy-github-pages.yml b/.github/workflows/deploy-github-pages.yml index 159399d..d46e17e 100644 --- a/.github/workflows/deploy-github-pages.yml +++ b/.github/workflows/deploy-github-pages.yml @@ -49,6 +49,13 @@ jobs: hugo-version: '0.125.5' extended: true + - uses: actions/setup-node@v4 + with: + node-version: '16' + check-latest: true + + - run: npm ci + - run: hugo --baseURL https://${REPO_OWNER}.github.io/${REPO_NAME} --minify working-directory: ./site diff --git a/site/content/_index.md b/site/content/_index.md index 73e0269..9b92685 100644 --- a/site/content/_index.md +++ b/site/content/_index.md @@ -1,37 +1,13 @@ --- -title: dranet +title: DraNet --- -DRANET is a Kubernetes Network Driver that uses Dynamic Resource Allocation (DRA) to deliver high-performance networking for demanding applications in Kubernetes. - -## Key Features - -- **DRA Integration:** Leverages the power of Kubernetes' Dynamic Resource Allocation. -- **High-Performance Networking:** Designed for demanding workloads like AI/ML applications. -- **Simplified Management:** Easy to deploy and manage. -- **Enhanced Efficiency:** Optimizes resource utilization for improved overall performance. -- **Cluster-Wide Scalability:** Effectively manages network resources across a large number of nodes for seamless operation in Kubernetes deployments. - -## How It Works - -The networking DRA driver uses GRPC to communicate with the Kubelet via the [DRA API](https://github.com/kubernetes/kubernetes/blob/3bec2450efd29787df0f27415de4e8049979654f/staging/src/k8s.io/kubelet/pkg/apis/dra/v1beta1/api.proto) and the Container Runtime via [NRI](https://github.com/containerd/nri). This architecture facilitates the supportability and reduces the complexity of the solution, it also makes it fully compatible and agnostic of the existing CNI plugins in the cluster. - -The DRA driver, once the Pod network namespaces has been created, will receive a GRPC call from the Container Runtime via NRI to execute the corresponding configuration. A more detailed diagram can be found in: - -[![](https://mermaid.ink/img/pako:eNp9UstuwyAQ_JUVp1ZNfoBDpMi-WFXdyLn6gs0mQTXgLtCHovx714nTWoobDgiW2dlhNEfReo1CioDvCV2LuVF7UrZ2wEul6F2yDdLl_pwa7DAul6vVU4nx09Mb5NUacjIfSBJK5toQ9oqwwuATtRgeHi-9pY8InmEw1_naRGUcxAPCtTPrlLF8Y10hgnIaMu92Zj_S3ZAMqpajwvtSrt_gXzDlMBhJS6iS23i95UmN_7pi_wADf1YWEniDdZ6P72VxfpjwMEmxCXPts55VBRy8f5sff981xoMb605ZDL1qGd4jqWi8C_esmiqGG7FTK2eF_eNhRqgi_lbCjI1T6lu4WAiLZJXRHMrj0FwLToXFWkg-atyp1MVa1O7E0CGg22_XChkp4UKkXjPfmGEhd6oLXEVtoqeXS9DPeT_9ABUC_8M?type=png)](https://mermaid.live/edit#pako:eNp9UstuwyAQ_JUVp1ZNfoBDpMi-WFXdyLn6gs0mQTXgLtCHovx714nTWoobDgiW2dlhNEfReo1CioDvCV2LuVF7UrZ2wEul6F2yDdLl_pwa7DAul6vVU4nx09Mb5NUacjIfSBJK5toQ9oqwwuATtRgeHi-9pY8InmEw1_naRGUcxAPCtTPrlLF8Y10hgnIaMu92Zj_S3ZAMqpajwvtSrt_gXzDlMBhJS6iS23i95UmN_7pi_wADf1YWEniDdZ6P72VxfpjwMEmxCXPts55VBRy8f5sff981xoMb605ZDL1qGd4jqWi8C_esmiqGG7FTK2eF_eNhRqgi_lbCjI1T6lu4WAiLZJXRHMrj0FwLToXFWkg-atyp1MVa1O7E0CGg22_XChkp4UKkXjPfmGEhd6oLXEVtoqeXS9DPeT_9ABUC_8M) - -## References - -- [KEP 3063 - Dynamic Resource Allocation #306](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/3063-dynamic-resource-allocation/README.md) -- [KEP 3695 - DRA: structured parameters #438](https://github.com/kubernetes/enhancements/issues/4381) -- [Extend PodResources to include resources from Dynamic Resource Allocation (DRA)](https://github.com/kubernetes/enhancements/issues/3695) -- [Working Group Device Management](https://github.com/kubernetes-sigs/wg-device-management) -- [Kubernetes Network Drivers, Antonio Ojea, Presentation](https://docs.google.com/presentation/d/1Vdr7BhbYXeWjwmLjGmqnUkvJr_eOUdU0x-JxfXWxUT8/edit?usp=sharing) -- [The Future of Kubernetes Networking - Antonio Ojea, Googe & Dan Winship, Red Hat - Kubernetes Contributor Summit EU 2024](https://sched.co/1aOqO) -- [Better Together! GPU, TPU and NIC Topological Alignment with DRA - John Belamaric, Google & Patrick Ohly, Intel - Kubecon US 2024](https://sched.co/1i7pv) - -## Disclaimer - -This is not an officially supported Google product. This project is not -eligible for the [Google Open Source Software Vulnerability Rewards -Program](https://bughunters.google.com/open-source-security). \ No newline at end of file +{{< blocks/cover title="Welcome to DraNet" image_anchor="top" height="full" >}} + + Learn More + + + Download + +

A Kubernetes Network Driver!

+{{< /blocks/cover >}} \ No newline at end of file diff --git a/site/content/contributing/about.md b/site/content/contributing/about.md deleted file mode 100644 index 463b20a..0000000 --- a/site/content/contributing/about.md +++ /dev/null @@ -1,5 +0,0 @@ -+++ -date = '2024-12-18T11:26:50Z' -draft = true -title = 'About' -+++ diff --git a/site/content/docs/_index.md b/site/content/docs/_index.md new file mode 100644 index 0000000..c0c6254 --- /dev/null +++ b/site/content/docs/_index.md @@ -0,0 +1,21 @@ +--- +title: dranet +weight: 1150 + +--- + +DRANET is a Kubernetes Network Driver that uses Dynamic Resource Allocation (DRA) to deliver high-performance networking for demanding applications in Kubernetes. + +## Key Features + +- **DRA Integration:** Leverages the power of Kubernetes' Dynamic Resource Allocation. +- **High-Performance Networking:** Designed for demanding workloads like AI/ML applications. +- **Simplified Management:** Easy to deploy and manage. +- **Enhanced Efficiency:** Optimizes resource utilization for improved overall performance. +- **Cluster-Wide Scalability:** Effectively manages network resources across a large number of nodes for seamless operation in Kubernetes deployments. + +## Disclaimer + +This is not an officially supported Google product. This project is not +eligible for the [Google Open Source Software Vulnerability Rewards +Program](https://bughunters.google.com/open-source-security). \ No newline at end of file diff --git a/site/content/docs/contributing/_index.md b/site/content/docs/contributing/_index.md new file mode 100644 index 0000000..b603cd5 --- /dev/null +++ b/site/content/docs/contributing/_index.md @@ -0,0 +1,4 @@ +--- +title: Contributing +weight: 4 +--- diff --git a/site/content/docs/contributing/contributing.md b/site/content/docs/contributing/contributing.md new file mode 100644 index 0000000..367a8e2 --- /dev/null +++ b/site/content/docs/contributing/contributing.md @@ -0,0 +1,35 @@ +--- +title: "Contributing" +date: 2024-12-19T11:30:40Z +--- + +We would love to accept your patches and contributions to this project. + +## Before you begin + +### Sign our Contributor License Agreement + +Contributions to this project must be accompanied by a +[Contributor License Agreement](https://cla.developers.google.com/about) (CLA). +You (or your employer) retain the copyright to your contribution; this simply +gives us permission to use and redistribute your contributions as part of the +project. + +If you or your current employer have already signed the Google CLA (even if it +was for a different project), you probably don't need to do it again. + +Visit to see your current agreements or to +sign a new one. + +### Review our Community Guidelines + +This project follows [Google's Open Source Community +Guidelines](https://opensource.google/conduct/). + +## Contribution process + +### Code Reviews + +All submissions, including submissions by project members, require review. We +use [GitHub pull requests](https://docs.github.com/articles/about-pull-requests) +for this purpose. diff --git a/site/content/docs/design/_index.md b/site/content/docs/design/_index.md new file mode 100644 index 0000000..bca1ab3 --- /dev/null +++ b/site/content/docs/design/_index.md @@ -0,0 +1,4 @@ +--- +title: Design +weight: 3 +--- diff --git a/site/content/docs/design/howitworks.md b/site/content/docs/design/howitworks.md new file mode 100644 index 0000000..a57f7ee --- /dev/null +++ b/site/content/docs/design/howitworks.md @@ -0,0 +1,10 @@ +--- +title: "How It Works" +date: 2024-12-19T11:20:46Z +--- + +The networking DRA driver uses GRPC to communicate with the Kubelet via the [DRA API](https://github.com/kubernetes/kubernetes/blob/3bec2450efd29787df0f27415de4e8049979654f/staging/src/k8s.io/kubelet/pkg/apis/dra/v1beta1/api.proto) and the Container Runtime via [NRI](https://github.com/containerd/nri). This architecture facilitates the supportability and reduces the complexity of the solution, it also makes it fully compatible and agnostic of the existing CNI plugins in the cluster. + +The DRA driver, once the Pod network namespaces has been created, will receive a GRPC call from the Container Runtime via NRI to execute the corresponding configuration. A more detailed diagram can be found in: + +[![](https://mermaid.ink/img/pako:eNp9UstuwyAQ_JUVp1ZNfoBDpMi-WFXdyLn6gs0mQTXgLtCHovx714nTWoobDgiW2dlhNEfReo1CioDvCV2LuVF7UrZ2wEul6F2yDdLl_pwa7DAul6vVU4nx09Mb5NUacjIfSBJK5toQ9oqwwuATtRgeHi-9pY8InmEw1_naRGUcxAPCtTPrlLF8Y10hgnIaMu92Zj_S3ZAMqpajwvtSrt_gXzDlMBhJS6iS23i95UmN_7pi_wADf1YWEniDdZ6P72VxfpjwMEmxCXPts55VBRy8f5sff981xoMb605ZDL1qGd4jqWi8C_esmiqGG7FTK2eF_eNhRqgi_lbCjI1T6lu4WAiLZJXRHMrj0FwLToXFWkg-atyp1MVa1O7E0CGg22_XChkp4UKkXjPfmGEhd6oLXEVtoqeXS9DPeT_9ABUC_8M?type=png)](https://mermaid.live/edit#pako:eNp9UstuwyAQ_JUVp1ZNfoBDpMi-WFXdyLn6gs0mQTXgLtCHovx714nTWoobDgiW2dlhNEfReo1CioDvCV2LuVF7UrZ2wEul6F2yDdLl_pwa7DAul6vVU4nx09Mb5NUacjIfSBJK5toQ9oqwwuATtRgeHi-9pY8InmEw1_naRGUcxAPCtTPrlLF8Y10hgnIaMu92Zj_S3ZAMqpajwvtSrt_gXzDlMBhJS6iS23i95UmN_7pi_wADf1YWEniDdZ6P72VxfpjwMEmxCXPts55VBRy8f5sff981xoMb605ZDL1qGd4jqWi8C_esmiqGG7FTK2eF_eNhRqgi_lbCjI1T6lu4WAiLZJXRHMrj0FwLToXFWkg-atyp1MVa1O7E0CGg22_XChkp4UKkXjPfmGEhd6oLXEVtoqeXS9DPeT_9ABUC_8M) \ No newline at end of file diff --git a/site/content/docs/design/references.md b/site/content/docs/design/references.md new file mode 100644 index 0000000..38828eb --- /dev/null +++ b/site/content/docs/design/references.md @@ -0,0 +1,12 @@ +--- +title: "References" +date: 2024-12-19T11:20:46Z +--- + +- [KEP 3063 - Dynamic Resource Allocation #306](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/3063-dynamic-resource-allocation/README.md) +- [KEP 3695 - DRA: structured parameters #438](https://github.com/kubernetes/enhancements/issues/4381) +- [Extend PodResources to include resources from Dynamic Resource Allocation (DRA)](https://github.com/kubernetes/enhancements/issues/3695) +- [Working Group Device Management](https://github.com/kubernetes-sigs/wg-device-management) +- [Kubernetes Network Drivers, Antonio Ojea, Presentation](https://docs.google.com/presentation/d/1Vdr7BhbYXeWjwmLjGmqnUkvJr_eOUdU0x-JxfXWxUT8/edit?usp=sharing) +- [The Future of Kubernetes Networking - Antonio Ojea, Googe & Dan Winship, Red Hat - Kubernetes Contributor Summit EU 2024](https://sched.co/1aOqO) +- [Better Together! GPU, TPU and NIC Topological Alignment with DRA - John Belamaric, Google & Patrick Ohly, Intel - Kubecon US 2024](https://sched.co/1i7pv) \ No newline at end of file diff --git a/site/content/user/quick-start.md b/site/content/docs/quick-start.md similarity index 98% rename from site/content/user/quick-start.md rename to site/content/docs/quick-start.md index 27f703f..07fac2d 100644 --- a/site/content/user/quick-start.md +++ b/site/content/docs/quick-start.md @@ -1,13 +1,14 @@ --- title: "Quick Start" date: 2024-12-17T14:47:05Z +weight: 1 --- DRANET depends on the Kubernetes feature [Dynamic Resource Allocation (DRA)](https://kubernetes.io/docs/concepts/scheduling-eviction/dynamic-resource-allocation/), that is beta (disabled by default in v1.32). In order to enable DRA you need to enable both the [feature gates and the API groups](https://kubernetes.io/docs/concepts/scheduling-eviction/dynamic-resource-allocation/#enabling-dynamic-resource-allocation). -## Create a Kubernetes Cluster +## Kubernetes cluster with DRA ### KIND @@ -88,7 +89,7 @@ kubectl get --raw /metrics | grep kubernetes_feature_enabled | grep DynamicResou kubernetes_feature_enabled{name="DynamicResourceAllocation",stage="BETA"} 1 ``` -## Install DRANET +### Installation You can install the latest stable version using the provided manifest: @@ -96,7 +97,7 @@ You can install the latest stable version using the provided manifest: kubectl apply -f https://raw.githubusercontent.com/google/dranet/refs/heads/main/install.yaml ``` -## How to use it +### How to use it Once the Kubernetes Network Driver is running you can see the list of Network Interfaces and its attributes published by the drivers: @@ -297,7 +298,7 @@ spec: resourceClaimName: cloud-network-dra-net-3 ``` -Kubernets schedules the `Pod` to the corresponding `Node` and attach the network interface to the `Pod`: +Kubernetes schedules the `Pod` to the corresponding `Node` and attach the network interface to the `Pod`: ```sh kubectl get pods -o wide diff --git a/site/content/docs/user/_index.md b/site/content/docs/user/_index.md new file mode 100644 index 0000000..94906e2 --- /dev/null +++ b/site/content/docs/user/_index.md @@ -0,0 +1,4 @@ +--- +title: User Guides +weight: 2 +--- diff --git a/site/content/docs/user/contributing.md b/site/content/docs/user/contributing.md new file mode 100644 index 0000000..7d5d132 --- /dev/null +++ b/site/content/docs/user/contributing.md @@ -0,0 +1,6 @@ +--- +title: "Attach Network Interfaces" +date: 2024-12-19T11:30:40Z +draft: true +--- + diff --git a/site/content/featured-background.jpg b/site/content/featured-background.jpg new file mode 100644 index 0000000..a4b5abf Binary files /dev/null and b/site/content/featured-background.jpg differ diff --git a/site/hugo.toml b/site/hugo.toml index e2b7f43..a09d776 100644 --- a/site/hugo.toml +++ b/site/hugo.toml @@ -5,11 +5,7 @@ languageCode = "en-us" # we use this to disable indexing for the non-production build enableRobotsTXT = true -# this allows us to show the source commit in the footer -enableGitInfo = true - -# we don't use these currently -disableKinds = ["taxonomy", "taxonomyTerm"] +contentDir = "content" # syntax highlighting options [markup] @@ -35,30 +31,96 @@ sectionPagesMenu = "main" identifier = "home" name = "Home" title = "Home" -url = "/" +url = "/docs" weight = 1 [[menu.main]] identifier = "user" -name = "User Guide" -title = "User Guide" +url = "/docs/user" +name = "User Guides" +title = "User Guides" weight = 2 [[menu.main]] identifier = "design" +url = "/docs/design" name = "Design" title = "Design" weight = 5 [[menu.main]] identifier = "contributing" +url = "/docs/contributing" name = "Contributing" -title = "contributing" +title = "Contributing" weight = 6 - [outputs] home = ["HTML"] [params] -stable = "v0.25.0" +privacy_policy = "https://policies.google.com/privacy" + +# First one is picked as the Twitter card image if not set on page. +# images = ["images/project-illustration.png"] + +# Repository configuration (URLs for in-page links to opening issues and suggesting changes) +github_repo = "https://github.com/google/dranet" + +# Specify a value here if your content directory is not in your repo's root directory +github_subdir = "site" + +# Uncomment this if your GitHub repo does not have "main" as the default branch, +# or specify a new value if you want to reference another branch in your GitHub links +github_branch= "main" + +# Google Custom Search Engine ID. Remove or comment out to disable search. +gcs_engine_id = "d72aa9b2712488cc3" + +# Enable Lunr.js offline search +offlineSearch = false + +# Enable syntax highlighting and copy buttons on code blocks with Prism +prism_syntax_highlighting = false + +[params.copyright] + authors = "Google LLC | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | " + from_year = 2024 + +# User interface configuration +[params.ui] +# Set to true to disable breadcrumb navigation. +breadcrumb_disable = false +# Set to false if you don't want to display a logo (/assets/icons/logo.svg) in the top navbar +navbar_logo = false +# Set to true if you don't want the top navbar to be translucent when over a `block/cover`, like on the homepage. +navbar_translucent_over_cover_disable = false +# Enable to show the side bar menu in its compact state. +sidebar_menu_compact = false +# Set to true to hide the sidebar search box (the top nav search box will still be displayed if search is enabled) +sidebar_search_disable = false + +# Adds a reading time to the top of each doc. +# If you want this feature, but occasionally need to remove the Reading time from a single page, +# add "hide_readingtime: true" to the page's front matter +[params.ui.readingtime] +enable = false + +[params.links] +# End user relevant links. These will show up on left side of footer and in the community page if you have one. +[[params.links.user]] + name = "SIG Network mailing list" + url = "https://groups.google.com/forum/#!forum/kubernetes-sig-network" + icon = "fa fa-envelope" + desc = "Discussion and help from your fellow users" +[[params.links.developer]] + name = "GitHub" + url = "https://github.com/google/dranet" + icon = "fab fa-github" + desc = "Development takes place here!" +[[params.links.developer]] + name = "Slack" + url = "https://kubernetes.slack.com/messages/sig-network" + icon = "fab fa-slack" + desc = "Chat with other project developers" + # privacy settings [privacy] @@ -68,4 +130,4 @@ privacyEnhanced = true [module] [[module.imports]] -path = 'github.com/thingsym/hugo-theme-techdoc' \ No newline at end of file +path = 'github.com/google/docsy' \ No newline at end of file