-
Notifications
You must be signed in to change notification settings - Fork 76
Feat(mesh): Requirements #3843
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Feat(mesh): Requirements #3843
Changes from 6 commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
168f787
Create version-compatibility.md
lmilan 1b5abde
draft
lmilan 44001c4
update links
lmilan 6998c06
Update _redirects
lmilan 5502327
Update resource-sizing-guidelines.md
lmilan fa7a1b2
copy edits
lmilan 4b9d885
Apply suggestions from code review
lmilan 9fe06cd
Update Dictionary.txt
lmilan 99cabf0
Merge branch 'feat/mesh-requirements' of https://github.com/Kong/deve…
lmilan File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,96 @@ | ||
| --- | ||
| title: "{{site.mesh_product_name}} resource sizing guidelines" | ||
| description: "Learn about control plane and sidecar container sizing guidelines for {{site.mesh_product_name}}." | ||
| content_type: reference | ||
| layout: reference | ||
| products: | ||
| - mesh | ||
| breadcrumbs: | ||
| - /mesh/ | ||
|
|
||
| tags: | ||
| - performance | ||
|
|
||
| works_on: | ||
| - on-prem | ||
|
|
||
| related_resources: | ||
| - text: "{{site.mesh_product_name}} version support policy" | ||
| url: /mesh/support-policy/ | ||
| - text: Mesh concepts | ||
| url: /mesh/concepts/ | ||
| --- | ||
|
|
||
| ## Sizing your control plane | ||
|
|
||
| Generally, a control plane with 4vCPU and 2GB of memory will be able to accommodate more than 1000 data planes. | ||
|
|
||
| While it's difficult to give a precise number, a good rule of thumb is to assign about 1MB of memory per data plane. | ||
lmilan marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| When it comes to CPUs, {{site.mesh_product_name}} handles parallelism extremely well since its architecture uses a lot of shared nothing go-routines, so more CPUs usually enable quicker propagation of changes. | ||
lmilan marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| However, we highly recommend that you to run your own load tests prior to going to production. | ||
| There are many ways to run workloads and deploy applications, and while we test some of them, you are in the best position to build a realistic benchmark of what you do. | ||
|
|
||
| To see if you may need to increase your control plane's spec, there are two main metrics to pay attention to: | ||
|
|
||
| - Propagation time (`xds_delivery`): This is the time it takes between a change in the mesh and the data plane receiving its updated configuration. Think about it as the reactivity of your mesh. | ||
| - Configuration generation time (`xds_generation`): This is the time it takes for the configuration to be generated. | ||
|
|
||
| For any large mesh using a transparent proxy it's highly recommended to use [reachable services](/mesh/performance-tuning/#reachable-services). | ||
lmilan marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| You can also find tuning configuration in the [fine-tuning](/mesh/performance-tuning/) section of the docs. | ||
lmilan marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ## Sizing your sidecar container on Kubernetes | ||
|
|
||
| When deploying {{site.mesh_product_name}} on Kubernetes, the sidecar is deployed as a separate container, `kuma-sidecar`, in your pods. By default it has the following resource requests and limits: | ||
|
|
||
| ```yaml | ||
| resources: | ||
| requests: | ||
| cpu: 50m | ||
| memory: 64Mi | ||
| limits: | ||
| cpu: 1000m | ||
| memory: 512Mi | ||
| ``` | ||
|
|
||
| This configuration should be enough for most use cases. In some cases, when you can't scale horizontally or your service handles lots of concurrent traffic for example, you may need to change these values. You can do this using the [`ContainerPatch` resource](/mesh/data-plane-kubernetes/#custom-container-configuration). | ||
lmilan marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| For example, you can modify individual parameters under `resources`: | ||
|
|
||
| ```yaml | ||
| apiVersion: kuma.io/v1alpha1 | ||
| kind: ContainerPatch | ||
| metadata: | ||
| name: container-patch-1 | ||
| namespace: {{site.mesh_namespace}} | ||
| spec: | ||
| sidecarPatch: | ||
| - op: add | ||
| path: /resources/requests/cpu | ||
| value: '"1"' | ||
| ``` | ||
|
|
||
| Or you can modify the entire `limits`, `request` or `resources` sections: | ||
|
|
||
| ```yaml | ||
| apiVersion: kuma.io/v1alpha1 | ||
| kind: ContainerPatch | ||
| metadata: | ||
| name: container-patch-1 | ||
| namespace: {{site.mesh_namespace}} | ||
| spec: | ||
| sidecarPatch: | ||
| - op: add | ||
| path: /resources/limits | ||
| value: '{ | ||
| "cpu": "1", | ||
| "memory": "1G" | ||
| }' | ||
| ``` | ||
|
|
||
| Check the [`ContainerPatch` documentation](/mesh/data-plane-kubernetes/#workload-matching) to learn how to apply these resources to specific pods. | ||
|
|
||
| {% tip %} | ||
| **Note**: When changing these resources, remember that they must be described using [Kubernetes resource units](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes) | ||
| {% endtip %} | ||
lmilan marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,83 @@ | ||
| --- | ||
| title: "{{site.mesh_product_name}} version compatibility" | ||
| description: "Learn about the versions of {{site.mesh_product_name}} compatible with specific versions of Kubernetes and Envoy." | ||
| content_type: reference | ||
| layout: reference | ||
lmilan marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| products: | ||
| - mesh | ||
| breadcrumbs: | ||
| - /mesh/ | ||
|
|
||
| tags: | ||
| - compatibility | ||
| works_on: | ||
| - on-prem | ||
|
|
||
| related_resources: | ||
| - text: "{{site.mesh_product_name}} version support policy" | ||
| url: /mesh/support-policy/ | ||
| - text: "{{site.mesh_product_name}} resource sizing guidelines" | ||
| url: /mesh/resource-sizing-guidelines/ | ||
| --- | ||
|
|
||
| {{site.mesh_product_name}} is compatible with different versions of Kubernetes and Envoy. | ||
|
|
||
| ## Kubernetes | ||
|
|
||
| The following table presents the general compatibility of {{site.mesh_product_name}} with specific Kubernetes versions. | ||
|
|
||
| {% version_compatibility_table %} | ||
| product: "{{site.mesh_product_name}}" | ||
| versions: | ||
| - 2.7 | ||
| - 2.8 | ||
| - 2.9 | ||
| - 2.10 | ||
| - 2.11 | ||
| - 2.12 | ||
| - 2.13 | ||
| compatible_product: Kubernetes | ||
| compatible_versions: | ||
| "1.34": [2.13] | ||
| "1.33": [2.13] | ||
| "1.32": [2.11, 2.12, 2.13] | ||
| "1.31": [2.7, 2.9, 2.10, 2.11, 2.12, 2.13] | ||
| "1.30": [2.7, 2.8, 2.9, 2.10, 2.11, 2.12] | ||
| "1.29": [2.7, 2.8, 2.9, 2.10, 2.11, 2.12] | ||
| "1.28": [2.7, 2.8, 2.9, 2.10, 2.11, 2.12] | ||
| "1.27": [2.7, 2.8, 2.9, 2.10, 2.11, 2.12] | ||
| "1.26": [2.7, 2.8, 2.9, 2.10] | ||
| "1.25": [2.7, 2.8, 2.9, 2.10] | ||
| "1.24": [2.7, 2.8] | ||
| "1.23": [2.7, 2.8] | ||
| {% endversion_compatibility_table %} | ||
|
|
||
| ## Envoy | ||
|
|
||
| The following table presents the general compatibility of {{site.mesh_product_name}} with specific Envoy versions. | ||
| By default, each version of {{site.mesh_product_name}} uses the latest compatible Envoy version, and supports | ||
| Envoy versions used in two previous minor version of {{site.mesh_product_name}}. | ||
lmilan marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| {% version_compatibility_table %} | ||
| product: "{{site.mesh_product_name}}" | ||
| versions: | ||
| - 2.7 | ||
| - 2.8 | ||
| - 2.9 | ||
| - 2.10 | ||
| - 2.11 | ||
| - 2.12 | ||
| - 2.13 | ||
| compatible_product: Envoy | ||
| compatible_versions: | ||
| "1.36": [2.13] | ||
| "1.35": [2.13, 2.12] | ||
| "1.34": [2.13, 2.12, 2.11] | ||
| "1.33": [2.12, 2.11, 2.10, 2.9, 2.8, 2.7] | ||
| "1.31": [2.10, 2.9, 2.8] | ||
| "1.29": [2.9, 2.8, 2.7] | ||
| {% endversion_compatibility_table %} | ||
|
|
||
| ## Architecture | ||
|
|
||
| {{site.mesh_product_name}} supports machines with `x86_64` and `arm64` architecture. | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.