This page gives writing style guidelines for the Kubernetes documentation. These are guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.
For additional information on creating new content for the Kubernetes documentation, read the Documentation Content Guide and follow the instructions on using page templates and creating a documentation pull request.
Note: Kubernetes documentation uses Blackfriday Markdown Renderer along with a few Hugo Shortcodes to support glossary entries, tabs, and representing feature state.
Kubernetes documentation has been translated into multiple languages (see Localization READMEs).
The way of localizing the docs for a different language is described in Localizing Kubernetes Documentation.
The English-language documentation uses U.S. English spelling and grammar.
When you refer to an API object, use the same uppercase and lowercase letters that are used in the actual object name. Typically, the names of API objects use camel case.
Don’t split the API object name into separate words. For example, use PodTemplateList, not Pod Template List.
Refer to API objects without saying “object,” unless omitting “object” leads to an awkward construction.
Do | Don’t |
---|---|
The Pod has two containers. | The pod has two containers. |
The Deployment is responsible for … | The Deployment object is responsible for … |
A PodList is a list of Pods. | A Pod List is a list of pods. |
The two ContainerPorts … | The two ContainerPort objects … |
The two ContainerStateTerminated objects … | The two ContainerStateTerminateds … |
Use angle brackets for placeholders. Tell the reader what a placeholder represents.
Display information about a Pod:
kubectl describe pod <pod-name> -n <namespace>
If the namespace of the pod is default
, you can omit the ‘-n’ parameter.
Do | Don’t |
---|---|
Click Fork. | Click “Fork”. |
Select Other. | Select “Other”. |
Do | Don’t |
---|---|
A cluster is a set of nodes … | A “cluster” is a set of nodes … |
These components form the control plane. | These components form the control plane. |
Do | Don’t |
---|---|
Open the envars.yaml file. | Open the envars.yaml file. |
Go to the /docs/tutorials directory. | Go to the /docs/tutorials directory. |
Open the /_data/concepts.yaml file. | Open the /_data/concepts.yaml file. |
Do | Don’t |
---|---|
events are recorded with an associated “stage”. | events are recorded with an associated “stage.” |
The copy is called a “fork”. | The copy is called a “fork.” |
For inline code in an HTML document, use the <code>
tag. In a Markdown
document, use the backtick (`).
Do | Don’t |
---|---|
The kubectl run command creates a Deployment. | The “kubectl run” command creates a Deployment. |
For declarative management, use kubectl apply . | For declarative management, use “kubectl apply”. |
Enclose code samples with triple backticks. ( `) | Enclose code samples with any other syntax. |
Use single backticks to enclose inline code. For example, var example = true . | Use two asterisks (**) or an underscore (_) to enclose inline code. For example, var example = true. |
Use triple backticks before and after a multi-line block of code for fenced code blocks. | Use multi-line blocks of code to create diagrams, flowcharts, or other illustrations. |
Use meaningful variable names that have a context. | Use variable names such as ‘foo’,‘bar’, and ‘baz’ that are not meaningful and lack context. |
Remove trailing spaces in the code. | Add trailing spaces in the code, where these are important, because the screen reader will read out the spaces as well. |
Note: The website supports syntax highlighting for code samples, but specifying a language is optional. Syntax highlighting in the code block should conform to the contrast guidelines.
Do | Don’t |
---|---|
Set the value of the replicas field in the configuration file. | Set the value of the “replicas” field in the configuration file. |
The value of the exec field is an ExecAction object. | The value of the “exec” field is an ExecAction object. |
Run the process as a Daemonset in the kube-system namespace. | Run the process as a Daemonset in the kube-system namespace. |
Do | Don’t |
---|---|
The kubelet preserves node stability. | The kubelet preserves node stability. |
The kubectl handles locating and authenticating to the API server. | The kubectl handles locating and authenticating to the apiserver. |
Run the process with the certificate, kube-apiserver --client-ca-file=FILENAME . | Run the process with the certificate, kube-apiserver –client-ca-file=FILENAME. |
Do | Don’t |
---|---|
The kubeadm tool bootstraps and provisions machines in a cluster. | kubeadm tool bootstraps and provisions machines in a cluster. |
The kube-scheduler is the default scheduler for Kubernetes. | kube-scheduler is the default scheduler for Kubernetes. |
Do | Don’t |
---|---|
The Kubernetes API server offers an OpenAPI spec. | The apiserver offers an OpenAPI spec. |
Aggregated APIs are subordinate API servers. | Aggregated APIs are subordinate APIServers. |
For field values of type string or integer, use normal style without quotation marks.
Do | Don’t |
---|---|
Set the value of imagePullPolicy to Always. | Set the value of imagePullPolicy to “Always”. |
Set the value of image to nginx:1.8. | Set the value of image to nginx:1.8 . |
Set the value of the replicas field to 2. | Set the value of the replicas field to 2 . |
Do | Don’t |
---|---|
kubectl get pods | $ kubectl get pods |
Verify that the Pod is running on your chosen node:
kubectl get pods --output=wide
The output is similar to this:
NAME READY STATUS RESTARTS AGE IP NODE
nginx 1/1 Running 0 13s 10.200.0.4 worker0
Code examples and configuration examples that include version information should be consistent with the accompanying text.
If the information is version specific, the Kubernetes version needs to be defined in the prerequisites
section of the Task template or the Tutorial template. Once the page is saved, the prerequisites
section is shown as Before you begin.
To specify the Kubernetes version for a task or tutorial page, include min-kubernetes-server-version
in the front matter of the page.
If the example YAML is in a standalone file, find and review the topics that include it as a reference. Verify that any topics using the standalone YAML have the appropriate version information defined. If a stand-alone YAML file is not referenced from any topics, consider deleting it instead of updating it.
For example, if you are writing a tutorial that is relevant to Kubernetes version 1.8, the front-matter of your markdown file should look something like:
---
title: <your tutorial title here>
min-kubernetes-server-version: v1.8
---
In code and configuration examples, do not include comments about alternative versions. Be careful to not include incorrect statements in your examples as comments, such as:
apiVersion: v1 # earlier versions use...
kind: Pod
...
A list of Kubernetes-specific terms and words to be used consistently across the site.
Term | Usage |
---|---|
Kubernetes | Kubernetes should always be capitalized. |
Docker | Docker should always be capitalized. |
SIG Docs | SIG Docs rather than SIG-DOCS or other variations. |
On-premises | On-premises or On-prem rather than On-premise or other variations. |
Hugo Shortcodes help create different rhetorical appeal levels. Our documentation supports three different shortcodes in this category: Note {{< note >}}, Caution {{< caution >}}, and Warning {{< warning >}}.
Surround the text with an opening and closing shortcode.
Use the following syntax to apply a style:
{{< note >}}
No need to include a prefix; the shortcode automatically provides one. (Note:, Caution:, etc.)
{{< /note >}}
The output is:
Note: The prefix you choose is the same text for the tag.
Use {{< note >}} to highlight a tip or a piece of information that may be helpful to know.
For example:
{{< note >}}
You can _still_ use Markdown inside these callouts.
{{< /note >}}
The output is:
Note: You can still use Markdown inside these callouts.
You can use a {{< note >}} in a list:
1. Use the note shortcode in a list
1. A second item with an embedded note
{{< note >}}
Warning, Caution, and Note shortcodes, embedded in lists, need to be indented four spaces. See [Common Shortcode Issues](#common-shortcode-issues).
{{< /note >}}
1. A third item in a list
1. A fourth item in a list
The output is:
Use the note shortcode in a list
A second item with an embedded note
Note: Warning, Caution, and Note shortcodes, embedded in lists, need to be indented four spaces. See Common Shortcode Issues.
A third item in a list
A fourth item in a list
Use {{< caution >}} to call attention to an important piece of information to avoid pitfalls.
For example:
{{< caution >}}
The callout style only applies to the line directly above the tag.
{{< /caution >}}
The output is:
Caution: The callout style only applies to the line directly above the tag.
Use {{< warning >}} to indicate danger or a piece of information that is crucial to follow.
For example:
{{< warning >}}
Beware.
{{< /warning >}}
The output is:
Warning: Beware.
This button lets users run Minikube in their browser using the Katacoda Terminal. It lowers the barrier of entry by allowing users to use Minikube with one click instead of going through the complete Minikube and Kubectl installation process locally.
The Embedded Live Environment is configured to run minikube start
and lets users complete tutorials in the same window
as the documentation.
Caution: The session is limited to 15 minutes.
For example:
{{< kat-button >}}
The output is:
Shortcodes will interrupt numbered lists unless you indent four spaces before the notice and the tag.
For example:
1. Preheat oven to 350˚F
1. Prepare the batter, and pour into springform pan.
{{< note >}}Grease the pan for best results.{{< /note >}}
1. Bake for 20-25 minutes or until set.
The output is:
Preheat oven to 350˚F
Prepare the batter, and pour into springform pan.
Note: Grease the pan for best results.
Bake for 20-25 minutes or until set.
Shortcodes inside include statements will break the build. You must insert them in the parent document, before and after you call the include. For example:
{{< note >}}
{{< include "task-tutorial-prereqs.md" >}}
{{< /note >}}
Use a single newline to separate block-level content like headings, lists, images, code blocks, and others. The exception is second-level headings, where it should be two newlines. Second-level headings follow the first-level (or the title) without any preceding paragraphs or texts. A two line spacing helps visualize the overall structure of content in a code editor better.
People accessing this documentation may use a screen reader or other assistive technology (AT). Screen readers are linear output devices, they output items on a page one at a time. If there is a lot of content on a page, you can use headings to give the page an internal structure. A good page structure helps all readers to easily navigate the page or filter topics of interest.
Do | Don’t |
---|---|
Update the title in the front matter of the page or blog post. | Use first level heading, as Hugo automatically converts the title in the front matter of the page into a first-level heading. |
Use ordered headings to provide a meaningful high-level outline of your content. | Use headings level 4 through 6, unless it is absolutely necessary. If your content is that detailed, it may need to be broken into separate articles. |
Use pound or hash signs (#) for non-blog post content. | Use underlines (— or ===) to designate first-level headings. |
Use sentence case for headings. For example, Extend kubectl with plugins | Use title case for headings. For example, Extend Kubectl With Plugins |
Do | Don’t |
---|---|
Try to keep paragraphs under 6 sentences. | Indent the first paragraph with space characters. For example, ⋅⋅⋅Three spaces before a paragraph will indent it. |
Use three hyphens (—) to create a horizontal rule. Use horizontal rules for breaks in paragraph content. For example, a change of scene in a story, or a shift of topic within a section. | Use horizontal rules for decoration. |
Do | Don’t |
---|---|
Write hyperlinks that give you context for the content they link to. For example: Certain ports are open on your machines. See Check required ports for more details. | Use ambiguous terms such as “click here”. For example: Certain ports are open on your machines. See here for more details. |
Write Markdown-style links: [link text](URL) . For example: [Hugo shortcodes](/docs/contribute/style/hugo-shortcodes/#table-captions) and the output is Hugo shortcodes. | Write HTML-style links: <a href="/media/examples/link-element-example.css" target="_blank">Visit our tutorial!</a> , or create links that open in new tabs or windows. For example: [example website](https://example.com){target="_blank"} |
Group items in a list that are related to each other and need to appear in a specific order or to indicate a correlation between multiple items. When a screen reader comes across a list—whether it is an ordered or unordered list—it will be announced to the user that there is a group of list items. The user can then use the arrow keys to move up and down between the various items in the list. Website navigation links can also be marked up as list items; after all they are nothing but a group of related links.
Note: Ordered lists that are part of an incomplete introductory sentence can be in lowercase and punctuated as if each item was a part of the introductory sentence.
Use the number one (1.) for ordered lists.
Use (+), (* ), or (-) for unordered lists.
Leave a blank line after each list.
Indent nested lists with four spaces (for example, ⋅⋅⋅⋅).
List items may consist of multiple paragraphs. Each subsequent paragraph in a list item must be indented by either four spaces or one tab.
The semantic purpose of a data table is to present tabular data. Sighted users can quickly scan the table but a screen reader goes through line by line. A table caption is used to create a descriptive title for a data table. Assistive technologies (AT) use the HTML table caption element to identify the table contents to the user within the page structure.
This section contains suggested best practices for clear, concise, and consistent content.
Do | Don’t |
---|---|
This command starts a proxy. | This command will start a proxy. |
Exception: Use future or past tense if it is required to convey the correct meaning.
Do | Don’t |
---|---|
You can explore the API using a browser. | The API can be explored using a browser. |
The YAML file specifies the replica count. | The replica count is specified in the YAML file. |
Exception: Use passive voice if active voice leads to an awkward construction.
Use simple and direct language. Avoid using unnecessary phrases, such as saying “please.”
Do | Don’t |
---|---|
To create a ReplicaSet, … | In order to create a ReplicaSet, … |
See the configuration file. | Please see the configuration file. |
View the Pods. | With this next command, we’ll view the Pods. |
Do | Don’t |
---|---|
You can create a Deployment by … | We’ll create a Deployment by … |
In the preceding output, you can see… | In the preceding output, we can see … |
Prefer English terms over Latin abbreviations.
Do | Don’t |
---|---|
For example, … | e.g., … |
That is, … | i.e., … |
Exception: Use “etc.” for et cetera.
Using “we” in a sentence can be confusing, because the reader might not know whether they’re part of the “we” you’re describing.
Do | Don’t |
---|---|
Version 1.4 includes … | In version 1.4, we have added … |
Kubernetes provides a new feature for … | We provide a new feature … |
This page teaches you how to use Pods. | In this page, we are going to learn about Pods. |
Some readers speak English as a second language. Avoid jargon and idioms to help them understand better.
Do | Don’t |
---|---|
Internally, … | Under the hood, … |
Create a new cluster. | Turn up a new cluster. |
Avoid making promises or giving hints about the future. If you need to talk about an alpha feature, put the text under a heading that identifies it as alpha information.
Avoid words like “currently” and “new.” A feature that is new today might not be considered new in a few months.
Do | Don’t |
---|---|
In version 1.4, … | In the current version, … |
The Federation feature provides … | The new Federation feature provides … |
Was this page helpful?
Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on Stack Overflow. Open an issue in the GitHub repo if you want to report a problem or suggest an improvement.