文档样式指南

本页讨论 Kubernetes 文档的样式指南。 这些仅仅是指南而不是规则。 你可以自行决定,且欢迎使用 PR 来为此文档提供修改意见。

关于为 Kubernetes 文档贡献新内容的更多信息,可以参考 文档内容指南

样式指南的变更是 SIG Docs 团队集体决定。 如要提议更改或新增条目,请先将其添加到下一次 SIG Docs 例会的 议程表 上,并按时参加会议讨论。

说明: Kubernetes 文档使用带调整的 Goldmark Markdown 解释器 和一些 Hugo 短代码 来支持词汇表项、Tab 页以及特性门控标注。

语言

Kubernetes 文档已经被翻译为多个语种 (参见 本地化 READMEs)。

为文档提供一种新的语言翻译的途径可以在 本地化 Kubernetes 文档中找到。

英语文档使用美国英语的拼写和语法。

文档格式标准

对 API 对象使用大写驼峰式命名法

当你与指定的 API 对象进行交互时,使用 大写驼峰式命名法, 也被称为帕斯卡拼写法. 通常在讨论 API 对象时,使用 句子式大写.

不要将 API 对象的名称切分成多个单词。例如,使用 PodTemplateList,不要 使用 Pod Template List。

引用 API 对象时不必强调 “object(对象)”,除非省略“object(object)” 会使得文字读起来很别扭。

关于 API 对象的约定
可以不可以
Pod 有两个容器pod 中有两个容器
此 HorizontalPodAutoscaler 负责…此 HorizontalPodAutoscaler 对象负责 …
PodList 是 Pod 的列表Pod List 是 pods 的列表
这两个 ContainerPorts …这两个 ContainerPort 对象 …
这两个 ContainerStateTerminated 对象 …这两个 ContainerStateTerminateds …

在占位符中使用尖括号

在占位符中使用尖括号,并让读者知道其中代表的事物。例如:

  1. 显示 Pod 信息:

    1. kubectl describe pod <pod-名称> -n <名字空间>

    如果名字空间被忽略,默认为 default,你可以忽略 ‘-n’ 参数。

用粗体字表现用户界面元素

粗体界面元素约定
可以不可以
点击 Fork.点击 “Fork”.
选择 Other.选择 “Other”.

定义或引入新术语时使用斜体

新术语约定
可以不可以
每个 集群 是一组节点 …每个“集群”是一组节点 …
这些组件构成了 控制面.这些组件构成了 控制面.

使用代码样式表现文件名、目录和路径

文件名、目录和路径约定
可以不可以
打开 envars.yaml 文件打开 envars.yaml 文件
进入到 /docs/tutorials 目录进入到 /docs/tutorials 目录
打开 /_data/concepts.yaml 文件打开 /_data/concepts.yaml 文件

在引号内使用国际标准标点

标点符号约定
可以不可以
事件记录中都包含对应的“stage”。事件记录中都包含对应的“stage。”
此副本称作一个“fork”。此副本称作一个“fork。”

行间代码格式

为行间代码、命令与 API 对象使用代码样式

对于 HTML 文档中的行间代码,使用 <code> 标记。 在 Markdown 文档中,使用反引号(` )。

行间代码和命令约定
可以不可以
kubectl run 命令会创建一个 Pod“kubectl run” 命令会创建一个 pod。
每个节点上的 kubelet 都会获得一个 Lease每个节点上的 kubelet 都会获得一个 lease…
一个 PersistentVolume 代表持久存储一个 Persistent Volume 代表持久存储…
在声明式管理中,使用 kubectl apply在声明式管理中,使用 “kubectl apply”。
用三个反引号来(```)标示代码示例用其他语法来标示代码示例。
使用单个反引号来标示行间代码。例如:var example = true使用两个星号(**)或者一个下划线(_)来标示行间代码。例如:var example = true
在多行代码块之前和之后使用三个反引号标示隔离的代码块。使用多行代码块来创建示意图、流程图或者其他表示。
使用符合上下文的有意义的变量名。使用诸如 ‘foo’、’bar’ 和 ‘baz’ 这类无意义且无语境的变量名。
删除代码中行尾空白。在代码中包含行尾空白,因为屏幕抓取工具通常也会抓取空白字符。

说明: 网站支持为代码示例使用语法加亮,不过指定语法加亮是可选的。 代码段的语法加亮要遵从对比度指南

为对象字段名和名字空间使用代码风格

对象字段名约定
可以不可以
在配置文件中设置 replicas 字段的值。在配置文件中设置 “replicas” 字段的值。
exec 字段的值是一个 ExecAction 对象。“exec” 字段的值是一个 ExecAction 对象。
kube-system 名字空间中以 DaemonSet 形式运行此进程。在 kube-system 名字空间中以 DaemonSet 形式运行此进程。

用代码样式书写 Kubernetes 命令工具和组件名

Kubernetes 命令工具和组件名
可以不可以
kubelet 维持节点稳定性。kubelet 负责维护节点稳定性。
kubectl 处理 API 服务器的定位和身份认证。kubectl 处理 API 服务器的定位和身份认证。
使用该证书运行进程 kube-apiserver —client-ca-file=FILENAME.使用证书运行进程 kube-apiserver —client-ca-file=FILENAME.

用工具或组件名称开始一句话

工具或组件名称使用约定
可以不可以
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.

尽量使用通用描述而不是组件名称

组件名称与通用描述
可以不可以
Kubernetes API 服务器提供 OpenAPI 规范。apiserver 提供 OpenAPI 规范
聚合 APIs 是下级 API 服务器。聚合 APIs 是下级 APIServers。

使用普通样式表达字符串和整数字段值

对于字符串或整数,使用正常样式,不要带引号。

字符串和整数字段值约定
可以不可以
imagePullPolicy 设置为 Always。imagePullPolicy 设置为 “Always”。
image 设置为 nginx:1.16.image 设置为 nginx:1.16
replicas 字段值设置为 2.replicas 字段值设置为 2.

代码段格式

不要包含命令行提示符

命令行提示符约定
可以不可以
kubectl get pods$ kubectl get pods

将命令和输出分开

例如:

验证 Pod 已经在你所选的节点上运行:

  1. kubectl get pods --output=wide

输出类似于:

  1. NAME READY STATUS RESTARTS AGE IP NODE
  2. nginx 1/1 Running 0 13s 10.200.0.4 worker0

为 Kubernetes 示例给出版本

代码示例或者配置示例如果包含版本信息,应该与对应的文字描述一致。

如果所给的信息是特定于具体版本的,需要在 任务模版教程模版prerequisites 小节定义 Kubernetes 版本。 页面保存之后,prerequisites 小节会显示为 开始之前

如果要为任务或教程页面指定 Kubernetes 版本,可以在文件的前言部分包含 min-kubernetes-server-version 信息。

如果示例 YAML 是一个独立文件,找到并审查包含该文件的主题页面。 确认使用该独立 YAML 文件的主题都定义了合适的版本信息。 如果独立的 YAML 文件没有在任何主题中引用,可以考虑删除该文件, 而不是继续更新它。

例如,如果你在编写一个教程,与 Kubernetes 1.8 版本相关。那么你的 Markdown 文件的文件头应该开始起来像这样:

  1. ---
  2. title: <教程标题>
  3. min-kubernetes-server-version: v1.8
  4. ---

在代码和配置示例中,不要包含其他版本的注释信息。 尤其要小心不要在示例中包含不正确的注释信息,例如:

  1. apiVersion: v1 # 早期版本使用...
  2. kind: Pod
  3. ...

Kubernetes.io 术语列表

以下特定于 Kubernetes 的术语和词汇在使用时要保持一致性。

Kubernetes.io 词汇表
术语用法
KubernetesKubernetes 的首字母要保持大写。
DockerDocker 的首字母要保持大写。
SIG DocsSIG Docs 是正确拼写形式,不要用 SIG-DOCS 或其他变体。
On-premisesOn-premises 或 On-prem 而不是 On-premise 或其他变体。

短代码(Shortcodes)

Hugo 短代码(Shortcodes) 有助于创建比较漂亮的展示效果。我们的文档支持三个不同的这类短代码。 注意 {{< note >}}小心 {{< caution >}}警告 {{< warning >}}

  1. 将要突出显示的文字用短代码的开始和结束形式包围。

  2. 使用下面的语法来应用某种样式:

    1. {{< note >}}
    2. 不需要前缀;短代码会自动添加前缀(注意:、小心:等)
    3. {{< /note >}}

输出的样子是:

说明: 你所选择的标记决定了文字的前缀。

注释(Note)

使用短代码 {{< note >}} 来突出显示某种提示或者有助于读者的信息。

例如:

  1. {{< note >}}
  2. 在这类短代码中仍然 _可以_ 使用 Markdown 语法。
  3. {{< /note >}}

输出为:

说明: 在这类短代码中仍然 可以 使用 Markdown 语法。

你可以在列表中使用 {{< note >}}

  1. 1. 在列表中使用 note 短代码
  2. 1. 带嵌套 note 的第二个条目
  3. {{< note >}}
  4. 警告、小心和注意短代码可以嵌套在列表中,但是要缩进四个空格。
  5. 参见[常见短代码问题](#common-shortcode-issues)。
  6. {{< /note >}}
  7. 1. 列表中第三个条目
  8. 1. 列表中第四个条目

其输出为:

  1. 在列表中使用 note 短代码

  2. 带嵌套 note 的第二个条目

    说明: 警告、小心和注意短代码可以嵌套在列表中,但是要缩进四个空格。 参见常见短代码问题

  3. 列表中第三个条目

  4. 列表中第四个条目

小心(Caution)

使用 {{< caution >}} 短代码来引起读者对某段信息的重视,以避免遇到问题。

例如:

  1. {{< caution >}}
  2. 此短代码样式仅对标记之上的一行起作用。
  3. {{< /caution >}}

其输出为:

注意: 此短代码样式仅对标记之上的一行起作用。

警告(Warning)

使用 {{< warning >}} 来表明危险或者必须要重视的一则信息。

例如:

  1. {{< warning >}}
  2. 注意事项
  3. {{< /warning >}}

其输出为:

警告: 注意事项

Katacoda 嵌套现场环境

此按钮允许用户使用 Katacoda 终端 在其浏览器中运行 Minikube。该环境降低了用户对 Minikube 的入门难度, 只需要一次鼠标点击即可完成,而不需要完全经历 Minikube 和 kubectl 的安装过程。

嵌套现场环境配置为运行 minikube start,允许用户在文档所在的窗口完成教程。

注意: 会话限制为 15 分钟。

例如:

  1. {{< kat-button >}}

其输出为:

常见的短代码问题

编号列表

短代码会打乱编号列表的编号,除非你在信息和标志之前都缩进四个空格。

例如:

  1. 1. 预热到 350˚F
  2. 1. 准备好面糊,倒入烘烤盘
  3. {{< note >}}给盘子抹上油可以达到最佳效果。{{< /note >}}
  4. 1. 烘烤 20 25 分钟,或者直到满意为止。

其输出结果为:

  1. 预热到 350˚F
  2. 准备好面糊,倒入烘烤盘

    说明: 给盘子抹上油可以达到最佳效果。

  3. 烘烤 20 到 25 分钟,或者直到满意为止。

Include 语句

如果短代码出现在 include 语境中,会导致网站无法构建。 你必须将他们插入到上级文档中,分别将开始标记和结束标记插入到 include 语句之前和之后。 例如:

  1. {{< note >}}
  2. {{< include "task-tutorial-prereqs.md" >}}
  3. {{< /note >}}

Markdown 元素

换行

使用单一换行符来隔离块级内容,例如标题、列表、图片、代码块以及其他元素。 这里的例外是二级标题,必须有两个换行符。 二级标题紧随一级标题(或标题),中间没有段落或文字。

两行的留白有助于在代码编辑器中查看整个内容的结构组织。

标题

访问文档的读者可能会使用屏幕抓取程序或者其他辅助技术。 屏幕抓取器是一种线性输出设备, 它们每次输出页面上的一个条目。 如果页面上内容过多,你可以使用标题来为页面组织结构。 页面的良好结构对所有读者都有帮助,使得他们更容易浏览或者过滤感兴趣的内容。

标题约定
可以不可以
更新页面或博客在前言部分中的标题使用一级标题。因为 Hugo 会自动将页面前言部分的标题转化为一级标题。
使用编号的标题以便内容组织有一个更有意义的结构。使用四级到六级标题,除非非常有必要这样。如果你要编写的内容有非常多细节,可以尝试拆分成多个不同页面。
在非博客内容页面中使用井号(#使用下划线 —-=== 来标记一级标题。
使用正常大小写来标示标题。例如:Extend kubectl with plugins使用首字母大写来标示标题。例如:Extend Kubectl With Plugins

段落

段落约定
可以不可以
尝试不要让段落超出 6 句话。用空格来缩进第一段。例如,⋅⋅⋅段落前面的三个空格会将其缩进。
使用三个连字符(—-)来创建水平线。使用水平线来分隔段落内容。例如,在故事中切换场景或者在上下文中切换主题。使用水平线来装饰页面。

链接

链接约定
可以不可以
插入超级链接时给出它们所链接到的目标内容的上下文。例如:你的机器上某些端口处于开放状态。参见检查所需端口了解更详细信息。使用有二义性的术语,如“点击这里”。例如:你的机器上某些端口处于打开状态。参见这里了解详细信息。
编写 Markdown 风格的链接:链接文本。例如:Hugo 短代码,输出是Hugo 短代码.编写 HTML 风格的超级链接:<a href=”/media/examples/link-element-example.css” target=”_blank”>访问我们的教程!</a>,或者创建会打开新 Tab 页或新窗口的链接。例如:网站示例{target=”_blank”}

列表

将一组相互关联的内容组织到一个列表中,以便表达这些条目彼此之间有先后顺序或者某种相互关联关系。 当屏幕抓取器遇到列表时,无论该列表是否有序,它会告知用户存在一组枚举的条目。 用户可以使用箭头键来上下移动,浏览列表中条目。 网站导航链接也可以标记成列表条目,因为说到底他们也是一组相互关联的链接而已。

  • 如果列表中一个或者多个条目是完整的句子,则在每个条目末尾添加句号。 出于一致性考虑,一般要么所有条目要么没有条目是完整句子。

    说明: 编号列表如果是不完整的介绍性句子的一部分,可以全部用小写字母,并按照 每个条目都是句子的一部分来看待和处理。

  • 在编号列表中,使用数字一(1.

  • 对非排序列表,使用加号(+)、星号(*)、或者减号(-

  • 在每个列表之后留一个空行

  • 对于嵌套的列表,相对缩进四个空格(例如,⋅⋅⋅⋅)。

  • 列表条目可能包含多个段落。每个后续段落都要缩进或者四个空格或者一个制表符。

表格

数据表格的语义用途是呈现表格化的数据。 用户可以快速浏览表格,但屏幕抓取器需要逐行地处理数据。 表格标题可以用来给数据表提供一个描述性的标题。 辅助技术使用 HTML 表格标题元素来在页面结构中辨识表格内容。

内容最佳实践

本节包含一些建议的最佳实践,用来开发清晰、明确一致的文档内容。

使用现在时态

使用现在时态
可以不可以
此命令启动代理。此命令将启动一个代理。

例外:如果需要使用过去时或将来时来表达正确含义时,是可以使用的。

使用主动语态

使用主动语态
可以不可以
你可以使用浏览器来浏览 API。API 可以被使用浏览器来浏览。
YAML 文件给出副本个数。副本个数是在 YAML 文件中给出的。

例外:如果主动语态会导致句子很难构造时,可以使用被动语态。

使用简单直接的语言

使用简单直接的语言。避免不必要的短语,例如说“请”。

使用简单直接语言
可以不可以
要创建 ReplicaSet,…如果你想要创建 ReplicaSet,…
参看配置文件。请自行查看配置文件。
查看 Pods。使用下面的命令,我们将会看到 Pods。

将读者称为“你”

将读者称为“你”
可以不可以
你可以通过 … 创建一个 Deployment。通过…我们将创建一个 Deployment。
在前面的输出中,你可以看到…在前面的输出中,我们可以看到…

避免拉丁短语

尽可能使用英语而不是拉丁语缩写。

避免拉丁语短语
可以不可以
例如,…e.g., …
也就是说,…i.e., …

例外:使用 etc. 表示等等。

应避免的模式

避免使用“我们”

在句子中使用“我们”会让人感到困惑,因为读者可能不知道这里的 “我们”指的是谁。

要避免的模式
可以不可以
版本 1.4 包含了 …在 1.4 版本中,我们添加了 …
Kubernetes 为 … 提供了一项新功能。我们提供了一项新功能…
本页面教你如何使用 Pods。在本页中,我们将会学到如何使用 Pods。

避免使用俚语或行话

对某些读者而言,英语是其外语。 避免使用一些俚语或行话有助于他们更方便的理解内容。

避免使用俚语或行话
可以不可以
Internally, …Under the hood, …
Create a new cluster.Turn up a new cluster.

避免关于将来的陈述

要避免对将来作出承诺或暗示。如果你需要讨论的是 Alpha 功能特性,可以将相关文字 放在一个单独的标题下,标示为 alpha 版本信息。

避免使用很快就会过时的表达

避免使用一些很快就会过时的陈述,例如“目前”、“新的”。 今天而言是新的功能,过了几个月之后就不再是新的了。

避免使用很快过时的表达
可以不可以
在版本 1.4 中,…在当前版本中,…
联邦功能特性提供 …新的联邦功能特性提供 …

接下来