From 2c9690d512887730ff4d1ba5210b91fe20be42b6 Mon Sep 17 00:00:00 2001
From: Zach Corleissen
Date: Thu, 1 Nov 2018 15:32:23 -0700
Subject: [PATCH 001/222] Add markthink to zh- teams (#10683)
---
OWNERS_ALIASES | 2 ++
1 file changed, 2 insertions(+)
diff --git a/OWNERS_ALIASES b/OWNERS_ALIASES
index f35c0ea831..88260d2b75 100644
--- a/OWNERS_ALIASES
+++ b/OWNERS_ALIASES
@@ -156,11 +156,13 @@ aliases:
- haibinxie
- hanjiayao
- lichuqiang
+ - markthink
- tengqm
- xiangpengzhao
- zhangxiaoyu-zidif
sig-docs-zh-reviews: #Team Chinese docs reviews; GH: sig-docs-zh-reviews
- idealhack
+ - markthink
- tengqm
- xiangpengzhao
- zhangxiaoyu-zidif
From a9abd82512439fb9f1f1519fe95cc916f78e671e Mon Sep 17 00:00:00 2001
From: Casey Davenport
Date: Thu, 1 Nov 2018 15:35:01 -0700
Subject: [PATCH 002/222] Update version of Calico/Canal in kubeadm docs
(#10802)
---
.../en/docs/setup/independent/create-cluster-kubeadm.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/content/en/docs/setup/independent/create-cluster-kubeadm.md b/content/en/docs/setup/independent/create-cluster-kubeadm.md
index e37bea2a1c..8ff6ae7e97 100644
--- a/content/en/docs/setup/independent/create-cluster-kubeadm.md
+++ b/content/en/docs/setup/independent/create-cluster-kubeadm.md
@@ -264,8 +264,8 @@ For more information about using Calico, see [Quickstart for Calico on Kubernete
For Calico to work correctly, you need to pass `--pod-network-cidr=192.168.0.0/16` to `kubeadm init` or update the `calico.yml` file to match your Pod network. Note that Calico works on `amd64` only.
```shell
-kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml
-kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml
+kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml
+kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml
```
{{% /tab %}}
@@ -275,8 +275,8 @@ Canal uses Calico for policy and Flannel for networking. Refer to the Calico doc
For Canal to work correctly, `--pod-network-cidr=10.244.0.0/16` has to be passed to `kubeadm init`. Note that Canal works on `amd64` only.
```shell
-kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/canal/rbac.yaml
-kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/canal/canal.yaml
+kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/canal/rbac.yaml
+kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/canal/canal.yaml
```
{{% /tab %}}
From b9ffbb1ebaf1fa9a2c7b755ffcb1cc04b959e082 Mon Sep 17 00:00:00 2001
From: Iain Foulds
Date: Thu, 1 Nov 2018 15:39:53 -0700
Subject: [PATCH 003/222] Update naming for Azure Kubernetes Service (#10799)
---
content/en/docs/setup/turnkey/azure.md | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/content/en/docs/setup/turnkey/azure.md b/content/en/docs/setup/turnkey/azure.md
index 534f1a5536..cd46706874 100644
--- a/content/en/docs/setup/turnkey/azure.md
+++ b/content/en/docs/setup/turnkey/azure.md
@@ -5,25 +5,25 @@ reviewers:
title: Running Kubernetes on Azure
---
-## Azure Container Service
+## Azure Kubernetes Service (AKS)
-The [Azure Container Service](https://azure.microsoft.com/en-us/services/container-service/) offers simple
-deployments of one of three open source orchestrators: DC/OS, Swarm, and Kubernetes clusters.
+The [Azure Kubernetes Service)](https://azure.microsoft.com/en-us/services/kubernetes-service/) offers simple
+deployments for Kubernetes clusters.
-For an example of deploying a Kubernetes cluster onto Azure via the Azure Container Service:
+For an example of deploying a Kubernetes cluster onto Azure via the Azure Kubernetes Service:
-**[Microsoft Azure Container Service - Kubernetes Walkthrough](https://docs.microsoft.com/en-us/azure/aks/intro-kubernetes)**
+**[Microsoft Azure Kubernetes Service](https://docs.microsoft.com/en-us/azure/aks/intro-kubernetes)**
## Custom Deployments: ACS-Engine
-The core of the Azure Container Service is **open source** and available on GitHub for the community
+The core of the Azure Kubernetes Service is **open source** and available on GitHub for the community
to use and contribute to: **[ACS-Engine](https://github.com/Azure/acs-engine)**.
-ACS-Engine is a good choice if you need to make customizations to the deployment beyond what the Azure Container
+ACS-Engine is a good choice if you need to make customizations to the deployment beyond what the Azure Kubernetes
Service officially supports. These customizations include deploying into existing virtual networks, utilizing multiple
-agent pools, and more. Some community contributions to ACS-Engine may even become features of the Azure Container Service.
+agent pools, and more. Some community contributions to ACS-Engine may even become features of the Azure Kubernetes Service.
-The input to ACS-Engine is similar to the ARM template syntax used to deploy a cluster directly with the Azure Container Service.
+The input to ACS-Engine is similar to the ARM template syntax used to deploy a cluster directly with the Azure Kubernetes Service.
The resulting output is an Azure Resource Manager Template that can then be checked into source control and can then be used
to deploy Kubernetes clusters into Azure.
@@ -36,4 +36,3 @@ The CoreOS Tectonic Installer for Azure is **open source** and available on GitH
Tectonic Installer is a good choice when you need to make cluster customizations as it is built on [Hashicorp's Terraform](https://www.terraform.io/docs/providers/azurerm/) Azure Resource Manager (ARM) provider. This enables users to customize or integrate using familiar Terraform tooling.
You can get started using the [Tectonic Installer for Azure Guide](https://coreos.com/tectonic/docs/latest/install/azure/azure-terraform.html).
-
From eac1cb6d34d7c80ebea44bf46cde2eccdb6ba440 Mon Sep 17 00:00:00 2001
From: Pingan
Date: Sat, 3 Nov 2018 01:43:25 +0800
Subject: [PATCH 004/222] remove node condition ConfigOK (#10772)
---
content/en/docs/concepts/architecture/nodes.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/content/en/docs/concepts/architecture/nodes.md b/content/en/docs/concepts/architecture/nodes.md
index f5bb11bf37..4f81dd9165 100644
--- a/content/en/docs/concepts/architecture/nodes.md
+++ b/content/en/docs/concepts/architecture/nodes.md
@@ -53,7 +53,6 @@ The `conditions` field describes the status of all `Running` nodes.
| `PIDPressure` | `True` if pressure exists on the processes -- that is, if there are too many processes on the node; otherwise `False` |
| `DiskPressure` | `True` if pressure exists on the disk size -- that is, if the disk capacity is low; otherwise `False` |
| `NetworkUnavailable` | `True` if the network for the node is not correctly configured, otherwise `False` |
-| `ConfigOK` | `True` if the kubelet is correctly configured, otherwise `False` |
The node condition is represented as a JSON object. For example, the following response describes a healthy node.
From 1749327bf19eda5c058b62605e7f4d44a3afdb17 Mon Sep 17 00:00:00 2001
From: Robert de Bock
Date: Fri, 2 Nov 2018 18:44:37 +0100
Subject: [PATCH 005/222] Describe what file to edit (#10790)
It was not clear where the yaml blob should be saved in. Added a single like that clears up what file to edit.
---
.../docs/getting-started-guides/fedora/fedora_manual_config.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/content/en/docs/getting-started-guides/fedora/fedora_manual_config.md b/content/en/docs/getting-started-guides/fedora/fedora_manual_config.md
index cbe029dfa2..7a338b1abc 100644
--- a/content/en/docs/getting-started-guides/fedora/fedora_manual_config.md
+++ b/content/en/docs/getting-started-guides/fedora/fedora_manual_config.md
@@ -124,6 +124,8 @@ KUBELET_ARGS="--cgroup-driver=systemd --kubeconfig=/etc/kubernetes/master-kubeco
```
+* Edit `/etc/kubernetes/master-kubeconfig.yaml` to contain the following information:
+
```yaml
kind: Config
clusters:
From c5b28b7e81009a7c990b83fd772fd405a9f8d8d9 Mon Sep 17 00:00:00 2001
From: Tjeerd Jan van der Molen
Date: Fri, 2 Nov 2018 18:45:53 +0100
Subject: [PATCH 006/222] Update install-minikube.md (#10793)
Clarify that the --vm-driver none option only works on a linux environment
---
content/en/docs/tasks/tools/install-minikube.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/en/docs/tasks/tools/install-minikube.md b/content/en/docs/tasks/tools/install-minikube.md
index e6ad64c72b..ad6fb28f73 100644
--- a/content/en/docs/tasks/tools/install-minikube.md
+++ b/content/en/docs/tasks/tools/install-minikube.md
@@ -30,7 +30,7 @@ If you do not already have a hypervisor installed, install the appropriate one f
[KVM](http://www.linux-kvm.org/).
{{< note >}}
- **Note:** Minikube also supports a `-\-vm-driver=none` option that runs the Kubernetes components on the host and not in a VM. Using this driver requires Docker, but not a hypervisor.
+ **Note:** Minikube also supports a `-\-vm-driver=none` option that runs the Kubernetes components on the host and not in a VM. Using this driver requires Docker and a linux environment, but not a hypervisor.
{{< /note >}}
* Windows: [VirtualBox](https://www.virtualbox.org/wiki/Downloads) or
From 81b2562f77ee1675e4b013da970d8f5ff11f2cb4 Mon Sep 17 00:00:00 2001
From: Zach Corleissen
Date: Fri, 2 Nov 2018 13:03:13 -0700
Subject: [PATCH 007/222] Enable reviews/approvers for localized site strings
(#10811)
Remove unintentional changes from a different branch
Correct English alias
---
i18n/OWNERS | 13 +++++++++++++
1 file changed, 13 insertions(+)
create mode 100644 i18n/OWNERS
diff --git a/i18n/OWNERS b/i18n/OWNERS
new file mode 100644
index 0000000000..7c95255902
--- /dev/null
+++ b/i18n/OWNERS
@@ -0,0 +1,13 @@
+# This is the directory for internationalized site strings.
+
+reviewers:
+- sig-docs-pr-reviews
+- sig-docs-ja-reviews
+- sig-docs-ko-reviews
+- sig-docs-zh-reviews
+
+approvers:
+- sig-docs-en-owners
+- sig-docs-ja-owners
+- sig-docs-ko-owners
+- sig-docs-zh-owners
From 2d8bc158a21be1c057e88def1e49a116f75ce01b Mon Sep 17 00:00:00 2001
From: AdamDang
Date: Sat, 3 Nov 2018 19:34:25 +0800
Subject: [PATCH 008/222] Update tools.md (#10753)
---
content/zh/docs/reference/tools.md | 40 +++++++++++++++---------------
1 file changed, 20 insertions(+), 20 deletions(-)
diff --git a/content/zh/docs/reference/tools.md b/content/zh/docs/reference/tools.md
index 4fa74d6821..388187aebe 100644
--- a/content/zh/docs/reference/tools.md
+++ b/content/zh/docs/reference/tools.md
@@ -9,7 +9,7 @@ content_template: templates/concept
---
reviewers:
- janetkuo
-title: 工具
+title: 宸ュ叿
content_template: templates/concept
---
@@ -17,7 +17,7 @@ content_template: templates/concept
Kubernetes contains several built-in tools to help you work with the Kubernetes system.
-->
{{% capture overview %}}
-Kubernetes 包含一些内置工具,可以帮助用户更好的使用 Kubernetes 系统。
+Kubernetes 鍖呭惈涓浜涘唴缃伐鍏凤紝鍙互甯姪鐢ㄦ埛鏇村ソ鐨勪娇鐢 Kubernetes 绯荤粺銆
{{% /capture %}}
{{% capture body %}}
@@ -26,14 +26,14 @@ Kubernetes
-[`kubectl`](/docs/tasks/tools/install-kubectl/) 是 Kubernetes 命令行工具,可以用来操控 Kubernetes 集群。
+[`kubectl`](/docs/tasks/tools/install-kubectl/) 鏄 Kubernetes 鍛戒护琛屽伐鍏凤紝鍙互鐢ㄦ潵鎿嶆帶 Kubernetes 闆嗙兢銆
## Kubeadm
-[`kubeadm`](/docs/tasks/tools/install-kubeadm/) 是一个命令行工具,可以用来在物理机、云服务器或虚拟机(目前处于 alpha 阶段)上轻松部署一个安全可靠的 Kubernetes 集群。
+[`kubeadm`](/docs/tasks/tools/install-kubeadm/) 鏄竴涓懡浠よ宸ュ叿锛屽彲浠ョ敤鏉ュ湪鐗╃悊鏈恒佷簯鏈嶅姟鍣ㄦ垨铏氭嫙鏈猴紙鐩墠澶勪簬 alpha 闃舵锛変笂杞绘澗閮ㄧ讲涓涓畨鍏ㄥ彲闈犵殑 Kubernetes 闆嗙兢銆
## Kubefed
@@ -41,7 +41,7 @@ Kubernetes
[`kubefed`](/docs/tasks/federation/set-up-cluster-federation-kubefed/) is the command line tool
to help you administrate your federated clusters.
-->
-[`kubefed`](/docs/tasks/federation/set-up-cluster-federation-kubefed/) 是一个命令行工具,可以用来帮助用户管理联邦集群。
+[`kubefed`](/docs/tasks/federation/set-up-cluster-federation-kubefed/) 鏄竴涓懡浠よ宸ュ叿锛屽彲浠ョ敤鏉ュ府鍔╃敤鎴风鐞嗚仈閭﹂泦缇ゃ
## Minikube
@@ -51,7 +51,7 @@ to help you administrate your federated clusters.
easy to run a single-node Kubernetes cluster locally on your workstation for
development and testing purposes.
-->
-[`minikube`](/docs/tasks/tools/install-minikube/) 是一个可以方便用户在其工作站点本地部署一个单节点 Kubernetes 集群的工具,用于开发和测试。
+[`minikube`](/docs/tasks/tools/install-minikube/) 鏄竴涓彲浠ユ柟渚跨敤鎴峰湪鍏跺伐浣滅珯鐐规湰鍦伴儴缃蹭竴涓崟鑺傜偣 Kubernetes 闆嗙兢鐨勫伐鍏凤紝鐢ㄤ簬寮鍙戝拰娴嬭瘯銆
## Dashboard
@@ -60,7 +60,7 @@ development and testing purposes.
[`Dashboard`](/docs/tasks/access-application-cluster/web-ui-dashboard/), the web-based user interface of Kubernetes, allows you to deploy containerized applications
to a Kubernetes cluster, troubleshoot them, and manage the cluster and its resources itself.
-->
-[`Dashboard`](/docs/tasks/access-application-cluster/web-ui-dashboard/), 是 Kubernetes 基于 Web 的用户管理界面,允许用户部署容器化应用到 Kubernetes 集群,进行故障排查以及管理集群和集群资源。
+[`Dashboard`](/docs/tasks/access-application-cluster/web-ui-dashboard/), 鏄 Kubernetes 鍩轰簬 Web 鐨勭敤鎴风鐞嗙晫闈紝鍏佽鐢ㄦ埛閮ㄧ讲瀹瑰櫒鍖栧簲鐢ㄥ埌 Kubernetes 闆嗙兢锛岃繘琛屾晠闅滄帓鏌ヤ互鍙婄鐞嗛泦缇ゅ拰闆嗙兢璧勬簮銆
## Helm
@@ -68,7 +68,7 @@ to a Kubernetes cluster, troubleshoot them, and manage the cluster and its resou
[`Kubernetes Helm`](https://github.com/kubernetes/helm) is a tool for managing packages of pre-configured
Kubernetes resources, aka Kubernetes charts.
-->
-[`Kubernetes Helm`](https://github.com/kubernetes/helm) 是一个管理预先配置 Kubernetes 资源包的工具,这里的资源在 Helm 中也被称作 Kubernetes charts。
+[`Kubernetes Helm`](https://github.com/kubernetes/helm) 鏄竴涓鐞嗛鍏堥厤缃 Kubernetes 璧勬簮鍖呯殑宸ュ叿锛岃繖閲岀殑璧勬簮鍦 Helm 涓篃琚О浣 Kubernetes charts銆
-使用 Helm:
+浣跨敤 Helm锛
-*查找并使用已经打包为 Kubernetes charts 的流行软件
-*分享您自己的应用作为 Kubernetes charts
-*为 Kubernetes 应用创建可重复执行的构建
-*为您的 Kubernetes 清单文件提供更智能化的管理
-*管理 Helm 软件包的发布
+* 鏌ユ壘骞朵娇鐢ㄥ凡缁忔墦鍖呬负 Kubernetes charts 鐨勬祦琛岃蒋浠
+* 鍒嗕韩鎮ㄨ嚜宸辩殑搴旂敤浣滀负 Kubernetes charts
+* 涓 Kubernetes 搴旂敤鍒涘缓鍙噸澶嶆墽琛岀殑鏋勫缓
+* 涓烘偍鐨 Kubernetes 娓呭崟鏂囦欢鎻愪緵鏇存櫤鑳藉寲鐨勭鐞
+* 绠$悊 Helm 杞欢鍖呯殑鍙戝竷
## Kompose
-[`Kompose`](https://github.com/kubernetes-incubator/kompose) 一个转换工具,用来帮助 Docker Compose 用户迁移至 Kubernetes。
+[`Kompose`](https://github.com/kubernetes-incubator/kompose) 涓涓浆鎹㈠伐鍏凤紝鐢ㄦ潵甯姪 Docker Compose 鐢ㄦ埛杩佺Щ鑷 Kubernetes銆
-使用 Kompose:
+浣跨敤 Kompose:
-* 将一个 Docker Compose 文件解释成 Kubernetes 对象
-* 将本地 Docker 开发 转变成通过 Kubernetes 来管理
-* 转换 v1 或 v2 Docker Compose `yaml` 文件 或 [分布式应用程序包](https://docs.docker.com/compose/bundles/)
-{{% /capture %}}
\ No newline at end of file
+* 灏嗕竴涓 Docker Compose 鏂囦欢瑙i噴鎴 Kubernetes 瀵硅薄
+* 灏嗘湰鍦 Docker 寮鍙 杞彉鎴愰氳繃 Kubernetes 鏉ョ鐞
+* 杞崲 v1 鎴 v2 Docker Compose `yaml` 鏂囦欢 鎴 [鍒嗗竷寮忓簲鐢ㄧ▼搴忓寘](https://docs.docker.com/compose/bundles/)
+{{% /capture %}}
From 7ebdd661d7ca4ab0a868a176e287cc4be2a93f0c Mon Sep 17 00:00:00 2001
From: MengZeLee
Date: Sat, 3 Nov 2018 19:37:07 +0800
Subject: [PATCH 009/222] Modified into appropriate words (#10768)
* Modified into appropriate words
* Modified into appropriate words
---
content/en/docs/setup/independent/kubelet-integration.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/content/en/docs/setup/independent/kubelet-integration.md b/content/en/docs/setup/independent/kubelet-integration.md
index cd56d6c4b4..9b55041733 100644
--- a/content/en/docs/setup/independent/kubelet-integration.md
+++ b/content/en/docs/setup/independent/kubelet-integration.md
@@ -11,8 +11,8 @@ weight: 40
{{< feature-state for_k8s_version="1.11" state="stable" >}}
The lifecycle of the kubeadm CLI tool is decoupled from the
-[Kubernetes Node Agent](/docs/reference/command-line-tools-reference/kubelet), which is a daemon that runs
-on each Kubernetes master or Node. The kubeadm CLI tool is executed by the user when Kubernetes is
+[kubelet](/docs/reference/command-line-tools-reference/kubelet), which is a daemon that runs
+on each node within the Kubernetes cluster. The kubeadm CLI tool is executed by the user when Kubernetes is
initialized or upgraded, whereas the kubelet is always running in the background.
Since the kubelet is a daemon, it needs to be maintained by some kind of a init
@@ -52,7 +52,7 @@ Virtual IPs for services are now allocated from this subnet. You also need to se
by the kubelet, using the `--cluster-dns` flag. This setting needs to be the same for every kubelet
on every manager and Node in the cluster. The kubelet provides a versioned, structured API object
that can configure most parameters in the kubelet and push out this configuration to each running
-kubelet in the cluster. This object is called **the kubelet's ComponentConfig**.
+kubelet in the cluster. This object is called **the kubelet's ComponentConfig**.
The ComponentConfig allows the user to specify flags such as the cluster DNS IP addresses expressed as
a list of values to a camelCased key, illustrated by the following example:
@@ -82,7 +82,7 @@ networking, or other host-specific parameters. The following list provides a few
- Currently, the kubelet cannot automatically detects the cgroup driver used by the CRI runtime,
but the value of `--cgroup-driver` must match the cgroup driver used by the CRI runtime to ensure
the health of the kubelet.
-
+
- Depending on the CRI runtime your cluster uses, you may need to specify different flags to the kubelet.
For instance, when using Docker, you need to specify flags such as `--network-plugin=cni`, but if you
are using an external runtime, you need to specify `--container-runtime=remote` and specify the CRI
From a9d8c54e6d2b447361beaa0643b251227993aa2e Mon Sep 17 00:00:00 2001
From: June Yi
Date: Sun, 4 Nov 2018 15:07:38 +0900
Subject: [PATCH 010/222] Add i18n strings for Korean translation (#10611)
---
i18n/ko.toml | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 82 insertions(+)
create mode 100644 i18n/ko.toml
diff --git a/i18n/ko.toml b/i18n/ko.toml
new file mode 100644
index 0000000000..8a4c73197a
--- /dev/null
+++ b/i18n/ko.toml
@@ -0,0 +1,82 @@
+# i18n strings for the Korean translation.
+
+[main_read_about]
+other = "Read about"
+
+[main_read_more]
+other = "雿 鞚疥赴"
+
+[main_github_invite]
+other = "旖旍柎 炜犽矂雱ろ嫲鞀 旖旊摐 氩犾澊鞀るゼ 靷错幋氤措姅雿 甏鞁澊 鞛堨溂鞁媹旯?"
+
+[main_github_view_on]
+other = "GitHub鞐愳劀 氤搓赴"
+
+[main_github_create_an_issue]
+other = "鞚挫妶 靸濎劚頃橁赴"
+
+[main_community_explore]
+other = "旎る雼堩嫲 霊橂煬氤搓赴"
+
+[main_kubernetes_features]
+other = "炜犽矂雱ろ嫲鞀 旮半姤"
+
+[main_cncf_project]
+other = """炜犽矂雱ろ嫲鞀る姅 CNCF graduated 頂勲鞝濏姼鞛呺媹雼.
"""
+
+[main_kubeweekly_signup]
+other = "甑弲頃橁赴"
+
+[main_contribute]
+other = "旮办棳頃橁赴"
+
+[main_edit_this_page]
+other = "韼橃澊歆 韼胳頃橁赴"
+
+[main_page_history]
+other ="韼橃澊歆 氤瓴 鞚措牓"
+
+[main_page_last_modified_on]
+other = "斓滌 靾橃爼鞚检嫓"
+
+[main_by]
+other = "by"
+
+[main_documentation_license]
+other = """The Kubernetes Authors | Documentation Distributed under CC BY 4.0"""
+
+[main_copyright_notice]
+other = """The Linux Foundation ®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page"""
+
+# Labels for the docs portal home page.
+[docs_label_browse]
+other = "氍胳劀 霊橂煬氤搓赴"
+
+[docs_label_contributors]
+other = "旎姼毽钒韯"
+
+[docs_label_users]
+other = "靷毄鞛"
+
+[docs_label_i_am]
+other = "雮橂姅..."
+
+
+
+# Community links
+[community_twitter_name]
+other = "Twitter"
+[community_github_name]
+other = "GitHub"
+[community_slack_name]
+other = "Slack"
+[community_stack_overflow_name]
+other = "Stack Overflow"
+[community_forum_name]
+other = "Forum"
+[community_events_calendar]
+other = "Events Calendar"
+
+# UI elements
+[ui_search_placeholder]
+other = "瓴靸夗晿旮"
From 6d7f27ea45ea17e9f9c7a96926b1cc93b5019436 Mon Sep 17 00:00:00 2001
From: Jake Crawford
Date: Sun, 4 Nov 2018 22:32:19 -0700
Subject: [PATCH 011/222] Fix typo in word repositories (#10883)
---
content/en/docs/contribute/advanced.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/en/docs/contribute/advanced.md b/content/en/docs/contribute/advanced.md
index 1a430d6a7d..3b55e78a61 100644
--- a/content/en/docs/contribute/advanced.md
+++ b/content/en/docs/contribute/advanced.md
@@ -98,7 +98,7 @@ SIG Docs [reviewers](/docs/contribute/participating/#reviewers) can sponsor
new contributors.
After a new contributor has successfully submitted 5 substantive pull requests
-to one or more Kubernetes repositiries, they are eligible to apply for
+to one or more Kubernetes repositories, they are eligible to apply for
[membership](/docs/contribute/participating#members) in the Kubernetes
organization. The contributor's membership needs to be backed by two sponsors
who are already reviewers.
From 795de19c0719e0616380f6c4929b816f3dfbf987 Mon Sep 17 00:00:00 2001
From: Juan Vallejo
Date: Mon, 5 Nov 2018 00:45:58 -0500
Subject: [PATCH 012/222] add note informing users of env var updates (#10819)
---
content/en/docs/tasks/extend-kubectl/kubectl-plugins.md | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/content/en/docs/tasks/extend-kubectl/kubectl-plugins.md b/content/en/docs/tasks/extend-kubectl/kubectl-plugins.md
index 72e358bb62..f671ef5231 100644
--- a/content/en/docs/tasks/extend-kubectl/kubectl-plugins.md
+++ b/content/en/docs/tasks/extend-kubectl/kubectl-plugins.md
@@ -126,6 +126,12 @@ For example, a plugin that wishes to be invoked whenever the command `kubectl fo
#### Flags and argument handling
+{{< note >}}
+**Note:** Unlike previous versions of `kubectl`, the plugin mechanism will _not_ create any custom, plugin-specific values or environment variables to a plugin process.
+This means that environment variables such as `KUBECTL_PLUGINS_CURRENT_NAMESPACE` are no longer provided to a plugin. Plugins must parse all of the arguments passed to them by a user,
+and handle flag validation as part of their own implementation. For plugins written in Go, a set of utilities has been provided under [k8s.io/cli-runtime](https://github.com/kubernetes/cli-runtime) to assist with this.
+{{< /note >}}
+
Taking our `kubectl-foo-bar-baz` plugin from the above scenario, we further explore additional cases where users invoke our plugin while providing additional flags and arguments.
For example, in a situation where a user invokes the command `kubectl foo bar baz arg1 --flag=value arg2`, the plugin mechanism will first try to find the plugin with the longest possible name, which in this case
would be `kubectk-foo-bar-baz-arg1`. Upon not finding that plugin, it then treats the last dash-separated value as an argument (`arg1` in this case), and attempts to find the next longest possible name, `kubectl-foo-bar-baz`.
From 15518689c7317d810f81218f7cf8f17348ae5319 Mon Sep 17 00:00:00 2001
From: Wang Bing
Date: Mon, 5 Nov 2018 19:35:37 +0800
Subject: [PATCH 013/222] Fix typo (#10877)
---
content/en/blog/_posts/2017-10-00-Five-Days-Of-Kubernetes-18.md | 2 +-
.../en/blog/_posts/2018-01-00-Extensible-Admission-Is-Beta.md | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/content/en/blog/_posts/2017-10-00-Five-Days-Of-Kubernetes-18.md b/content/en/blog/_posts/2017-10-00-Five-Days-Of-Kubernetes-18.md
index 2e7375c861..d7011e4052 100644
--- a/content/en/blog/_posts/2017-10-00-Five-Days-Of-Kubernetes-18.md
+++ b/content/en/blog/_posts/2017-10-00-Five-Days-Of-Kubernetes-18.md
@@ -14,7 +14,7 @@ While many improvements have been contributed, we highlight key features in this
**Day 1:** [5 Days of Kubernetes 1.8](https://kubernetes.io/blog/2017/10/five-days-of-kubernetes-18)
**Day 2:** [kubeadm v1.8 Introduces Easy Upgrades for Kubernetes Clusters](https://kubernetes.io/blog/2017/10/kubeadm-v18-released)
-**Day 3:** [Kuberentes v.1.8 Retrospective: It Takes a Village to Raise a Kubernetes](https://kubernetes.io/blog/2017/10/it-takes-village-to-raise-kubernetes)
+**Day 3:** [Kubernetes v.1.8 Retrospective: It Takes a Village to Raise a Kubernetes](https://kubernetes.io/blog/2017/10/it-takes-village-to-raise-kubernetes)
**Day 4:** [Using RBAC, Generally Available in Kubernetes v1.8](https://kubernetes.io/blog/2017/10/using-rbac-generally-available-18)
**Day 5:** [Enforcing Network Policies in Kubernetes](https://kubernetes.io/blog/2017/10/enforcing-network-policies-in-kubernetes)
diff --git a/content/en/blog/_posts/2018-01-00-Extensible-Admission-Is-Beta.md b/content/en/blog/_posts/2018-01-00-Extensible-Admission-Is-Beta.md
index fe94dbf1b0..cc258be758 100644
--- a/content/en/blog/_posts/2018-01-00-Extensible-Admission-Is-Beta.md
+++ b/content/en/blog/_posts/2018-01-00-Extensible-Admission-Is-Beta.md
@@ -111,7 +111,7 @@ For the self-hosted category, a cleverly built webhook admission server and topo
### Simple, secure, portable, zero-config topology
If you build your webhook admission server to also be an extension API server, it becomes possible to aggregate it as a normal API server. This has a number of advantages:
-- Your webhook becomes available like any other API under default kube-apiserver service `kubernetes.default.svc` (e.g. [https://kubernetes.default.svc/apis/admission.example.com/v1/mymutatingadmissionreviews](https://kuberentes.default.svc/apis/admission.example.com/v1/mymutatingadmissionreviews)). Among other benefits, you can test using `kubectl`.
+- Your webhook becomes available like any other API under default kube-apiserver service `kubernetes.default.svc` (e.g. [https://kubernetes.default.svc/apis/admission.example.com/v1/mymutatingadmissionreviews](https://kubernetes.default.svc/apis/admission.example.com/v1/mymutatingadmissionreviews)). Among other benefits, you can test using `kubectl`.
- Your webhook automatically (without any config) makes use of the in-cluster authentication and authorization provided by kube-apiserver. You can restrict access to your webhook with normal RBAC rules.
- Your extension API servers and kube-apiserver automatically (without any config) make use of their in-cluster credentials to communicate with the webhook.
- Extension API servers do not leak their service account token to your webhook because they go through kube-apiserver, which is a secure front proxy.
From d01b76d08044e213f06f567a99e127cd496178fb Mon Sep 17 00:00:00 2001
From: zhangmingld
Date: Mon, 5 Nov 2018 22:17:32 +0800
Subject: [PATCH 014/222] fix word err in Disruption (#10884)
---
content/en/docs/concepts/workloads/pods/disruptions.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/en/docs/concepts/workloads/pods/disruptions.md b/content/en/docs/concepts/workloads/pods/disruptions.md
index 79b0ac00d9..3a3ecb36cf 100644
--- a/content/en/docs/concepts/workloads/pods/disruptions.md
+++ b/content/en/docs/concepts/workloads/pods/disruptions.md
@@ -93,7 +93,7 @@ time as frequent voluntary disruptions. We call this set of features
## How Disruption Budgets Work
An Application Owner can create a `PodDisruptionBudget` object (PDB) for each application.
-A PDB limits the number pods of a replicated application that are down simultaneously from
+A PDB limits the number of pods of a replicated application that are down simultaneously from
voluntary disruptions. For example, a quorum-based application would
like to ensure that the number of replicas running is never brought below the
number needed for a quorum. A web front end might want to
From e0168fd8dcbfdb59e8e87b9678058d6c43cd1be9 Mon Sep 17 00:00:00 2001
From: Cody Clark
Date: Mon, 5 Nov 2018 09:29:14 -0800
Subject: [PATCH 015/222] Tutorial cleanup: Delete K8s 101 and 201 (#10786)
* Delete k8s201.md
* Delete k8s101.md
---
content/en/docs/tutorials/k8s101.md | 183 -------------------
content/en/docs/tutorials/k8s201.md | 266 ----------------------------
2 files changed, 449 deletions(-)
delete mode 100644 content/en/docs/tutorials/k8s101.md
delete mode 100644 content/en/docs/tutorials/k8s201.md
diff --git a/content/en/docs/tutorials/k8s101.md b/content/en/docs/tutorials/k8s101.md
deleted file mode 100644
index 0dedd9f3d2..0000000000
--- a/content/en/docs/tutorials/k8s101.md
+++ /dev/null
@@ -1,183 +0,0 @@
----
-reviewers:
-- eparis
-- mikedanese
-title: Kubernetes 101
-content_template: templates/tutorial
----
-
-{{% capture overview %}}
-
-For Kubernetes 101, we will cover kubectl, Pods, Volumes, and multiple containers.
-
-{{% /capture %}}
-
-{{% capture objectives %}}
-
-* What is `kubectl`.
-* Manage a Pod.
-* Create and mount a volume.
-* Create multiple containers in a Pod.
-
-{{% /capture %}}
-
-{{% capture prerequisites %}}
-
-* {{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
-* In order for the kubectl usage examples to work, make sure you have an example directory locally, either from [a release](https://github.com/kubernetes/kubernetes/releases) or the latest `.yaml` files located [here](https://github.com/kubernetes/website/tree/master/content/en/docs/tutorials).
-
-{{% /capture %}}
-
-{{% capture lessoncontent %}}
-
-## Kubectl CLI
-
-The easiest way to interact with Kubernetes is through the kubectl command-line interface.
-
-For more info about kubectl, including its usage, commands, and parameters, see [Overview of kubectl](/docs/reference/kubectl/overview/).
-
-For more information about installing and configuring kubectl, see [Install and Set Up kubectl](/docs/tasks/tools/install-kubectl/).
-
-## Pods
-
-In Kubernetes, a group of one or more containers is called a _Pod_. Containers in a Pod are deployed together, and are started, stopped, and replicated as a group.
-
-For more information, see [Pods](/docs/concepts/workloads/pods/pod/).
-
-
-#### Pod Definition
-
-The simplest Pod definition describes the deployment of a single container. For example, an nginx web server Pod might be defined as:
-
-{{< codenew file="pods/simple-pod.yaml" >}}
-
-A Pod definition is a declaration of a _desired state_. Desired state is a very important concept in the Kubernetes model. Many things present a desired state to the system, and Kubernetes' ensures that the current state matches the desired state. For example, when you create a Pod and declare that the containers in it to be running. If the containers happen not to be running because of a program failure, Kubernetes continues to (re-)create the Pod in order to drive the pod to the desired state. This process continues until you delete the Pod.
-
-For more information, see [Kubernetes Design Documents and Proposals](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/README.md).
-
-
-#### Pod Management
-
-Create a Pod containing an nginx server ([simple-pod.yaml](/examples/pods/simple-pod.yaml)):
-
-```shell
-kubectl create -f https://k8s.io/examples/pods/simple-pod.yaml
-```
-
-List all Pods:
-
-```shell
-kubectl get pods
-```
-
-On most providers, the Pod IPs are not externally accessible. The easiest way to test that the pod is working is to create a busybox Pod and exec commands on it remotely. For more information, see [Get a Shell to a Running Container](/docs/tasks/debug-application-cluster/get-shell-running-container/).
-
-If the IP of the Pod is accessible, you can access its http endpoint with wget on port 80:
-
-```shell
-kubectl run busybox --image=busybox --restart=Never --tty -i --generator=run-pod/v1 --env "POD_IP=$(kubectl get pod nginx -o go-template='{{.status.podIP}}')"
-u@busybox$ wget -qO- http://$POD_IP # Run in the busybox container
-u@busybox$ exit # Exit the busybox container
-```
-
-```shell
-kubectl delete pod busybox # Clean up the pod we created with "kubectl run"
-```
-
-To delete a Pod named nginx:
-
-```shell
-kubectl delete pod nginx
-```
-
-
-#### Volumes
-
-That's great for a simple static web server, but what about persistent storage?
-
-The container file system only lives as long as the container does. So if your app's state needs to survive relocation, reboots, and crashes, you'll need to configure some persistent storage.
-
-In this example you can create a Redis Pod with a named volume, and a volume mount that defines the path to mount the Volume.
-
-1. Define a Volume:
-
- ```yaml
- volumes:
- - name: redis-storage
- emptyDir: {}
- ```
-
-1. Define a Volume mount within a container definition:
-
- ```yaml
- volumeMounts:
- 聽# name must match the volume name defined in volumes
- 聽- name: redis-storage
- # mount path within the container
- mountPath: /data/redis
- ```
-
-Here is an example of Redis Pod definition with a persistent storage volume ([redis.yaml](/examples/pods/storage/redis.yaml)):
-
-{{< codenew file="pods/storage/redis.yaml" >}}
-
-Where:
-
-- The `volumeMounts` `name` is a reference to a specific `volumes` `name`.
-- The `volumeMounts` `mountPath` is the path to mount the volume within the container.
-
-##### Volume Types
-
-- **EmptyDir**: Creates a new directory that exists as long as the Pod is running on the node, but it can persist across container failures and restarts.
-- **HostPath**: Mounts an existing directory on the node's file system. For example (`/var/logs`).
-
-For more information, see [Volumes](/docs/concepts/storage/volumes/).
-
-
-#### Multiple Containers
-
-{{< note >}}
-**Note:** The examples below are syntactically correct, but some of the images (e.g. kubernetes/git-monitor) don't exist yet. We're working on turning these into working examples.
-{{< /note >}}
-
-
-However, often you want to have two different containers that work together. An example of this would be a web server, and a helper job that polls a git repository for new updates:
-
-```yaml
-apiVersion: v1
-kind: Pod
-metadata:
- name: www
-spec:
- containers:
- - name: nginx
- image: nginx
- volumeMounts:
- - mountPath: /srv/www
- name: www-data
- readOnly: true
- - name: git-monitor
- image: kubernetes/git-monitor
- env:
- - name: GIT_REPO
- value: http://github.com/some/repo.git
- volumeMounts:
- - mountPath: /data
- name: www-data
- volumes:
- - name: www-data
- emptyDir: {}
-```
-
-Note that we have also added a Volume here. In this case, the Volume is mounted into both containers. It is marked `readOnly` in the web server's case, since it doesn't need to write to the directory.
-
-Finally, we have also introduced an environment variable to the `git-monitor` container, which allows us to parameterize that container with the particular git repository that we want to track.
-
-{{% /capture %}}
-
-{{% capture whatsnext %}}
-
-Continue on to [Kubernetes 201](/docs/tutorials/k8s201/) or
-for a complete application see the [guestbook example](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/guestbook/)
-
-{{% /capture %}}
diff --git a/content/en/docs/tutorials/k8s201.md b/content/en/docs/tutorials/k8s201.md
deleted file mode 100644
index 3c8b3aa8f9..0000000000
--- a/content/en/docs/tutorials/k8s201.md
+++ /dev/null
@@ -1,266 +0,0 @@
----
-reviewers:
-- janetkuo
-- mikedanese
-title: Kubernetes 201
-content_template: templates/tutorial
----
-
-
-{{% capture overview %}}
-
-For Kubernetes 201, we will pick up where 101 left off and cover some slightly more advanced topics in Kubernetes, related to application productionization, Deployment and scaling.
-
-If you went through [Kubernetes 101](/docs/tutorials/k8s101/), you learned about kubectl, Pods, Volumes, and multiple containers.
-
-{{% /capture %}}
-
-{{% capture objectives %}}
-
-* Add labels to the Pod.
-* Manage a Deployment.
-* Manage a Service.
-* What is the health checking.
-
-{{% /capture %}}
-
-{{% capture prerequisites %}}
-
-* {{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
-* In order for the kubectl usage examples to work, make sure you have an examples directory locally, either from [a release](https://github.com/kubernetes/kubernetes/releases) or [the source](https://github.com/kubernetes/kubernetes).
-
-{{% /capture %}}
-
-{{% capture lessoncontent %}}
-
-## Labels
-
-Having already learned about Pods and how to create them, you may be struck by an urge to create many, many Pods. Please do! But eventually you will need a system to organize these Pods into groups. The system for achieving this in Kubernetes is Labels. Labels are key-value pairs that are attached to each object in Kubernetes. Label selectors can be passed along with a RESTful `list` request to the apiserver to retrieve a list of objects which match that label selector.
-
-To add a label, add a labels section under metadata in the Pod definition:
-
-```yaml
- labels:
- env: test
-```
-
-For example, here is the nginx Pod definition with labels ([pod-nginx.yaml](/examples/pods/pod-nginx.yaml)):
-
-{{< codenew file="pods/pod-nginx.yaml" >}}
-
-Create the labeled Pod:
-
-```shell
-kubectl create -f https://k8s.io/examples/pods/pod-nginx.yaml
-```
-
-List all Pods with the label `env=test`:
-
-```shell
-kubectl get pods -l env=test
-```
-
-Delete the Pod by label:
-
-```shell
-kubectl delete pod -l env=test
-```
-
-For more information, see [Labels](/docs/concepts/overview/working-with-objects/labels/).
-They are a core concept used by two additional Kubernetes building blocks: Deployments and Services.
-
-
-## Deployments
-
-Now that you know how to make awesome, multi-container, labeled Pods and you want to use them to build an application, you might be tempted to just start building a whole bunch of individual Pods, but if you do that, a whole host of operational concerns pop up. For example: how will you scale the number of Pods up or down? How will you roll out a new release?
-
-The answer to those questions and more is to use a [Deployment](/docs/concepts/workloads/controllers/deployment/) to manage maintaining and updating your running _Pods_.
-
-A Deployment object defines a Pod creation template (a "cookie-cutter" if you will) and desired replica count. The Deployment uses a label selector to identify the Pods it manages, and will create or delete Pods as needed to meet the replica count. Deployments are also used to manage safely rolling out changes to your running Pods.
-
-Here is a Deployment that instantiates two nginx Pods:
-
-{{< codenew file="application/deployment.yaml" >}}
-
-
-### Deployment Management
-
-Create an nginx Deployment:
-
-```shell
-kubectl create -f https://k8s.io/examples/application/deployment.yaml
-```
-
-List all Deployments:
-
-```shell
-kubectl get deployment
-```
-
-List the Pods created by the Deployment:
-
-```shell
-kubectl get pods -l app=nginx
-```
-
-Upgrade the nginx container from 1.7.9 to 1.8 by changing the Deployment and calling `apply`. The following config
-contains the desired changes:
-
-{{< codenew file="application/deployment-update.yaml" >}}
-
-```shell
-kubectl apply -f https://k8s.io/examples/application/deployment-update.yaml
-```
-
-Watch the Deployment create Pods with new names and delete the old Pods:
-
-```shell
-kubectl get pods -l app=nginx
-```
-
-Delete the Deployment by name:
-
-```shell
-kubectl delete deployment nginx-deployment
-```
-
-For more information, such as how to rollback Deployment changes to a previous version, see [_Deployments_](/docs/concepts/workloads/controllers/deployment/).
-
-
-## Services
-
-Once you have a replicated set of Pods, you need an abstraction that enables connectivity between the layers of your application. For example, if you have a Deployment managing your backend jobs, you don't want to have to reconfigure your front-ends whenever you re-scale your backends. Likewise, if the Pods in your backends are scheduled (or rescheduled) onto different machines, you can't be required to re-configure your front-ends. In Kubernetes, the service abstraction achieves these goals. A service provides a way to refer to a set of Pods (selected by labels) with a single static IP address. It may also provide load balancing, if supported by the provider.
-
-For example, here is a service that balances across the Pods created in the previous nginx Deployment example ([service.yaml](/examples/service/nginx-service.yaml)):
-
-{{< codenew file="service/nginx-service.yaml" >}}
-
-
-### Service Management
-
-Create an nginx Service:
-
-```shell
-kubectl create -f https://k8s.io/examples/service/nginx-service.yaml
-```
-
-List all services:
-
-```shell
-kubectl get services
-```
-
-On most providers, the service IPs are not externally accessible. The easiest way to test that the service is working is to create a busybox Pod and exec commands on it remotely. See the [command execution documentation](/docs/user-guide/kubectl-overview/) for details.
-
-Provided the service IP is accessible, you should be able to access its http endpoint with wget on the exposed port:
-
-```shell
-export SERVICE_IP=$(kubectl get service nginx-service -o go-template='{{.spec.clusterIP}}')
-export SERVICE_PORT=$(kubectl get service nginx-service -o go-template='{{(index .spec.ports 0).port}}')
-```
-
-Check `$SERVICE_IP` and `$SERVICE_PORT`:
-
-```shell
-echo "$SERVICE_IP:$SERVICE_PORT"
-```
-
-Then, create a busybox Pod:
-```shell
-kubectl run busybox --generator=run-pod/v1 --image=busybox --restart=Never --tty -i --env "SERVICE_IP=$SERVICE_IP" --env "SERVICE_PORT=$SERVICE_PORT"
-u@busybox$ wget -qO- http://$SERVICE_IP:$SERVICE_PORT # Run in the busybox container
-u@busybox$ exit # Exit the busybox container
-
-kubectl delete pod busybox # Clean up the pod we created with "kubectl run"
-
-```
-
-The service definition [exposed the Nginx Service](/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/) as port 8000 (`$SERVICE_PORT`). We can also access the service from a host running Kubernetes using that port:
-
-```shell
-wget -qO- http://$SERVICE_IP:$SERVICE_PORT # Run on a Kubernetes host
-```
-
-(This works on AWS with Weave.)
-
-To delete the service by name:
-
-```shell
-kubectl delete service nginx-service
-```
-
-When created, each service is assigned a unique IP address. This address is tied to the lifespan of the Service, and will not change while the Service is alive. Pods can be configured to talk to the service, and know that communication to the service will be automatically load-balanced out to some Pod that is a member of the set identified by the label selector in the Service.
-
-For more information, see [Services](/docs/concepts/services-networking/service/).
-
-
-## Health Checking
-
-When I write code it never crashes, right? Sadly the [Kubernetes issues list](https://github.com/kubernetes/kubernetes/issues) indicates otherwise...
-
-Rather than trying to write bug-free code, a better approach is to use a management system to perform periodic health checking
-and repair of your application. That way a system outside of your application itself is responsible for monitoring the
-application and taking action to fix it. It's important that the system be outside of the application, since if
-your application fails and the health checking agent is part of your application, it may fail as well and you'll never know.
-In Kubernetes, the health check monitor is the Kubelet agent.
-
-### Process Health Checking
-
-The simplest form of health-checking is just process level health checking. The Kubelet constantly asks the Docker daemon
-if the container process is still running, and if not, the container process is restarted. In all of the Kubernetes examples
-you have run so far, this health checking was actually already enabled. It's on for every single container that runs in
-Kubernetes.
-
-### Application Health Checking
-
-However, in many cases this low-level health checking is insufficient. Consider, for example, the following code:
-
-```go
-lockOne := sync.Mutex{}
-lockTwo := sync.Mutex{}
-
-go func() {
- lockOne.Lock();
- lockTwo.Lock();
- ...
-}()
-
-lockTwo.Lock();
-lockOne.Lock();
-```
-
-This is a classic example of a problem in computer science known as ["Deadlock"](https://en.wikipedia.org/wiki/Deadlock). From Docker's perspective your application is
-still operating and the process is still running, but from your application's perspective your code is locked up and will never respond correctly.
-
-To address this problem, Kubernetes supports user implemented application health-checks. These checks are performed by the
-Kubelet to ensure that your application is operating correctly for a definition of "correctly" that _you_ provide.
-
-Currently, there are three types of application health checks that you can choose from:
-
- * HTTP Health Checks - The Kubelet will call a web hook. If it returns between 200 and 399, it is considered success, failure otherwise. See health check examples [here](/docs/user-guide/liveness/).
- * Container Exec - The Kubelet will execute a command inside your container. If it exits with status 0 it will be considered a success. See health check examples [here](/docs/user-guide/liveness/).
- * TCP Socket - The Kubelet will attempt to open a socket to your container. If it can establish a connection, the container is considered healthy, if it can't it is considered a failure.
-
-In all cases, if the Kubelet discovers a failure the container is restarted.
-
-The container health checks are configured in the `livenessProbe` section of your container config. There you can also specify an `initialDelaySeconds` that is a grace period from when the container is started to when health checks are performed, to enable your container to perform any necessary initialization.
-
-Here is an example config for a Pod with an HTTP health check
-([pod-with-http-healthcheck.yaml](/examples/pods/probe/pod-with-http-healthcheck.yaml)):
-
-{{< codenew file="pods/probe/pod-with-http-healthcheck.yaml" >}}
-
-And here is an example config for a Pod with a TCP Socket health check
-([pod-with-tcp-socket-healthcheck.yaml](/examples/pods/probe/pod-with-tcp-socket-healthcheck.yaml)):
-
-{{< codenew file="pods/probe/pod-with-tcp-socket-healthcheck.yaml" >}}
-
-For more information about health checking, see [Container Probes](/docs/user-guide/pod-states/#container-probes).
-
-{{% /capture %}}
-
-{{% capture whatsnext %}}
-
-For a complete application see the [guestbook example](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/guestbook/).
-
-{{% /capture %}}
From 18343eb44b025a18eb6d39f5ae192ad81d7dd09b Mon Sep 17 00:00:00 2001
From: Karen Bradshaw
Date: Mon, 5 Nov 2018 13:01:07 -0500
Subject: [PATCH 016/222] clean-up minikube toc (#10873)
* clean-up minikube toc
- clean-up minikube toc
- clean-up localkube link
* update sub-headers
* added link to kubeadm
- added link to kubeadm
- clean-up link to kubectl config set-context
---
content/en/docs/setup/minikube.md | 84 +++++++++++++++++--------------
1 file changed, 46 insertions(+), 38 deletions(-)
diff --git a/content/en/docs/setup/minikube.md b/content/en/docs/setup/minikube.md
index 09ecfc62cc..8e763c777d 100644
--- a/content/en/docs/setup/minikube.md
+++ b/content/en/docs/setup/minikube.md
@@ -4,13 +4,18 @@ reviewers:
- balopat
- aaron-prindle
title: Running Kubernetes Locally via Minikube
+content_template: templates/concept
---
+{{% capture overview %}}
+
Minikube is a tool that makes it easy to run Kubernetes locally. Minikube runs a single-node Kubernetes cluster inside a VM on your laptop for users looking to try out Kubernetes or develop with it day-to-day.
-{{< toc >}}
+{{% /capture %}}
-### Minikube Features
+{{% capture body %}}
+
+## Minikube Features
* Minikube supports Kubernetes features such as:
* DNS
@@ -27,7 +32,7 @@ See [Installing Minikube](/docs/tasks/tools/install-minikube/).
## Quickstart
-Here's a brief demo of minikube usage.
+Here's a brief demo of Minikube usage.
If you want to change the VM driver add the appropriate `--vm-driver=xxx` flag to `minikube start`. Minikube supports
the following drivers:
@@ -166,28 +171,29 @@ plugins, if required.
### Reusing the Docker daemon
-When using a single VM of Kubernetes, it's really handy to reuse the minikube's built-in Docker daemon; as this means you don't have to build a docker registry on your host machine and push the image into it - you can just build inside the same docker daemon as minikube which speeds up local experiments. Just make sure you tag your Docker image with something other than 'latest' and use that tag while you pull the image. Otherwise, if you do not specify version of your image, it will be assumed as `:latest`, with pull image policy of `Always` correspondingly, which may eventually result in `ErrImagePull` as you may not have any versions of your Docker image out there in the default docker registry (usually DockerHub) yet.
+When using a single VM of Kubernetes, it's really handy to reuse the Minikube's built-in Docker daemon; as this means you don't have to build a docker registry on your host machine and push the image into it - you can just build inside the same docker daemon as minikube which speeds up local experiments. Just make sure you tag your Docker image with something other than 'latest' and use that tag while you pull the image. Otherwise, if you do not specify version of your image, it will be assumed as `:latest`, with pull image policy of `Always` correspondingly, which may eventually result in `ErrImagePull` as you may not have any versions of your Docker image out there in the default docker registry (usually DockerHub) yet.
To be able to work with the docker daemon on your mac/linux host use the `docker-env command` in your shell:
-```
+```shell
eval $(minikube docker-env)
```
+
You should now be able to use docker on the command line on your host mac/linux machine talking to the docker daemon inside the minikube VM:
-```
+```shell
docker ps
```
On Centos 7, docker may report the following error:
-```
+```shell
Could not read CA certificate "/etc/docker/ca.pem": open /etc/docker/ca.pem: no such file or directory
```
-The fix is to update /etc/sysconfig/docker to ensure that minikube's environment changes are respected:
+The fix is to update /etc/sysconfig/docker to ensure that Minikube's environment changes are respected:
-```
+```shell
< DOCKER_CERT_PATH=/etc/docker
---
> if [ -z "${DOCKER_CERT_PATH}" ]; then
@@ -195,19 +201,19 @@ The fix is to update /etc/sysconfig/docker to ensure that minikube's environment
> fi
```
-Remember to turn off the imagePullPolicy:Always, as otherwise Kubernetes won't use images you built locally.
+Remember to turn off the imagePullPolicy:Always, otherwise Kubernetes won't use images you built locally.
## Managing your Cluster
### Starting a Cluster
The `minikube start` command can be used to start your cluster.
-This command creates and configures a virtual machine that runs a single-node Kubernetes cluster.
+This command creates and configures a Virtual Machine that runs a single-node Kubernetes cluster.
This command also configures your [kubectl](/docs/user-guide/kubectl-overview/) installation to communicate with this cluster.
-If you are behind a web proxy, you will need to pass this information in e.g. via
+If you are behind a web proxy, you will need to pass this information to the `minikube start` command:
-```
+```shell
https_proxy= minikube start --docker-env http_proxy= --docker-env https_proxy= --docker-env no_proxy=192.168.99.0/24
```
@@ -256,19 +262,19 @@ To set the `AuthorizationMode` on the `apiserver` to `RBAC`, you can use: `--ext
### Stopping a Cluster
The `minikube stop` command can be used to stop your cluster.
-This command shuts down the minikube virtual machine, but preserves all cluster state and data.
+This command shuts down the Minikube Virtual Machine, but preserves all cluster state and data.
Starting the cluster again will restore it to it's previous state.
### Deleting a Cluster
The `minikube delete` command can be used to delete your cluster.
-This command shuts down and deletes the minikube virtual machine. No data or state is preserved.
+This command shuts down and deletes the Minikube Virtual Machine. No data or state is preserved.
## Interacting with Your Cluster
### Kubectl
-The `minikube start` command creates a "[kubectl context](/docs/reference/generated/kubectl/kubectl-commands/#-em-set-context-em-)" called "minikube".
-This context contains the configuration to communicate with your minikube cluster.
+The `minikube start` command creates a [kubectl context](/docs/reference/generated/kubectl/kubectl-commands#-em-set-context-em-) called "minikube".
+This context contains the configuration to communicate with your Minikube cluster.
Minikube sets this context to default automatically, but if you need to switch back to it in the future, run:
@@ -278,7 +284,7 @@ Or pass the context on each command like this: `kubectl get pods --context=minik
### Dashboard
-To access the [Kubernetes Dashboard](/docs/tasks/access-application-cluster/web-ui-dashboard/), run this command in a shell after starting minikube to get the address:
+To access the [Kubernetes Dashboard](/docs/tasks/access-application-cluster/web-ui-dashboard/), run this command in a shell after starting Minikube to get the address:
```shell
minikube dashboard
@@ -286,7 +292,7 @@ minikube dashboard
### Services
-To access a service exposed via a node port, run this command in a shell after starting minikube to get the address:
+To access a service exposed via a node port, run this command in a shell after starting Minikube to get the address:
```shell
minikube service [-n NAMESPACE] [--url] NAME
@@ -294,7 +300,7 @@ minikube service [-n NAMESPACE] [--url] NAME
## Networking
-The minikube VM is exposed to the host system via a host-only IP address, that can be obtained with the `minikube ip` command.
+The Minikube VM is exposed to the host system via a host-only IP address, that can be obtained with the `minikube ip` command.
Any services of type `NodePort` can be accessed over that IP address, on the NodePort.
To determine the NodePort for your service, you can use a `kubectl` command like this:
@@ -303,13 +309,13 @@ To determine the NodePort for your service, you can use a `kubectl` command like
## Persistent Volumes
Minikube supports [PersistentVolumes](/docs/concepts/storage/persistent-volumes/) of type `hostPath`.
-These PersistentVolumes are mapped to a directory inside the minikube VM.
+These PersistentVolumes are mapped to a directory inside the Minikube VM.
The Minikube VM boots into a tmpfs, so most directories will not be persisted across reboots (`minikube stop`).
However, Minikube is configured to persist files stored under the following host directories:
* `/data`
-* `/var/lib/localkube`
+* `/var/lib/minikube`
* `/var/lib/docker`
Here is an example PersistentVolume config to persist data in the `/data` directory:
@@ -341,19 +347,18 @@ Some drivers will mount a host folder within the VM so that you can easily share
| VMware Fusion | macOS | /Users | /Users |
| Xhyve | macOS | /Users | /Users |
-
## Private Container Registries
To access a private container registry, follow the steps on [this page](/docs/concepts/containers/images/).
-We recommend you use `ImagePullSecrets`, but if you would like to configure access on the minikube VM you can place the `.dockercfg` in the `/home/docker` directory or the `config.json` in the `/home/docker/.docker` directory.
+We recommend you use `ImagePullSecrets`, but if you would like to configure access on the Minikube VM you can place the `.dockercfg` in the `/home/docker` directory or the `config.json` in the `/home/docker/.docker` directory.
## Add-ons
-In order to have minikube properly start or restart custom addons,
-place the addons you wish to be launched with minikube in the `~/.minikube/addons`
-directory. Addons in this folder will be moved to the minikube VM and
-launched each time minikube is started or restarted.
+In order to have Minikube properly start or restart custom addons,
+place the addons you wish to be launched with Minikube in the `~/.minikube/addons`
+directory. Addons in this folder will be moved to the Minikube VM and
+launched each time Minikube is started or restarted.
## Using Minikube with an HTTP Proxy
@@ -370,7 +375,7 @@ $ minikube start --docker-env http_proxy=http://$YOURPROXY:PORT \
--docker-env https_proxy=https://$YOURPROXY:PORT
```
-If your Virtual Machine address is 192.168.99.100, then chances are your proxy settings will prevent kubectl from directly reaching it.
+If your Virtual Machine address is 192.168.99.100, then chances are your proxy settings will prevent `kubectl` from directly reaching it.
To by-pass proxy configuration for this IP address, you should modify your no_proxy settings. You can do so with:
```shell
@@ -385,18 +390,21 @@ $ export no_proxy=$no_proxy,$(minikube ip)
## Design
-Minikube uses [libmachine](https://github.com/docker/machine/tree/master/libmachine) for provisioning VMs, and [localkube](https://git.k8s.io/minikube/pkg/localkube) (originally written and donated to this project by [RedSpread](https://github.com/redspread)) for running the cluster.
+Minikube uses [libmachine](https://github.com/docker/machine/tree/master/libmachine) for provisioning VMs, and [kubeadm](https://github.com/kubernetes/kubeadm) to provision a Kubernetes cluster.
-For more information about minikube, see the [proposal](https://git.k8s.io/community/contributors/design-proposals/cluster-lifecycle/local-cluster-ux.md).
+For more information about Minikube, see the [proposal](https://git.k8s.io/community/contributors/design-proposals/cluster-lifecycle/local-cluster-ux.md).
-## Additional Links:
-* **Goals and Non-Goals**: For the goals and non-goals of the minikube project, please see our [roadmap](https://git.k8s.io/minikube/docs/contributors/roadmap.md).
+## Additional Links
+
+* **Goals and Non-Goals**: For the goals and non-goals of the Minikube project, please see our [roadmap](https://git.k8s.io/minikube/docs/contributors/roadmap.md).
* **Development Guide**: See [CONTRIBUTING.md](https://git.k8s.io/minikube/CONTRIBUTING.md) for an overview of how to send pull requests.
-* **Building Minikube**: For instructions on how to build/test minikube from source, see the [build guide](https://git.k8s.io/minikube/docs/contributors/build_guide.md)
-* **Adding a New Dependency**: For instructions on how to add a new dependency to minikube see the [adding dependencies guide](https://git.k8s.io/minikube/docs/contributors/adding_a_dependency.md)
-* **Adding a New Addon**: For instruction on how to add a new addon for minikube see the [adding an addon guide](https://git.k8s.io/minikube/docs/contributors/adding_an_addon.md)
-* **Updating Kubernetes**: For instructions on how to update kubernetes see the [updating Kubernetes guide](https://git.k8s.io/minikube/docs/contributors/updating_kubernetes.md)
+* **Building Minikube**: For instructions on how to build/test Minikube from source, see the [build guide](https://git.k8s.io/minikube/docs/contributors/build_guide.md).
+* **Adding a New Dependency**: For instructions on how to add a new dependency to Minikube see the [adding dependencies guide](https://git.k8s.io/minikube/docs/contributors/adding_a_dependency.md).
+* **Adding a New Addon**: For instruction on how to add a new addon for Minikube see the [adding an addon guide](https://git.k8s.io/minikube/docs/contributors/adding_an_addon.md).
+* **Updating Kubernetes**: For instructions on how to update Kubernetes see the [updating Kubernetes guide](https://git.k8s.io/minikube/docs/contributors/updating_kubernetes.md).
## Community
-Contributions, questions, and comments are all welcomed and encouraged! minikube developers hang out on [Slack](https://kubernetes.slack.com) in the #minikube channel (get an invitation [here](http://slack.kubernetes.io/)). We also have the [kubernetes-dev Google Groups mailing list](https://groups.google.com/forum/#!forum/kubernetes-dev). If you are posting to the list please prefix your subject with "minikube: ".
+Contributions, questions, and comments are all welcomed and encouraged! Minikube developers hang out on [Slack](https://kubernetes.slack.com) in the #minikube channel (get an invitation [here](http://slack.kubernetes.io/)). We also have the [kubernetes-dev Google Groups mailing list](https://groups.google.com/forum/#!forum/kubernetes-dev). If you are posting to the list please prefix your subject with "minikube: ".
+
+{{% /capture %}}
\ No newline at end of file
From a0b97a3e5d3faa8ad9f5500646600641b6c49bdf Mon Sep 17 00:00:00 2001
From: Cody Clark
Date: Mon, 5 Nov 2018 11:31:11 -0800
Subject: [PATCH 017/222] Update tutorial to work with Katacoda, No Install
(#10797)
* Update tutorial to work with Katacoda, No Install
* Update hello-minikube.md
---
content/en/docs/tutorials/hello-minikube.md | 469 +++++++-------------
1 file changed, 150 insertions(+), 319 deletions(-)
diff --git a/content/en/docs/tutorials/hello-minikube.md b/content/en/docs/tutorials/hello-minikube.md
index f9f8867413..63f99066ce 100644
--- a/content/en/docs/tutorials/hello-minikube.md
+++ b/content/en/docs/tutorials/hello-minikube.md
@@ -12,47 +12,33 @@ menu:
{{% capture overview %}}
-The goal of this tutorial is for you to turn a simple Hello World Node.js app
-into an application running on Kubernetes. The tutorial shows you how to
-take code that you have developed on your machine, turn it into a Docker
-container image and then run that image on [Minikube](/docs/getting-started-guides/minikube).
-Minikube provides a simple way of running Kubernetes on your local machine for free.
+This tutorial shows you how to run a simple Hello World Node.js app
+on Kubernetes using [Minikube](/docs/getting-started-guides/minikube) and Katacoda.
+Katacoda provides a free, in-browser Kubernetes environment.
+
+{{< note >}}
+**Note:** You can also follow this tutorial if you've installed Minikube locally.
+{{< /note >}}
{{% /capture %}}
{{% capture objectives %}}
-* Run a hello world Node.js application.
-* Deploy the application to Minikube.
+* Deploy a hello world application to Minikube.
+* Run the app.
* View application logs.
-* Update the application image.
-
{{% /capture %}}
{{% capture prerequisites %}}
-* For macOS, you can use [Homebrew](https://brew.sh) to install Minikube.
+This tutorial provides a container image built from the following files:
- {{< note >}}
- **Note:** If you see the following Homebrew error when you run `brew update` after you update your computer to macOS 10.13:
-
- ```shell
- Error: /usr/local is not writable. You should change the ownership
- and permissions of /usr/local back to your user account:
- sudo chown -R $(whoami) /usr/local
- ```
- You can resolve the issue by reinstalling Homebrew:
- ```shell
- /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- ```
- {{< /note >}}
+{{< codenew language="js" file="minikube/server.js" >}}
-* [NodeJS](https://nodejs.org/en/) is required to run the sample application.
-
-* Install Docker. On macOS, we recommend
-[Docker for Mac](https://docs.docker.com/engine/installation/mac/).
+{{< codenew language="conf" file="minikube/Dockerfile" >}}
+For more information, read the Docker documentation for [docker build](https://docs.docker.com/engine/reference/commandline/build/)
{{% /capture %}}
@@ -60,150 +46,26 @@ Minikube provides a simple way of running Kubernetes on your local machine for f
## Create a Minikube cluster
-This tutorial uses [Minikube](https://github.com/kubernetes/minikube) to
-create a local cluster. This tutorial also assumes you are using
-[Docker for Mac](https://docs.docker.com/engine/installation/mac/)
-on macOS. If you are on a different platform like Linux, or using VirtualBox
-instead of Docker for Mac, the instructions to install Minikube may be
-slightly different. For general Minikube installation instructions, see
-the [Minikube installation guide](/docs/getting-started-guides/minikube/).
+1. Click **Launch Terminal**
-Use Homebrew to install the latest Minikube release:
-```shell
-brew cask install minikube
-```
+ {{< kat-button >}}
-Install the HyperKit driver, as described by the
-[Minikube driver installation guide](https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#hyperkit-driver).
+ {{< note >}}
+ **Note:** If you installed Minikube locally, run
+ ```shell
+ minikube start
+ ```
+ {{< /note >}}
-Use Homebrew to download the `kubectl` command-line tool, which you can
-use to interact with Kubernetes clusters:
-
-```shell
-brew install kubernetes-cli
-```
-
-Determine whether you can access sites like [https://cloud.google.com/container-registry/](https://cloud.google.com/container-registry/) directly without a proxy, by opening a new terminal and using
-
-```shell
-curl --proxy "" https://cloud.google.com/container-registry/
-```
-
-Make sure that the Docker daemon is started. You can determine if docker is running by using a command such as:
-
-```shell
-docker images
-```
-
-If NO proxy is required, start the Minikube cluster:
-
-```shell
-minikube start --vm-driver=hyperkit
-```
-If a proxy server is required, use the following method to start Minikube cluster with proxy setting:
-
-```shell
-minikube start --vm-driver=hyperkit --docker-env HTTP_PROXY=http://your-http-proxy-host:your-http-proxy-port --docker-env HTTPS_PROXY=http(s)://your-https-proxy-host:your-https-proxy-port
-```
-
-The `--vm-driver=hyperkit` flag specifies that you are using Docker for Mac. The
-default VM driver is VirtualBox.
-
-Now set the Minikube context. The context is what determines which cluster
-`kubectl` is interacting with. You can see all your available contexts in the
-`~/.kube/config` file.
-
-```shell
-kubectl config use-context minikube
-```
-
-Verify that `kubectl` is configured to communicate with your cluster:
-
-```shell
-kubectl cluster-info
-```
-
-Open the Kubernetes dashboard in a browser:
+2. Open the Kubernetes dashboard in a browser:
```shell
minikube dashboard
```
-## Create your Node.js application
+3. Katacoda environment only: At the top of the terminal pane, click the plus sign, and then click **Select port to view on Host 1**.
-The next step is to write the application. Save this code in a folder named `hellonode`
-with the filename `server.js`:
-
-{{< codenew language="js" file="minikube/server.js" >}}
-
-Run your application:
-
-```shell
-node server.js
-```
-
-You should be able to see your "Hello World!" message at http://localhost:8080/.
-
-Stop the running Node.js server by pressing **Ctrl-C**.
-
-The next step is to package your application in a Docker container.
-
-## Create a Docker container image
-
-Create a file, also in the `hellonode` folder, named `Dockerfile`. A Dockerfile describes
-the image that you want to build. You can build a Docker container image by extending an
-existing image. The image in this tutorial extends an existing Node.js image.
-
-{{< codenew language="conf" file="minikube/Dockerfile" >}}
-
-This recipe for the Docker image starts from the official Node.js LTS image
-found in the Docker registry, exposes port 8080, copies your `server.js` file
-to the image and starts the Node.js server.
-
-By default, Docker will create images and store them in your local machine's Docker registry.
-In this tutorial, we will not use your local machine's Docker registry; we will use the
-Docker registry of the Docker daemon running _inside_ Minikube's vm instance. To point the
-'docker' command to your Minikube's Docker daemon, type (unix shells):
-
-```shell
-eval $(minikube docker-env)
-```
-
-or in powershell:
-```shell
-minikube docker-env | Invoke-Expression
-```
-
-
-
-{{< note >}}
-**Note:** Later, when you no longer wish to use the Minikube host, you can undo
-this change by running `eval $(minikube docker-env -u)`.
-{{< /note >}}
-
-Build your Docker image, using the Minikube Docker daemon (mind the trailing dot):
-
-```shell
-docker build -t hello-node:v1 .
-```
-
-check that the image is in Minikube's Docker registry:
-
-```shell
-minikube ssh docker images
-```
-
-Output:
-
-```shell
-REPOSITORY TAG IMAGE ID CREATED SIZE
-hello-node v1 f82485ca953c 3 minutes ago 655MB
-...
-node 6.9.2 faaadb4aaf9b 20 months ago 655MB
-```
-
-
-Now the Minikube VM can run the image you built.
+4. Katacoda environment only: Type 30000, and then click **Display Port**.
## Create a Deployment
@@ -214,59 +76,54 @@ tutorial has only one Container. A Kubernetes
Pod and restarts the Pod's Container if it terminates. Deployments are the
recommended way to manage the creation and scaling of Pods.
-Use the `kubectl run` command to create a Deployment that manages a Pod. The
-Pod runs a Container based on your `hello-node:v1` Docker image. Set the
-`--image-pull-policy` flag to `Never` to always use the local image, rather than
-pulling it from your Docker registry (since you haven't pushed it there):
+1. Use the `kubectl run` command to create a Deployment that manages a Pod. The
+Pod runs a Container based on the provided Docker image.
-```shell
-kubectl run hello-node --image=hello-node:v1 --port=8080 --image-pull-policy=Never
-```
+ ```shell
+ kubectl run hello-node --image=gcr.io/hello-minikube-zero-install/hello-node --port=8080
+ ```
-View the Deployment:
+2. View the Deployment:
+ ```shell
+ kubectl get deployments
+ ```
-```shell
-kubectl get deployments
-```
+ Output:
-Output:
+ ```shell
+ NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
+ hello-node 1 1 1 1 1m
+ ```
+3. View the Pod:
-```shell
-NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
-hello-node 1 1 1 1 3m
-```
+ ```shell
+ kubectl get pods
+ ```
+ Output:
-View the Pod:
+ ```shell
+ NAME READY STATUS RESTARTS AGE
+ hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m
+ ```
+4. View cluster events:
-```shell
-kubectl get pods
-```
+ ```shell
+ kubectl get events
+ ```
-Output:
+5. View the `kubectl` configuration:
-
-```shell
-NAME READY STATUS RESTARTS AGE
-hello-node-714049816-ztzrb 1/1 Running 0 6m
-```
-
-View cluster events:
-
-```shell
-kubectl get events
-```
-
-View the `kubectl` configuration:
-
-```shell
-kubectl config view
-```
-
-For more information about `kubectl`commands, see the
-[kubectl overview](/docs/user-guide/kubectl-overview/).
+ ```shell
+ kubectl config view
+ ```
+
+ {{< note >}}
+ **Note:** For more information about `kubectl`commands, see the
+ [kubectl overview](/docs/user-guide/kubectl-overview/).
+ {{< /note >}}
## Create a Service
@@ -275,142 +132,126 @@ Kubernetes cluster. To make the `hello-node` Container accessible from outside t
Kubernetes virtual network, you have to expose the Pod as a
Kubernetes [*Service*](/docs/concepts/services-networking/service/).
-From your development machine, you can expose the Pod to the public internet
-using the `kubectl expose` command:
+1. Expose the Pod to the public internet using the `kubectl expose` command:
-```shell
-kubectl expose deployment hello-node --type=LoadBalancer
-```
+ ```shell
+ kubectl expose deployment hello-node --type=LoadBalancer
+ ```
-View the Service you just created:
+2. View the Service you just created:
-```shell
-kubectl get services
-```
+ ```shell
+ kubectl get services
+ ```
-Output:
+ Output:
-```shell
-NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
-hello-node ClusterIP 10.0.0.71 8080/TCP 6m
-kubernetes ClusterIP 10.0.0.1 443/TCP 14d
-```
+ ```shell
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
+ hello-node LoadBalancer 10.108.144.78 8080:30369/TCP 21s
+ kubernetes ClusterIP 10.96.0.1 443/TCP 23m
+ ```
-The `--type=LoadBalancer` flag indicates that you want to expose your Service
-outside of the cluster. On cloud providers that support load balancers,
-an external IP address would be provisioned to access the Service. On Minikube,
-the `LoadBalancer` type makes the Service accessible through the `minikube service`
-command.
+ The `--type=LoadBalancer` flag indicates that you want to expose your Service
+ outside of the cluster. On cloud providers that support load balancers,
+ an external IP address would be provisioned to access the Service. On Minikube,
+ the `LoadBalancer` type makes the Service accessible through the `minikube service`
+ command.
-```shell
-minikube service hello-node
-```
+3. Run the following command:
-This automatically opens up a browser window using a local IP address that
-serves your app and shows the "Hello World" message.
+ ```shell
+ minikube service hello-node
+ ```
-Assuming you've sent requests to your new web service using the browser or curl,
-you should now be able to see some logs:
+4. Katacoda environment only: Click the plus sign, then click **Select port to view on Host 1**.
-```shell
-kubectl logs
-```
+5. Katacoda environment only: Type in the Port number following `8080:`, and then click **Display Port**.
-## Update your app
-
-Edit your `server.js` file to return a new message:
-
-```javascript
-response.end('Hello World Again!');
-
-```
-
-Build a new version of your image (mind the trailing dot):
-
-```shell
-docker build -t hello-node:v2 .
-```
-
-Update the image of your Deployment:
-
-```shell
-kubectl set image deployment/hello-node hello-node=hello-node:v2
-```
-
-Run your app again to view the new message:
-
-```shell
-minikube service hello-node
-```
+ This opens up a browser window that serves your app and shows the "Hello World" message.
## Enable addons
Minikube has a set of built-in addons that can be enabled, disabled and opened in the local Kubernetes environment.
-First list the currently supported addons:
+1. List the currently supported addons:
-```shell
-minikube addons list
-```
+ ```shell
+ minikube addons list
+ ```
-Output:
+ Output:
-```shell
-- storage-provisioner: enabled
-- kube-dns: enabled
-- registry: disabled
-- registry-creds: disabled
-- addon-manager: enabled
-- dashboard: disabled
-- default-storageclass: enabled
-- coredns: disabled
-- heapster: disabled
-- efk: disabled
-- ingress: disabled
-```
+ ```shell
+ - addon-manager: enabled
+ - coredns: disabled
+ - dashboard: enabled
+ - default-storageclass: enabled
+ - efk: disabled
+ - freshpod: disabled
+ - heapster: disabled
+ - ingress: disabled
+ - kube-dns: enabled
+ - metrics-server: disabled
+ - nvidia-driver-installer: disabled
+ - nvidia-gpu-device-plugin: disabled
+ - registry: disabled
+ - registry-creds: disabled
+ - storage-provisioner: enabled
+ ```
+ {{< note >}}
+ **Note:**
+ Minikube must be running for these commands to take effect.
+ {{< /note >}}
-Minikube must be running for these commands to take effect. To enable `heapster` addon, for example:
+2. Enable an addon, for example, `heapster`:
-```shell
-minikube addons enable heapster
-```
+ ```shell
+ minikube addons enable heapster
+ ```
+
+ Output:
-Output:
+ ```shell
+ heapster was successfully enabled
+ ```
-```shell
-heapster was successfully enabled
-```
+3. View the Pod and Service you just created:
-View the Pod and Service you just created:
+ ```shell
+ kubectl get po,svc -n kube-system
+ ```
-```shell
-kubectl get po,svc -n kube-system
-```
+ Output:
-Output:
+ ```shell
+ NAME READY STATUS RESTARTS AGE
+ pod/heapster-9jttx 1/1 Running 0 26s
+ pod/influxdb-grafana-b29w8 2/2 Running 0 26s
+ pod/kube-addon-manager-minikube 1/1 Running 0 34m
+ pod/kube-dns-6dcb57bcc8-gv7mw 3/3 Running 0 34m
+ pod/kubernetes-dashboard-5498ccf677-cgspw 1/1 Running 0 34m
+ pod/storage-provisioner 1/1 Running 0 34m
-```shell
-NAME READY STATUS RESTARTS AGE
-pod/heapster-zbwzv 1/1 Running 0 2m
-pod/influxdb-grafana-gtht9 2/2 Running 0 2m
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
+ service/heapster ClusterIP 10.96.241.45 80/TCP 26s
+ service/kube-dns ClusterIP 10.96.0.10 53/UDP,53/TCP 34m
+ service/kubernetes-dashboard NodePort 10.109.29.1 80:30000/TCP 34m
+ service/monitoring-grafana NodePort 10.99.24.54 80:30002/TCP 26s
+ service/monitoring-influxdb ClusterIP 10.111.169.94 8083/TCP,8086/TCP 26s
+ ```
-NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
-service/heapster NodePort 10.0.0.52 80:31655/TCP 2m
-service/monitoring-grafana NodePort 10.0.0.33 80:30002/TCP 2m
-service/monitoring-influxdb ClusterIP 10.0.0.43 8083/TCP,8086/TCP 2m
-```
+4. Disable `heapster`:
-Open the endpoint to interacting with heapster in a browser:
+ ```shell
+ minikube addons disable heapster
+ ```
+
+ Output:
-```shell
-minikube addons open heapster
-```
-
-Output:
-
-```shell
-Opening kubernetes service kube-system/monitoring-grafana in default browser...
-```
+ ```shell
+ heapster was successfully disabled
+ ```
## Clean up
@@ -421,17 +262,10 @@ kubectl delete service hello-node
kubectl delete deployment hello-node
```
-Optionally, force removal of the Docker images created:
-
-```shell
-docker rmi hello-node:v1 hello-node:v2 -f
-```
-
Optionally, stop the Minikube VM:
```shell
minikube stop
-eval $(minikube docker-env -u)
```
Optionally, delete the Minikube VM:
@@ -442,7 +276,6 @@ minikube delete
{{% /capture %}}
-
{{% capture whatsnext %}}
* Learn more about [Deployment objects](/docs/concepts/workloads/controllers/deployment/).
@@ -450,5 +283,3 @@ minikube delete
* Learn more about [Service objects](/docs/concepts/services-networking/service/).
{{% /capture %}}
-
-
From 2a114ab08508234d9c9ee28239306da92afdf68a Mon Sep 17 00:00:00 2001
From: Andrew Chen
Date: Mon, 5 Nov 2018 11:41:32 -0800
Subject: [PATCH 018/222] Revert "Add i18n/OWNERS" (#10886)
* Revert "Update tutorial to work with Katacoda, No Install (#10797)"
This reverts commit a0b97a3e5d3faa8ad9f5500646600641b6c49bdf.
* Revert "clean-up minikube toc (#10873)"
This reverts commit 18343eb44b025a18eb6d39f5ae192ad81d7dd09b.
* Revert "Tutorial cleanup: Delete K8s 101 and 201 (#10786)"
This reverts commit e0168fd8dcbfdb59e8e87b9678058d6c43cd1be9.
* Revert "fix word err in Disruption (#10884)"
This reverts commit d01b76d08044e213f06f567a99e127cd496178fb.
* Revert "Fix typo (#10877)"
This reverts commit 15518689c7317d810f81218f7cf8f17348ae5319.
* Revert "add note informing users of env var updates (#10819)"
This reverts commit 795de19c0719e0616380f6c4929b816f3dfbf987.
* Revert "Fix typo in word repositories (#10883)"
This reverts commit 6d7f27ea45ea17e9f9c7a96926b1cc93b5019436.
* Revert "Add i18n strings for Korean translation (#10611)"
This reverts commit a9d8c54e6d2b447361beaa0643b251227993aa2e.
* Revert "Modified into appropriate words (#10768)"
This reverts commit 7ebdd661d7ca4ab0a868a176e287cc4be2a93f0c.
* Revert "Update tools.md (#10753)"
This reverts commit 2d8bc158a21be1c057e88def1e49a116f75ce01b.
* Revert "Enable reviews/approvers for localized site strings (#10811)"
This reverts commit 81b2562f77ee1675e4b013da970d8f5ff11f2cb4.
---
i18n/OWNERS | 13 -------------
1 file changed, 13 deletions(-)
delete mode 100644 i18n/OWNERS
diff --git a/i18n/OWNERS b/i18n/OWNERS
deleted file mode 100644
index 7c95255902..0000000000
--- a/i18n/OWNERS
+++ /dev/null
@@ -1,13 +0,0 @@
-# This is the directory for internationalized site strings.
-
-reviewers:
-- sig-docs-pr-reviews
-- sig-docs-ja-reviews
-- sig-docs-ko-reviews
-- sig-docs-zh-reviews
-
-approvers:
-- sig-docs-en-owners
-- sig-docs-ja-owners
-- sig-docs-ko-owners
-- sig-docs-zh-owners
From f850885f4c32b394f84c4676b8d14a757caaf8b6 Mon Sep 17 00:00:00 2001
From: AdamDang
Date: Tue, 6 Nov 2018 15:53:19 +0800
Subject: [PATCH 019/222] Typo fix in docker-cli-kubectl.md (#10892)
kubeclt->kubectl
---
content/zh/docs/user-guide/docker-cli-to-kubectl.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/zh/docs/user-guide/docker-cli-to-kubectl.md b/content/zh/docs/user-guide/docker-cli-to-kubectl.md
index d7f243ce91..4775e97a8c 100644
--- a/content/zh/docs/user-guide/docker-cli-to-kubectl.md
+++ b/content/zh/docs/user-guide/docker-cli-to-kubectl.md
@@ -52,7 +52,7 @@ kubectl run [-i] [--tty] --attach --image=
涓 `docker run ...` 涓嶅悓鐨勬槸锛屽鏋滄寚瀹氫簡 `--attach` 锛屾垜浠皢杩炴帴鍒 `stdin`锛宍stdout` 鍜 `stderr`锛岃屼笉鑳芥帶鍒跺叿浣撹繛鎺ュ埌鍝釜杈撳嚭娴侊紙`docker -a ...`锛夈
鍥犱负鎴戜滑浣跨敤 Deployment 鍚姩浜嗗鍣紝濡傛灉鎮ㄧ粓姝簡杩炴帴鍒扮殑杩涚▼锛堜緥濡 `ctrl-c`锛夛紝瀹瑰櫒灏嗕細閲嶅惎锛岃繖璺 `docker run -it` 涓嶅悓銆
-濡傛灉鎯抽攢姣佽 Deployment锛堝拰瀹冪殑 pod锛夛紝鎮ㄩ渶瑕佽繍琛 `kubeclt delete deployment `銆
+濡傛灉鎯抽攢姣佽 Deployment锛堝拰瀹冪殑 pod锛夛紝鎮ㄩ渶瑕佽繍琛 `kubectl delete deployment `銆
#### docker ps
From f922e3f2e9e3308204e5c1dfee6b797283f09166 Mon Sep 17 00:00:00 2001
From: Pingan
Date: Tue, 6 Nov 2018 15:54:35 +0800
Subject: [PATCH 020/222] -output -> --output (#10897)
---
content/en/docs/reference/kubectl/overview.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/en/docs/reference/kubectl/overview.md b/content/en/docs/reference/kubectl/overview.md
index ca50170576..76f208f40e 100644
--- a/content/en/docs/reference/kubectl/overview.md
+++ b/content/en/docs/reference/kubectl/overview.md
@@ -135,7 +135,7 @@ Use the following sections for information about how you can format or sort the
### Formatting output
-The default output format for all `kubectl` commands is the human readable plain-text format. To output details to your terminal window in a specific format, you can add either the `-o` or `-output` flags to a supported `kubectl` command.
+The default output format for all `kubectl` commands is the human readable plain-text format. To output details to your terminal window in a specific format, you can add either the `-o` or `--output` flags to a supported `kubectl` command.
#### Syntax
From fd7a788fe7383e7f8a3d20d8d3e348dc639d3e9a Mon Sep 17 00:00:00 2001
From: Aleks
Date: Tue, 6 Nov 2018 09:01:29 +0100
Subject: [PATCH 021/222] Update HAProxy ingress line (#10794)
* Update HAProxy ingress line
HAProxy Technologies offers support for the free available haproxy ingress controller
* Updated the haproxy wording from feedback
Updated the haproxy wording from feedback of @tengqm
* Remove doc artefacts
---
content/en/docs/concepts/services-networking/ingress.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/en/docs/concepts/services-networking/ingress.md b/content/en/docs/concepts/services-networking/ingress.md
index b61141909c..2eb745c867 100644
--- a/content/en/docs/concepts/services-networking/ingress.md
+++ b/content/en/docs/concepts/services-networking/ingress.md
@@ -95,7 +95,7 @@ In order for the Ingress resource to work, the cluster must have an Ingress cont
* [Traefik](https://github.com/containous/traefik) is a fully featured ingress controller
([Let's Encrypt](https://letsencrypt.org), secrets, http2, websocket...), and it also comes with commercial support by [Containous](https://containo.us/services)
* [NGINX, Inc.](https://www.nginx.com/) offers support and maintenance for the [NGINX Ingress Controller for Kubernetes](https://www.nginx.com/products/nginx/kubernetes-ingress-controller)
-* [HAProxy](http://www.haproxy.org/) based ingress controller [jcmoraisjr/haproxy-ingress](https://github.com/jcmoraisjr/haproxy-ingress) which is mentioned on this blog post [HAProxy Ingress Controller for Kubernetes](https://www.haproxy.com/blog/haproxy_ingress_controller_for_kubernetes/)
+* [HAProxy](http://www.haproxy.org/) based ingress controller [jcmoraisjr/haproxy-ingress](https://github.com/jcmoraisjr/haproxy-ingress) which is mentioned on this blog post [HAProxy Ingress Controller for Kubernetes](https://www.haproxy.com/blog/haproxy_ingress_controller_for_kubernetes/). [HAProxy Technologies](https://www.haproxy.com/) offers support and maintenance for HAProxy Enterprise and the ingress controller [jcmoraisjr/haproxy-ingress](https://github.com/jcmoraisjr/haproxy-ingress).
* [Istio](https://istio.io/) based ingress controller [Control Ingress Traffic](https://istio.io/docs/tasks/traffic-management/ingress/)
{{< note >}}
From 07d043b3f174bb9cf1fe118fc606298cc90369e8 Mon Sep 17 00:00:00 2001
From: Tim Bannister
Date: Tue, 6 Nov 2018 08:08:23 +0000
Subject: [PATCH 022/222] Fix typos in kubeadm impl details (#10898) (#10899)
---
.../reference/setup-tools/kubeadm/implementation-details.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md b/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md
index 09cc412595..8d846acbc7 100644
--- a/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md
+++ b/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md
@@ -106,9 +106,9 @@ In any case the user can skip specific preflight checks (or eventually all prefl
- [Error] if `ip`, `iptables`, `mount`, `nsenter` commands are not present in the command path
- [warning] if `ebtables`, `ethtool`, `socat`, `tc`, `touch`, `crictl` commands are not present in the command path
- [warning] if extra arg flags for API server, controller manager, scheduler contains some invalid options
-- [warning] if connection to https://API.AdvertiseAddress:API.BindPort goes thought proxy
-- [warning] if connection to services subnet goes thought proxy (only first address checked)
-- [warning] if connection to Pods subnet goes thought proxy (only first address checked)
+- [warning] if connection to https://API.AdvertiseAddress:API.BindPort goes through proxy
+- [warning] if connection to services subnet goes through proxy (only first address checked)
+- [warning] if connection to Pods subnet goes through proxy (only first address checked)
- If external etcd is provided:
- [Error] if etcd version less than 3.0.14
- [Error] if etcd certificates or keys are specified, but not provided
From 2f395f1ded2fb4db43411020b23f0a01c957b73e Mon Sep 17 00:00:00 2001
From: Dennis Schridde
Date: Tue, 6 Nov 2018 19:01:52 +0100
Subject: [PATCH 023/222] Fix formatting of Kubernetes Meets High Performance
blog post (#10901)
---
...08-00-Kubernetes-Meets-High-Performance.md | 22 ++++++-------------
1 file changed, 7 insertions(+), 15 deletions(-)
diff --git a/content/en/blog/_posts/2017-08-00-Kubernetes-Meets-High-Performance.md b/content/en/blog/_posts/2017-08-00-Kubernetes-Meets-High-Performance.md
index a8bbac6f73..6db792a6e3 100644
--- a/content/en/blog/_posts/2017-08-00-Kubernetes-Meets-High-Performance.md
+++ b/content/en/blog/_posts/2017-08-00-Kubernetes-Meets-High-Performance.md
@@ -16,12 +16,10 @@ In Kubernetes, the base unit of scheduling is a Pod: one or more Docker containe
Traditional HPC applications often exhibit different characteristics:
--
-In financial or engineering simulations, a job may be comprised of tens of thousands of short-running tasks, demanding low-latency and high-throughput scheduling to complete a simulation in an acceptable amount of time.
--
-A computational fluid dynamics (CFD) problem may execute in parallel across many hundred or even thousands of nodes using a message passing library to synchronize state. This requires specialized scheduling and job management features to allocate and launch such jobs and then to checkpoint, suspend/resume or backfill them.
--
-Other HPC workloads may require specialized resources like GPUs or require access to limited software licenses. Organizations may enforce policies around what types of resources can be used by whom to ensure projects are adequately resourced and deadlines are met.
+- In financial or engineering simulations, a job may be comprised of tens of thousands of short-running tasks, demanding low-latency and high-throughput scheduling to complete a simulation in an acceptable amount of time.
+- A computational fluid dynamics (CFD) problem may execute in parallel across many hundred or even thousands of nodes using a message passing library to synchronize state. This requires specialized scheduling and job management features to allocate and launch such jobs and then to checkpoint, suspend/resume or backfill them.
+- Other HPC workloads may require specialized resources like GPUs or require access to limited software licenses. Organizations may enforce policies around what types of resources can be used by whom to ensure projects are adequately resourced and deadlines are met.
+
HPC workload schedulers have evolved to support exactly these kinds of workloads. Examples include [Univa Grid Engine](http://www.univa.com/products/), [IBM Spectrum LSF](https://www-03.ibm.com/systems/spectrum-computing/products/lsf/) and Altair鈥檚 [PBS Professional](http://www.pbsworks.com/PBSProduct.aspx?n=PBS-Professional&c=Overview-and-Capabilities). Sites managing HPC workloads have come to rely on capabilities like array jobs, configurable pre-emption, user, group or project based quotas and a variety of other features.
## Blurring the lines between containers and HPC
@@ -36,18 +34,15 @@ While the notion of packaging a workload into a Docker container, publishing it
To deal with the challenges of migrating to containers, organizations running container and HPC workloads have several options:
--
-Maintain separate infrastructures
+- Maintain separate infrastructures
For sites with sunk investments in HPC, this may be a preferred approach. Rather than disrupt existing environments, it may be easier to deploy new containerized applications on a separate cluster and leave the HPC environment alone. The challenge is that this comes at the cost of siloed clusters, increasing infrastructure and management cost.
--
-Run containerized workloads under an existing HPC workload manager
+- Run containerized workloads under an existing HPC workload manager
For sites running traditional HPC workloads, another approach is to use existing job submission mechanisms to launch jobs that in turn instantiate Docker containers on one or more target hosts. Sites using this approach can introduce containerized workloads with minimal disruption to their environment. Leading HPC workload managers such as [Univa Grid Engine Container Edition](http://blogs.univa.com/2016/05/new-version-of-univa-grid-engine-now-supports-docker-containers/) and [IBM Spectrum LSF](http://blogs.univa.com/2016/05/new-version-of-univa-grid-engine-now-supports-docker-containers/) are adding native support for Docker containers. [Shifter](https://github.com/NERSC/shifter) and [Singularity](http://singularity.lbl.gov/) are important open source tools supporting this type of deployment also. While this is a good solution for sites with simple requirements that want to stick with their HPC scheduler, they will not have access to native Kubernetes features, and this may constrain flexibility in managing long-running services where Kubernetes excels.
--
-Use native job scheduling features in Kubernetes
+- Use native job scheduling features in Kubernetes
Sites less invested in existing HPC applications can use existing scheduling facilities in Kubernetes for [jobs that run to completion](https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/). While this is an option, it may be impractical for many HPC users. HPC applications are often either optimized towards massive throughput or large scale parallelism. In both cases startup and teardown latencies have a discriminating impact. Latencies that appear to be acceptable for containerized microservices today would render such applications unable to scale to the required levels.
@@ -75,7 +70,4 @@ One client having success with mixed workloads is the Institute for Health Metri

-
-
-
For sites deploying new clusters that want access to the rich capabilities in Kubernetes but need the flexibility to run non-containerized workloads, this approach is worth a look. It offers the opportunity for sites to share infrastructure between Kubernetes and HPC workloads without disrupting existing applications and businesses processes. It also allows them to migrate their HPC workloads to use Docker containers at their own pace.
From e839031292794596a40ab9af04e60b3998837279 Mon Sep 17 00:00:00 2001
From: David Rubin
Date: Tue, 6 Nov 2018 19:31:11 +0100
Subject: [PATCH 024/222] Update officially supported client libraries (#10792)
---
content/en/docs/reference/_index.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/content/en/docs/reference/_index.md b/content/en/docs/reference/_index.md
index 56dfb08920..b5e825bc7f 100644
--- a/content/en/docs/reference/_index.md
+++ b/content/en/docs/reference/_index.md
@@ -35,6 +35,8 @@ client libraries:
- [Kubernetes Go client library](https://github.com/kubernetes/client-go/)
- [Kubernetes Python client library](https://github.com/kubernetes-client/python)
+- [Kubernetes Java client library](https://github.com/kubernetes-client/java)
+- [Kubernetes JavaScript client library](https://github.com/kubernetes-client/javascript)
## CLI Reference
From d65e1790ffc020129db5f5a583060d6fe318316a Mon Sep 17 00:00:00 2001
From: Luc Perkins
Date: Tue, 6 Nov 2018 11:33:04 -0800
Subject: [PATCH 025/222] Add admonition type to shortcode (#9482)
* Change existing admon blocks
* Fix includes issue
---
...pelin-To-Process-Big-Data-On-Kubernetes.md | 4 +-
...018-04-11-migrating-the-kubernetes-blog.md | 2 +-
.../concepts/architecture/cloud-controller.md | 2 +-
.../en/docs/concepts/architecture/nodes.md | 6 +--
.../cluster-administration/logging.md | 16 ++++--
.../manage-deployment.md | 2 +-
.../concepts/configuration/assign-pod-node.md | 10 ++--
.../manage-compute-resources-container.md | 12 +++--
.../organize-cluster-access-kubeconfig.md | 2 +-
.../docs/concepts/configuration/overview.md | 6 +--
.../configuration/pod-priority-preemption.md | 33 +++++-------
.../configuration/scheduler-perf-tuning.md | 6 ++-
.../en/docs/concepts/configuration/secret.md | 10 ++--
.../configuration/taint-and-toleration.md | 4 +-
content/en/docs/concepts/containers/images.md | 16 +++---
.../docs/concepts/containers/runtime-class.md | 6 +--
.../docs/concepts/example-concept-template.md | 4 +-
.../api-extension/custom-resources.md | 4 +-
.../declarative-config.md | 37 ++++++-------
.../imperative-command.md | 5 +-
.../imperative-config.md | 4 +-
.../object-management-kubectl/overview.md | 6 +--
.../working-with-objects/common-labels.md | 2 +-
.../overview/working-with-objects/labels.md | 2 +-
.../concepts/policy/pod-security-policy.md | 6 +--
.../docs/concepts/policy/resource-quotas.md | 2 +-
.../services-networking/dns-pod-service.md | 4 +-
.../concepts/services-networking/ingress.md | 6 +--
.../concepts/services-networking/service.md | 20 ++++---
.../concepts/storage/persistent-volumes.md | 16 +++---
.../docs/concepts/storage/storage-classes.md | 16 ++++--
content/en/docs/concepts/storage/volumes.md | 52 +++++++++----------
.../workloads/controllers/cron-jobs.md | 3 +-
.../controllers/jobs-run-to-completion.md | 2 +-
.../controllers/replicationcontroller.md | 2 +-
.../workloads/controllers/statefulset.md | 4 +-
.../concepts/workloads/pods/pod-overview.md | 2 +-
.../docs/concepts/workloads/pods/podpreset.md | 2 +-
.../contribute/generate-ref-docs/kubectl.md | 2 -
.../generate-ref-docs/kubernetes-api.md | 8 +--
.../kubernetes-components.md | 3 +-
content/en/docs/contribute/intermediate.md | 13 +++--
content/en/docs/contribute/localization.md | 4 ++
content/en/docs/contribute/start.md | 4 +-
.../contribute/style/content-organization.md | 4 +-
.../style/hugo-shortcodes/example1.md | 2 +-
.../contribute/style/hugo-shortcodes/index.md | 10 +++-
.../docs/contribute/style/page-templates.md | 2 +-
.../en/docs/contribute/style/style-guide.md | 26 +++++-----
.../docs/contribute/style/write-new-topic.md | 4 +-
.../snippets/atom-snippets.cson | 6 +--
.../fedora/flannel_multi_node_cluster.md | 8 ++-
.../getting-started-guides/ubuntu/backups.md | 8 +--
.../ubuntu/decommissioning.md | 2 +-
.../ubuntu/networking.md | 2 +-
.../getting-started-guides/ubuntu/storage.md | 7 ++-
.../getting-started-guides/ubuntu/upgrades.md | 4 +-
.../ubuntu/validation.md | 4 +-
.../getting-started-guides/windows/_index.md | 8 +--
.../docs/reference/access-authn-authz/abac.md | 4 +-
.../admission-controllers.md | 16 +++---
.../access-authn-authz/authentication.md | 11 ++--
.../access-authn-authz/authorization.md | 11 ++--
.../access-authn-authz/bootstrap-tokens.md | 2 +-
.../extensible-admission-controllers.md | 6 +--
.../docs/reference/access-authn-authz/rbac.md | 12 +++--
.../feature-gates.md | 2 +-
.../kubelet-tls-bootstrapping.md | 4 +-
.../reference/glossary/cluster-operator.md | 4 +-
.../en/docs/reference/kubectl/conventions.md | 6 ++-
.../kubectl/docker-cli-to-kubectl.md | 4 +-
content/en/docs/reference/kubectl/overview.md | 7 ++-
.../setup-tools/kubeadm/kubeadm-alpha.md | 4 +-
.../setup-tools/kubeadm/kubeadm-init.md | 11 ++--
.../setup-tools/kubeadm/kubeadm-join.md | 3 +-
.../docs/reference/using-api/api-overview.md | 6 +--
.../reference/using-api/deprecation-policy.md | 4 +-
content/en/docs/setup/certificates.md | 2 +-
.../en/docs/setup/custom-cloud/kubespray.md | 2 +-
.../independent/create-cluster-kubeadm.md | 8 +--
.../setup/independent/high-availability.md | 25 ++++-----
.../independent/setup-ha-etcd-with-kubeadm.md | 2 +-
.../independent/troubleshooting-kubeadm.md | 2 +-
content/en/docs/setup/minikube.md | 4 +-
content/en/docs/setup/multiple-zones.md | 4 +-
.../en/docs/setup/on-premises-metal/krib.md | 6 +--
content/en/docs/setup/pick-right-solution.md | 3 +-
content/en/docs/setup/release/notes.md | 2 +-
content/en/docs/setup/scratch.md | 4 +-
content/en/docs/setup/turnkey/gce.md | 2 +-
.../configure-access-multiple-clusters.md | 2 +-
.../configure-cloud-provider-firewall.md | 11 ++--
.../connecting-frontend-backend.md | 12 +++--
.../create-external-load-balancer.md | 5 +-
.../list-all-running-container-images.md | 2 +-
...load-balance-access-application-cluster.md | 4 +-
...port-forward-access-application-cluster.md | 2 +-
.../configure-aggregation-layer.md | 2 +-
.../custom-resource-definition-versioning.md | 4 +-
.../configure-upgrade-etcd.md | 10 ++--
.../docs/tasks/administer-cluster/coredns.md | 2 +-
.../cpu-management-policies.md | 8 +--
.../declare-network-policy.md | 4 +-
.../tasks/administer-cluster/encrypt-data.md | 8 ++-
.../extended-resource-node.md | 4 +-
.../tasks/administer-cluster/ip-masq-agent.md | 6 ++-
.../kubeadm/kubeadm-upgrade-ha.md | 3 +-
.../cpu-constraint-namespace.md | 2 +-
.../tasks/administer-cluster/namespaces.md | 4 +-
.../administer-cluster/reconfigure-kubelet.md | 4 +-
.../administer-cluster/safely-drain-node.md | 4 +-
.../administer-cluster/securing-a-cluster.md | 4 +-
.../tasks/administer-cluster/static-pod.md | 7 ++-
.../administer-cluster/sysctl-cluster.md | 6 +--
.../tasks/administer-federation/configmap.md | 2 +-
.../docs/tasks/administer-federation/hpa.md | 5 +-
.../docs/tasks/administer-federation/job.md | 2 +-
.../tasks/administer-federation/namespaces.md | 2 +-
.../tasks/administer-federation/replicaset.md | 2 +-
.../tasks/administer-federation/secret.md | 2 +-
.../assign-cpu-resource.md | 2 +-
.../attach-handler-lifecycle-event.md | 2 +-
.../configure-persistent-volume-storage.md | 2 +-
.../configure-pod-configmap.md | 10 ++--
.../configure-service-account.md | 6 +--
.../pull-image-private-registry.md | 2 +-
.../quality-service-pod.md | 2 +-
.../security-context.md | 6 +--
.../translate-compose-kubernetes.md | 13 +++--
.../tasks/debug-application-cluster/audit.md | 8 +--
.../core-metrics-pipeline.md | 2 +-
.../tasks/debug-application-cluster/crictl.md | 2 +-
.../debug-application.md | 2 +-
.../debug-pod-replication-controller.md | 6 ++-
.../debug-service.md | 14 +++--
.../events-stackdriver.md | 2 +-
.../logging-elasticsearch-kibana.md | 2 +-
.../logging-stackdriver.md | 23 +++++---
.../en/docs/tasks/example-task-template.md | 4 +-
.../tasks/extend-kubectl/kubectl-plugins.md | 9 ++--
.../federation-service-discovery.md | 4 +-
.../set-up-cluster-federation-kubefed.md | 17 +++---
.../set-up-coredns-provider-federation.md | 10 ++--
.../define-command-argument-container.md | 4 +-
.../define-environment-variable-container.md | 2 +-
.../distribute-credentials-secure.md | 9 ++--
...nward-api-volume-expose-pod-information.md | 6 +--
...ronment-variable-expose-pod-information.md | 2 +-
.../job/automated-tasks-with-cron-jobs.md | 15 ++++--
.../manage-daemon/rollback-daemon-set.md | 2 +-
.../tasks/manage-daemon/update-daemon-set.md | 5 +-
.../tasks/run-application/configure-pdb.md | 6 ++-
.../run-application/delete-stateful-set.md | 4 +-
.../horizontal-pod-autoscale-walkthrough.md | 10 ++--
.../horizontal-pod-autoscale.md | 14 ++---
.../rolling-update-replication-controller.md | 2 +-
.../install-service-catalog-using-helm.md | 2 +-
.../tasks/tls/managing-tls-in-a-cluster.md | 2 +-
.../en/docs/tasks/tools/install-kubectl.md | 12 +++--
.../en/docs/tasks/tools/install-minikube.md | 2 +-
content/en/docs/test.md | 8 +--
.../en/docs/tutorials/clusters/apparmor.md | 12 +++--
content/en/docs/tutorials/hello-minikube.md | 8 +--
.../basic-stateful-set.md | 2 +-
.../stateful-application/cassandra.md | 8 +--
.../mysql-wordpress-persistent-volume.md | 26 ++++++----
.../stateless-application/guestbook.md | 6 +--
.../en/includes/federation-current-state.md | 2 +-
.../ko/docs/setup/custom-cloud/kubespray.md | 2 +-
.../independent/create-cluster-kubeadm.md | 8 +--
.../setup/independent/high-availability.md | 14 ++---
.../independent/setup-ha-etcd-with-kubeadm.md | 2 +-
.../independent/troubleshooting-kubeadm.md | 2 +-
content/ko/docs/setup/multiple-zones.md | 6 ++-
content/ko/docs/setup/scratch.md | 4 +-
content/ko/docs/setup/turnkey/gce.md | 2 +-
.../docs/admin/kubelet-tls-bootstrapping.md | 4 +-
.../configuration/taint-and-toleration.md | 2 +-
.../workloads/controllers/deployment.md | 22 ++++----
.../access-authn-authz/authorization.md | 2 +-
.../create-external-load-balancer.md | 2 +-
.../list-all-running-container-images.md | 2 +-
...load-balance-access-application-cluster.md | 4 +-
...port-forward-access-application-cluster.md | 2 +-
.../kubeadm/kubeadm-upgrade-1-9.md | 4 +-
.../administer-cluster/sysctl-cluster.md | 6 +--
.../tasks/debug-application-cluster/audit.md | 4 +-
...nward-api-volume-expose-pod-information.md | 2 +-
layouts/shortcodes/caution.html | 4 +-
layouts/shortcodes/note.html | 2 +-
layouts/shortcodes/warning.html | 2 +-
.../example-tutorial-template.md | 4 +-
192 files changed, 673 insertions(+), 543 deletions(-)
diff --git a/content/en/blog/_posts/2016-03-00-Using-Spark-And-Zeppelin-To-Process-Big-Data-On-Kubernetes.md b/content/en/blog/_posts/2016-03-00-Using-Spark-And-Zeppelin-To-Process-Big-Data-On-Kubernetes.md
index f730cab425..dcc9215c28 100644
--- a/content/en/blog/_posts/2016-03-00-Using-Spark-And-Zeppelin-To-Process-Big-Data-On-Kubernetes.md
+++ b/content/en/blog/_posts/2016-03-00-Using-Spark-And-Zeppelin-To-Process-Big-Data-On-Kubernetes.md
@@ -105,7 +105,9 @@ $ gsutil mb gs://my-spark-models
```
You鈥檒l need to change this URI to something that is unique for you. This will create a bucket that you can use in the example above.
-**Note** : Computing the model and saving it is much slower than computing the model and throwing it away. This is expected. However, if you plan to reuse a model, it鈥檚 faster to compute the model and save it and then restore it each time you want to use it, rather than throw away and recompute the model each time.
+{{< note >}}
+Computing the model and saving it is much slower than computing the model and throwing it away. This is expected. However, if you plan to reuse a model, it鈥檚 faster to compute the model and save it and then restore it each time you want to use it, rather than throw away and recompute the model each time.
+{{< /note >}}
### Using Horizontal Pod Autoscaling with Spark (Optional)
Spark is somewhat elastic to workers coming and going, which means we have an opportunity: we can use use [Kubernetes Horizontal Pod Autoscaling](http://kubernetes.io/docs/user-guide/horizontal-pod-autoscaling/) to scale-out the Spark worker pool automatically, setting a target CPU threshold for the workers and a minimum/maximum pool size. This obviates the need for having to configure the number of worker replicas manually.
diff --git a/content/en/blog/_posts/2018-04-11-migrating-the-kubernetes-blog.md b/content/en/blog/_posts/2018-04-11-migrating-the-kubernetes-blog.md
index a6f8dd46eb..00cc541d25 100644
--- a/content/en/blog/_posts/2018-04-11-migrating-the-kubernetes-blog.md
+++ b/content/en/blog/_posts/2018-04-11-migrating-the-kubernetes-blog.md
@@ -30,7 +30,7 @@ You can submit a blog post for consideration one of two ways:
If you have a post that you want to remain confidential until your publish date, please submit your post via the Google form. Otherwise, you can choose your submission process based on your comfort level and preferred workflow.
{{< note >}}
-**Note:** Our workflow hasn't changed for confidential advance drafts. Additionally, we'll coordinate publishing for time sensitive posts to ensure that information isn't released prematurely through an open pull request.
+Our workflow hasn't changed for confidential advance drafts. Additionally, we'll coordinate publishing for time sensitive posts to ensure that information isn't released prematurely through an open pull request.
{{< /note >}}
### Call for reviewers
diff --git a/content/en/docs/concepts/architecture/cloud-controller.md b/content/en/docs/concepts/architecture/cloud-controller.md
index 191b954645..714cfe365c 100644
--- a/content/en/docs/concepts/architecture/cloud-controller.md
+++ b/content/en/docs/concepts/architecture/cloud-controller.md
@@ -51,7 +51,7 @@ In version 1.9, the CCM runs the following controllers from the preceding list:
Additionally, it runs another controller called the PersistentVolumeLabels controller. This controller is responsible for setting the zone and region labels on PersistentVolumes created in GCP and AWS clouds.
{{< note >}}
-**Note:** Volume controller was deliberately chosen to not be a part of CCM. Due to the complexity involved and due to the existing efforts to abstract away vendor specific volume logic, it was decided that volume controller will not be moved to CCM.
+Volume controller was deliberately chosen to not be a part of CCM. Due to the complexity involved and due to the existing efforts to abstract away vendor specific volume logic, it was decided that volume controller will not be moved to CCM.
{{< /note >}}
The original plan to support volumes using CCM was to use Flex volumes to support pluggable volumes. However, a competing effort known as CSI is being planned to replace Flex.
diff --git a/content/en/docs/concepts/architecture/nodes.md b/content/en/docs/concepts/architecture/nodes.md
index 4f81dd9165..5a4d84dc17 100644
--- a/content/en/docs/concepts/architecture/nodes.md
+++ b/content/en/docs/concepts/architecture/nodes.md
@@ -84,7 +84,7 @@ A Pod that does not have any tolerations gets scheduled according to the old mod
tolerates the taints of a particular Node can be scheduled on that Node.
{{< caution >}}
-**Caution:** Enabling this feature creates a small delay between the
+Enabling this feature creates a small delay between the
time when a condition is observed and when a taint is created. This delay is usually less than one second, but it can increase the number of Pods that are successfully scheduled but rejected by the kubelet.
{{< /caution >}}
@@ -128,7 +128,7 @@ services are running -- it is eligible to run a pod. Otherwise, it is
ignored for any cluster activity until it becomes valid.
{{< note >}}
-**Note:** Kubernetes keeps the object for the invalid node and keeps checking to see whether it becomes valid.
+Kubernetes keeps the object for the invalid node and keeps checking to see whether it becomes valid.
You must explicitly delete the Node object to stop this process.
{{< /note >}}
@@ -241,7 +241,7 @@ kubectl cordon $NODENAME
```
{{< note >}}
-**Note:** Pods created by a DaemonSet controller bypass the Kubernetes scheduler
+Pods created by a DaemonSet controller bypass the Kubernetes scheduler
and do not respect the unschedulable attribute on a node. This assumes that daemons belong on
the machine even if it is being drained of applications while it prepares for a reboot.
{{< /note >}}
diff --git a/content/en/docs/concepts/cluster-administration/logging.md b/content/en/docs/concepts/cluster-administration/logging.md
index f64e0e0aa3..d6aa8c45de 100644
--- a/content/en/docs/concepts/cluster-administration/logging.md
+++ b/content/en/docs/concepts/cluster-administration/logging.md
@@ -57,7 +57,9 @@ You can use `kubectl logs` to retrieve logs from a previous instantiation of a c
Everything a containerized application writes to `stdout` and `stderr` is handled and redirected somewhere by a container engine. For example, the Docker container engine redirects those two streams to [a logging driver](https://docs.docker.com/engine/admin/logging/overview), which is configured in Kubernetes to write to a file in json format.
-**Note:** The Docker json logging driver treats each line as a separate message. When using the Docker logging driver, there is no direct support for multi-line messages. You need to handle multi-line messages at the logging agent level or higher.
+{{< note >}}
+The Docker json logging driver treats each line as a separate message. When using the Docker logging driver, there is no direct support for multi-line messages. You need to handle multi-line messages at the logging agent level or higher.
+{{< /note >}}
By default, if a container restarts, the kubelet keeps one terminated container with its logs. If a pod is evicted from the node, all corresponding containers are also evicted, along with their logs.
@@ -81,13 +83,15 @@ When you run [`kubectl logs`](/docs/reference/generated/kubectl/kubectl-commands
the basic logging example, the kubelet on the node handles the request and
reads directly from the log file, returning the contents in the response.
-**Note:** Currently, if some external system has performed the rotation,
+{{< note >}}
+Currently, if some external system has performed the rotation,
only the contents of the latest log file will be available through
`kubectl logs`. E.g. if there's a 10MB file, `logrotate` performs
the rotation and there are two files, one 10MB in size and one empty,
`kubectl logs` will return an empty response.
[cosConfigureHelper]: https://github.com/kubernetes/kubernetes/blob/{{< param "githubbranch" >}}/cluster/gce/gci/configure-helper.sh
+{{< /note >}}
### System component logs
@@ -215,10 +219,12 @@ If the node-level logging agent is not flexible enough for your situation, you
can create a sidecar container with a separate logging agent that you have
configured specifically to run with your application.
-**Note**: Using a logging agent in a sidecar container can lead
+{{< note >}}
+Using a logging agent in a sidecar container can lead
to significant resource consumption. Moreover, you won't be able to access
those logs using `kubectl logs` command, because they are not controlled
by the kubelet.
+{{< /note >}}
As an example, you could use [Stackdriver](/docs/tasks/debug-application-cluster/logging-stackdriver/),
which uses fluentd as a logging agent. Here are two configuration files that
@@ -227,9 +233,11 @@ a [ConfigMap](/docs/tasks/configure-pod-container/configure-pod-configmap/) to c
{{< codenew file="admin/logging/fluentd-sidecar-config.yaml" >}}
-**Note**: The configuration of fluentd is beyond the scope of this article. For
+{{< note >}}
+The configuration of fluentd is beyond the scope of this article. For
information about configuring fluentd, see the
[official fluentd documentation](http://docs.fluentd.org/).
+{{< /note >}}
The second file describes a pod that has a sidecar container running fluentd.
The pod mounts a volume where fluentd can pick up its configuration data.
diff --git a/content/en/docs/concepts/cluster-administration/manage-deployment.md b/content/en/docs/concepts/cluster-administration/manage-deployment.md
index e32fe5b8fb..0288c73efa 100644
--- a/content/en/docs/concepts/cluster-administration/manage-deployment.md
+++ b/content/en/docs/concepts/cluster-administration/manage-deployment.md
@@ -331,7 +331,7 @@ Currently, resources are created without this annotation, so the first invocatio
All subsequent calls to `kubectl apply`, and other commands that modify the configuration, such as `kubectl replace` and `kubectl edit`, will update the annotation, allowing subsequent calls to `kubectl apply` to detect and perform deletions using a three-way diff.
{{< note >}}
-**Note:** To use apply, always create resource initially with either `kubectl apply` or `kubectl create --save-config`.
+To use apply, always create resource initially with either `kubectl apply` or `kubectl create --save-config`.
{{< /note >}}
### kubectl edit
diff --git a/content/en/docs/concepts/configuration/assign-pod-node.md b/content/en/docs/concepts/configuration/assign-pod-node.md
index d1d9cffc53..5a0f861654 100644
--- a/content/en/docs/concepts/configuration/assign-pod-node.md
+++ b/content/en/docs/concepts/configuration/assign-pod-node.md
@@ -87,7 +87,7 @@ with a standard set of labels. As of Kubernetes v1.4 these labels are
* `beta.kubernetes.io/arch`
{{< note >}}
-**Note:** The value of these labels is cloud provider specific and is not guaranteed to be reliable.
+The value of these labels is cloud provider specific and is not guaranteed to be reliable.
For example, the value of `kubernetes.io/hostname` may be the same as the Node name in some environments
and a different value in other environments.
{{< /note >}}
@@ -173,11 +173,15 @@ like node, rack, cloud provider zone, cloud provider region, etc. You express it
key for the node label that the system uses to denote such a topology domain, e.g. see the label keys listed above
in the section [Interlude: built-in node labels](#interlude-built-in-node-labels).
-**Note:** Inter-pod affinity and anti-affinity require substantial amount of
+{{< note >}}
+Inter-pod affinity and anti-affinity require substantial amount of
processing which can slow down scheduling in large clusters significantly. We do
not recommend using them in clusters larger than several hundred nodes.
+{{< /note >}}
-**Note:** Pod anti-affinity requires nodes to be consistently labelled, i.e. every node in the cluster must have an appropriate label matching `topologyKey`. If some or all nodes are missing the specified `topologyKey` label, it can lead to unintended behavior.
+{{< note >}}
+Pod anti-affinity requires nodes to be consistently labelled, i.e. every node in the cluster must have an appropriate label matching `topologyKey`. If some or all nodes are missing the specified `topologyKey` label, it can lead to unintended behavior.
+{{< /note >}}
As with node affinity, there are currently two types of pod affinity and anti-affinity, called `requiredDuringSchedulingIgnoredDuringExecution` and
`preferredDuringSchedulingIgnoredDuringExecution` which denote "hard" vs. "soft" requirements.
diff --git a/content/en/docs/concepts/configuration/manage-compute-resources-container.md b/content/en/docs/concepts/configuration/manage-compute-resources-container.md
index 86c2faa1fe..b05b2e508d 100644
--- a/content/en/docs/concepts/configuration/manage-compute-resources-container.md
+++ b/content/en/docs/concepts/configuration/manage-compute-resources-container.md
@@ -149,7 +149,9 @@ When using Docker:
multiplied by 100. The resulting value is the total amount of CPU time that a container can use
every 100ms. A container cannot use more than its share of CPU time during this interval.
- {{< note >}}**Note**: The default quota period is 100ms. The minimum resolution of CPU quota is 1ms.{{ note >}}
+ {{< note >}}
+ The default quota period is 100ms. The minimum resolution of CPU quota is 1ms.
+ {{ note >}}
- The `spec.containers[].resources.limits.memory` is converted to an integer, and
used as the value of the
@@ -317,7 +319,7 @@ Kubernetes version 1.8 introduces a new resource, _ephemeral-storage_ for managi
This partition is 鈥渆phemeral鈥 and applications cannot expect any performance SLAs (Disk IOPS for example) from this partition. Local ephemeral storage management only applies for the root partition; the optional partition for image layer and writable layer is out of scope.
{{< note >}}
-**Note:** If an optional runtime partition is used, root partition will not hold any image layer or writable layers.
+If an optional runtime partition is used, root partition will not hold any image layer or writable layers.
{{< /note >}}
### Requests and limits setting for local ephemeral storage
@@ -420,7 +422,7 @@ http://k8s-master:8080/api/v1/nodes/k8s-node-1/status
```
{{< note >}}
-**Note**: In the preceding request, `~1` is the encoding for the character `/`
+In the preceding request, `~1` is the encoding for the character `/`
in the patch path. The operation path value in JSON-Patch is interpreted as a
JSON-Pointer. For more details, see
[IETF RFC 6901, section 3](https://tools.ietf.org/html/rfc6901#section-3).
@@ -476,7 +478,7 @@ Examples of _valid_ quantities are `3`, `3000m` and `3Ki`. Examples of
_invalid_ quantities are `0.5` and `1500m`.
{{< note >}}
-**Note:** Extended resources replace Opaque Integer Resources.
+Extended resources replace Opaque Integer Resources.
Users can use any domain name prefix other than `kubernetes.io` which is reserved.
{{< /note >}}
@@ -484,7 +486,7 @@ To consume an extended resource in a Pod, include the resource name as a key
in the `spec.containers[].resources.limits` map in the container spec.
{{< note >}}
-**Note:** Extended resources cannot be overcommitted, so request and limit
+Extended resources cannot be overcommitted, so request and limit
must be equal if both are present in a container spec.
{{< /note >}}
diff --git a/content/en/docs/concepts/configuration/organize-cluster-access-kubeconfig.md b/content/en/docs/concepts/configuration/organize-cluster-access-kubeconfig.md
index d48b600bef..8a77e153df 100644
--- a/content/en/docs/concepts/configuration/organize-cluster-access-kubeconfig.md
+++ b/content/en/docs/concepts/configuration/organize-cluster-access-kubeconfig.md
@@ -12,7 +12,7 @@ find the information it needs to choose a cluster and communicate with the API s
of a cluster.
{{< note >}}
-**Note:** A file that is used to configure access to clusters is called
+A file that is used to configure access to clusters is called
a *kubeconfig file*. This is a generic way of referring to configuration files.
It does not mean that there is a file named `kubeconfig`.
{{< /note >}}
diff --git a/content/en/docs/concepts/configuration/overview.md b/content/en/docs/concepts/configuration/overview.md
index 932e0a93eb..b7d74b4abe 100644
--- a/content/en/docs/concepts/configuration/overview.md
+++ b/content/en/docs/concepts/configuration/overview.md
@@ -84,15 +84,15 @@ The [imagePullPolicy](/docs/concepts/containers/images/#updating-images) and the
- `imagePullPolicy: Never`: the image is assumed to exist locally. No attempt is made to pull the image.
{{< note >}}
- **Note:** To make sure the container always uses the same version of the image, you can specify its [digest](https://docs.docker.com/engine/reference/commandline/pull/#pull-an-image-by-digest-immutable-identifier), for example `sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2`. The digest uniquely identifies a specific version of the image, so it is never updated by Kubernetes unless you change the digest value.
+To make sure the container always uses the same version of the image, you can specify its [digest](https://docs.docker.com/engine/reference/commandline/pull/#pull-an-image-by-digest-immutable-identifier), for example `sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2`. The digest uniquely identifies a specific version of the image, so it is never updated by Kubernetes unless you change the digest value.
{{< /note >}}
{{< note >}}
- **Note:** You should avoid using the `:latest` tag when deploying containers in production as it is harder to track which version of the image is running and more difficult to roll back properly.
+You should avoid using the `:latest` tag when deploying containers in production as it is harder to track which version of the image is running and more difficult to roll back properly.
{{< /note >}}
{{< note >}}
- **Note:** The caching semantics of the underlying image provider make even `imagePullPolicy: Always` efficient. With Docker, for example, if the image already exists, the pull attempt is fast because all image layers are cached and no image download is needed.
+The caching semantics of the underlying image provider make even `imagePullPolicy: Always` efficient. With Docker, for example, if the image already exists, the pull attempt is fast because all image layers are cached and no image download is needed.
{{< /note >}}
## Using kubectl
diff --git a/content/en/docs/concepts/configuration/pod-priority-preemption.md b/content/en/docs/concepts/configuration/pod-priority-preemption.md
index 6349a0b56a..c9b2ff7c6d 100644
--- a/content/en/docs/concepts/configuration/pod-priority-preemption.md
+++ b/content/en/docs/concepts/configuration/pod-priority-preemption.md
@@ -36,7 +36,7 @@ Kubernetes Version | Priority and Preemption State | Enabled by default
1.10 | alpha | no
1.11 | beta | yes
-{{< warning >}} **Warning**: In a cluster where not all users are trusted, a
+{{< warning >}}In a cluster where not all users are trusted, a
malicious user could create pods at the highest possible priorities, causing
other pods to be evicted/not get scheduled. To resolve this issue,
[ResourceQuota](https://kubernetes.io/docs/concepts/policy/resource-quotas/) is
@@ -71,24 +71,13 @@ Pods.
## How to disable preemption
-{{< note >}} **Note**: In Kubernetes 1.11, critical pods (except DaemonSet pods,
-which are still scheduled by the DaemonSet controller) rely on scheduler
-preemption to be scheduled when a cluster is under resource pressure. For this
-reason, you will need to run an older version of Rescheduler if you decide to
-disable preemption. More on this is provided below. {{< /note >}}
-
-#### Option 1: Disable both Pod priority and preemption
-
-Disabling Pod priority disables preemption as well. In order to disable Pod
-Priority, set the feature to false for API server, Scheduler, and Kubelet.
-Disabling the feature on Kubelets is not vital. You can leave the feature on for
-Kubelets if rolling out is hard.
-
-```
---feature-gates=PodPriority=false
-```
-
-#### Option 2: Disable Preemption only
+{{< note >}}
+In Kubernetes 1.11, critical pods (except DaemonSet pods, which are
+still scheduled by the DaemonSet controller) rely on scheduler preemption to be
+scheduled when a cluster is under resource pressure. For this reason, you will
+need to run an older version of Rescheduler if you decide to disable preemption.
+More on this is provided below.
+{{< /note >}}
In Kubernetes 1.11 and later, preemption is controlled by a kube-scheduler flag
`disablePreemption`, which is set to `false` by default.
@@ -266,11 +255,13 @@ A Node is considered for preemption only when the answer to this question is
yes: "If all the Pods with lower priority than the pending Pod are removed from
the Node, can the pending Pod be scheduled on the Node?"
-{{< note >}} **Note:** Preemption does not necessarily remove all lower-priority
+{{< note >}}
+Preemption does not necessarily remove all lower-priority
Pods. If the pending Pod can be scheduled by removing fewer than all
lower-priority Pods, then only a portion of the lower-priority Pods are removed.
Even so, the answer to the preceding question must be yes. If the answer is no,
-the Node is not considered for preemption. {{< /note >}}
+the Node is not considered for preemption.
+{{< /note >}}
If a pending Pod has inter-pod affinity to one or more of the lower-priority
Pods on the Node, the inter-Pod affinity rule cannot be satisfied in the absence
diff --git a/content/en/docs/concepts/configuration/scheduler-perf-tuning.md b/content/en/docs/concepts/configuration/scheduler-perf-tuning.md
index f0dcfa47ed..41ce9dfb1a 100644
--- a/content/en/docs/concepts/configuration/scheduler-perf-tuning.md
+++ b/content/en/docs/concepts/configuration/scheduler-perf-tuning.md
@@ -45,9 +45,11 @@ algorithmSource:
percentageOfNodesToScore: 50
```
-{{< note >}} **Note**: In clusters with zero or less than 50 feasible nodes, the
+{{< note >}}
+In clusters with zero or less than 50 feasible nodes, the
scheduler still checks all the nodes, simply because there are not enough
-feasible nodes to stop the scheduler's search early. {{< /note >}}
+feasible nodes to stop the scheduler's search early.
+{{< /note >}}
**To disable this feature**, you can set `percentageOfNodesToScore` to 100.
diff --git a/content/en/docs/concepts/configuration/secret.md b/content/en/docs/concepts/configuration/secret.md
index b98137b871..c7ebe895c1 100644
--- a/content/en/docs/concepts/configuration/secret.md
+++ b/content/en/docs/concepts/configuration/secret.md
@@ -353,7 +353,7 @@ propagation delay, where cache propagation delay depends on the chosen cache typ
(it equals to watch propagation delay, ttl of cache, or zero corespondingly).
{{< note >}}
-**Note:** A container using a Secret as a
+A container using a Secret as a
[subPath](/docs/concepts/storage/volumes#using-subpath) volume mount will not receive
Secret updates.
{{< /note >}}
@@ -492,7 +492,7 @@ $ kubectl create secret generic ssh-key-secret --from-file=ssh-privatekey=/path/
```
{{< caution >}}
-**Caution:** Think carefully before sending your own ssh keys: other users of the cluster may have access to the secret. Use a service account which you want to be accessible to all the users with whom you share the Kubernetes cluster, and can revoke if they are compromised.
+Think carefully before sending your own ssh keys: other users of the cluster may have access to the secret. Use a service account which you want to be accessible to all the users with whom you share the Kubernetes cluster, and can revoke if they are compromised.
{{< /caution >}}
@@ -544,7 +544,7 @@ $ kubectl create secret generic test-db-secret --from-literal=username=testuser
secret "test-db-secret" created
```
{{< note >}}
-**Note:** Special characters such as `$`, `\*`, and `!` require escaping.
+Special characters such as `$`, `\*`, and `!` require escaping.
If the password you are using has special characters, you need to escape them using the `\\` character. For example, if your actual password is `S!B\*d$zDsb`, you should execute the command this way:
kubectl create secret generic dev-db-secret --from-literal=username=devuser --from-literal=password=S\\!B\\\*d\\$zDsb
@@ -665,7 +665,7 @@ the `dotfile-test-container` will have this file present at the path
`/etc/secret-volume/.secret-file`.
{{< note >}}
-**Note**: Files beginning with dot characters are hidden from the output of `ls -l`;
+Files beginning with dot characters are hidden from the output of `ls -l`;
you must use `ls -la` to see them when listing directory contents.
{{< /note >}}
@@ -774,7 +774,7 @@ Pod level](#use-case-secret-visible-to-one-container-in-a-pod).
single node.
{{< note >}}
-**Note:** As of 1.7 [encryption of secret data at rest is supported](/docs/tasks/administer-cluster/encrypt-data/).
+As of 1.7 [encryption of secret data at rest is supported](/docs/tasks/administer-cluster/encrypt-data/).
{{< /note >}}
{{% capture whatsnext %}}
diff --git a/content/en/docs/concepts/configuration/taint-and-toleration.md b/content/en/docs/concepts/configuration/taint-and-toleration.md
index bb41dca5f0..074cd82c02 100644
--- a/content/en/docs/concepts/configuration/taint-and-toleration.md
+++ b/content/en/docs/concepts/configuration/taint-and-toleration.md
@@ -69,7 +69,7 @@ A toleration "matches" a taint if the keys are the same and the effects are the
`Operator` defaults to `Equal` if not specified.
{{< note >}}
-**Note:** There are two special cases:
+There are two special cases:
* An empty `key` with operator `Exists` matches all keys, values and effects which means this
will tolerate everything.
@@ -230,7 +230,7 @@ added by the NodeController (or kubelet) and the normal logic for evicting pods
based on the Ready NodeCondition is disabled.
{{< note >}}
-**Note:** To maintain the existing [rate limiting](/docs/concepts/architecture/nodes/)
+To maintain the existing [rate limiting](/docs/concepts/architecture/nodes/)
behavior of pod evictions due to node problems, the system actually adds the taints
in a rate-limited way. This prevents massive pod evictions in scenarios such
as the master becoming partitioned from the nodes.
diff --git a/content/en/docs/concepts/containers/images.md b/content/en/docs/concepts/containers/images.md
index c35aad845b..ed590b50d3 100644
--- a/content/en/docs/concepts/containers/images.md
+++ b/content/en/docs/concepts/containers/images.md
@@ -44,7 +44,7 @@ https://cs.k8s.io/?q=docker%20manifest%20(create%7Cpush%7Cannotate)&i=nope&files
These commands rely on and are implemented purely on the Docker CLI. You will need to either edit the `$HOME/.docker/config.json` and set `experimental` key to `enabled` or you can just set `DOCKER_CLI_EXPERIMENTAL` environment variable to `enabled` when you call the CLI commands.
{{< note >}}
-**Note:** Please use Docker *18.06 or above*, versions below that either have bugs or do not support the experimental command line option. Example https://github.com/docker/cli/issues/1135 causes problems under containerd.
+Please use Docker *18.06 or above*, versions below that either have bugs or do not support the experimental command line option. Example https://github.com/docker/cli/issues/1135 causes problems under containerd.
{{< /note >}}
If you run into trouble with uploading stale manifests, just clean up the older manifests in `$HOME/.docker/manifests` to start fresh.
@@ -156,16 +156,16 @@ You can use the IBM Cloud Container Registry to deploy containers from [IBM Clou
### Configuring Nodes to Authenticate to a Private Registry
{{< note >}}
-**Note:** If you are running on Google Kubernetes Engine, there will already be a `.dockercfg` on each node with credentials for Google Container Registry. You cannot use this approach.
+If you are running on Google Kubernetes Engine, there will already be a `.dockercfg` on each node with credentials for Google Container Registry. You cannot use this approach.
{{< /note >}}
{{< note >}}
-**Note:** If you are running on AWS EC2 and are using the EC2 Container Registry (ECR), the kubelet on each node will
+If you are running on AWS EC2 and are using the EC2 Container Registry (ECR), the kubelet on each node will
manage and update the ECR login credentials. You cannot use this approach.
{{< /note >}}
{{< note >}}
-**Note:** This approach is suitable if you can control node configuration. It
+This approach is suitable if you can control node configuration. It
will not work reliably on GCE, and any other cloud provider that does automatic
node replacement.
{{< /note >}}
@@ -183,7 +183,7 @@ in the search paths list below, kubelet uses it as the credential provider when
* `/.dockercfg`
{{< note >}}
-**Note**: You may have to set `HOME=/root` explicitly in your environment file for kubelet.
+You may have to set `HOME=/root` explicitly in your environment file for kubelet.
{{< /note >}}
Here are the recommended steps to configuring your nodes to use a private registry. In this
@@ -240,11 +240,11 @@ registry keys are added to the `.docker/config.json`.
### Pre-pulling Images
{{< note >}}
-**Note:** If you are running on Google Kubernetes Engine, there will already be a `.dockercfg` on each node with credentials for Google Container Registry. You cannot use this approach.
+If you are running on Google Kubernetes Engine, there will already be a `.dockercfg` on each node with credentials for Google Container Registry. You cannot use this approach.
{{< /note >}}
{{< note >}}
-**Note:** This approach is suitable if you can control node configuration. It
+This approach is suitable if you can control node configuration. It
will not work reliably on GCE, and any other cloud provider that does automatic
node replacement.
{{< /note >}}
@@ -263,7 +263,7 @@ All pods will have read access to any pre-pulled images.
### Specifying ImagePullSecrets on a Pod
{{< note >}}
-**Note:** This approach is currently the recommended approach for Google Kubernetes Engine, GCE, and any cloud-providers
+This approach is currently the recommended approach for Google Kubernetes Engine, GCE, and any cloud-providers
where node creation is automated.
{{< /note >}}
diff --git a/content/en/docs/concepts/containers/runtime-class.md b/content/en/docs/concepts/containers/runtime-class.md
index 7d0484c256..861ce41d9e 100644
--- a/content/en/docs/concepts/containers/runtime-class.md
+++ b/content/en/docs/concepts/containers/runtime-class.md
@@ -57,7 +57,7 @@ corresponding documentation for your CRI implementation for how to configure. As
feature, not all CRIs support multiple RuntimeClasses yet.
{{< note >}}
-**Note:** RuntimeClass currently assumes a homogeneous node configuration across the cluster
+RuntimeClass currently assumes a homogeneous node configuration across the cluster
(which means that all nodes are configured the same way with respect to container runtimes). Any heterogeneity (varying configurations) must be
managed independently of RuntimeClass through scheduling features (see [Assigning Pods to
Nodes](/docs/concepts/configuration/assign-pod-node/)).
@@ -87,11 +87,9 @@ spec:
{{< note >}}
-
-**Note:** It is recommended that RuntimeClass write operations (create/update/patch/delete) be
+It is recommended that RuntimeClass write operations (create/update/patch/delete) be
restricted to the cluster administrator. This is typically the default. See [Authorization
Overview](https://kubernetes.io/docs/reference/access-authn-authz/authorization/) for more details.
-
{{< /note >}}
### Usage
diff --git a/content/en/docs/concepts/example-concept-template.md b/content/en/docs/concepts/example-concept-template.md
index 6bbd6a080b..26ce263ef4 100644
--- a/content/en/docs/concepts/example-concept-template.md
+++ b/content/en/docs/concepts/example-concept-template.md
@@ -8,7 +8,9 @@ toc_hide: true
{{% capture overview %}}
-**NOTE:** Be sure to also [create an entry in the table of contents](/docs/home/contribute/write-new-topic/#creating-an-entry-in-the-table-of-contents) for your new document.
+{{< note >}}
+Be sure to also [create an entry in the table of contents](/docs/home/contribute/write-new-topic/#creating-an-entry-in-the-table-of-contents) for your new document.
+{{< /note >}}
This page explains ...
diff --git a/content/en/docs/concepts/extend-kubernetes/api-extension/custom-resources.md b/content/en/docs/concepts/extend-kubernetes/api-extension/custom-resources.md
index 64a7bc5416..750f19361e 100644
--- a/content/en/docs/concepts/extend-kubernetes/api-extension/custom-resources.md
+++ b/content/en/docs/concepts/extend-kubernetes/api-extension/custom-resources.md
@@ -91,7 +91,7 @@ Use a ConfigMap if any of the following apply:
* You want to perform rolling updates via Deployment, etc, when the file is updated.
{{< note >}}
-**Note:** Use a [secret](/docs/concepts/configuration/secret/) for sensitive data, which is similar to a configMap but more secure.
+Use a [secret](/docs/concepts/configuration/secret/) for sensitive data, which is similar to a configMap but more secure.
{{< /note >}}
Use a custom resource (CRD or Aggregated API) if most of the following apply:
@@ -131,7 +131,7 @@ for a demonstration of how to register a new custom resource, work with instance
and setup a controller to handle events.
{{< note >}}
-**Note:** CRD is the successor to the deprecated *ThirdPartyResource* (TPR) API, and is available as of Kubernetes 1.7.
+CRD is the successor to the deprecated *ThirdPartyResource* (TPR) API, and is available as of Kubernetes 1.7.
{{< /note >}}
## API server aggregation
diff --git a/content/en/docs/concepts/overview/object-management-kubectl/declarative-config.md b/content/en/docs/concepts/overview/object-management-kubectl/declarative-config.md
index f0c63b64bd..48025a12e1 100644
--- a/content/en/docs/concepts/overview/object-management-kubectl/declarative-config.md
+++ b/content/en/docs/concepts/overview/object-management-kubectl/declarative-config.md
@@ -60,7 +60,7 @@ annotation on each object. The annotation contains the contents of the object
configuration file that was used to create the object.
{{< note >}}
-**Note:** Add the `-R` flag to recursively process directories.
+Add the `-R` flag to recursively process directories.
{{< /note >}}
Here's an example of an object configuration file:
@@ -134,7 +134,7 @@ kubectl apply -f /
```
{{< note >}}
-**Note:** Add the `-R` flag to recursively process directories.
+Add the `-R` flag to recursively process directories.
{{< /note >}}
Here's an example configuration file:
@@ -148,7 +148,7 @@ kubectl apply -f https://k8s.io/examples/application/simple_deployment.yaml
```
{{< note >}}
-**Note:** For purposes of illustration, the preceding command refers to a single
+For purposes of illustration, the preceding command refers to a single
configuration file instead of a directory.
{{< /note >}}
@@ -322,7 +322,7 @@ spec:
```
{{< warning >}}
-**Warning:** Mixing `kubectl apply` with the imperative object configuration commands
+Mixing `kubectl apply` with the imperative object configuration commands
`create` and `replace` is not supported. This is because `create`
and `replace` do not retain the `kubectl.kubernetes.io/last-applied-configuration`
that `kubectl apply` uses to compute updates.
@@ -347,12 +347,12 @@ kubectl delete -f
Only use this if you know what you are doing.
{{< warning >}}
-**Warning:** `kubectl apply --prune` is in alpha, and backwards incompatible
+`kubectl apply --prune` is in alpha, and backwards incompatible
changes might be introduced in subsequent releases.
{{< /warning >}}
{{< warning >}}
-**Warning:** You must be careful when using this command, so that you
+You must be careful when using this command, so that you
do not delete objects unintentionally.
{{< /warning >}}
@@ -373,7 +373,7 @@ kubectl apply -f --prune -l
```
{{< warning >}}
-**Warning:** Apply with prune should only be run against the root directory
+Apply with prune should only be run against the root directory
containing the object configuration files. Running against sub-directories
can cause objects to be unintentionally deleted if they are returned
by the label selector query specified with `-l ` and
@@ -391,10 +391,9 @@ kubectl get -f -o yaml
## How apply calculates differences and merges changes
{{< caution >}}
-**Caution:** A *patch* is an update operation that is scoped to specific
-fields of an object instead of the entire object.
-This enables updating only a specific set of fields on an object without
-reading the object first.
+A *patch* is an update operation that is scoped to specific fields of an object
+instead of the entire object. This enables updating only a specific set of fields
+on an object without reading the object first.
{{< /caution >}}
When `kubectl apply` updates the live configuration for an object,
@@ -546,7 +545,7 @@ and merged.
Primitive fields are replaced or cleared.
{{< note >}}
-**Note:** '-' is used for "not applicable" because the value is not used.
+`-` is used for "not applicable" because the value is not used.
{{< /note >}}
| Field in object configuration file | Field in live object configuration | Field in last-applied-configuration | Action |
@@ -561,7 +560,7 @@ Primitive fields are replaced or cleared.
Fields that represent maps are merged by comparing each of the subfields or elements of the map:
{{< note >}}
-**Note:** '-' is used for "not applicable" because the value is not used.
+`-` is used for "not applicable" because the value is not used.
{{< /note >}}
| Key in object configuration file | Key in live object configuration | Field in last-applied-configuration | Action |
@@ -689,7 +688,7 @@ by `name`.
As of Kubernetes 1.5, merging lists of primitive elements is not supported.
{{< note >}}
-**Note:** Which of the above strategies is chosen for a given field is controlled by
+Which of the above strategies is chosen for a given field is controlled by
the `patchStrategy` tag in [types.go](https://git.k8s.io/api/core/v1/types.go#L2565)
If no `patchStrategy` is specified for a field of type list, then
the list is replaced.
@@ -900,7 +899,7 @@ Kubernetes objects should be managed using only one method at a time.
Switching from one method to another is possible, but is a manual process.
{{< note >}}
-**Note:** It is OK to use imperative deletion with declarative management.
+It is OK to use imperative deletion with declarative management.
{{< /note >}}
{{< comment >}}
@@ -924,8 +923,10 @@ configuration involves several manual steps:
1. Manually remove the `status` field from the configuration file.
- {{< note >}}**Note:** This step is optional, as `kubectl apply` does not update the status field
- even if it is present in the configuration file.{{< /note >}}
+ {{< note >}}
+ This step is optional, as `kubectl apply` does not update the status field
+ even if it is present in the configuration file.
+ {{< /note >}}
1. Set the `kubectl.kubernetes.io/last-applied-configuration` annotation on the object:
@@ -952,7 +953,7 @@ TODO(pwittrock): Why doesn't export remove the status field? Seems like it shou
## Defining controller selectors and PodTemplate labels
{{< warning >}}
-**Warning:** Updating selectors on controllers is strongly discouraged.
+Updating selectors on controllers is strongly discouraged.
{{< /warning >}}
The recommended approach is to define a single, immutable PodTemplate label
diff --git a/content/en/docs/concepts/overview/object-management-kubectl/imperative-command.md b/content/en/docs/concepts/overview/object-management-kubectl/imperative-command.md
index 583bb03f52..d0cbe8c839 100644
--- a/content/en/docs/concepts/overview/object-management-kubectl/imperative-command.md
+++ b/content/en/docs/concepts/overview/object-management-kubectl/imperative-command.md
@@ -76,8 +76,7 @@ Setting this aspect may set different fields for different object types:
- `set` : Set an aspect of an object.
{{< note >}}
-**Note**: In Kubernetes version 1.5, not every verb-driven command has an
-associated aspect-driven command.
+In Kubernetes version 1.5, not every verb-driven command has an associated aspect-driven command.
{{< /note >}}
The `kubectl` tool supports these additional ways to update a live object directly,
@@ -95,7 +94,7 @@ You can use the `delete` command to delete an object from a cluster:
- `delete /`
{{< note >}}
-**Note**: You can use `kubectl delete` for both imperative commands and imperative object
+You can use `kubectl delete` for both imperative commands and imperative object
configuration. The difference is in the arguments passed to the command. To use
`kubectl delete` as an imperative command, pass the object to be deleted as
an argument. Here's an example that passes a Deployment object named nginx:
diff --git a/content/en/docs/concepts/overview/object-management-kubectl/imperative-config.md b/content/en/docs/concepts/overview/object-management-kubectl/imperative-config.md
index f0681fd9b6..45dca86b50 100644
--- a/content/en/docs/concepts/overview/object-management-kubectl/imperative-config.md
+++ b/content/en/docs/concepts/overview/object-management-kubectl/imperative-config.md
@@ -34,7 +34,7 @@ for details.
## How to update objects
{{< warning >}}
-**Warning:** Updating objects with the `replace` command drops all
+Updating objects with the `replace` command drops all
parts of the spec not specified in the configuration file. This
should not be used with objects whose specs are partially managed
by the cluster, such as Services of type `LoadBalancer`, where
@@ -115,7 +115,7 @@ kubectl replace -f _.yaml
## Defining controller selectors and PodTemplate labels
{{< warning >}}
-**Warning:** Updating selectors on controllers is strongly discouraged.
+Updating selectors on controllers is strongly discouraged.
{{< /warning >}}
The recommended approach is to define a single, immutable PodTemplate label
diff --git a/content/en/docs/concepts/overview/object-management-kubectl/overview.md b/content/en/docs/concepts/overview/object-management-kubectl/overview.md
index fe2baf4a5d..19c8a885f2 100644
--- a/content/en/docs/concepts/overview/object-management-kubectl/overview.md
+++ b/content/en/docs/concepts/overview/object-management-kubectl/overview.md
@@ -15,7 +15,7 @@ approaches.
## Management techniques
{{< warning >}}
-**Warning:** A Kubernetes object should be managed using only one technique. Mixing
+A Kubernetes object should be managed using only one technique. Mixing
and matching techniques for the same object results in undefined behavior.
{{< /warning >}}
@@ -74,7 +74,7 @@ See the [API reference](/docs/reference/generated/kubernetes-api/{{< param "vers
for more details on object definitions.
{{< warning >}}
-**Warning:** The imperative `replace` command replaces the existing
+The imperative `replace` command replaces the existing
spec with the newly provided one, dropping all changes to the object missing from
the configuration file. This approach should not be used with resource
types whose specs are updated independently of the configuration file.
@@ -135,7 +135,7 @@ are automatically detected per-object by `kubectl`. This enables working on
directories, where different operations might be needed for different objects.
{{< note >}}
-**Note:** Declarative object configuration retains changes made by other
+Declarative object configuration retains changes made by other
writers, even if the changes are not merged back to the object configuration file.
This is possible by using the `patch` API operation to write only
observed differences, instead of using the `replace`
diff --git a/content/en/docs/concepts/overview/working-with-objects/common-labels.md b/content/en/docs/concepts/overview/working-with-objects/common-labels.md
index 314bbc7bb0..d0132d92b9 100644
--- a/content/en/docs/concepts/overview/working-with-objects/common-labels.md
+++ b/content/en/docs/concepts/overview/working-with-objects/common-labels.md
@@ -19,7 +19,7 @@ Instead, applications are informal and described with metadata. The definition o
what an application contains is loose.
{{< note >}}
-**Note:** These are recommended labels. They make it easier to manage applications
+These are recommended labels. They make it easier to manage applications
but aren't required for any core tooling.
{{< /note >}}
diff --git a/content/en/docs/concepts/overview/working-with-objects/labels.md b/content/en/docs/concepts/overview/working-with-objects/labels.md
index 65b6430ed2..46535ab44e 100644
--- a/content/en/docs/concepts/overview/working-with-objects/labels.md
+++ b/content/en/docs/concepts/overview/working-with-objects/labels.md
@@ -66,7 +66,7 @@ An empty label selector (that is, one with zero requirements) selects every obje
A null label selector (which is only possible for optional selector fields) selects no objects.
{{< note >}}
-**Note**: the label selectors of two controllers must not overlap within a namespace, otherwise they will fight with each other.
+The label selectors of two controllers must not overlap within a namespace, otherwise they will fight with each other.
{{< /note >}}
### _Equality-based_ requirement
diff --git a/content/en/docs/concepts/policy/pod-security-policy.md b/content/en/docs/concepts/policy/pod-security-policy.md
index 08cec73817..447d048271 100644
--- a/content/en/docs/concepts/policy/pod-security-policy.md
+++ b/content/en/docs/concepts/policy/pod-security-policy.md
@@ -230,8 +230,8 @@ Create the rolebinding to grant `fake-user` the `use` verb on the example
policy:
{{< note >}}
-**Note:** _This is not the recommended way! See the [next section](#run-another-pod)
-for the preferred approach._
+This is not the recommended way! See the [next section](#run-another-pod)
+for the preferred approach.
{{< /note >}}
```shell
@@ -442,7 +442,7 @@ allowedHostPaths:
readOnly: true # only allow read-only mounts
```
-{{< warning >}}**Warning:** There are many ways a container with unrestricted access to the host
+{{< warning >}}There are many ways a container with unrestricted access to the host
filesystem can escalate privileges, including reading data from other
containers, and abusing the credentials of system services, such as Kubelet.
diff --git a/content/en/docs/concepts/policy/resource-quotas.md b/content/en/docs/concepts/policy/resource-quotas.md
index 087961b418..3374593230 100644
--- a/content/en/docs/concepts/policy/resource-quotas.md
+++ b/content/en/docs/concepts/policy/resource-quotas.md
@@ -202,7 +202,7 @@ field in the quota spec.
A quota is matched and consumed only if `scopeSelector` in the quota spec selects the pod.
{{< note >}}
-**Note:** You need to enable the feature gate `ResourceQuotaScopeSelectors`before using resource quotas
+You need to enable the feature gate `ResourceQuotaScopeSelectors`before using resource quotas
per PriorityClass.
{{< /note >}}
diff --git a/content/en/docs/concepts/services-networking/dns-pod-service.md b/content/en/docs/concepts/services-networking/dns-pod-service.md
index 96a62abd48..268519e833 100644
--- a/content/en/docs/concepts/services-networking/dns-pod-service.md
+++ b/content/en/docs/concepts/services-networking/dns-pod-service.md
@@ -149,7 +149,7 @@ The Endpoints object can specify the `hostname` for any endpoint addresses,
along with its IP.
{{< note >}}
-**Note:** Because A records are not created for Pod names, `hostname` is required for the Pod's A record to be created. A Pod with no `hostname` but with `subdomain` only will only create the A record for the headless service (`default-subdomain.my-namespace.svc.cluster.local`), pointing to the Pod's IP address.
+Because A records are not created for Pod names, `hostname` is required for the Pod's A record to be created. A Pod with no `hostname` but with `subdomain` only will only create the A record for the headless service (`default-subdomain.my-namespace.svc.cluster.local`), pointing to the Pod's IP address.
{{< /note >}}
### Pod's DNS Policy
@@ -176,7 +176,7 @@ following pod-specific DNS policies. These policies are specified in the
See [DNS config](#dns-config) subsection below.
{{< note >}}
-**NOTE:** "Default" is not the default DNS policy. If `dnsPolicy` is not
+"Default" is not the default DNS policy. If `dnsPolicy` is not
explicitly specified, then 鈥淐lusterFirst鈥 is used.
{{< /note >}}
diff --git a/content/en/docs/concepts/services-networking/ingress.md b/content/en/docs/concepts/services-networking/ingress.md
index 2eb745c867..6aed8a8b8f 100644
--- a/content/en/docs/concepts/services-networking/ingress.md
+++ b/content/en/docs/concepts/services-networking/ingress.md
@@ -99,7 +99,7 @@ In order for the Ingress resource to work, the cluster must have an Ingress cont
* [Istio](https://istio.io/) based ingress controller [Control Ingress Traffic](https://istio.io/docs/tasks/traffic-management/ingress/)
{{< note >}}
-**Note:** Review the documentation for your controller to find its specific support policy.
+Review the documentation for your controller to find its specific support policy.
{{< /note >}}
## Before you begin
@@ -107,7 +107,7 @@ In order for the Ingress resource to work, the cluster must have an Ingress cont
The following document describes a set of cross-platform features exposed through the Ingress resource. Ideally, all Ingress controllers should fulfill this specification, but we're not there yet. We currently support and maintain [GCE](https://git.k8s.io/ingress-gce/README.md) and [nginx](https://git.k8s.io/ingress-nginx/README.md) controllers. If you use the F5 BIG-IP Controller, see [Use the BIG-IP Controller as a Kubernetes Ingress Controller](http://clouddocs.f5.com/containers/latest/kubernetes/kctlr-k8s-ingress-ctlr.html).
{{< note >}}
-**Note:** Make sure you review your controller's specific docs so you understand the caveats.
+Make sure you review your controller's specific docs so you understand the caveats.
{{< /note >}}
## Types of Ingress
@@ -202,7 +202,7 @@ When it has done so, you will see the address of the loadbalancer at the
Address field.
{{< note >}}
-**Note:** You need to create a default-http-backend [Service](/docs/concepts/services-networking/service/) if necessary.
+You need to create a default-http-backend [Service](/docs/concepts/services-networking/service/) if necessary.
{{< /note >}}
### Name based virtual hosting
diff --git a/content/en/docs/concepts/services-networking/service.md b/content/en/docs/concepts/services-networking/service.md
index 9fc2bb79b4..7b747a6a79 100644
--- a/content/en/docs/concepts/services-networking/service.md
+++ b/content/en/docs/concepts/services-networking/service.md
@@ -87,7 +87,7 @@ Kubernetes `Services` support `TCP`, `UDP` and `SCTP` for protocols. The defaul
is `TCP`.
{{< note >}}
-**Note:** SCTP support is an alpha feature since Kubernetes 1.12
+SCTP support is an alpha feature since Kubernetes 1.12
{{< /note >}}
### Services without selectors
@@ -132,7 +132,7 @@ subsets:
```
{{< note >}}
-**Note:** The endpoint IPs may not be loopback (127.0.0.0/8), link-local
+The endpoint IPs may not be loopback (127.0.0.0/8), link-local
(169.254.0.0/16), or link-local multicast (224.0.0.0/24). They cannot be the
cluster IPs of other Kubernetes services either because the `kube-proxy`
component doesn't support virtual IPs as destination yet.
@@ -212,10 +212,12 @@ options for load balancing algorithm, such as:
- `sed`: shortest expected delay
- `nq`: never queue
-**Note:** ipvs mode assumes IPVS kernel modules are installed on the node
+{{< note >}}
+ipvs mode assumes IPVS kernel modules are installed on the node
before running kube-proxy. When kube-proxy starts with ipvs proxy mode,
kube-proxy would validate if IPVS modules are installed on the node, if
it's not installed kube-proxy will fall back to iptables proxy mode.
+{{< /note >}}

@@ -459,7 +461,7 @@ public IP address resource needs to be created first, and it should be in the sa
group of the other automatically created resources of the cluster. For example, `MC_myResourceGroup_myAKSCluster_eastus`. Specify the assigned IP address as loadBalancerIP. Ensure that you have updated the securityGroupName in the cloud provider configuration file. For information about troubleshooting `CreatingLoadBalancerFailed` permission issues see, [Use a static IP address with the Azure Kubernetes Service (AKS) load balancer](https://docs.microsoft.com/en-us/azure/aks/static-ip) or [CreatingLoadBalancerFailed on AKS cluster with advanced networking](https://github.com/Azure/AKS/issues/357).
{{< note >}}
-**Note:** The support of SCTP in the cloud provider's load balancer is up to the cloud provider's
+he support of SCTP in the cloud provider's load balancer is up to the cloud provider's
load balancer implementation. If SCTP is not supported by the cloud provider's load balancer the
Service creation request is accepted but the creation of the load balancer fails.
{{< /note >}}
@@ -693,7 +695,9 @@ There are other annotations to manage Classic Elastic Load Balancers that are de
#### Network Load Balancer support on AWS [alpha]
-**Warning:** This is an alpha feature and not recommended for production clusters yet.
+{{< warning >}}
+This is an alpha feature and not recommended for production clusters yet.
+{{< /warning >}}
Starting in version 1.9.0, Kubernetes supports Network Load Balancer (NLB). To
use a Network Load Balancer on AWS, use the annotation `service.beta.kubernetes.io/aws-load-balancer-type`
@@ -747,13 +751,15 @@ spec:
- "143.231.0.0/16"
```
-**Note:** NLB only works with certain instance classes, see the [AWS documentation](http://docs.aws.amazon.com/elasticloadbalancing/latest/network/target-group-register-targets.html#register-deregister-targets)
+{{< note >}}
+NLB only works with certain instance classes, see the [AWS documentation](http://docs.aws.amazon.com/elasticloadbalancing/latest/network/target-group-register-targets.html#register-deregister-targets)
for supported instance types.
+{{< /note >}}
### Type ExternalName {#externalname}
{{< note >}}
-**NOTE:** ExternalName Services are available only with `kube-dns` version 1.7 and later.
+ExternalName Services are available only with `kube-dns` version 1.7 and later.
{{< /note >}}
Services of type ExternalName map a service to a DNS name (specified using
diff --git a/content/en/docs/concepts/storage/persistent-volumes.md b/content/en/docs/concepts/storage/persistent-volumes.md
index 28fc8b4f1a..227097ba04 100644
--- a/content/en/docs/concepts/storage/persistent-volumes.md
+++ b/content/en/docs/concepts/storage/persistent-volumes.md
@@ -85,7 +85,7 @@ Once a user has a claim and that claim is bound, the bound PV belongs to the use
The purpose of the Storage Object in Use Protection feature is to ensure that Persistent Volume Claims (PVCs) in active use by a pod and Persistent Volume (PVs) that are bound to PVCs are not removed from the system as this may result in data loss.
{{< note >}}
-**Note:** PVC is in active use by a pod when the pod status is `Pending` and the pod is assigned to a node or the pod status is `Running`.
+PVC is in active use by a pod when the pod status is `Pending` and the pod is assigned to a node or the pod status is `Running`.
{{< /note >}}
When the [Storage Object in Use Protection feature](/docs/tasks/administer-cluster/storage-object-in-use-protection/) is enabled, if a user deletes a PVC in active use by a pod, the PVC is not removed immediately. PVC removal is postponed until the PVC is no longer actively used by any pods, and also if admin deletes a PV that is bound to a PVC, the PV is not removed immediately. PV removal is postponed until the PV is not bound to a PVC any more.
@@ -147,7 +147,7 @@ For volume plugins that support the `Delete` reclaim policy, deletion removes bo
#### Recycle
{{< warning >}}
-**Warning:** The `Recycle` reclaim policy is deprecated. Instead, the recommended approach is to use dynamic provisioning.
+The `Recycle` reclaim policy is deprecated. Instead, the recommended approach is to use dynamic provisioning.
{{< /warning >}}
If supported by the underlying volume plugin, the `Recycle` reclaim policy performs a basic scrub (`rm -rf /thevolume/*`) on the volume and makes it available again for a new claim.
@@ -238,7 +238,7 @@ This feature has no effect on PVCs that are not in use by a Pod or deployment. Y
uses the PVC before the expansion can complete.
{{< note >}}
-**Note:** Expanding EBS volumes is a time consuming operation. Also, there is a per-volume quota of one modification every 6 hours.
+Expanding EBS volumes is a time consuming operation. Also, there is a per-volume quota of one modification every 6 hours.
{{< /note >}}
@@ -377,7 +377,7 @@ Currently, only NFS and HostPath support recycling. AWS EBS, GCE PD, Azure Disk,
A Kubernetes administrator can specify additional mount options for when a Persistent Volume is mounted on a node.
{{< note >}}
-**Note:** Not all Persistent volume types support mount options.
+Not all Persistent volume types support mount options.
{{< /note >}}
The following volume types support mount options:
@@ -495,7 +495,7 @@ the requirements are ANDed together: only a PV of the requested class and with
the requested labels may be bound to the PVC.
{{< note >}}
-**Note:** Currently, a PVC with a non-empty `selector` can't have a PV dynamically provisioned for it.
+Currently, a PVC with a non-empty `selector` can't have a PV dynamically provisioned for it.
{{< /note >}}
In the past, the annotation `volume.beta.kubernetes.io/storage-class` was used instead
@@ -547,7 +547,7 @@ applicable.
* RBD (Ceph Block Device)
{{< note >}}
-**Note**: Only FC and iSCSI volumes supported raw block volumes in Kubernetes 1.9.
+Only FC and iSCSI volumes supported raw block volumes in Kubernetes 1.9.
Support for the additional plugins was added in 1.10.
{{< /note >}}
@@ -605,7 +605,7 @@ spec:
```
{{< note >}}
-**Note:** When adding a raw block device for a Pod, we specify the device path in the container instead of a mount path.
+When adding a raw block device for a Pod, we specify the device path in the container instead of a mount path.
{{< /note >}}
### Binding Block Volumes
@@ -627,7 +627,7 @@ Volume binding matrix for statically provisioned volumes:
| Filesystem | unspecified | BIND |
{{< note >}}
-**Note:** Only statically provisioned volumes are supported for alpha release. Administrators should take care to consider these values when working with raw block devices.
+Only statically provisioned volumes are supported for alpha release. Administrators should take care to consider these values when working with raw block devices.
{{< /note >}}
## Volume Snapshot and Restore Volume from Snapshot Support
diff --git a/content/en/docs/concepts/storage/storage-classes.md b/content/en/docs/concepts/storage/storage-classes.md
index 0cd7d0afbc..3aba1eee67 100644
--- a/content/en/docs/concepts/storage/storage-classes.md
+++ b/content/en/docs/concepts/storage/storage-classes.md
@@ -123,8 +123,10 @@ the class or PV, so mount of the PV will simply fail if one is invalid.
{{< feature-state for_k8s_version="v1.12" state="beta" >}}
-**Note:** This feature requires the `VolumeScheduling` feature gate to be
+{{< note >}}
+This feature requires the `VolumeScheduling` feature gate to be
enabled.
+{{< /note >}}
The `volumeBindingMode` field controls when [volume binding and dynamic
provisioning](/docs/concepts/storage/persistent-volumes/#provisioning) should occur.
@@ -159,8 +161,10 @@ The following plugins support `WaitForFirstConsumer` with pre-created Persistent
### Allowed Topologies
{{< feature-state for_k8s_version="v1.12" state="beta" >}}
-**Note:** This feature requires the `VolumeScheduling` feature gate to be
+{{< note >}}
+This feature requires the `VolumeScheduling` feature gate to be
enabled.
+{{< /note >}}
When a cluster operactor specifies the `WaitForFirstConsumer` volume binding mode, it is no longer necessary
to restrict provisioning to specific topologies in most situations. However,
@@ -232,8 +236,10 @@ parameters:
encrypting the volume. If none is supplied but `encrypted` is true, a key is
generated by AWS. See AWS docs for valid ARN value.
-**Note:** `zone` and `zones` parameters are deprecated and replaced with
+{{< note >}}
+`zone` and `zones` parameters are deprecated and replaced with
[allowedTopologies](#allowed-topologies)
+{{< /note >}}
### GCE PD
@@ -269,8 +275,10 @@ specified, Kubernetes will arbitrarily choose among the specified zones. If the
`zones` parameter is omitted, Kubernetes will arbitrarily choose among zones
managed by the cluster.
-**Note:** `zone` and `zones` parameters are deprecated and replaced with
+{{< note >}}
+`zone` and `zones` parameters are deprecated and replaced with
[allowedTopologies](#allowed-topologies)
+{{< /note >}}
### Glusterfs
diff --git a/content/en/docs/concepts/storage/volumes.md b/content/en/docs/concepts/storage/volumes.md
index 5f16c2b464..7ce8c092db 100644
--- a/content/en/docs/concepts/storage/volumes.md
+++ b/content/en/docs/concepts/storage/volumes.md
@@ -105,7 +105,7 @@ EBS volume can be pre-populated with data, and that data can be "handed off"
between Pods.
{{< caution >}}
-**Important:** You must create an EBS volume using `aws ec2 create-volume` or the AWS API before you can use it.
+You must create an EBS volume using `aws ec2 create-volume` or the AWS API before you can use it.
{{< /caution >}}
There are some restrictions when using an `awsElasticBlockStore` volume:
@@ -170,7 +170,7 @@ that data can be "handed off" between Pods. CephFS can be mounted by multiple
writers simultaneously.
{{< caution >}}
-**Important:** You must have your own Ceph server running with the share exported before you can use it.
+You must have your own Ceph server running with the share exported before you can use it.
{{< /caution >}}
See the [CephFS example](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/cephfs/) for more details.
@@ -215,11 +215,11 @@ Note that this path is derived from the volume's `mountPath` and the `path`
keyed with `log_level`.
{{< caution >}}
-**Important:** You must create a [ConfigMap](/docs/tasks/configure-pod-container/configure-pod-configmap/) before you can use it.
+You must create a [ConfigMap](/docs/tasks/configure-pod-container/configure-pod-configmap/) before you can use it.
{{< /caution >}}
{{< note >}}
-**Note:** A Container using a ConfigMap as a [subPath](#using-subpath) volume mount will not
+A Container using a ConfigMap as a [subPath](#using-subpath) volume mount will not
receive ConfigMap updates.
{{< /note >}}
@@ -229,7 +229,7 @@ A `downwardAPI` volume is used to make downward API data available to applicatio
It mounts a directory and writes the requested data in plain text files.
{{< note >}}
-**Note:** A Container using Downward API as a [subPath](#using-subpath) volume mount will not
+A Container using Downward API as a [subPath](#using-subpath) volume mount will not
receive Downward API updates.
{{< /note >}}
@@ -245,7 +245,7 @@ or different paths in each Container. When a Pod is removed from a node for
any reason, the data in the `emptyDir` is deleted forever.
{{< note >}}
-**Note:** A Container crashing does *NOT* remove a Pod from a node, so the data in an `emptyDir` volume is safe across Container crashes.
+A Container crashing does *NOT* remove a Pod from a node, so the data in an `emptyDir` volume is safe across Container crashes.
{{< /note >}}
Some uses for an `emptyDir` are:
@@ -290,7 +290,7 @@ You can specify single or multiple target World Wide Names using the parameter
targetWWNs expect that those WWNs are from multi-path connections.
{{< caution >}}
-**Important:** You must configure FC SAN Zoning to allocate and mask those LUNs (volumes) to the target WWNs beforehand so that Kubernetes hosts can access them.
+You must configure FC SAN Zoning to allocate and mask those LUNs (volumes) to the target WWNs beforehand so that Kubernetes hosts can access them.
{{< /caution >}}
See the [FC example](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/fibre_channel) for more details.
@@ -307,7 +307,7 @@ reattached by Flocker to the node that the Pod is scheduled. This means data
can be "handed off" between Pods as required.
{{< caution >}}
-**Important:** You must have your own Flocker installation running before you can use it.
+You must have your own Flocker installation running before you can use it.
{{< /caution >}}
See the [Flocker example](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/flocker) for more details.
@@ -321,7 +321,7 @@ preserved and the volume is merely unmounted. This means that a PD can be
pre-populated with data, and that data can be "handed off" between Pods.
{{< caution >}}
-**Important:** You must create a PD using `gcloud` or the GCE API or UI before you can use it.
+You must create a PD using `gcloud` or the GCE API or UI before you can use it.
{{< /caution >}}
There are some restrictions when using a `gcePersistentDisk`:
@@ -403,7 +403,7 @@ spec:
### gitRepo (deprecated) {#gitrepo}
{{< warning >}}
-**Warning:** The gitRepo volume type is deprecated. To provision a container with a git repo, mount an [EmptyDir](#emptydir) into an InitContainer that clones the repo using git, then mount the [EmptyDir](#emptydir) into the Pod's container.
+The gitRepo volume type is deprecated. To provision a container with a git repo, mount an [EmptyDir](#emptydir) into an InitContainer that clones the repo using git, then mount the [EmptyDir](#emptydir) into the Pod's container.
{{< /warning >}}
A `gitRepo` volume is an example of what can be done as a volume plugin. It
@@ -443,7 +443,7 @@ be "handed off" between Pods. GlusterFS can be mounted by multiple writers
simultaneously.
{{< caution >}}
-**Important:** You must have your own GlusterFS installation running before you can use it.
+You must have your own GlusterFS installation running before you can use it.
{{< /caution >}}
See the [GlusterFS example](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/glusterfs) for more details.
@@ -521,7 +521,7 @@ unmounted. This means that an iscsi volume can be pre-populated with data, and
that data can be "handed off" between Pods.
{{< caution >}}
-**Important:** You must have your own iSCSI server running with the volume created before you can use it.
+You must have your own iSCSI server running with the volume created before you can use it.
{{< /caution >}}
A feature of iSCSI is that it can be mounted as read-only by multiple consumers
@@ -537,7 +537,7 @@ See the [iSCSI example](https://github.com/kubernetes/examples/tree/{{< param "g
{{< feature-state for_k8s_version="v1.10" state="beta" >}}
{{< note >}}
-**Note:** The alpha PersistentVolume NodeAffinity annotation has been deprecated
+The alpha PersistentVolume NodeAffinity annotation has been deprecated
and will be removed in a future release. Existing PersistentVolumes using this
annotation must be updated by the user to use the new PersistentVolume
`NodeAffinity` field.
@@ -610,7 +610,7 @@ provisioning yet. For an example on how to run an external local provisioner,
see the [local volume provisioner user guide](https://github.com/kubernetes-incubator/external-storage/tree/master/local-volume).
{{< note >}}
-**Note:** The local PersistentVolume requires manual cleanup and deletion by the
+The local PersistentVolume requires manual cleanup and deletion by the
user if the external static provisioner is not used to manage the volume
lifecycle.
{{< /note >}}
@@ -625,7 +625,7 @@ that data can be "handed off" between Pods. NFS can be mounted by multiple
writers simultaneously.
{{< caution >}}
-**Important:** You must have your own NFS server running with the share exported before you can use it.
+You must have your own NFS server running with the share exported before you can use it.
{{< /caution >}}
See the [NFS example](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/volumes/nfs) for more details.
@@ -782,7 +782,7 @@ option for the API server. The `path` field specifies a relative path to the mou
of the projected volume.
{{< note >}}
-**Note:** A Container using a projected volume source as a [subPath](#using-subpath) volume mount will not
+A Container using a projected volume source as a [subPath](#using-subpath) volume mount will not
receive updates for those volume sources.
{{< /note >}}
@@ -818,7 +818,7 @@ spec:
```
{{< caution >}}
-**Important:** Make sure you have an existing PortworxVolume with name `pxvol`
+Make sure you have an existing PortworxVolume with name `pxvol`
before using it in the Pod.
{{< /caution >}}
@@ -830,7 +830,7 @@ A `quobyte` volume allows an existing [Quobyte](http://www.quobyte.com) volume t
be mounted into your Pod.
{{< caution >}}
-**Important:** You must have your own Quobyte setup running with the volumes
+You must have your own Quobyte setup running with the volumes
created before you can use it.
{{< /caution >}}
@@ -846,7 +846,7 @@ means that a RBD volume can be pre-populated with data, and that data can
be "handed off" between Pods.
{{< caution >}}
-**Important:** You must have your own Ceph installation running before you can use RBD.
+You must have your own Ceph installation running before you can use RBD.
{{< /caution >}}
A feature of RBD is that it can be mounted as read-only by multiple consumers
@@ -866,7 +866,7 @@ volumes (or it can dynamically provision new volumes for persistent volume claim
[ScaleIO Persistent Volumes](/docs/concepts/storage/persistent-volumes/#scaleio)).
{{< caution >}}
-**Important:** You must have an existing ScaleIO cluster already setup and
+You must have an existing ScaleIO cluster already setup and
running with the volumes created before you can use them.
{{< /caution >}}
@@ -908,11 +908,11 @@ backed by tmpfs (a RAM-backed filesystem) so they are never written to
non-volatile storage.
{{< caution >}}
-**Important:** You must create a secret in the Kubernetes API before you can use it.
+You must create a secret in the Kubernetes API before you can use it.
{{< /caution >}}
{{< note >}}
-**Note:** A Container using a Secret as a [subPath](#using-subpath) volume mount will not
+A Container using a Secret as a [subPath](#using-subpath) volume mount will not
receive Secret updates.
{{< /note >}}
@@ -934,7 +934,7 @@ The StorageOS Container requires 64-bit Linux and has no additional dependencies
A free developer license is available.
{{< caution >}}
-**Important:** You must run the StorageOS Container on each node that wants to
+You must run the StorageOS Container on each node that wants to
access StorageOS volumes or that will contribute storage capacity to the pool.
For installation instructions, consult the
[StorageOS documentation](https://docs.storageos.com).
@@ -974,7 +974,7 @@ For more information including Dynamic Provisioning and Persistent Volume Claims
### vsphereVolume {#vspherevolume}
{{< note >}}
-**Prerequisite:** Kubernetes with vSphere Cloud Provider configured. For cloudprovider
+Prerequisite: Kubernetes with vSphere Cloud Provider configured. For cloudprovider
configuration please refer [vSphere getting started guide](https://vmware.github.io/vsphere-storage-for-kubernetes/documentation/).
{{< /note >}}
@@ -982,7 +982,7 @@ A `vsphereVolume` is used to mount a vSphere VMDK Volume into your Pod. The con
of a volume are preserved when it is unmounted. It supports both VMFS and VSAN datastore.
{{< caution >}}
-**Important:** You must create VMDK using one of the following method before using with Pod.
+You must create VMDK using one of the following method before using with Pod.
{{< /caution >}}
#### Creating a VMDK volume
@@ -1274,7 +1274,7 @@ Its values are:
[Linux kernel documentation](https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt)
{{< caution >}}
-**Caution:** `Bidirectional` mount propagation can be dangerous. It can damage
+`Bidirectional` mount propagation can be dangerous. It can damage
the host operating system and therefore it is allowed only in privileged
Containers. Familiarity with Linux kernel behavior is strongly recommended.
In addition, any volume mounts created by Containers in Pods must be destroyed
diff --git a/content/en/docs/concepts/workloads/controllers/cron-jobs.md b/content/en/docs/concepts/workloads/controllers/cron-jobs.md
index 3169cb13bf..602bf0d581 100644
--- a/content/en/docs/concepts/workloads/controllers/cron-jobs.md
+++ b/content/en/docs/concepts/workloads/controllers/cron-jobs.md
@@ -14,8 +14,9 @@ A _Cron Job_ creates [Jobs](/docs/concepts/workloads/controllers/jobs-run-to-com
One CronJob object is like one line of a _crontab_ (cron table) file. It runs a job periodically
on a given schedule, written in [Cron](https://en.wikipedia.org/wiki/Cron) format.
+
{{< note >}}
-**Note:** All **CronJob** `schedule:` times are denoted in UTC.
+All **CronJob** `schedule:` times are denoted in UTC.
{{< /note >}}
For instructions on creating and working with cron jobs, and for an example of a spec file for a cron job, see [Running automated tasks with cron jobs](/docs/tasks/job/automated-tasks-with-cron-jobs).
diff --git a/content/en/docs/concepts/workloads/controllers/jobs-run-to-completion.md b/content/en/docs/concepts/workloads/controllers/jobs-run-to-completion.md
index 0fc09ad537..0dbbfaabf0 100644
--- a/content/en/docs/concepts/workloads/controllers/jobs-run-to-completion.md
+++ b/content/en/docs/concepts/workloads/controllers/jobs-run-to-completion.md
@@ -206,7 +206,7 @@ back-off count is reset if no new failed Pods appear before the Job's next
status check.
{{< note >}}
-**Note:** Issue [#54870](https://github.com/kubernetes/kubernetes/issues/54870) still exists for versions of Kubernetes prior to version 1.12
+Issue [#54870](https://github.com/kubernetes/kubernetes/issues/54870) still exists for versions of Kubernetes prior to version 1.12
{{< /note >}}
## Job Termination and Cleanup
diff --git a/content/en/docs/concepts/workloads/controllers/replicationcontroller.md b/content/en/docs/concepts/workloads/controllers/replicationcontroller.md
index d6dcb84249..daf0dfd59a 100644
--- a/content/en/docs/concepts/workloads/controllers/replicationcontroller.md
+++ b/content/en/docs/concepts/workloads/controllers/replicationcontroller.md
@@ -16,7 +16,7 @@ weight: 20
{{% capture overview %}}
{{< note >}}
-**NOTE:** A [`Deployment`](/docs/concepts/workloads/controllers/deployment/) that configures a [`ReplicaSet`](/docs/concepts/workloads/controllers/replicaset/) is now the recommended way to set up replication.
+A [`Deployment`](/docs/concepts/workloads/controllers/deployment/) that configures a [`ReplicaSet`](/docs/concepts/workloads/controllers/replicaset/) is now the recommended way to set up replication.
{{< /note >}}
A _ReplicationController_ ensures that a specified number of pod replicas are running at any one
diff --git a/content/en/docs/concepts/workloads/controllers/statefulset.md b/content/en/docs/concepts/workloads/controllers/statefulset.md
index 480988cb09..0e3a4e8569 100644
--- a/content/en/docs/concepts/workloads/controllers/statefulset.md
+++ b/content/en/docs/concepts/workloads/controllers/statefulset.md
@@ -16,7 +16,7 @@ weight: 40
StatefulSet is the workload API object used to manage stateful applications.
{{< note >}}
-**Note:** StatefulSets are stable (GA) in 1.9.
+StatefulSets are stable (GA) in 1.9.
{{< /note >}}
{{< glossary_definition term_id="statefulset" length="all" >}}
@@ -144,7 +144,7 @@ Cluster Domain | Service (ns/name) | StatefulSet (ns/name) | StatefulSet Domain
kube.local | foo/nginx | foo/web | nginx.foo.svc.kube.local | web-{0..N-1}.nginx.foo.svc.kube.local | web-{0..N-1} |
{{< note >}}
-**Note:** Cluster Domain will be set to `cluster.local` unless
+Cluster Domain will be set to `cluster.local` unless
[otherwise configured](/docs/concepts/services-networking/dns-pod-service/#how-it-works).
{{< /note >}}
diff --git a/content/en/docs/concepts/workloads/pods/pod-overview.md b/content/en/docs/concepts/workloads/pods/pod-overview.md
index d08433ef39..97efcb8c8c 100644
--- a/content/en/docs/concepts/workloads/pods/pod-overview.md
+++ b/content/en/docs/concepts/workloads/pods/pod-overview.md
@@ -55,7 +55,7 @@ A Pod can specify a set of shared storage *volumes*. All containers in the Pod c
You'll rarely create individual Pods directly in Kubernetes--even singleton Pods. This is because Pods are designed as relatively ephemeral, disposable entities. When a Pod gets created (directly by you, or indirectly by a Controller), it is scheduled to run on a Node in your cluster. The Pod remains on that Node until the process is terminated, the pod object is deleted, the pod is *evicted* for lack of resources, or the Node fails.
{{< note >}}
-**Note:** Restarting a container in a Pod should not be confused with restarting the Pod. The Pod itself does not run, but is an environment the containers run in and persists until it is deleted.
+Restarting a container in a Pod should not be confused with restarting the Pod. The Pod itself does not run, but is an environment the containers run in and persists until it is deleted.
{{< /note >}}
Pods do not, by themselves, self-heal. If a Pod is scheduled to a Node that fails, or if the scheduling operation itself fails, the Pod is deleted; likewise, a Pod won't survive an eviction due to a lack of resources or Node maintenance. Kubernetes uses a higher-level abstraction, called a *Controller*, that handles the work of managing the relatively disposable Pod instances. Thus, while it is possible to use Pod directly, it's far more common in Kubernetes to manage your pods using a Controller. See [Pods and Controllers](#pods-and-controllers) for more information on how Kubernetes uses Controllers to implement Pod scaling and healing.
diff --git a/content/en/docs/concepts/workloads/pods/podpreset.md b/content/en/docs/concepts/workloads/pods/podpreset.md
index 6711ba2ffe..dfae21fd4f 100644
--- a/content/en/docs/concepts/workloads/pods/podpreset.md
+++ b/content/en/docs/concepts/workloads/pods/podpreset.md
@@ -51,7 +51,7 @@ Pods, Kubernetes modifies the Pod Spec. For changes to `Env`, `EnvFrom`, and
the Pod; for changes to `Volume`, Kubernetes modifies the Pod Spec.
{{< note >}}
-**Note:** A Pod Preset is capable of modifying the `.spec.containers` field in a
+A Pod Preset is capable of modifying the `.spec.containers` field in a
Pod spec when appropriate. *No* resource definition from the Pod Preset will be
applied to the `initContainers` field.
{{< /note >}}
diff --git a/content/en/docs/contribute/generate-ref-docs/kubectl.md b/content/en/docs/contribute/generate-ref-docs/kubectl.md
index 6793c6e6b9..39fc14cf08 100644
--- a/content/en/docs/contribute/generate-ref-docs/kubectl.md
+++ b/content/en/docs/contribute/generate-ref-docs/kubectl.md
@@ -9,7 +9,6 @@ This page shows how to automatically generate reference pages for the
commands provided by the `kubectl` tool.
{{< note >}}
-**Note:**
This topic shows how to generate reference documentation for
[kubectl commands](/docs/reference/generated/kubectl/kubectl-commands)
like
@@ -132,7 +131,6 @@ on how to do this, see
Monitor your cherry-pick pull request until it is merged into the release branch.
{{< note >}}
-**Note:**
Proposing a cherry pick requires that you have permission to set a label and a
milestone in your pull request. If you don鈥檛 have those permissions, you will
need to work with someone who can set the label and milestone for you.
diff --git a/content/en/docs/contribute/generate-ref-docs/kubernetes-api.md b/content/en/docs/contribute/generate-ref-docs/kubernetes-api.md
index f61e62f5cb..7dc9e813bd 100644
--- a/content/en/docs/contribute/generate-ref-docs/kubernetes-api.md
+++ b/content/en/docs/contribute/generate-ref-docs/kubernetes-api.md
@@ -98,7 +98,7 @@ or more comments in the Kubernetes source code.
### Making changes to comments in the source code
{{< note >}}
-**Note**: The following steps are an example, not a general procedure. Details
+The following steps are an example, not a general procedure. Details
will be different in your situation.
{{< /note >}}
@@ -184,7 +184,7 @@ to monitor your pull request until it has been merged.
is an example of a pull request that fixes a typo in the Kubernetes source code.
{{< note >}}
-**Note**: It can be tricky to determine the correct source file to be changed. In the
+It can be tricky to determine the correct source file to be changed. In the
preceding example, the authoritative source file is under the `staging` directory
in the `kubernetes/kubernetes` repository. But in your situation,the `staging` directory
might not be the place to find the authoritative source. For guidance, check the
@@ -208,9 +208,11 @@ commit into the release-1.9 branch. The idea is to cherry pick the commit that e
the commit that has the results of running the scripts. For instructions, see
[Propose a Cherry Pick](https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md).
-**Note:** Proposing a cherry pick requires that you have permission to set a label and a milestone in your
+{{< note >}}
+Proposing a cherry pick requires that you have permission to set a label and a milestone in your
pull request. If you don't have those permissions, you will need to work with someone who can set the label
and milestone for you.
+{{< /note >}}
When you have a pull request in place for cherry picking your one commit into the release-1.9 branch,
the next step is to run these scripts in the release-1.9 branch of your local environment.
diff --git a/content/en/docs/contribute/generate-ref-docs/kubernetes-components.md b/content/en/docs/contribute/generate-ref-docs/kubernetes-components.md
index b4f03c1e33..0ec38e8de6 100644
--- a/content/en/docs/contribute/generate-ref-docs/kubernetes-components.md
+++ b/content/en/docs/contribute/generate-ref-docs/kubernetes-components.md
@@ -71,7 +71,6 @@ your base directory is `$GOPATH/src/github.com/kubernetes/kubernetes.`
The remaining steps refer to your base directory as ``.
{{< note >}}
-**Note:**
If you only need to generate, but not change, the reference docs, you don't need to
manually get the `kubernetes/kubernetes` repository. When you run the `update-imported-docs`
tool, it automatically clones the `kubernetes/kubernetes` repository.
@@ -109,7 +108,7 @@ to do this, see
Monitor your cherry-pick pull request until it is merged into the release branch.
{{< note >}}
-**Note:** Proposing a cherry pick requires that you have permission to set a label
+Proposing a cherry pick requires that you have permission to set a label
and a milestone in your pull request. If you don鈥檛 have those permissions, you will
need to work with someone who can set the label and milestone for you.
{{< /note >}}
diff --git a/content/en/docs/contribute/intermediate.md b/content/en/docs/contribute/intermediate.md
index 3fed21a05b..52a9f10af3 100644
--- a/content/en/docs/contribute/intermediate.md
+++ b/content/en/docs/contribute/intermediate.md
@@ -12,8 +12,7 @@ This page assumes that you've read and mastered the tasks in the
learn about more ways to contribute.
{{< note >}}
-**Note:** Some tasks require you to use the Git command line client and other
-tools.
+Some tasks require you to use the Git command line client and other tools.
{{< /note >}}
{{% /capture %}}
@@ -387,11 +386,11 @@ most up-to-date version of that branch.
```
{{< note >}}
-**Note:** Do not reference a Github issue or pull request by ID or URL in the
-commit message. If you do, it will cause that issue or pull request to get
-a notification every time the commit shows up in a new Git branch. You can
-link issues and pull requests together later, in the Github UI.
-{{< /note >}}
+ Do not reference a Github issue or pull request by ID or URL in the
+ commit message. If you do, it will cause that issue or pull request to get
+ a notification every time the commit shows up in a new Git branch. You can
+ link issues and pull requests together later, in the Github UI.
+ {{< /note >}}
5. Optionally, you can test your change by staging the site locally using the
`hugo` command. See [View your changes locally](#view-your-changes-locally).
diff --git a/content/en/docs/contribute/localization.md b/content/en/docs/contribute/localization.md
index 7120607d2e..a586bc5410 100644
--- a/content/en/docs/contribute/localization.md
+++ b/content/en/docs/contribute/localization.md
@@ -29,6 +29,10 @@ Localizations must meet some requirements for workflow (*how* to localize) and o
To add a new localization of the Kubernetes documentation, you'll need to update the website by modifying the [site configuration](#modify-the-site-configuration) and [directory structure](#add-a-new-localization-directory). Then you can start [translating documents](#translating-documents)!
+{{< note >}}
+For an example localization-related [pull request](../create-pull-request), see [this pull request](https://github.com/kubernetes/website/pull/8636) to the [Kubernetes website repo](https://github.com/kubernetes/website) adding Korean localization to the Kubernetes docs.
+{{< /note >}}
+
Let Kubernetes SIG Docs know you're interested in creating a localization! Join the [SIG Docs Slack channel](https://kubernetes.slack.com/messages/C1J0BPD2M/). We're happy to help you get started and answer any questions you have.
All localization teams must be self-sustaining with their own resources. We're happy to host your work, but we can't translate it for you.
diff --git a/content/en/docs/contribute/start.md b/content/en/docs/contribute/start.md
index 2ebf585efa..5d205db0d2 100644
--- a/content/en/docs/contribute/start.md
+++ b/content/en/docs/contribute/start.md
@@ -213,7 +213,7 @@ documentation.
include more detail if appropriate.
{{< note >}}
-**Note**: Do not include references to other Github issues or pull
+Do not include references to other Github issues or pull
requests in your commit message. You can add those to the pull request
description later.
{{< /note >}}
@@ -231,7 +231,7 @@ description later.
**Create pull request**.
{{< note >}}
-**Note**: If you don't want to create the pull request now, you can do it
+If you don't want to create the pull request now, you can do it
later, by browsing to the main URL of the Kubernetes website repository or
your fork's repository. The Github website will prompt you to create the
pull request if it detects that you pushed a new branch to your fork.
diff --git a/content/en/docs/contribute/style/content-organization.md b/content/en/docs/contribute/style/content-organization.md
index 61ee7d9a3b..a89e686ac9 100644
--- a/content/en/docs/contribute/style/content-organization.md
+++ b/content/en/docs/contribute/style/content-organization.md
@@ -32,7 +32,7 @@ weight: 10
{{% note %}}
-**Note:** For page weights, it can be smart not to use 1, 2, 3 ..., but some other interval, say 10, 20, 30... This allows you to insert pages where you want later.
+For page weights, it can be smart not to use 1, 2, 3 ..., but some other interval, say 10, 20, 30... This allows you to insert pages where you want later.
{{% /note %}}
@@ -56,7 +56,7 @@ linkTitle: Title used in links
{{% note %}}
-**Note:** The above needs to be done per language. If you don't see your section in the menu, it is probably because it is not identified as a section by Hugo. Create a `_index.md` content file in the section folder.
+The above needs to be done per language. If you don't see your section in the menu, it is probably because it is not identified as a section by Hugo. Create a `_index.md` content file in the section folder.
{{% /note %}}
### Documentation Side Menu
diff --git a/content/en/docs/contribute/style/hugo-shortcodes/example1.md b/content/en/docs/contribute/style/hugo-shortcodes/example1.md
index 9ee1a0b313..fbe21a1457 100644
--- a/content/en/docs/contribute/style/hugo-shortcodes/example1.md
+++ b/content/en/docs/contribute/style/hugo-shortcodes/example1.md
@@ -5,5 +5,5 @@ title: Example #1
This is an **example** content file inside the **includes** leaf bundle.
{{< note >}}
-**Note:** Included content files can also contain shortcodes.
+Included content files can also contain shortcodes.
{{< /note >}}
\ No newline at end of file
diff --git a/content/en/docs/contribute/style/hugo-shortcodes/index.md b/content/en/docs/contribute/style/hugo-shortcodes/index.md
index 8d826a4c69..9d5dc7a30e 100644
--- a/content/en/docs/contribute/style/hugo-shortcodes/index.md
+++ b/content/en/docs/contribute/style/hugo-shortcodes/index.md
@@ -154,7 +154,9 @@ println "This is tab 2."
{{* tabs name="tab_with_md" >}}
{{% tab name="Markdown" %}}
This is **some markdown.**
-{{< note >}}**Note:** It can even contain shortcodes.{{< /note >}}
+{{< note >}}
+It can even contain shortcodes.
+{{< /note >}}
{{% /tab %}}
{{< tab name="HTML" >}}
@@ -170,7 +172,11 @@ Will be rendered as:
{{< tabs name="tab_with_md" >}}
{{% tab name="Markdown" %}}
This is **some markdown.**
-{{< note >}}**Note:** It can even contain shortcodes.{{< /note >}}
+
+{{< note >}}
+It can even contain shortcodes.
+{{< /note >}}
+
{{% /tab %}}
{{< tab name="HTML" >}}
diff --git a/content/en/docs/contribute/style/page-templates.md b/content/en/docs/contribute/style/page-templates.md
index 147e8f5ec7..e8563eae52 100644
--- a/content/en/docs/contribute/style/page-templates.md
+++ b/content/en/docs/contribute/style/page-templates.md
@@ -15,7 +15,7 @@ directory of the [`kubernetes/website`](https://github.com/kubernetes/website)
repository.
{{< note >}}
-**Note**: Every new topic needs to use a template. If you are unsure which
+Every new topic needs to use a template. If you are unsure which
template to use for a new topic, start with the
[concept template](#concept-template).
{{< /note >}}
diff --git a/content/en/docs/contribute/style/style-guide.md b/content/en/docs/contribute/style/style-guide.md
index 516b57a208..8cd5e14337 100644
--- a/content/en/docs/contribute/style/style-guide.md
+++ b/content/en/docs/contribute/style/style-guide.md
@@ -19,7 +19,7 @@ docs, follow the instructions on
{{% capture body %}}
{{< note >}}
-**Note:** Kubernetes documentation uses [Blackfriday Markdown Renderer](https://github.com/russross/blackfriday) along with a few [Hugo Shortcodes](/docs/home/contribute/includes/) to support glossary entries, tabs,
+Kubernetes documentation uses [Blackfriday Markdown Renderer](https://github.com/russross/blackfriday) along with a few [Hugo Shortcodes](/docs/home/contribute/includes/) to support glossary entries, tabs,
and representing feature state.
{{< /note >}}
@@ -189,7 +189,8 @@ A list of Kubernetes-specific terms and words to be used consistently across the
## Shortcodes
-Hugo [Shortcodes](https://gohugo.io/content-management/shortcodes) help create different rhetorical appeal levels. Our documentation supports three different shortcodes in this category: **Note:** {{* note */>}}, **Caution:** {{* caution */>}}, and **Warning:** {{* warning */>}}.
+
+Hugo [Shortcodes](https://gohugo.io/content-management/shortcodes) help create different rhetorical appeal levels. Our documentation supports three different shortcodes in this category: **Note** {{* note */>}}, **Caution** {{* caution */>}}, and **Warning** {{* warning */>}}.
1. Surround the text with an opening and closing shortcode.
@@ -197,7 +198,7 @@ Hugo [Shortcodes](https://gohugo.io/content-management/shortcodes) help create d
```
{{* note */>}}
- **Note:** The prefix you use is the same text you use in the tag.
+ No need to include a prefix; the shortcode automatically provides on (Note:, Caution:, etc.).
{{* /note */>}}
```
@@ -205,7 +206,7 @@ Hugo [Shortcodes](https://gohugo.io/content-management/shortcodes) help create d
The output is:
{{< note >}}
-**Note:** The prefix you choose is the same text for the tag.
+The prefix you choose is the same text for the tag.
{{< /note >}}
### Note
@@ -216,14 +217,14 @@ For example:
```
{{* note */>}}
-**Note:** You can _still_ use Markdown inside these callouts.
+You can _still_ use Markdown inside these callouts.
{{* /note */>}}
```
The output is:
{{< note >}}
-**Note:** You can _still_ use Markdown inside these callouts.
+You can _still_ use Markdown inside these callouts.
{{< /note >}}
### Caution
@@ -234,14 +235,14 @@ For example:
```
{{* caution */>}}
-**Caution:** The callout style only applies to the line directly above the tag.
+The callout style only applies to the line directly above the tag.
{{* /caution */>}}
```
The output is:
{{< caution >}}
-**Caution:** The callout style only applies to the line directly above the tag.
+The callout style only applies to the line directly above the tag.
{{< /caution >}}
### Warning
@@ -252,7 +253,7 @@ For example:
```
{{* warning */>}}
-**Warning:** Beware.
+Beware.
{{* /warning */>}}
```
@@ -260,7 +261,7 @@ For example:
The output is:
{{< warning >}}
-**Warning:** Beware.
+Beware.
{{< /warning >}}
### Katacoda Embedded Live Environment
@@ -273,7 +274,7 @@ The Embedded Live Environment is configured to run `minikube start` and lets use
as the documentation.
{{< caution >}}
-**Caution:** The session is limited to 15 minutes.
+The session is limited to 15 minutes.
{{< /caution >}}
For example:
@@ -306,7 +307,8 @@ The output is:
1. Preheat oven to 350藲F
1. Prepare the batter, and pour into springform pan.
- {{< note >}}**Note:** Grease the pan for best results.{{< /note >}}
+
+ {{< note >}}Grease the pan for best results.{{< /note >}}
1. Bake for 20-25 minutes or until set.
diff --git a/content/en/docs/contribute/style/write-new-topic.md b/content/en/docs/contribute/style/write-new-topic.md
index 5980b0d24e..4c92eb25f3 100644
--- a/content/en/docs/contribute/style/write-new-topic.md
+++ b/content/en/docs/contribute/style/write-new-topic.md
@@ -137,7 +137,7 @@ file located at `/content/en/examples/pods/storage/gce-volume.yaml`.
```
{{< note >}}
-**Note**: To show raw Hugo shortcodes as in the above example and prevent Hugo
+To show raw Hugo shortcodes as in the above example and prevent Hugo
from interpreting them, use C-style comments directly after the `<` and before
the `>` characters. View the code for this page for an example.
{{< /note >}}
@@ -155,7 +155,7 @@ kubectl create -f https://k8s.io/examples/pods/storage/gce-volume.yaml
```
{{< note >}}
-**Note**: When adding new YAML files to the `
/examples` directory, make
+When adding new YAML files to the `/examples` directory, make
sure the file is also included into the `/examples_test.go` file. The
Travis CI for the Website automatically runs this test case when PRs are
submitted to ensure all examples pass the tests.
diff --git a/content/en/docs/doc-contributor-tools/snippets/atom-snippets.cson b/content/en/docs/doc-contributor-tools/snippets/atom-snippets.cson
index 0f7b78f030..5d4573938b 100644
--- a/content/en/docs/doc-contributor-tools/snippets/atom-snippets.cson
+++ b/content/en/docs/doc-contributor-tools/snippets/atom-snippets.cson
@@ -90,7 +90,7 @@
'prefix': 'anote'
'body': """
{{< note >}}
- **Note**: $1
+ $1
{{< /note >}}
"""
@@ -99,14 +99,14 @@
'prefix': 'acaution'
'body': """
{{< caution >}}
- **Caution**: $1
+ $1
{{< /caution >}}
"""
'Insert warning':
'prefix': 'awarning'
'body': """
{{< warning >}}
- **Warning**: $1
+ $1
{{< /warning >}}
"""
diff --git a/content/en/docs/getting-started-guides/fedora/flannel_multi_node_cluster.md b/content/en/docs/getting-started-guides/fedora/flannel_multi_node_cluster.md
index 12a032bbbc..88ef0615fd 100644
--- a/content/en/docs/getting-started-guides/fedora/flannel_multi_node_cluster.md
+++ b/content/en/docs/getting-started-guides/fedora/flannel_multi_node_cluster.md
@@ -31,7 +31,9 @@ You need 2 or more machines with Fedora installed.
}
```
-**NOTE:** Choose an IP range that is *NOT* part of the public IP address range.
+{{< note >}}
+Choose an IP range that is *NOT* part of the public IP address range.
+{{< /note >}}
Add the configuration to the etcd server on fed-master.
@@ -71,7 +73,9 @@ FLANNEL_ETCD_KEY="/coreos.com/network"
FLANNEL_OPTIONS=""
```
-**Note:** By default, flannel uses the interface for the default route. If you have multiple interfaces and would like to use an interface other than the default route one, you could add "-iface=" to FLANNEL_OPTIONS. For additional options, run `flanneld --help` on command line.
+{{< note >}}
+By default, flannel uses the interface for the default route. If you have multiple interfaces and would like to use an interface other than the default route one, you could add "-iface=" to FLANNEL_OPTIONS. For additional options, run `flanneld --help` on command line.
+{{< /note >}}
Enable the flannel service.
diff --git a/content/en/docs/getting-started-guides/ubuntu/backups.md b/content/en/docs/getting-started-guides/ubuntu/backups.md
index 226072ceb3..164949d24b 100644
--- a/content/en/docs/getting-started-guides/ubuntu/backups.md
+++ b/content/en/docs/getting-started-guides/ubuntu/backups.md
@@ -117,6 +117,7 @@ juju run-action new-etcd/0 restore
{{% /capture %}}
{{% capture discussion %}}
+
## Known Limitations
#### Loss of PKI warning
@@ -126,10 +127,9 @@ all TLS pki will be lost. No PKI migration occurs outside
of the units requesting and registering the certificates.
{{< caution >}}
-**Caution:** Mismanaging this configuration will result in locking yourself
-out of the cluster, and can potentially break existing deployments in very
-strange ways relating to x509 validation of certificates, which affects both
-servers and clients.
+Mismanaging this configuration will result in locking yourself out of the cluster,
+and can potentially break existing deployments in very strange ways relating to x509
+validation of certificates, which affects both servers and clients.
{{< /caution >}}
#### Restoring from snapshot on a scaled cluster
diff --git a/content/en/docs/getting-started-guides/ubuntu/decommissioning.md b/content/en/docs/getting-started-guides/ubuntu/decommissioning.md
index 6eaa3c3391..04f5210251 100644
--- a/content/en/docs/getting-started-guides/ubuntu/decommissioning.md
+++ b/content/en/docs/getting-started-guides/ubuntu/decommissioning.md
@@ -12,7 +12,7 @@ This page shows you how to properly decommission a cluster.
This page assumes you have a working Juju deployed cluster.
{{< warning >}}
-**Warning:** By the time you've reached this step you should have backed up your workloads and pertinent data; this section is for the complete destruction of a cluster.
+By the time you've reached this step you should have backed up your workloads and pertinent data; this section is for the complete destruction of a cluster.
{{< /warning >}}
{{% /capture %}}
diff --git a/content/en/docs/getting-started-guides/ubuntu/networking.md b/content/en/docs/getting-started-guides/ubuntu/networking.md
index 843dd5f6e9..e3afca9e87 100644
--- a/content/en/docs/getting-started-guides/ubuntu/networking.md
+++ b/content/en/docs/getting-started-guides/ubuntu/networking.md
@@ -14,7 +14,7 @@ This page shows how the various network portions of a cluster work and how to co
This page assumes you have a working Juju deployed cluster.
{{< note >}}
-**Note:** Note that if you deploy a cluster via conjure-up or the CDK bundles, manually deploying CNI plugins is unnecessary.
+Note that if you deploy a cluster via conjure-up or the CDK bundles, manually deploying CNI plugins is unnecessary.
{{< /note >}}
{{% /capture %}}
diff --git a/content/en/docs/getting-started-guides/ubuntu/storage.md b/content/en/docs/getting-started-guides/ubuntu/storage.md
index 008df52219..8a93e53a45 100644
--- a/content/en/docs/getting-started-guides/ubuntu/storage.md
+++ b/content/en/docs/getting-started-guides/ubuntu/storage.md
@@ -43,8 +43,11 @@ loop loop
rootfs rootfs
tmpfs tmpfs
```
-> **Note**: This listing is for the Amazon Web Services public cloud.
-> Different clouds may have different pool names.
+
+{{< note >}}
+This listing is for the Amazon Web Services public cloud. Different clouds may have
+different pool names.
+{{< /note >}}
Add a storage pool to the ceph-osd charm by NAME,SIZE,COUNT:
diff --git a/content/en/docs/getting-started-guides/ubuntu/upgrades.md b/content/en/docs/getting-started-guides/ubuntu/upgrades.md
index 0af5398ba2..b34108c2c0 100644
--- a/content/en/docs/getting-started-guides/ubuntu/upgrades.md
+++ b/content/en/docs/getting-started-guides/ubuntu/upgrades.md
@@ -11,7 +11,7 @@ This page will outline how to manage and execute a Kubernetes upgrade.
This page assumes you have a working deployed cluster.
{{< warning >}}
-**Warning:** You should always back up all your data before attempting an upgrade.
+You should always back up all your data before attempting an upgrade.
Don't forget to include the workload inside your cluster!
Refer to the [backup documentation](/docs/getting-started-guides/ubuntu/backups).
{{< /warning >}}
@@ -83,7 +83,7 @@ First you need to upgrade the masters:
juju upgrade-charm kubernetes-master
{{< note >}}
-**Note:** Always upgrade the masters before the workers.
+Always upgrade the masters before the workers.
{{< /note >}}
Once the latest charm is deployed, the channel for Kubernetes can be selected by issuing the following:
diff --git a/content/en/docs/getting-started-guides/ubuntu/validation.md b/content/en/docs/getting-started-guides/ubuntu/validation.md
index 611eed8222..c61c1ec4be 100644
--- a/content/en/docs/getting-started-guides/ubuntu/validation.md
+++ b/content/en/docs/getting-started-guides/ubuntu/validation.md
@@ -90,7 +90,7 @@ a deployed cluster. The following example will skip the `Flaky`, `Slow`, and
juju run-action kubernetes-e2e/0 test skip='\[(Flaky|Slow|Feature:.*)\]'
{{< note >}}
-**Note:** The escaping of the regex due to how bash handles brackets.
+The escaping of the regex due to how bash handles brackets.
{{< /note >}}
To see the different types of tests the Kubernetes end-to-end charm has access
@@ -112,7 +112,7 @@ command, as well as a flat file on disk on the `kubernetes-e2e` unit that
executed the test.
{{< note >}}
-**Note:** The results will only be available once the action has
+The results will only be available once the action has
completed the test run. End-to-end testing can be quite time consuming, often
taking more than 1 hour, depending on configuration.
{{< /note >}}
diff --git a/content/en/docs/getting-started-guides/windows/_index.md b/content/en/docs/getting-started-guides/windows/_index.md
index 5efb00af98..022e86fda3 100644
--- a/content/en/docs/getting-started-guides/windows/_index.md
+++ b/content/en/docs/getting-started-guides/windows/_index.md
@@ -3,7 +3,7 @@ title: Using Windows Server Containers in Kubernetes
toc_hide: true
---
{{< note >}}
-**Note:** These instructions were recently updated based on Windows Server platform enhancements and the Kubernetes v1.9 release
+These instructions were recently updated based on Windows Server platform enhancements and the Kubernetes v1.9 release
{{< /note >}}
Kubernetes version 1.5 introduced Alpha support for Windows Server
@@ -23,7 +23,7 @@ Containers on Kubernetes include:
The Kubernetes control plane (API Server, Scheduler, Controller Manager, etc) continue to run on Linux, while the kubelet and kube-proxy can be run on Windows Server 2016 or later
{{< note >}}
-**Note:** Windows Server Containers on Kubernetes is a Beta feature in Kubernetes v1.9
+Windows Server Containers on Kubernetes is a Beta feature in Kubernetes v1.9
{{< /note >}}
## Get Windows Binaries
@@ -159,7 +159,7 @@ Note: this file assumes that a user previous created 'l2bridge' host networks on
#### For 3. Open vSwitch (OVS) & Open Virtual Network (OVN) with Overlay
{{< note >}}
-**Note:** Fully automated setup via Ansible playbooks is [available](https://github.com/openvswitch/ovn-kubernetes/tree/master/contrib).
+Fully automated setup via Ansible playbooks is [available](https://github.com/openvswitch/ovn-kubernetes/tree/master/contrib).
{{< /note >}}
For manual setup, continue the following steps.
@@ -264,7 +264,7 @@ Because your cluster has both Linux and Windows nodes, you must explicitly set t
{{< codenew file="windows/simple-pod.yaml" >}}
{{< note >}}
-**Note:** This example assumes you are running on Windows Server 1709, so uses the image tag to support that. If you are on a different version, you will need to update the tag. For example, if on Windows Server 2016, update to use `"image": "microsoft/iis"` which will default to that OS version.
+This example assumes you are running on Windows Server 1709, so uses the image tag to support that. If you are on a different version, you will need to update the tag. For example, if on Windows Server 2016, update to use `"image": "microsoft/iis"` which will default to that OS version.
{{< /note >}}
### Secrets and ConfigMaps
diff --git a/content/en/docs/reference/access-authn-authz/abac.md b/content/en/docs/reference/access-authn-authz/abac.md
index 67ab051408..9174027776 100644
--- a/content/en/docs/reference/access-authn-authz/abac.md
+++ b/content/en/docs/reference/access-authn-authz/abac.md
@@ -49,12 +49,14 @@ properties:
- `/foo/*` matches all subpaths of `/foo/`.
- `readonly`, type boolean, when true, means that the Resource-matching policy only applies to get, list, and watch operations, Non-resource-matching policy only applies to get operation.
-**NOTES:** An unset property is the same as a property set to the zero value for its type
+{{< note >}}
+An unset property is the same as a property set to the zero value for its type
(e.g. empty string, 0, false). However, unset should be preferred for
readability.
In the future, policies may be expressed in a JSON format, and managed via a
REST interface.
+{{< /note >}}
## Authorization Algorithm
diff --git a/content/en/docs/reference/access-authn-authz/admission-controllers.md b/content/en/docs/reference/access-authn-authz/admission-controllers.md
index 9eee5a89e8..95a29497eb 100644
--- a/content/en/docs/reference/access-authn-authz/admission-controllers.md
+++ b/content/en/docs/reference/access-authn-authz/admission-controllers.md
@@ -66,11 +66,11 @@ kube-apiserver --enable-admission-plugins=NamespaceLifecycle,LimitRanger ...
```
{{< note >}}
-**Note**: Depending on the way your Kubernetes cluster is deployed and how the
-API server is started, you may need to apply the settings in different ways.
-For example, you may have to modify the systemd unit file if the API server is
-deployed as a systemd service, you may modify the manifest file for the API
-server if Kubernetes is deployed in a self-hosted way.
+Depending on the way your Kubernetes cluster is deployed and how the API server is
+started, you may need to apply the settings in different ways. For example, you may
+have to modify the systemd unit file if the API server is deployed as a systemd
+service, you may modify the manifest file for the API server if Kubernetes is deployed
+in a self-hosted way.
{{< /note >}}
## How do I turn off an admission controller?
@@ -489,7 +489,7 @@ plugin configuration file as the node selector.
Conflicts result in rejection.
{{< note >}}
-**Note:** PodNodeSelector allows forcing pods to run on specifically labeled nodes. Also see the PodTolerationRestriction
+PodNodeSelector allows forcing pods to run on specifically labeled nodes. Also see the PodTolerationRestriction
admission plugin, which allows preventing pods from running on specifically tainted nodes.
{{< /note >}}
@@ -498,7 +498,7 @@ admission plugin, which allows preventing pods from running on specifically tain
This admission controller implements additional validations for checking incoming `PersistentVolumeClaim` resize requests.
{{< note >}}
-**Note:** Support for volume resizing is available as an alpha feature. Admins must set the feature gate `ExpandPersistentVolumes`
+Support for volume resizing is available as an alpha feature. Admins must set the feature gate `ExpandPersistentVolumes`
to `true` to enable resizing.
{{< /note >}}
@@ -610,7 +610,7 @@ Yes.
For Kubernetes version 1.10 and later, we recommend running the following set of admission controllers using the `--enable-admission-plugins` flag (**order doesn't matter**).
{{< note >}}
-**Note:** `--admission-control` was deprecated in 1.10 and replaced with `--enable-admission-plugins`.
+`--admission-control` was deprecated in 1.10 and replaced with `--enable-admission-plugins`.
{{< /note >}}
```shell
diff --git a/content/en/docs/reference/access-authn-authz/authentication.md b/content/en/docs/reference/access-authn-authz/authentication.md
index 9159b7c68d..26174c0bb4 100644
--- a/content/en/docs/reference/access-authn-authz/authentication.md
+++ b/content/en/docs/reference/access-authn-authz/authentication.md
@@ -97,7 +97,7 @@ The token file is a csv file with a minimum of 3 columns: token, user name, user
followed by optional group names.
{{< note >}}
-**Note:** If you have more than one group the column must be double quoted e.g.
+If you have more than one group the column must be double quoted e.g.
```conf
token,user,uid,"group1,group2,group3"
@@ -190,7 +190,7 @@ talk to the API server. Accounts may be explicitly associated with pods using th
`serviceAccountName` field of a `PodSpec`.
{{< note >}}
-**Note:** `serviceAccountName` is usually omitted because this is done automatically.
+`serviceAccountName` is usually omitted because this is done automatically.
{{< /note >}}
```yaml
@@ -246,7 +246,7 @@ type: kubernetes.io/service-account-token
```
{{< note >}}
-**Note:** Values are base64 encoded because secrets are always base64 encoded.
+Values are base64 encoded because secrets are always base64 encoded.
{{< /note >}}
The signed JWT can be used as a bearer token to authenticate as the given service
@@ -510,8 +510,9 @@ It is designed for use in combination with an authenticating proxy, which sets t
* `--requestheader-username-headers` Required, case-insensitive. Header names to check, in order, for the user identity. The first header containing a value is used as the username.
* `--requestheader-group-headers` 1.6+. Optional, case-insensitive. "X-Remote-Group" is suggested. Header names to check, in order, for the user's groups. All values in all specified headers are used as group names.
* `--requestheader-extra-headers-prefix` 1.6+. Optional, case-insensitive. "X-Remote-Extra-" is suggested. Header prefixes to look for to determine extra information about the user (typically used by the configured authorization plugin). Any headers beginning with any of the specified prefixes have the prefix removed. The remainder of the header name is lowercased and [percent-decoded](https://tools.ietf.org/html/rfc3986#section-2.1) and becomes the extra key, and the header value is the extra value.
+
{{< note >}}
-**Note:** Prior to 1.11.3 (and 1.10.7, 1.9.11), the extra key could only contain characters which were [legal in HTTP header labels](https://tools.ietf.org/html/rfc7230#section-3.2.6).
+Prior to 1.11.3 (and 1.10.7, 1.9.11), the extra key could only contain characters which were [legal in HTTP header labels](https://tools.ietf.org/html/rfc7230#section-3.2.6).
{{< /note >}}
For example, with this configuration:
@@ -601,7 +602,7 @@ The following HTTP headers can be used to performing an impersonation request:
* `Impersonate-Extra-( extra name )`: A dynamic header used to associate extra fields with the user. Optional. Requires "Impersonate-User". In order to be preserved consistently, `( extra name )` should be lower-case, and any characters which aren't [legal in HTTP header labels](https://tools.ietf.org/html/rfc7230#section-3.2.6) MUST be utf8 and [percent-encoded](https://tools.ietf.org/html/rfc3986#section-2.1).
{{< note >}}
-**Note:** Prior to 1.11.3 (and 1.10.7, 1.9.11), `( extra name )` could only contain characters which were [legal in HTTP header labels](https://tools.ietf.org/html/rfc7230#section-3.2.6).
+Prior to 1.11.3 (and 1.10.7, 1.9.11), `( extra name )` could only contain characters which were [legal in HTTP header labels](https://tools.ietf.org/html/rfc7230#section-3.2.6).
{{< /note >}}
An example set of headers:
diff --git a/content/en/docs/reference/access-authn-authz/authorization.md b/content/en/docs/reference/access-authn-authz/authorization.md
index 09212d0a63..366fbefe21 100644
--- a/content/en/docs/reference/access-authn-authz/authorization.md
+++ b/content/en/docs/reference/access-authn-authz/authorization.md
@@ -168,12 +168,11 @@ secrets the user cannot themselves read, or that run under a service account
with different/greater permissions.
{{< caution >}}
-**Caution:** System administrators, use care when granting access to pod
-creation. A user granted permission to create pods (or controllers that create
-pods) in the namespace can: read all secrets in the namespace; read all config
-maps in the namespace; and impersonate any service account in the namespace and
-take any action the account could take. This applies regardless of authorization
-mode.
+System administrators, use care when granting access to pod creation. A user
+granted permission to create pods (or controllers that create pods) in the
+namespace can: read all secrets in the namespace; read all config maps in the
+namespace; and impersonate any service account in the namespace and take any
+action the account could take. This applies regardless of authorization mode.
{{< /caution >}}
{{% /capture %}}
diff --git a/content/en/docs/reference/access-authn-authz/bootstrap-tokens.md b/content/en/docs/reference/access-authn-authz/bootstrap-tokens.md
index 736461481d..a4b0e5073d 100644
--- a/content/en/docs/reference/access-authn-authz/bootstrap-tokens.md
+++ b/content/en/docs/reference/access-authn-authz/bootstrap-tokens.md
@@ -179,7 +179,7 @@ verify the JWS using the `HS256` scheme (HMAC-SHA256) with the full token (e.g.
is used.
{{< warning >}}
-**Warning:** Any party with a bootstrapping token can create a valid signature for that
+Any party with a bootstrapping token can create a valid signature for that
token. When using ConfigMap signing it's discouraged to share the same token with
many clients, since a compromised client can potentially man-in-the middle another
client relying on the signature to bootstrap TLS trust.
diff --git a/content/en/docs/reference/access-authn-authz/extensible-admission-controllers.md b/content/en/docs/reference/access-authn-authz/extensible-admission-controllers.md
index 518e57ef89..4d6fde6a00 100644
--- a/content/en/docs/reference/access-authn-authz/extensible-admission-controllers.md
+++ b/content/en/docs/reference/access-authn-authz/extensible-admission-controllers.md
@@ -120,7 +120,7 @@ webhooks:
```
{{< note >}}
-**Note:** When using `clientConfig.service`, the server cert must be valid for
+When using `clientConfig.service`, the server cert must be valid for
`..svc`.
{{< /note >}}
@@ -132,7 +132,7 @@ After you create the webhook configuration, the system will take a few seconds
to honor the new configuration.
{{< note >}}
-**Note:** When the webhook plugin is deployed into the Kubernetes cluster as a
+When the webhook plugin is deployed into the Kubernetes cluster as a
service, it has to expose its service on the 443 port. The communication
between the API server and the webhook service may fail if a different port
is used.
@@ -228,7 +228,7 @@ admission controller), or to inject defaults (e.g., the
admission controller), etc.
{{< note >}}
-**Note:** If your use case does not involve mutating objects, consider using
+If your use case does not involve mutating objects, consider using
external admission webhooks, as they have better performance.
{{< /note >}}
diff --git a/content/en/docs/reference/access-authn-authz/rbac.md b/content/en/docs/reference/access-authn-authz/rbac.md
index ca674e9343..719164c5ec 100644
--- a/content/en/docs/reference/access-authn-authz/rbac.md
+++ b/content/en/docs/reference/access-authn-authz/rbac.md
@@ -807,7 +807,7 @@ In order from most secure to least secure, the approaches are:
If an application does not specify a `serviceAccountName`, it uses the "default" service account.
- {{< note >}}**Note:** Permissions given to the "default" service
+ {{< note >}}Permissions given to the "default" service
account are available to any pod in the namespace that does not
specify a `serviceAccountName`.{{< /note >}}
@@ -823,7 +823,7 @@ In order from most secure to least secure, the approaches are:
Many [add-ons](/docs/concepts/cluster-administration/addons/) currently run as the "default" service account in the `kube-system` namespace.
To allow those add-ons to run with super-user access, grant cluster-admin permissions to the "default" service account in the `kube-system` namespace.
- {{< note >}}**Note:** Enabling this means the `kube-system`
+ {{< note >}}Enabling this means the `kube-system`
namespace contains secrets that grant super-user access to the
API.{{< /note >}}
@@ -863,9 +863,11 @@ In order from most secure to least secure, the approaches are:
If you don't care about partitioning permissions at all, you can grant super-user access to all service accounts.
- {{< warning >}}**Warning:** This allows any user with read access
+ {{< warning >}}
+ This allows any user with read access
to secrets or the ability to create a pod to access super-user
- credentials.{{< /warning >}}
+ credentials.
+ {{< /warning >}}
```shell
kubectl create clusterrolebinding serviceaccounts-cluster-admin \
@@ -909,7 +911,7 @@ in the server logs, you can remove the ABAC authorizer.
You can replicate a permissive policy using RBAC role bindings.
{{< warning >}}
-**Warning:** The following policy allows **ALL** service accounts to act as cluster administrators.
+The following policy allows **ALL** service accounts to act as cluster administrators.
Any application running in a container receives service account credentials automatically,
and could perform any action against the API, including viewing secrets and modifying permissions.
This is not a recommended policy.
diff --git a/content/en/docs/reference/command-line-tools-reference/feature-gates.md b/content/en/docs/reference/command-line-tools-reference/feature-gates.md
index e001488653..99ac76530e 100644
--- a/content/en/docs/reference/command-line-tools-reference/feature-gates.md
+++ b/content/en/docs/reference/command-line-tools-reference/feature-gates.md
@@ -147,7 +147,7 @@ A *Beta* feature means:
that can be upgraded independently, you may be able to relax this restriction.
{{< note >}}
-**Note:** Please do try *Beta* features and give feedback on them!
+Please do try *Beta* features and give feedback on them!
After they exit beta, it may not be practical for us to make more changes.
{{< /note >}}
diff --git a/content/en/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping.md b/content/en/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping.md
index 192cf963d2..551726cf10 100644
--- a/content/en/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping.md
+++ b/content/en/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping.md
@@ -221,7 +221,7 @@ specified by `--kubeconfig`. The certificate and key file will be placed in the
directory specified by `--cert-dir`.
{{< note >}}
-**Note:** The following flags are required to enable this bootstrapping when starting the kubelet:
+The following flags are required to enable this bootstrapping when starting the kubelet:
```
--bootstrap-kubeconfig="/path/to/bootstrap/kubeconfig"
@@ -251,7 +251,7 @@ certificate. To enable this feature pass the following flag to the kubelet:
```
{{< note >}}
-**Note:** The CSR approving controllers implemented in core Kubernetes do not
+The CSR approving controllers implemented in core Kubernetes do not
approve node serving certificates for [security
reasons](https://github.com/kubernetes/community/pull/1982). To use
`RotateKubeletServerCertificate` operators need to run a custom approving
diff --git a/content/en/docs/reference/glossary/cluster-operator.md b/content/en/docs/reference/glossary/cluster-operator.md
index f006ebe319..c897343830 100755
--- a/content/en/docs/reference/glossary/cluster-operator.md
+++ b/content/en/docs/reference/glossary/cluster-operator.md
@@ -16,5 +16,7 @@ tags:
Their primary responsibility is keeping a cluster up and running, which may involve periodic maintenance activities or upgrades.
-**NOTE:** Cluster operators are different from the [Operator pattern](https://coreos.com/operators) that extends the Kubernetes API.
+{{< note >}}
+Cluster operators are different from the [Operator pattern](https://coreos.com/operators) that extends the Kubernetes API.
+{{< /note >}}
diff --git a/content/en/docs/reference/kubectl/conventions.md b/content/en/docs/reference/kubectl/conventions.md
index 05ae60a048..47890bf6fc 100644
--- a/content/en/docs/reference/kubectl/conventions.md
+++ b/content/en/docs/reference/kubectl/conventions.md
@@ -50,12 +50,14 @@ If you do not specify a generator flag, other flags prompt you to use a specific
| Job | `--restart=OnFailure` | `--restart=OnFailure` | `--restart=OnFailure` OR `--restart=Never` | N/A |
| Cron Job | `--schedule=` | N/A | N/A | N/A |
-**Note:** These flags use a default generator only when you have not specified
-any flag. This means that when you combine `--generator` with other flags the generator that you specified later does not change. For example, in a cluster v1.4, if you initially specify
+{{< note >}}
+These flags use a default generator only when you have not specified any flag.
+This means that when you combine `--generator` with other flags the generator that you specified later does not change. For example, in a cluster v1.4, if you initially specify
`--restart=Always`, a Deployment is created; if you later specify `--restart=Always`
and `--generator=run/v1`, a Replication Controller is created.
This enables you to pin to a specific behavior with the generator,
even when the default generator is changed later.
+{{< /note >}}
The flags set the generator in the following order: first the schedule flag then restart policy and finally the generator.
diff --git a/content/en/docs/reference/kubectl/docker-cli-to-kubectl.md b/content/en/docs/reference/kubectl/docker-cli-to-kubectl.md
index 6373155102..25c91e374e 100644
--- a/content/en/docs/reference/kubectl/docker-cli-to-kubectl.md
+++ b/content/en/docs/reference/kubectl/docker-cli-to-kubectl.md
@@ -36,7 +36,7 @@ deployment "nginx-app" created
```
{{< note >}}
-**Note:** `kubectl` commands print the type and name of the resource created or mutated, which can then be used in subsequent commands. You can expose a new Service after a Deployment is created.
+`kubectl` commands print the type and name of the resource created or mutated, which can then be used in subsequent commands. You can expose a new Service after a Deployment is created.
{{< /note >}}
```shell
@@ -222,7 +222,7 @@ $ kubectl get po -l run=nginx-app
```
{{< note >}}
-**Note:** When you use kubectl, you don't delete the pod directly.You have to first delete the Deployment that owns the pod. If you delete the pod directly, the Deployment recreates the pod.
+When you use kubectl, you don't delete the pod directly.You have to first delete the Deployment that owns the pod. If you delete the pod directly, the Deployment recreates the pod.
{{< /note >}}
## docker login
diff --git a/content/en/docs/reference/kubectl/overview.md b/content/en/docs/reference/kubectl/overview.md
index 76f208f40e..4d67d8f897 100644
--- a/content/en/docs/reference/kubectl/overview.md
+++ b/content/en/docs/reference/kubectl/overview.md
@@ -45,7 +45,10 @@ where `command`, `TYPE`, `NAME`, and `flags` are:
Example: `$ kubectl get pod -f ./pod.yaml`
* `flags`: Specifies optional flags. For example, you can use the `-s` or `--server` flags to specify the address and port of the Kubernetes API server.
-**Important**: Flags that you specify from the command line override default values and any corresponding environment variables.
+
+{{< caution >}}
+Flags that you specify from the command line override default values and any corresponding environment variables.
+{{< /caution >}}
If you need help, just run `kubectl help` from the terminal window.
@@ -299,7 +302,7 @@ $ kubectl describe pods --include-uninitialized=false
```
{{< note >}}
-**Note:** The `kubectl get` command is usually used for retrieving one or more
+The `kubectl get` command is usually used for retrieving one or more
resources of the same resource type. It features a rich set of flags that allows
you to customize the output format using the `-o` or `--output` flag, for example.
You can specify the `-w` or `--watch` flag to start watching updates to a particular
diff --git a/content/en/docs/reference/setup-tools/kubeadm/kubeadm-alpha.md b/content/en/docs/reference/setup-tools/kubeadm/kubeadm-alpha.md
index ba29459a2a..68c14d99d4 100644
--- a/content/en/docs/reference/setup-tools/kubeadm/kubeadm-alpha.md
+++ b/content/en/docs/reference/setup-tools/kubeadm/kubeadm-alpha.md
@@ -145,7 +145,7 @@ You can install all the available addons with the `all` subcommand, or
install them selectively.
{{< note >}}
-**Note:** If `kubeadm` is invoked with `--feature-gates=CoreDNS=false`, kube-dns is installed.
+If `kubeadm` is invoked with `--feature-gates=CoreDNS=false`, kube-dns is installed.
{{< /note >}}
{{< tabs name="tab-addon" >}}
@@ -158,7 +158,7 @@ install them selectively.
## kubeadm alpha phase self-hosting {#cmd-phase-self-hosting}
{{< caution >}}
-**Caution:** Self-hosting is an alpha feature. See [kubeadm init](/docs/reference/setup-tools/kubeadm/kubeadm-init/) documentation for self-hosting limitations.
+Self-hosting is an alpha feature. See [kubeadm init](/docs/reference/setup-tools/kubeadm/kubeadm-init/) documentation for self-hosting limitations.
{{< /caution >}}
{{< tabs name="tab-self-hosting" >}}
diff --git a/content/en/docs/reference/setup-tools/kubeadm/kubeadm-init.md b/content/en/docs/reference/setup-tools/kubeadm/kubeadm-init.md
index 69eba78cfb..ad95ac1e83 100644
--- a/content/en/docs/reference/setup-tools/kubeadm/kubeadm-init.md
+++ b/content/en/docs/reference/setup-tools/kubeadm/kubeadm-init.md
@@ -92,8 +92,7 @@ following steps:
### Using kubeadm init with a configuration file {#config-file}
{{< caution >}}
-**Caution:** The config file is
-still considered alpha and may change in future versions.
+The config file is still considered alpha and may change in future versions.
{{< /caution >}}
It's possible to configure `kubeadm init` with a configuration file instead of command
@@ -284,14 +283,10 @@ configured in the kubelet via static files.
To create a self-hosted cluster, pass the flag `--feature-gates=SelfHosting=true` to `kubeadm init`.
{{< caution >}}
-**Caution:** `SelfHosting` is an alpha feature. It is deprecated in 1.12
+`SelfHosting` is an alpha feature. It is deprecated in 1.12
and will be removed in 1.13.
{{< /caution >}}
-{{< warning >}}
-**Warning:** See self-hosted caveats and limitations.
-{{< /warning >}}
-
#### Caveats
Self-hosting in 1.8 has some important limitations. In particular, a
@@ -309,7 +304,7 @@ authorization configuration for your cluster, and may not be appropriate for
your environment.
{{< caution >}}
-**Caution:** `StoreCertsInSecrets` is an alpha feature. It is deprecated in 1.12
+`StoreCertsInSecrets` is an alpha feature. It is deprecated in 1.12
and will be removed in 1.13.
{{< /caution >}}
diff --git a/content/en/docs/reference/setup-tools/kubeadm/kubeadm-join.md b/content/en/docs/reference/setup-tools/kubeadm/kubeadm-join.md
index c0882d0b01..2fb074626b 100644
--- a/content/en/docs/reference/setup-tools/kubeadm/kubeadm-join.md
+++ b/content/en/docs/reference/setup-tools/kubeadm/kubeadm-join.md
@@ -204,8 +204,7 @@ These commands should be run after `kubeadm init` but before `kubeadm join`.
### Using kubeadm join with a configuration file {#config-file}
{{< caution >}}
-**Caution:** The config file is
-still considered alpha and may change in future versions.
+The config file is still considered alpha and may change in future versions.
{{< /caution >}}
It's possible to configure `kubeadm join` with a configuration file instead of command
diff --git a/content/en/docs/reference/using-api/api-overview.md b/content/en/docs/reference/using-api/api-overview.md
index 2d38030e3f..38baa5aa92 100644
--- a/content/en/docs/reference/using-api/api-overview.md
+++ b/content/en/docs/reference/using-api/api-overview.md
@@ -40,7 +40,7 @@ The version is set at the API level rather than at the resource or field level t
The JSON and Protobuf serialization schemas follow the same guidelines for schema changes. The following descriptions cover both formats.
{{< note >}}
-**Note:** The API versioning and software versioning are indirectly related. The [API and release
+The API versioning and software versioning are indirectly related. The [API and release
versioning proposal](https://git.k8s.io/community/contributors/design-proposals/release/versioning.md) describes the relationship between API versioning and software versioning.
{{< /note >}}
@@ -64,7 +64,7 @@ Here's a summary of each level:
- The software is recommended for only non-business-critical uses because of potential for incompatible changes in subsequent releases. If you have multiple clusters which can be upgraded independently, you may be able to relax this restriction.
{{< note >}}
-**Note:** Try the beta features and provide feedback. After the features exit beta, it may not be practical to make more changes.
+Try the beta features and provide feedback. After the features exit beta, it may not be practical to make more changes.
{{< /note >}}
- Stable:
@@ -97,7 +97,7 @@ on the apiserver. `--runtime-config` accepts comma separated values. For example
The flag accepts comma separated set of key=value pairs describing runtime configuration of the apiserver.
{{< note >}}
-**Note:** When you enable or disable groups or resources, you need to restart the apiserver and controller-manager
+When you enable or disable groups or resources, you need to restart the apiserver and controller-manager
to pick up the `--runtime-config` changes.
{{< /note >}}
diff --git a/content/en/docs/reference/using-api/deprecation-policy.md b/content/en/docs/reference/using-api/deprecation-policy.md
index 565eb038ea..31cc4a6db2 100644
--- a/content/en/docs/reference/using-api/deprecation-policy.md
+++ b/content/en/docs/reference/using-api/deprecation-policy.md
@@ -57,7 +57,7 @@ can not be removed from that version or have its behavior significantly
changed, regardless of track.
{{< note >}}
-**Note:** For historical reasons, there are 2 "monolithic" API groups - "core" (no
+For historical reasons, there are 2 "monolithic" API groups - "core" (no
group name) and "extensions". Resources will incrementally be moved from these
legacy API groups into more domain-specific API groups.
{{< /note >}}
@@ -90,7 +90,7 @@ no less than:**
This covers the maximum supported version skew of 2 releases.
{{< note >}}
-**Note:** Until [#52185](https://github.com/kubernetes/kubernetes/issues/52185) is
+Until [#52185](https://github.com/kubernetes/kubernetes/issues/52185) is
resolved, no API versions that have been persisted to storage may be removed.
Serving REST endpoints for those versions may be disabled (subject to the
deprecation timelines in this document), but the API server must remain capable
diff --git a/content/en/docs/setup/certificates.md b/content/en/docs/setup/certificates.md
index 3fffec6fcc..dc93af997f 100644
--- a/content/en/docs/setup/certificates.md
+++ b/content/en/docs/setup/certificates.md
@@ -30,7 +30,7 @@ Kubernetes requires PKI for the following operations:
* Client and server certificates for the [front-proxy][proxy]
{{< note >}}
-**Note:** `front-proxy` certificates are required only if you run kube-proxy to support [an extension API server](/docs/tasks/access-kubernetes-api/setup-extension-api-server/).
+`front-proxy` certificates are required only if you run kube-proxy to support [an extension API server](/docs/tasks/access-kubernetes-api/setup-extension-api-server/).
{{< /note >}}
etcd also implements mutual TLS to authenticate clients and peers.
diff --git a/content/en/docs/setup/custom-cloud/kubespray.md b/content/en/docs/setup/custom-cloud/kubespray.md
index 11671b501c..b181b087e9 100644
--- a/content/en/docs/setup/custom-cloud/kubespray.md
+++ b/content/en/docs/setup/custom-cloud/kubespray.md
@@ -103,7 +103,7 @@ You can upgrade your cluster by running the upgrade-cluster playbook. For more i
You can reset your nodes and wipe out all components installed with Kubespray via the [reset playbook](https://github.com/kubernetes-incubator/kubespray/blob/master/reset.yml).
{{< caution >}}
-**Caution:** When running the reset playbook, be sure not to accidentally target your production cluster!
+When running the reset playbook, be sure not to accidentally target your production cluster!
{{< /caution >}}
## Feedback
diff --git a/content/en/docs/setup/independent/create-cluster-kubeadm.md b/content/en/docs/setup/independent/create-cluster-kubeadm.md
index 8ff6ae7e97..1b40c1acca 100644
--- a/content/en/docs/setup/independent/create-cluster-kubeadm.md
+++ b/content/en/docs/setup/independent/create-cluster-kubeadm.md
@@ -99,7 +99,7 @@ timeframe; which also applies to `kubeadm`.
See ["Installing kubeadm"](/docs/setup/independent/install-kubeadm/).
{{< note >}}
-**Note:** If you have already installed kubeadm, run `apt-get update &&
+If you have already installed kubeadm, run `apt-get update &&
apt-get upgrade` or `yum update` to get the latest version of kubeadm.
When you upgrade, the kubelet restarts every few seconds as it waits in a crashloop for
@@ -228,7 +228,7 @@ created, and deleted with the `kubeadm token` command. See the
### Installing a pod network add-on {#pod-network}
{{< caution >}}
-**Caution:** This section contains important information about installation and deployment order. Read it carefully before proceeding.
+This section contains important information about installation and deployment order. Read it carefully before proceeding.
{{< /caution >}}
You must install a pod network add-on so that your pods can communicate with
@@ -465,7 +465,7 @@ The output is similar to this:
```
{{< note >}}
-**Note:** To specify an IPv6 tuple for `:`, IPv6 address must be enclosed in square brackets, for example: `[fd00::101]:2073`.
+To specify an IPv6 tuple for `:`, IPv6 address must be enclosed in square brackets, for example: `[fd00::101]:2073`.
{{< /note >}}
The output should look something like:
@@ -498,7 +498,7 @@ kubectl --kubeconfig ./admin.conf get nodes
```
{{< note >}}
-**Note:** The example above assumes SSH access is enabled for root. If that is not the
+The example above assumes SSH access is enabled for root. If that is not the
case, you can copy the `admin.conf` file to be accessible by some other user
and `scp` using that other user instead.
diff --git a/content/en/docs/setup/independent/high-availability.md b/content/en/docs/setup/independent/high-availability.md
index 226409b48f..d88e419269 100644
--- a/content/en/docs/setup/independent/high-availability.md
+++ b/content/en/docs/setup/independent/high-availability.md
@@ -22,9 +22,9 @@ with upgrading your clusters, for example. We encourage you to try either approa
and provide feedback.
{{< caution >}}
-**Caution**: This page does not address running your cluster on a cloud provider.
-In a cloud environment, neither approach documented here works with Service objects
-of type LoadBalancer, or with dynamic PersistentVolumes.
+This page does not address running your cluster on a cloud provider. In a cloud
+environment, neither approach documented here works with Service objects of type
+LoadBalancer, or with dynamic PersistentVolumes.
{{< /caution >}}
{{% /capture %}}
@@ -49,9 +49,8 @@ For the external etcd cluster only, you also need:
- Three additional machines for etcd members
{{< note >}}
-**Note**: The following examples run Calico as the Pod networking provider. If
-you run another networking provider, make sure to replace any default values as
-needed.
+The following examples run Calico as the Pod networking provider. If you run another
+networking provider, make sure to replace any default values as needed.
{{< /note >}}
{{% /capture %}}
@@ -61,8 +60,7 @@ needed.
## First steps for both methods
{{< note >}}
-**Note**: All commands in this guide on any control plane or etcd node should be
-run as root.
+All commands in this guide on any control plane or etcd node should be run as root.
{{< /note >}}
- Find your pod CIDR. For details, see [the CNI network
@@ -102,9 +100,8 @@ run as root.
### Create load balancer for kube-apiserver
{{< note >}}
-**Note**: There are many configurations for load balancers. The following
-example is only one option. Your cluster requirements may need a
-different configuration.
+There are many configurations for load balancers. The following example is only one
+option. Your cluster requirements may need a different configuration.
{{< /note >}}
1. Create a kube-apiserver load balancer with a name that resolves to DNS.
@@ -140,7 +137,7 @@ different configuration.
### Bootstrap the first stacked control plane node
{{< note >}}
-**Note**: Optionally replace `stable` with a different version of Kubernetes, for example `v1.12.0`.
+Optionally replace `stable` with a different version of Kubernetes, for example `v1.12.0`.
{{< /note >}}
1. Create a `kubeadm-config.yaml` template file:
@@ -217,7 +214,7 @@ done
```
{{< note >}}
-**Note**: Remember that your config may differ from this example.
+Remember that your config may differ from this example.
{{< /note >}}
### Add the second stacked control plane node
@@ -439,7 +436,7 @@ done
1. Create a `kubeadm-config.yaml`:
{{< note >}}
-**Note**: Optionally replace `stable` with a different version of Kubernetes, for example `v1.11.3`.
+Optionally replace `stable` with a different version of Kubernetes, for example `v1.11.3`.
{{< /note >}}
apiVersion: kubeadm.k8s.io/v1alpha3
diff --git a/content/en/docs/setup/independent/setup-ha-etcd-with-kubeadm.md b/content/en/docs/setup/independent/setup-ha-etcd-with-kubeadm.md
index 9e312d5464..2d5ea7c059 100644
--- a/content/en/docs/setup/independent/setup-ha-etcd-with-kubeadm.md
+++ b/content/en/docs/setup/independent/setup-ha-etcd-with-kubeadm.md
@@ -38,7 +38,7 @@ The general approach is to generate all certs on one node and only distribute
the *necessary* files to the other nodes.
{{< note >}}
-**Note:** kubeadm contains all the necessary crytographic machinery to generate
+kubeadm contains all the necessary crytographic machinery to generate
the certificates described below; no other cryptographic tooling is required for
this example.
{{< /note >}}
diff --git a/content/en/docs/setup/independent/troubleshooting-kubeadm.md b/content/en/docs/setup/independent/troubleshooting-kubeadm.md
index 1f5878efac..70a29a3f94 100644
--- a/content/en/docs/setup/independent/troubleshooting-kubeadm.md
+++ b/content/en/docs/setup/independent/troubleshooting-kubeadm.md
@@ -259,7 +259,7 @@ kubectl -n kube-system get deployment coredns -o yaml | \
```
{{< warning >}}
-**Warning**: Disabling SELinux or setting `allowPrivilegeEscalation` to `true` can compromise
+Disabling SELinux or setting `allowPrivilegeEscalation` to `true` can compromise
the security of your cluster.
{{< /warning >}}
diff --git a/content/en/docs/setup/minikube.md b/content/en/docs/setup/minikube.md
index 8e763c777d..aa2143e4c3 100644
--- a/content/en/docs/setup/minikube.md
+++ b/content/en/docs/setup/minikube.md
@@ -337,7 +337,9 @@ spec:
## Mounted Host Folders
Some drivers will mount a host folder within the VM so that you can easily share files between the VM and host. These are not configurable at the moment and different for the driver and OS you are using.
-**Note:** Host folder sharing is not implemented in the KVM driver yet.
+{{< note >}}
+Host folder sharing is not implemented in the KVM driver yet.
+{{< /note >}}
| Driver | OS | HostFolder | VM |
| --- | --- | --- | --- |
diff --git a/content/en/docs/setup/multiple-zones.md b/content/en/docs/setup/multiple-zones.md
index 5256d703b0..81d4a32ded 100644
--- a/content/en/docs/setup/multiple-zones.md
+++ b/content/en/docs/setup/multiple-zones.md
@@ -199,12 +199,14 @@ kubectl create -f - <}}
+For version 1.3+ Kubernetes will distribute dynamic PV claims across
the configured zones. For version 1.2, dynamic persistent volumes were
always created in the zone of the cluster master
(here us-central1-a / us-west-2a); that issue
([#23330](https://github.com/kubernetes/kubernetes/issues/23330))
was addressed in 1.3+.
+{{< /note >}}
Now lets validate that Kubernetes automatically labeled the zone & region the PV was created in.
diff --git a/content/en/docs/setup/on-premises-metal/krib.md b/content/en/docs/setup/on-premises-metal/krib.md
index e37376e464..4438b6a7e0 100644
--- a/content/en/docs/setup/on-premises-metal/krib.md
+++ b/content/en/docs/setup/on-premises-metal/krib.md
@@ -11,7 +11,7 @@ This guide helps to install a Kubernetes cluster hosted on bare metal with [Digi
Digital Rebar Provision (DRP) is an integrated Golang DHCP, bare metal provisioning (PXE/iPXE) and workflow automation platform. While [DRP can be used to invoke](https://provision.readthedocs.io/en/tip/doc/integrations/ansible.html) [kubespray](../kubespray), it also offers a self-contained Kubernetes installation known as [KRIB (Kubernetes Rebar Integrated Bootstrap)](https://github.com/digitalrebar/provision-content/tree/master/krib).
{{< note >}}
-**Note:** KRIB is not a _stand-alone_ installer: Digital Rebar templates drive a standard *[kubeadm](/docs/admin/kubeadm/)* configuration that manages the Kubernetes installation with the [Digital Rebar cluster pattern](https://provision.readthedocs.io/en/tip/doc/arch/cluster.html#rs-cluster-pattern) to elect leaders _without external supervision_.
+KRIB is not a _stand-alone_ installer: Digital Rebar templates drive a standard *[kubeadm](/docs/admin/kubeadm/)* configuration that manages the Kubernetes installation with the [Digital Rebar cluster pattern](https://provision.readthedocs.io/en/tip/doc/arch/cluster.html#rs-cluster-pattern) to elect leaders _without external supervision_.
{{< /note >}}
@@ -43,7 +43,7 @@ Upload the KRIB Content bundle (or build from [source](https://github.com/digita
### (3/5) Start your cluster deployment
{{< note >}}
-**Note:** KRIB documentation is dynamically generated from the source and will be more up to date than this guide.
+KRIB documentation is dynamically generated from the source and will be more up to date than this guide.
{{< /note >}}
Following the [KRIB documentation](https://provision.readthedocs.io/en/tip/doc/content-packages/krib.html), create a Profile for your cluster and assign your target servers into the cluster Profile. The Profile must set `krib\cluster-name` and `etcd\cluster-name` Params to be the name of the Profile. Cluster configuration choices can be made by adding additional Params to the Profile; however, safe defaults are provided for all Params.
@@ -86,7 +86,7 @@ You can add servers into your cluster by adding the cluster Profile to the serve
You can reset your cluster and wipe out all configuration and TLS certificates using the `krib-reset-cluster` Workflow on any of the servers in the cluster.
{{< caution >}}
-**Caution:** When running the reset Workflow, be sure not to accidentally target your production cluster!
+When running the reset Workflow, be sure not to accidentally target your production cluster!
{{< /caution >}}
## Feedback
diff --git a/content/en/docs/setup/pick-right-solution.md b/content/en/docs/setup/pick-right-solution.md
index 1686f43f4c..1fed1a600c 100644
--- a/content/en/docs/setup/pick-right-solution.md
+++ b/content/en/docs/setup/pick-right-solution.md
@@ -226,9 +226,8 @@ Agile Stacks | Terraform | CoreOS | multi-support | [docs](https://www.a
IBM Cloud Kubernetes Service | | Ubuntu | calico | [docs](https://console.bluemix.net/docs/containers/container_index.html) | Commercial
Digital Rebar | kubeadm | any | metal | [docs](/docs/setup/on-premises-metal/krib/) | Community ([@digitalrebar](https://github.com/digitalrebar))
-
{{< note >}}
-**Note:** The above table is ordered by version test/used in nodes, followed by support level.
+The above table is ordered by version test/used in nodes, followed by support level.
{{< /note >}}
### Definition of columns
diff --git a/content/en/docs/setup/release/notes.md b/content/en/docs/setup/release/notes.md
index 45f6f83ae1..b834dbb885 100644
--- a/content/en/docs/setup/release/notes.md
+++ b/content/en/docs/setup/release/notes.md
@@ -556,7 +556,7 @@ filename | sha256 hash
* The PodShareProcessNamespace feature to configure PID namespace sharing within a pod has been promoted to beta. ([#66507](https://github.com/kubernetes/kubernetes/pull/66507), [@verb](https://github.com/verb))
* `kubectl create {clusterrole,role}`'s `--resources` flag supports asterisk to specify all resources. ([#62945](https://github.com/kubernetes/kubernetes/pull/62945), [@nak3](https://github.com/nak3))
* Bump up version number of debian-base, debian-hyperkube-base and debian-iptables. ([#67026](https://github.com/kubernetes/kubernetes/pull/67026), [@satyasm](https://github.com/satyasm))
- * Also updates dependencies of users of debian-base.
+ * Also updates dependencies of users of debian-base.
* debian-base version 0.3.1 is already available.
* DynamicProvisioningScheduling and VolumeScheduling is now supported for Azure managed disks. Feature gates DynamicProvisioningScheduling and VolumeScheduling should be enabled before using this feature. ([#67121](https://github.com/kubernetes/kubernetes/pull/67121), [@feiskyer](https://github.com/feiskyer))
* kube-apiserver now includes all registered API groups in discovery, including registered extension API group/versions for unavailable extension API servers. ([#66932](https://github.com/kubernetes/kubernetes/pull/66932), [@nilebox](https://github.com/nilebox))
diff --git a/content/en/docs/setup/scratch.md b/content/en/docs/setup/scratch.md
index 8645a487ab..3068e24865 100644
--- a/content/en/docs/setup/scratch.md
+++ b/content/en/docs/setup/scratch.md
@@ -487,11 +487,11 @@ You will need to run one or more instances of etcd.
- Not highly available, but easy to restore - Run one etcd instance, with its log written to a directory backed
by durable storage (RAID, GCE PD).
- {{< note >}}**Note:** May result in operations outages in case of
+ {{< note >}}May result in operations outages in case of
instance outage. {{< /note >}}
- Highly available - Run 3 or 5 etcd instances with non durable storage.
- {{< note >}}**Note:** Log can be written to non-durable storage
+ {{< note >}}Log can be written to non-durable storage
because storage is replicated.{{< /note >}}
See [cluster-troubleshooting](/docs/admin/cluster-troubleshooting/) for more discussion on factors affecting cluster
diff --git a/content/en/docs/setup/turnkey/gce.md b/content/en/docs/setup/turnkey/gce.md
index 85d659c47e..90618e1dac 100644
--- a/content/en/docs/setup/turnkey/gce.md
+++ b/content/en/docs/setup/turnkey/gce.md
@@ -96,7 +96,7 @@ gcloud components install kubectl
```
{{< note >}}
-**Note:** The kubectl version bundled with `gcloud` may be older than the one
+The kubectl version bundled with `gcloud` may be older than the one
downloaded by the get.k8s.io install script. See [Installing kubectl](/docs/tasks/kubectl/install/)
document to see how you can set up the latest `kubectl` on your workstation.
{{< /note >}}
diff --git a/content/en/docs/tasks/access-application-cluster/configure-access-multiple-clusters.md b/content/en/docs/tasks/access-application-cluster/configure-access-multiple-clusters.md
index 236e91bc8d..ee4bd7a8c3 100644
--- a/content/en/docs/tasks/access-application-cluster/configure-access-multiple-clusters.md
+++ b/content/en/docs/tasks/access-application-cluster/configure-access-multiple-clusters.md
@@ -13,7 +13,7 @@ one or more configuration files, you can quickly switch between clusters by usin
`kubectl config use-context` command.
{{< note >}}
-**Note:** A file that is used to configure access to a cluster is sometimes called
+A file that is used to configure access to a cluster is sometimes called
a *kubeconfig file*. This is a generic way of referring to configuration files.
It does not mean that there is a file named `kubeconfig`.
{{< /note >}}
diff --git a/content/en/docs/tasks/access-application-cluster/configure-cloud-provider-firewall.md b/content/en/docs/tasks/access-application-cluster/configure-cloud-provider-firewall.md
index 4684387872..1c9e130aee 100644
--- a/content/en/docs/tasks/access-application-cluster/configure-cloud-provider-firewall.md
+++ b/content/en/docs/tasks/access-application-cluster/configure-cloud-provider-firewall.md
@@ -84,12 +84,11 @@ gcloud compute firewall-rules create my-rule --allow=tcp:
```
{{< note >}}
-**Note**: GCE firewalls are defined per-vm, rather than per-ip
-address. This means that when you open a firewall for a service's ports,
-anything that serves on that port on that VM's host IP address may potentially
-serve traffic. Note that this is not a problem for other Kubernetes services,
-as they listen on IP addresses that are different than the host node's external
-IP address.
+GCE firewalls are defined per-vm, rather than per-ip address. This means that
+when you open a firewall for a service's ports, anything that serves on that
+port on that VM's host IP address may potentially serve traffic. Note that this
+is not a problem for other Kubernetes services, as they listen on IP addresses
+that are different than the host node's external IP address.
Consider:
diff --git a/content/en/docs/tasks/access-application-cluster/connecting-frontend-backend.md b/content/en/docs/tasks/access-application-cluster/connecting-frontend-backend.md
index c1e7b4a2ba..a447e85d16 100644
--- a/content/en/docs/tasks/access-application-cluster/connecting-frontend-backend.md
+++ b/content/en/docs/tasks/access-application-cluster/connecting-frontend-backend.md
@@ -148,11 +148,13 @@ deployment.apps/frontend created
service/frontend created
```
-{{< note >}}**Note:** The nginx configuration is baked into the
-[container image](/examples/service/access/Dockerfile).
-A better way to do this would be to use a
-[ConfigMap](/docs/tasks/configure-pod-container/configure-pod-configmap/), so
-you can change the configuration more easily.{{< /note >}}
+{{< note >}}
+The nginx configuration is baked into the [container
+image](/examples/service/access/Dockerfile). A better way to do this would
+be to use a
+[ConfigMap](/docs/tasks/configure-pod-container/configure-pod-configmap/),
+so that you can change the configuration more easily.
+{{< /note >}}
### Interact with the frontend Service
diff --git a/content/en/docs/tasks/access-application-cluster/create-external-load-balancer.md b/content/en/docs/tasks/access-application-cluster/create-external-load-balancer.md
index b79dcb02ed..22c601d3d1 100644
--- a/content/en/docs/tasks/access-application-cluster/create-external-load-balancer.md
+++ b/content/en/docs/tasks/access-application-cluster/create-external-load-balancer.md
@@ -108,8 +108,9 @@ which should produce output like this:
The IP address is listed next to `LoadBalancer Ingress`.
{{< note >}}
-**Note**: If you are running your service on Minikube, you can find the assigned IP address and port with:
+If you are running your service on Minikube, you can find the assigned IP address and port with:
{{< /note >}}
+
```bash
minikube service example-service --url
```
@@ -181,7 +182,7 @@ compared to the `service.spec.externalTrafficPolicy` field. The values match as
* "Global" for annotation <-> "Cluster" for field
{{< note >}}
-**Note:** This feature is not currently implemented for all cloudproviders/environments.
+This feature is not currently implemented for all cloudproviders/environments.
{{< /note >}}
Known issues:
diff --git a/content/en/docs/tasks/access-application-cluster/list-all-running-container-images.md b/content/en/docs/tasks/access-application-cluster/list-all-running-container-images.md
index 0b6c1fb8e4..caf20d7f2e 100644
--- a/content/en/docs/tasks/access-application-cluster/list-all-running-container-images.md
+++ b/content/en/docs/tasks/access-application-cluster/list-all-running-container-images.md
@@ -63,7 +63,7 @@ The jsonpath is interpreted as follows:
- `.image`: get the image
{{< note >}}
-**Note:** When fetching a single Pod by name, e.g. `kubectl get pod nginx`,
+When fetching a single Pod by name, e.g. `kubectl get pod nginx`,
the `.items[*]` portion of the path should be omitted because a single
Pod is returned instead of a list of items.
{{< /note >}}
diff --git a/content/en/docs/tasks/access-application-cluster/load-balance-access-application-cluster.md b/content/en/docs/tasks/access-application-cluster/load-balance-access-application-cluster.md
index d45cf2493d..29058660b8 100644
--- a/content/en/docs/tasks/access-application-cluster/load-balance-access-application-cluster.md
+++ b/content/en/docs/tasks/access-application-cluster/load-balance-access-application-cluster.md
@@ -71,7 +71,7 @@ load-balanced access to an application running in a cluster.
command.
{{< note >}}
- **Note:** If you are using Minikube, you don't get an external IP address. The
+ If you are using Minikube, you don't get an external IP address. The
external IP address remains in the pending state.
{{< /note >}}
@@ -90,7 +90,7 @@ load-balanced access to an application running in a cluster.
Hello Kubernetes!
{{< note >}}
- **Note:** If you are using Minikube, enter these commands:
+ If you are using Minikube, enter these commands:
{{< /note >}}
kubectl cluster-info
diff --git a/content/en/docs/tasks/access-application-cluster/port-forward-access-application-cluster.md b/content/en/docs/tasks/access-application-cluster/port-forward-access-application-cluster.md
index 8c3fda3cea..a303b9a878 100644
--- a/content/en/docs/tasks/access-application-cluster/port-forward-access-application-cluster.md
+++ b/content/en/docs/tasks/access-application-cluster/port-forward-access-application-cluster.md
@@ -137,7 +137,7 @@ is running the Redis server. With this connection in place you can use your
local workstation to debug the database that is running in the pod.
{{< warning >}}
-**Warning**: Due to known limitations, port forward today only works for TCP protocol.
+Due to known limitations, port forward today only works for TCP protocol.
The support to UDP protocol is being tracked in
[issue 47862](https://github.com/kubernetes/kubernetes/issues/47862).
{{< /warning >}}
diff --git a/content/en/docs/tasks/access-kubernetes-api/configure-aggregation-layer.md b/content/en/docs/tasks/access-kubernetes-api/configure-aggregation-layer.md
index 2781881e1b..87fa9bd717 100644
--- a/content/en/docs/tasks/access-kubernetes-api/configure-aggregation-layer.md
+++ b/content/en/docs/tasks/access-kubernetes-api/configure-aggregation-layer.md
@@ -19,7 +19,7 @@ Configuring the [aggregation layer](/docs/concepts/api-extension/apiserver-aggre
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
{{< note >}}
-**Note:** There are a few setup requirements for getting the aggregation layer working in your environment to support mutual TLS auth between the proxy and extension apiservers. Kubernetes and the kube-apiserver have multiple CAs, so make sure that the proxy is signed by the aggregation layer CA and not by something else, like the master CA.
+There are a few setup requirements for getting the aggregation layer working in your environment to support mutual TLS auth between the proxy and extension apiservers. Kubernetes and the kube-apiserver have multiple CAs, so make sure that the proxy is signed by the aggregation layer CA and not by something else, like the master CA.
{{< /note >}}
{{% /capture %}}
diff --git a/content/en/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definition-versioning.md b/content/en/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definition-versioning.md
index 11d22745c7..ecf3ec0038 100644
--- a/content/en/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definition-versioning.md
+++ b/content/en/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definition-versioning.md
@@ -15,8 +15,8 @@ level of your CustomResourceDefinitions. It also describes how to upgrade an
object from one version to another.
{{< note >}}
-**Note**: All specified versions must use the same schema. The is no schema
-conversion between versions.
+All specified versions must use the same schema. There is no schema conversion
+between versions.
{{< /note >}}
{{% /capture %}}
diff --git a/content/en/docs/tasks/administer-cluster/configure-upgrade-etcd.md b/content/en/docs/tasks/administer-cluster/configure-upgrade-etcd.md
index bd0f59d948..0e5a553571 100644
--- a/content/en/docs/tasks/administer-cluster/configure-upgrade-etcd.md
+++ b/content/en/docs/tasks/administer-cluster/configure-upgrade-etcd.md
@@ -105,7 +105,7 @@ For example, consider key pairs `k8sclient.key` and `k8sclient.cert` that are tr
Once etcd is configured correctly, only clients with valid certificates can access it. To give Kubernetes API server the access, configure it with the flags `--etcd-certfile=k8sclient.cert`,`--etcd-keyfile=k8sclient.key` and `--etcd-cafile=ca.cert`.
{{< note >}}
-**Note**: etcd authentication is not currently supported by Kubernetes. For more information, see the related issue [Support Basic Auth for Etcd v2](https://github.com/kubernetes/kubernetes/issues/23398).
+etcd authentication is not currently supported by Kubernetes. For more information, see the related issue [Support Basic Auth for Etcd v2](https://github.com/kubernetes/kubernetes/issues/23398).
{{< /note >}}
## Replacing a failed etcd member
@@ -212,7 +212,7 @@ The upgrade procedure described in this document assumes that either:
etcd cluster. During the time the etcd cluster is shut down, the Kubernetes API Server will be read only.
{{< warning >}}
-**Warning**: Deviations from the assumptions are untested by continuous
+Deviations from the assumptions are untested by continuous
integration, and deviations might create undesirable consequences. Additional information about operating an etcd cluster is available [from the etcd maintainers](https://github.com/coreos/etcd/tree/master/Documentation).
{{< /warning >}}
@@ -264,7 +264,7 @@ but the rollback tool has these limitations:
* Rollback doesn鈥檛 preserve resource versions of objects stored in etcd.
{{< warning >}}
-**Warning**: If the data is not kept in `application/json` format (see [Upgrade
+If the data is not kept in `application/json` format (see [Upgrade
Procedure](#upgrade-procedure)), you will lose the option to roll back to etcd
2.2.
{{< /warning >}}
@@ -276,7 +276,7 @@ resource versions. Since both the kubelet and kube-proxy use the watch API, a
rollback might require restarting all Kubernetes components on all nodes.
{{< note >}}
-**Note**: At the time of writing, both Kubelet and KubeProxy are using 鈥渞esource
+At the time of writing, both Kubelet and KubeProxy are using 鈥渞esource
version鈥 only for watching (i.e. are not using resource versions for anything
else). And both are using reflector and/or informer frameworks for watching
(i.e. they don鈥檛 send watch requests themselves). Both those frameworks if they
@@ -390,7 +390,7 @@ STORAGE_MEDIA_TYPE=application/json
```
{{< note >}}
-**Note:** This procedure upgrades from 2.x to 3.x. Version `3.0.17` is not recommended for running in production (see [prerequisites](#prerequisites) for minimum recommended etcd versions).
+This procedure upgrades from 2.x to 3.x. Version `3.0.17` is not recommended for running in production (see [prerequisites](#prerequisites) for minimum recommended etcd versions).
{{< /note >}}
## Notes for etcd Version 2.2.1
diff --git a/content/en/docs/tasks/administer-cluster/coredns.md b/content/en/docs/tasks/administer-cluster/coredns.md
index e0d6c30e3b..e314f490e7 100644
--- a/content/en/docs/tasks/administer-cluster/coredns.md
+++ b/content/en/docs/tasks/administer-cluster/coredns.md
@@ -52,7 +52,7 @@ your existing Corefile will be retained.
## Installing kube-dns instead of CoreDNS with kubeadm
{{< note >}}
-**Note:** In Kubernetes 1.11, CoreDNS has graduated to General Availability (GA)
+In Kubernetes 1.11, CoreDNS has graduated to General Availability (GA)
and is installed by default.
{{< /note >}}
diff --git a/content/en/docs/tasks/administer-cluster/cpu-management-policies.md b/content/en/docs/tasks/administer-cluster/cpu-management-policies.md
index c5b2a029d8..313e468636 100644
--- a/content/en/docs/tasks/administer-cluster/cpu-management-policies.md
+++ b/content/en/docs/tasks/administer-cluster/cpu-management-policies.md
@@ -75,16 +75,16 @@ The `static` policy allows containers in `Guaranteed` pods with integer CPU
using the [cpuset cgroup controller](https://www.kernel.org/doc/Documentation/cgroup-v1/cpusets.txt).
{{< note >}}
-**Note:** System services such as the container runtime and the kubelet itself can continue to run on these exclusive CPUs. 聽The exclusivity only extends to other pods.
+System services such as the container runtime and the kubelet itself can continue to run on these exclusive CPUs. 聽The exclusivity only extends to other pods.
{{< /note >}}
{{< note >}}
-**Note:** The alpha version of this policy does not guarantee static
+The alpha version of this policy does not guarantee static
exclusive allocations across Kubelet restarts.
{{< /note >}}
{{< note >}}
-**Note:** CPU Manager doesn't support offlining and onlining of
+CPU Manager doesn't support offlining and onlining of
CPUs at runtime. Also, if the set of online CPUs changes on the node,
the node must be drained and CPU manager manually reset by deleting the
state file `cpu_manager_state` in the kubelet root directory.
@@ -102,7 +102,7 @@ both part of a `Guaranteed` pod and have integer CPU `requests` are assigned
exclusive CPUs.
{{< note >}}
-**Note:** The kubelet requires a CPU reservation greater than zero be made
+The kubelet requires a CPU reservation greater than zero be made
using either `--kube-reserved` and/or `--system-reserved` when the static
policy is enabled. This is because zero CPU reservation would allow the shared
pool to become empty.
diff --git a/content/en/docs/tasks/administer-cluster/declare-network-policy.md b/content/en/docs/tasks/administer-cluster/declare-network-policy.md
index db27d97ce5..3ea02e0ed4 100644
--- a/content/en/docs/tasks/administer-cluster/declare-network-policy.md
+++ b/content/en/docs/tasks/administer-cluster/declare-network-policy.md
@@ -21,7 +21,9 @@ Make sure you've configured a network provider with network policy support. Ther
* [Romana](/docs/tasks/administer-cluster/network-policy-provider/romana-network-policy/)
* [Weave Net](/docs/tasks/administer-cluster/network-policy-provider/weave-network-policy/)
-**Note**: The above list is sorted alphabetically by product name, not by recommendation or preference. This example is valid for a Kubernetes cluster using any of these providers.
+{{< note >}}
+The above list is sorted alphabetically by product name, not by recommendation or preference. This example is valid for a Kubernetes cluster using any of these providers.
+{{< /note >}}
{{% /capture %}}
{{% capture steps %}}
diff --git a/content/en/docs/tasks/administer-cluster/encrypt-data.md b/content/en/docs/tasks/administer-cluster/encrypt-data.md
index b7b5eec380..e06ceda9f8 100644
--- a/content/en/docs/tasks/administer-cluster/encrypt-data.md
+++ b/content/en/docs/tasks/administer-cluster/encrypt-data.md
@@ -66,9 +66,11 @@ resources from storage each provider that matches the stored data attempts to de
order. If no provider can read the stored data due to a mismatch in format or secret key, an error
is returned which prevents clients from accessing that resource.
-**IMPORTANT:** If any resource is not readable via the encryption config (because keys were changed),
+{{< caution >}}
+If any resource is not readable via the encryption config (because keys were changed),
the only recourse is to delete that key from the underlying etcd directly. Calls that attempt to
read that resource will fail until it is deleted or a valid decryption key is provided.
+{{< /caution >}}
### Providers:
@@ -113,7 +115,9 @@ To create a new secret perform the following steps:
3. Set the `--experimental-encryption-provider-config` flag on the `kube-apiserver` to point to the location of the config file.
4. Restart your API server.
-**IMPORTANT:** Your config file contains keys that can decrypt content in etcd, so you must properly restrict permissions on your masters so only the user who runs the kube-apiserver can read it.
+{{< caution >}}
+Your config file contains keys that can decrypt content in etcd, so you must properly restrict permissions on your masters so only the user who runs the kube-apiserver can read it.
+{{< /caution >}}
## Verifying that data is encrypted
diff --git a/content/en/docs/tasks/administer-cluster/extended-resource-node.md b/content/en/docs/tasks/administer-cluster/extended-resource-node.md
index 7eb65c3251..6b65cd875f 100644
--- a/content/en/docs/tasks/administer-cluster/extended-resource-node.md
+++ b/content/en/docs/tasks/administer-cluster/extended-resource-node.md
@@ -74,10 +74,12 @@ curl --header "Content-Type: application/json-patch+json" \
http://localhost:8001/api/v1/nodes//status
```
-**Note**: In the preceding request, `~1` is the encoding for the character / in
+{{< note >}}
+In the preceding request, `~1` is the encoding for the character / in
the patch path. The operation path value in JSON-Patch is interpreted as a
JSON-Pointer. For more details, see
[IETF RFC 6901](https://tools.ietf.org/html/rfc6901), section 3.
+{{< /note >}}
The output shows that the Node has a capacity of 4 dongles:
diff --git a/content/en/docs/tasks/administer-cluster/ip-masq-agent.md b/content/en/docs/tasks/administer-cluster/ip-masq-agent.md
index 25d114d139..6133d160c4 100644
--- a/content/en/docs/tasks/administer-cluster/ip-masq-agent.md
+++ b/content/en/docs/tasks/administer-cluster/ip-masq-agent.md
@@ -73,14 +73,16 @@ kubectl label nodes my-node beta.kubernetes.io/masq-agent-ds-ready=true
More information can be found in the ip-masq-agent documentation [here](https://github.com/kubernetes-incubator/ip-masq-agent)
In most cases, the default set of rules should be sufficient; however, if this is not the case for your cluster, you can create and apply a [ConfigMap](/docs/tasks/configure-pod-container/configure-pod-configmap/) to customize the IP ranges that are affected. For example, to allow only 10.0.0.0/8 to be considered by the ip-masq-agent, you can create the following [ConfigMap](/docs/tasks/configure-pod-container/configure-pod-configmap/) in a file called "config".
-**Note:** It is important that the file is called config since, by default, that will be used as the key for lookup by the ip-masq-agent:
+
+{{< note >}}
+It is important that the file is called config since, by default, that will be used as the key for lookup by the ip-masq-agent:
```
nonMasqueradeCIDRs:
- 10.0.0.0/8
resyncInterval: 60s
-
```
+{{< /note >}}
Run the following command to add the config map to your cluster:
diff --git a/content/en/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-ha.md b/content/en/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-ha.md
index 9e08a7262b..de9296644f 100644
--- a/content/en/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-ha.md
+++ b/content/en/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-ha.md
@@ -24,8 +24,7 @@ Before proceeding:
- Check the prerequisites for [Upgrading/downgrading kubeadm clusters between v1.11 to v1.12](/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-12/).
{{< note >}}
-**Note**: All commands on any control plane or etcd node should be
-run as root.
+All commands on any control plane or etcd node should be run as root.
{{< /note >}}
{{% /capture %}}
diff --git a/content/en/docs/tasks/administer-cluster/manage-resources/cpu-constraint-namespace.md b/content/en/docs/tasks/administer-cluster/manage-resources/cpu-constraint-namespace.md
index d840b61371..249265300f 100644
--- a/content/en/docs/tasks/administer-cluster/manage-resources/cpu-constraint-namespace.md
+++ b/content/en/docs/tasks/administer-cluster/manage-resources/cpu-constraint-namespace.md
@@ -82,7 +82,7 @@ CPU request and limit to the Container.
* Verify that the Container specifies a CPU limit that is less than or equal to 800 millicpu.
{{< note >}}
-**Note:** When creating a `LimitRange` object, you can specify limits on huge-pages
+When creating a `LimitRange` object, you can specify limits on huge-pages
or GPUs as well. However, when both `default` and `defaultRequest` are specified
on these resources, the two values must be the same.
{{< /note >}}
diff --git a/content/en/docs/tasks/administer-cluster/namespaces.md b/content/en/docs/tasks/administer-cluster/namespaces.md
index 0e24a21dc9..ce1ebbce3d 100644
--- a/content/en/docs/tasks/administer-cluster/namespaces.md
+++ b/content/en/docs/tasks/administer-cluster/namespaces.md
@@ -106,7 +106,9 @@ More information on `finalizers` can be found in the namespace [design doc](http
$ kubectl delete namespaces
```
-**WARNING, this deletes _everything_ under the namespace!**
+{{< warning >}}
+This deletes _everything_ under the namespace!
+{{< /warning >}}
This delete is asynchronous, so for a time you will see the namespace in the `Terminating` state.
diff --git a/content/en/docs/tasks/administer-cluster/reconfigure-kubelet.md b/content/en/docs/tasks/administer-cluster/reconfigure-kubelet.md
index 5d2a1f615d..f984c4c5fd 100644
--- a/content/en/docs/tasks/administer-cluster/reconfigure-kubelet.md
+++ b/content/en/docs/tasks/administer-cluster/reconfigure-kubelet.md
@@ -14,7 +14,7 @@ allows you to change the configuration of each Kubelet in a live Kubernetes
cluster by deploying a ConfigMap and configuring each Node to use it.
{{< warning >}}
-**Warning:** All Kubelet configuration parameters can be changed dynamically,
+All Kubelet configuration parameters can be changed dynamically,
but this is unsafe for some parameters. Before deciding to change a parameter
dynamically, you need a strong understanding of how that change will affect your
cluster's behavior. Always carefully test configuration changes on a small set
@@ -69,7 +69,7 @@ This document only describes a single Node consuming each ConfigMap. Keep in
mind that it is also valid for multiple Nodes to consume the same ConfigMap.
{{< warning >}}
-**Warning:** While it is *possible* to change the configuration by
+While it is *possible* to change the configuration by
updating the ConfigMap in-place, this causes all Kubelets configured with
that ConfigMap to update simultaneously. It is much safer to treat ConfigMaps
as immutable by convention, aided by `kubectl`'s `--append-hash` option,
diff --git a/content/en/docs/tasks/administer-cluster/safely-drain-node.md b/content/en/docs/tasks/administer-cluster/safely-drain-node.md
index cea4c00af0..2cb77e3149 100644
--- a/content/en/docs/tasks/administer-cluster/safely-drain-node.md
+++ b/content/en/docs/tasks/administer-cluster/safely-drain-node.md
@@ -37,10 +37,12 @@ hardware maintenance, etc.). Safe evictions allow the pod's containers
to [gracefully terminate](/docs/concepts/workloads/pods/pod/#termination-of-pods)
and will respect the `PodDisruptionBudgets` you have specified.
-**Note:** By default `kubectl drain` will ignore certain system pods on the node
+{{< note >}}
+By default `kubectl drain` will ignore certain system pods on the node
that cannot be killed; see
the [kubectl drain](/docs/reference/generated/kubectl/kubectl-commands/#drain)
documentation for more details.
+{{< /note >}}
When `kubectl drain` returns successfully, that indicates that all of
the pods (except the ones excluded as described in the previous paragraph)
diff --git a/content/en/docs/tasks/administer-cluster/securing-a-cluster.md b/content/en/docs/tasks/administer-cluster/securing-a-cluster.md
index 0512f8b09a..36de25de82 100644
--- a/content/en/docs/tasks/administer-cluster/securing-a-cluster.md
+++ b/content/en/docs/tasks/administer-cluster/securing-a-cluster.md
@@ -165,10 +165,12 @@ credentials from the API servers to their etcd server, such as mutual auth via T
and it is often recommended to isolate the etcd servers behind a firewall that only the API servers
may access.
-**CAUTION:** Allowing other components within the cluster to access the master etcd instance with
+{{< caution >}}
+Allowing other components within the cluster to access the master etcd instance with
read or write access to the full keyspace is equivalent to granting cluster-admin access. Using
separate etcd instances for non-master components or using etcd ACLs to restrict read and write
access to a subset of the keyspace is strongly recommended.
+{{< /caution >}}
### Enable audit logging
diff --git a/content/en/docs/tasks/administer-cluster/static-pod.md b/content/en/docs/tasks/administer-cluster/static-pod.md
index 87dad377cd..1499c6b14a 100644
--- a/content/en/docs/tasks/administer-cluster/static-pod.md
+++ b/content/en/docs/tasks/administer-cluster/static-pod.md
@@ -100,11 +100,10 @@ Labels from the static pod are propagated into the mirror-pod and can be used as
Notice we cannot delete the pod with the API server (e.g. via [`kubectl`](/docs/user-guide/kubectl/) command), kubelet simply won't remove it.
-{{}}
-**Note**: Make sure the kubelet has permission to create the mirror pod in the API server.
-If not, the creation request is rejected by the API server. See
+{{< note >}}
+Make sure the kubelet has permission to create the mirror pod in the API server. If not, the creation request is rejected by the API server. See
[PodSecurityPolicy](/docs/concepts/policy/pod-security-policy/).
-{{}}
+{{< /note >}}
```shell
[joe@my-master ~] $ kubectl delete pod static-web-my-node1
diff --git a/content/en/docs/tasks/administer-cluster/sysctl-cluster.md b/content/en/docs/tasks/administer-cluster/sysctl-cluster.md
index 46dc23cdf1..3fadc04540 100644
--- a/content/en/docs/tasks/administer-cluster/sysctl-cluster.md
+++ b/content/en/docs/tasks/administer-cluster/sysctl-cluster.md
@@ -58,7 +58,7 @@ The following sysctls are supported in the _safe_ set:
- `net.ipv4.tcp_syncookies`.
{{< note >}}
-**Note**: The example `net.ipv4.tcp_syncookies` is not namespaced on Linux kernel version 4.4 or lower.
+The example `net.ipv4.tcp_syncookies` is not namespaced on Linux kernel version 4.4 or lower.
{{< /note >}}
This list will be extended in future Kubernetes versions when the kubelet
@@ -141,7 +141,7 @@ spec:
{{% capture discussion %}}
{{< warning >}}
-**Warning**: Due to their nature of being _unsafe_, the use of _unsafe_ sysctls
+Due to their nature of being _unsafe_, the use of _unsafe_ sysctls
is at-your-own-risk and can lead to severe problems like wrong behavior of
containers, resource shortage or complete breakage of a node.
{{< /warning >}}
@@ -184,7 +184,7 @@ Do not configure these two fields such that there is overlap, meaning that a
given sysctl is both allowed and forbidden.
{{< warning >}}
-**Warning**: If you whitelist unsafe sysctls via the `allowedUnsafeSysctls` field
+If you whitelist unsafe sysctls via the `allowedUnsafeSysctls` field
in a PodSecurityPolicy, any pod using such a sysctl will fail to start
if the sysctl is not whitelisted via the `--allowed-unsafe-sysctls` kubelet
flag as well on that node.
diff --git a/content/en/docs/tasks/administer-federation/configmap.md b/content/en/docs/tasks/administer-federation/configmap.md
index cae4847081..4123b4ab22 100644
--- a/content/en/docs/tasks/administer-federation/configmap.md
+++ b/content/en/docs/tasks/administer-federation/configmap.md
@@ -81,7 +81,7 @@ kubectl --context=federation-cluster delete configmap
```
{{< note >}}
-**Note:** Deleting a Federated ConfigMap does not delete the corresponding ConfigMaps from underlying clusters. You must delete the underlying ConfigMaps manually.
+Deleting a Federated ConfigMap does not delete the corresponding ConfigMaps from underlying clusters. You must delete the underlying ConfigMaps manually.
{{< /note >}}
{{% /capture %}}
diff --git a/content/en/docs/tasks/administer-federation/hpa.md b/content/en/docs/tasks/administer-federation/hpa.md
index 5ca0363e1c..496a7032a6 100644
--- a/content/en/docs/tasks/administer-federation/hpa.md
+++ b/content/en/docs/tasks/administer-federation/hpa.md
@@ -87,7 +87,7 @@ max replicas on the federated HPA object, and the sum of minimum replicas will b
than or equal to the minimum specified on the federated HPA object.
{{< note >}}
-**Note:** A particular cluster cannot have a minimum replica sum of 0.
+A particular cluster cannot have a minimum replica sum of 0.
{{< /note >}}
### Spreading HPA min and max replicas in underlying clusters
@@ -125,8 +125,9 @@ in the previous section.
You can delete a federated HPA as you would delete a Kubernetes
HPA; however, for a federated HPA, you must send the request to
the federation API server instead of to a specific Kubernetes cluster.
+
{{< note >}}
-**Note:** For the federated resource to be deleted from all underlying clusters, [cascading deletion](/docs/concepts/cluster-administration/federation/#cascading-deletion) should be used.
+For the federated resource to be deleted from all underlying clusters, [cascading deletion](/docs/concepts/cluster-administration/federation/#cascading-deletion) should be used.
{{< /note >}}
For example, you can do that using `kubectl` by running:
diff --git a/content/en/docs/tasks/administer-federation/job.md b/content/en/docs/tasks/administer-federation/job.md
index cf631f5154..d495d1e42e 100644
--- a/content/en/docs/tasks/administer-federation/job.md
+++ b/content/en/docs/tasks/administer-federation/job.md
@@ -99,7 +99,7 @@ kubectl --context=federation-cluster delete job myjob
```
{{< note >}}
-**Note:** Deleting a federated job will not delete the
+Deleting a federated job will not delete the
corresponding jobs from underlying clusters.
You must delete the underlying jobs manually.
{{< /note >}}
diff --git a/content/en/docs/tasks/administer-federation/namespaces.md b/content/en/docs/tasks/administer-federation/namespaces.md
index df60610814..bf8cd84c35 100644
--- a/content/en/docs/tasks/administer-federation/namespaces.md
+++ b/content/en/docs/tasks/administer-federation/namespaces.md
@@ -84,7 +84,7 @@ As in Kubernetes, deleting a federated Namespace will delete all resources in th
Namespace from the federation control plane.
{{< note >}}
-**Note:** At this point, deleting a federated Namespace will not delete the corresponding Namespace, or resources in those Namespaces, from underlying clusters. Users must delete them manually. We intend to fix this in the future.
+At this point, deleting a federated Namespace will not delete the corresponding Namespace, or resources in those Namespaces, from underlying clusters. Users must delete them manually. We intend to fix this in the future.
{{< /note >}}
{{% /capture %}}
diff --git a/content/en/docs/tasks/administer-federation/replicaset.md b/content/en/docs/tasks/administer-federation/replicaset.md
index 7741f8a85c..932abd7095 100644
--- a/content/en/docs/tasks/administer-federation/replicaset.md
+++ b/content/en/docs/tasks/administer-federation/replicaset.md
@@ -124,7 +124,7 @@ kubectl --context=federation-cluster delete rs myrs
```
{{< note >}}
-**Note:** At this point, deleting a federated ReplicaSet will not delete the corresponding ReplicaSets from underlying clusters. You must delete the underlying ReplicaSets manually. We intend to fix this in the future.
+At this point, deleting a federated ReplicaSet will not delete the corresponding ReplicaSets from underlying clusters. You must delete the underlying ReplicaSets manually. We intend to fix this in the future.
{{< /note >}}
{{% /capture %}}
diff --git a/content/en/docs/tasks/administer-federation/secret.md b/content/en/docs/tasks/administer-federation/secret.md
index dc5b0e3d6c..a553e0562e 100644
--- a/content/en/docs/tasks/administer-federation/secret.md
+++ b/content/en/docs/tasks/administer-federation/secret.md
@@ -87,7 +87,7 @@ kubectl --context=federation-cluster delete secret mysecret
```
{{< note >}}
-**Note:** At this point, deleting a federated secret will not delete the corresponding secrets from underlying clusters. You must delete the underlying secrets manually. We intend to fix this in the future.
+At this point, deleting a federated secret will not delete the corresponding secrets from underlying clusters. You must delete the underlying secrets manually. We intend to fix this in the future.
{{< /note >}}
{{% /capture %}}
diff --git a/content/en/docs/tasks/configure-pod-container/assign-cpu-resource.md b/content/en/docs/tasks/configure-pod-container/assign-cpu-resource.md
index 3fac646141..516e33d1ed 100644
--- a/content/en/docs/tasks/configure-pod-container/assign-cpu-resource.md
+++ b/content/en/docs/tasks/configure-pod-container/assign-cpu-resource.md
@@ -120,7 +120,7 @@ cpu-demo 974m
Recall that by setting `-cpu "2"`, you configured the Container to attempt to use 2 CPUs, but the Container is only being allowed to use about 1 CPU. The Container CPU use is being throttled, because the Container is attempting to use more CPU resources than its limit.
{{< note >}}
-**Note:** Another possible explanation for the CPU throttling is that the Node might not have
+Another possible explanation for the CPU throttling is that the Node might not have
enough CPU resources available. Recall that the prerequisites for this exercise require each of
your Nodes to have at least 1 CPU. If your Container runs on a Node that has only 1 CPU, the Container
cannot use more than 1 CPU regardless of the CPU limit specified for the Container.
diff --git a/content/en/docs/tasks/configure-pod-container/attach-handler-lifecycle-event.md b/content/en/docs/tasks/configure-pod-container/attach-handler-lifecycle-event.md
index 85dc63d6ab..3c461a2ecb 100644
--- a/content/en/docs/tasks/configure-pod-container/attach-handler-lifecycle-event.md
+++ b/content/en/docs/tasks/configure-pod-container/attach-handler-lifecycle-event.md
@@ -77,7 +77,7 @@ unless the Pod's grace period expires. For more details, see
[Termination of Pods](/docs/user-guide/pods/#termination-of-pods).
{{< note >}}
-**Note**: Kubernetes only sends the preStop event when a Pod is *terminated*.
+Kubernetes only sends the preStop event when a Pod is *terminated*.
This means that the preStop hook is not invoked when the Pod is *completed*.
This limitation is tracked in [issue #55087](https://github.com/kubernetes/kubernetes/issues/55807).
{{< /note >}}
diff --git a/content/en/docs/tasks/configure-pod-container/configure-persistent-volume-storage.md b/content/en/docs/tasks/configure-pod-container/configure-persistent-volume-storage.md
index f770eacfbc..cc3f7a3fde 100644
--- a/content/en/docs/tasks/configure-pod-container/configure-persistent-volume-storage.md
+++ b/content/en/docs/tasks/configure-pod-container/configure-persistent-volume-storage.md
@@ -189,7 +189,7 @@ annotation or the Pod鈥檚 specification, is applied to the first process run in
each Container.
{{< note >}}
-**Note**: When a Pod consumes a PersistentVolume, the GIDs associated with the
+When a Pod consumes a PersistentVolume, the GIDs associated with the
PersistentVolume are not present on the Pod resource itself.
{{< /note >}}
diff --git a/content/en/docs/tasks/configure-pod-container/configure-pod-configmap.md b/content/en/docs/tasks/configure-pod-container/configure-pod-configmap.md
index 651b72e65d..a34de6eb45 100644
--- a/content/en/docs/tasks/configure-pod-container/configure-pod-configmap.md
+++ b/content/en/docs/tasks/configure-pod-container/configure-pod-configmap.md
@@ -388,7 +388,7 @@ metadata:
## Configure all key-value pairs in a ConfigMap as container environment variables
{{< note >}}
- **Note:** This functionality is available in Kubernetes v1.6 and later.
+ This functionality is available in Kubernetes v1.6 and later.
{{< /note >}}
1. Create a ConfigMap containing multiple key-value pairs.
@@ -516,7 +516,7 @@ special.type
```
{{< caution >}}
-**Caution:** If there are some files in the `/etc/config/` directory, they will be deleted.
+If there are some files in the `/etc/config/` directory, they will be deleted.
{{< /caution >}}
### Add ConfigMap data to a specific path in the Volume
@@ -563,7 +563,7 @@ basis. The [Secrets](/docs/concepts/configuration/secret/#using-secrets-as-files
When a ConfigMap already being consumed in a volume is updated, projected keys are eventually updated as well. Kubelet is checking whether the mounted ConfigMap is fresh on every periodic sync. However, it is using its local ttl-based cache for getting the current value of the ConfigMap. As a result, the total delay from the moment when the ConfigMap is updated to the moment when new keys are projected to the pod can be as long as kubelet sync period + ttl of ConfigMaps cache in kubelet.
{{< note >}}
-**Note:** A container using a ConfigMap as a
+A container using a ConfigMap as a
[subPath](/docs/concepts/storage/volumes/#using-subpath) volume will not receive
ConfigMap updates.
{{< /note >}}
@@ -577,7 +577,7 @@ ConfigMap updates.
The ConfigMap API resource stores configuration data as key-value pairs. The data can be consumed in pods or provide the configurations for system components such as controllers. ConfigMap is similar to [Secrets](/docs/concepts/configuration/secret/), but provides a means of working with strings that don't contain sensitive information. Users and system components alike can store configuration data in ConfigMap.
{{< note >}}
-**Note:** ConfigMaps should reference properties files, not replace them. Think of the ConfigMap as representing something similar to the Linux `/etc` directory and its contents. For example, if you create a [Kubernetes Volume](/docs/concepts/storage/volumes/) from a ConfigMap, each data item in the ConfigMap is represented by an individual file in the volume.
+ConfigMaps should reference properties files, not replace them. Think of the ConfigMap as representing something similar to the Linux `/etc` directory and its contents. For example, if you create a [Kubernetes Volume](/docs/concepts/storage/volumes/) from a ConfigMap, each data item in the ConfigMap is represented by an individual file in the volume.
{{< /note >}}
The ConfigMap's `data` field contains the configuration data. As shown in the example below, this can be simple -- like individual properties defined using `--from-literal` -- or complex -- like configuration files or JSON blobs defined using `--from-file`.
@@ -618,7 +618,7 @@ data:
This includes pods created via the Kubelet's --manifest-url flag, --config flag, or the Kubelet REST API.
{{< note >}}
- **Note:** These are not commonly-used ways to create pods.
+ These are not commonly-used ways to create pods.
{{< /note >}}
{{% /capture %}}
diff --git a/content/en/docs/tasks/configure-pod-container/configure-service-account.md b/content/en/docs/tasks/configure-pod-container/configure-service-account.md
index 62992829cd..1777b5e41a 100644
--- a/content/en/docs/tasks/configure-pod-container/configure-service-account.md
+++ b/content/en/docs/tasks/configure-pod-container/configure-service-account.md
@@ -15,7 +15,7 @@ A service account provides an identity for processes that run in a Pod.
[Cluster Admin Guide to Service Accounts](/docs/reference/access-authn-authz/service-accounts-admin/).*
{{< note >}}
-**Note:** This document describes how service accounts behave in a cluster set up
+This document describes how service accounts behave in a cluster set up
as recommended by the Kubernetes project. Your cluster administrator may have
customized the behavior in your cluster, in which case this documentation may
not apply.
@@ -175,7 +175,7 @@ token: ...
```
{{< note >}}
-**Note:** The content of `token` is elided here.
+The content of `token` is elided here.
{{< /note >}}
## Add ImagePullSecrets to a service account
@@ -254,7 +254,7 @@ TODO: Test and explain how to use additional non-K8s secrets with an existing se
{{< feature-state for_k8s_version="v1.12" state="beta" >}}
{{< note >}}
-**Note:** This ServiceAccountTokenVolumeProjection is __beta__ in 1.12 and
+This ServiceAccountTokenVolumeProjection is __beta__ in 1.12 and
enabled by passing all of the following flags to the API server:
* `--service-account-issuer`
diff --git a/content/en/docs/tasks/configure-pod-container/pull-image-private-registry.md b/content/en/docs/tasks/configure-pod-container/pull-image-private-registry.md
index e998baa6a1..836d89c0c4 100644
--- a/content/en/docs/tasks/configure-pod-container/pull-image-private-registry.md
+++ b/content/en/docs/tasks/configure-pod-container/pull-image-private-registry.md
@@ -53,7 +53,7 @@ The output contains a section similar to this:
```
{{< note >}}
-**Note:** If you use a Docker credentials store, you won't see that `auth` entry but a `credsStore` entry with the name of the store as value.
+If you use a Docker credentials store, you won't see that `auth` entry but a `credsStore` entry with the name of the store as value.
{{< /note >}}
## Create a Secret in the cluster that holds your authorization token
diff --git a/content/en/docs/tasks/configure-pod-container/quality-service-pod.md b/content/en/docs/tasks/configure-pod-container/quality-service-pod.md
index 9062515fa2..8b344a9c6b 100644
--- a/content/en/docs/tasks/configure-pod-container/quality-service-pod.md
+++ b/content/en/docs/tasks/configure-pod-container/quality-service-pod.md
@@ -84,7 +84,7 @@ spec:
```
{{< note >}}
-**Note:** If a Container specifies its own memory limit, but does not specify a memory request, Kubernetes
+If a Container specifies its own memory limit, but does not specify a memory request, Kubernetes
automatically assigns a memory request that matches the limit. Similarly, if a Container specifies its own
CPU limit, but does not specify a CPU request, Kubernetes automatically assigns a CPU request that matches
the limit.
diff --git a/content/en/docs/tasks/configure-pod-container/security-context.md b/content/en/docs/tasks/configure-pod-container/security-context.md
index a89e0dfa53..e7a3f6dd99 100644
--- a/content/en/docs/tasks/configure-pod-container/security-context.md
+++ b/content/en/docs/tasks/configure-pod-container/security-context.md
@@ -299,7 +299,7 @@ See [capability.h](https://github.com/torvalds/linux/blob/master/include/uapi/li
for definitions of the capability constants.
{{< note >}}
-**Note:** Linux capability constants have the form `CAP_XXX`. But when you list capabilities in your Container manifest, you must omit the `CAP_` portion of the constant. For example, to add `CAP_SYS_TIME`, include `SYS_TIME` in your list of capabilities.
+Linux capability constants have the form `CAP_XXX`. But when you list capabilities in your Container manifest, you must omit the `CAP_` portion of the constant. For example, to add `CAP_SYS_TIME`, include `SYS_TIME` in your list of capabilities.
{{< /note >}}
## Assign SELinux labels to a Container
@@ -318,7 +318,7 @@ securityContext:
```
{{< note >}}
-**Note:** To assign SELinux labels, the SELinux security module must be loaded on the host operating system.
+To assign SELinux labels, the SELinux security module must be loaded on the host operating system.
{{< /note >}}
## Discussion
@@ -339,7 +339,7 @@ need to set the `level` section. This sets the
label given to all Containers in the Pod as well as the Volumes.
{{< warning >}}
-**Warning:** After you specify an MCS label for a Pod, all Pods with the same label can access the Volume. If you need inter-Pod protection, you must assign a unique MCS label to each Pod.
+After you specify an MCS label for a Pod, all Pods with the same label can access the Volume. If you need inter-Pod protection, you must assign a unique MCS label to each Pod.
{{< /warning >}}
{{% /capture %}}
diff --git a/content/en/docs/tasks/configure-pod-container/translate-compose-kubernetes.md b/content/en/docs/tasks/configure-pod-container/translate-compose-kubernetes.md
index 316854b476..5713c69c53 100644
--- a/content/en/docs/tasks/configure-pod-container/translate-compose-kubernetes.md
+++ b/content/en/docs/tasks/configure-pod-container/translate-compose-kubernetes.md
@@ -296,7 +296,9 @@ INFO OpenShift file "foo-imagestream.yaml" created
INFO OpenShift file "foo-buildconfig.yaml" created
```
-**Note**: If you are manually pushing the Openshift artifacts using ``oc create -f``, you need to ensure that you push the imagestream artifact before the buildconfig artifact, to workaround this Openshift issue: https://github.com/openshift/origin/issues/4518 .
+{{< note >}}
+If you are manually pushing the Openshift artifacts using ``oc create -f``, you need to ensure that you push the imagestream artifact before the buildconfig artifact, to workaround this Openshift issue: https://github.com/openshift/origin/issues/4518 .
+{{< /note >}}
## `kompose up`
@@ -335,6 +337,7 @@ pod/frontend-2768218532-cs5t5 1/1 Running 0 4m
pod/redis-master-1432129712-63jn8 1/1 Running 0 4m
pod/redis-slave-2504961300-nve7b 1/1 Running 0 4m
```
+
**Note**:
- You must have a running Kubernetes cluster with a pre-configured kubectl context.
@@ -550,7 +553,9 @@ The currently supported options are:
| kompose.service.type | nodeport / clusterip / loadbalancer |
| kompose.service.expose| true / hostname |
-**Note**: `kompose.service.type` label should be defined with `ports` only, otherwise `kompose` will fail.
+{{< note >}}
+The `kompose.service.type` label should be defined with `ports` only, otherwise `kompose` will fail.
+{{< /note >}}
## Restart
@@ -563,7 +568,9 @@ If you want to create normal pods without controllers you can use `restart` cons
| `on-failure` | Pod | `OnFailure` |
| `no` | Pod | `Never` |
-**Note**: controller object could be `deployment` or `replicationcontroller`, etc.
+{{< note >}}
+The controller object could be `deployment` or `replicationcontroller`, etc.
+{{< /note >}}
For e.g. `pival` service will become pod down here. This container calculated value of `pi`.
diff --git a/content/en/docs/tasks/debug-application-cluster/audit.md b/content/en/docs/tasks/debug-application-cluster/audit.md
index 10f8161f26..a46fec98e9 100644
--- a/content/en/docs/tasks/debug-application-cluster/audit.md
+++ b/content/en/docs/tasks/debug-application-cluster/audit.md
@@ -46,8 +46,8 @@ Each request can be recorded with an associated "stage". The known stages are:
- `Panic` - Events generated when a panic occurred.
{{< note >}}
-**Note** The audit logging feature increases the memory consumption of the API
-server because some context required for auditing is stored for each request.
+The audit logging feature increases the memory consumption of the API server
+because some context required for auditing is stored for each request.
Additionally, memory consumption depends on the audit logging configuration.
{{< /note >}}
@@ -102,7 +102,7 @@ In both cases, audit events structure is defined by the API in the
[`v1`][auditing-api].
{{< note >}}
-**Note:** In case of patches, request body is a JSON array with patch operations, not a JSON object
+In case of patches, request body is a JSON array with patch operations, not a JSON object
with an appropriate Kubernetes API object. For example, the following request body is a valid patch
request to `/apis/batch/v1/namespaces/some-namespace/jobs/some-job-name`.
@@ -216,7 +216,7 @@ In this example, we will use fluentd to split audit events by different namespac
1. install [fluentd][fluentd_install_doc], fluent-plugin-forest and fluent-plugin-rewrite-tag-filter in the kube-apiserver node
{{< note >}}
-**Note:** Fluent-plugin-forest and fluent-plugin-rewrite-tag-filter are plugins for fluentd. You can get details about plugin installation from [fluentd plugin-management][fluentd_plugin_management_doc].
+Fluent-plugin-forest and fluent-plugin-rewrite-tag-filter are plugins for fluentd. You can get details about plugin installation from [fluentd plugin-management][fluentd_plugin_management_doc].
{{< /note >}}
1. create a config file for fluentd
diff --git a/content/en/docs/tasks/debug-application-cluster/core-metrics-pipeline.md b/content/en/docs/tasks/debug-application-cluster/core-metrics-pipeline.md
index e44f98c90d..18033665e9 100644
--- a/content/en/docs/tasks/debug-application-cluster/core-metrics-pipeline.md
+++ b/content/en/docs/tasks/debug-application-cluster/core-metrics-pipeline.md
@@ -34,7 +34,7 @@ The API is defined in [k8s.io/metrics](https://github.com/kubernetes/metrics/blo
repository. You can find more information about the API there.
{{< note >}}
-**Note:** The API requires metrics server to be deployed in the cluster. Otherwise it will be not available.
+The API requires metrics server to be deployed in the cluster. Otherwise it will be not available.
{{< /note >}}
## Metrics Server
diff --git a/content/en/docs/tasks/debug-application-cluster/crictl.md b/content/en/docs/tasks/debug-application-cluster/crictl.md
index 7c8afeee5a..4f91efb8a4 100644
--- a/content/en/docs/tasks/debug-application-cluster/crictl.md
+++ b/content/en/docs/tasks/debug-application-cluster/crictl.md
@@ -67,7 +67,7 @@ debug: true
The following examples show some `crictl` commands and example output.
{{< warning >}}
-**Warning:** If you use `crictl` to create pod sandboxes or containers on a running
+If you use `crictl` to create pod sandboxes or containers on a running
Kubernetes cluster, the Kubelet will eventually delete them. `crictl` is not a
general purpose workflow tool, but a tool that is useful for debugging.
{{< /warning >}}
diff --git a/content/en/docs/tasks/debug-application-cluster/debug-application.md b/content/en/docs/tasks/debug-application-cluster/debug-application.md
index cedfa0384c..94adc0578c 100644
--- a/content/en/docs/tasks/debug-application-cluster/debug-application.md
+++ b/content/en/docs/tasks/debug-application-cluster/debug-application.md
@@ -84,7 +84,7 @@ $ kubectl exec ${POD_NAME} -c ${CONTAINER_NAME} -- ${CMD} ${ARG1} ${ARG2} ... ${
```
{{< note >}}
-**Note:** `-c ${CONTAINER_NAME}` is optional. You can omit it for Pods that only contain a single container.
+`-c ${CONTAINER_NAME}` is optional. You can omit it for Pods that only contain a single container.
{{< /note >}}
As an example, to look at the logs from a running Cassandra pod, you might run
diff --git a/content/en/docs/tasks/debug-application-cluster/debug-pod-replication-controller.md b/content/en/docs/tasks/debug-application-cluster/debug-pod-replication-controller.md
index 3bbf3eb670..806347eff0 100644
--- a/content/en/docs/tasks/debug-application-cluster/debug-pod-replication-controller.md
+++ b/content/en/docs/tasks/debug-application-cluster/debug-pod-replication-controller.md
@@ -112,8 +112,10 @@ Alternately, you can run commands inside that container with `exec`:
kubectl exec ${POD_NAME} -c ${CONTAINER_NAME} -- ${CMD} ${ARG1} ${ARG2} ... ${ARGN}
```
-{{< note >}}**Note:** `-c ${CONTAINER_NAME}` is optional. You can omit it for pods that
-only contain a single container.{{< /note >}}
+{{< note >}}
+`-c ${CONTAINER_NAME}` is optional. You can omit it for pods that
+only contain a single container.
+{{< /note >}}
As an example, to look at the logs from a running Cassandra pod, you might run:
diff --git a/content/en/docs/tasks/debug-application-cluster/debug-service.md b/content/en/docs/tasks/debug-application-cluster/debug-service.md
index 3e470a11e3..3ca54205b9 100644
--- a/content/en/docs/tasks/debug-application-cluster/debug-service.md
+++ b/content/en/docs/tasks/debug-application-cluster/debug-service.md
@@ -79,7 +79,7 @@ deployment.apps/hostnames created
`kubectl` commands will print the type and name of the resource created or mutated, which can then be used in subsequent commands.
{{< note >}}
-**Note:** This is the same as if you started the `Deployment` with the following YAML:
+This is the same as if you started the `Deployment` with the following YAML:
```yaml
apiVersion: apps/v1
@@ -214,7 +214,10 @@ The "cluster.local" is your cluster domain, which COULD be different in your
own cluster.
You can also try this from a `Node` in the cluster:
-{{< note >}}**Note:** 10.0.0.10 is my DNS `Service`, yours might be different){{< /note >}}
+
+{{< note >}}
+10.0.0.10 is my DNS `Service`, yours might be different).
+{{< /note >}}
```shell
u@node$ nslookup hostnames.default.svc.cluster.local 10.0.0.10
@@ -383,8 +386,11 @@ as the `Service` selecting for `run=hostnames`, but the `Deployment` specifying
At this point, we know that your `Service` exists and has selected your `Pods`.
Let's check that the `Pods` are actually working - we can bypass the `Service`
-mechanism and go straight to the `Pods`.
-{{< note >}}**Note:** These commands use the `Pod` port (9376), rather than the `Service` port (80).{{< /note >}}
+mechanism and go straight to the `Pods`.
+
+{{< note >}}
+These commands use the `Pod` port (9376), rather than the `Service` port (80).
+{{< /note >}}
```shell
u@pod$ wget -qO- 10.244.0.5:9376
diff --git a/content/en/docs/tasks/debug-application-cluster/events-stackdriver.md b/content/en/docs/tasks/debug-application-cluster/events-stackdriver.md
index 1c612bf526..9f81b3ee90 100644
--- a/content/en/docs/tasks/debug-application-cluster/events-stackdriver.md
+++ b/content/en/docs/tasks/debug-application-cluster/events-stackdriver.md
@@ -25,7 +25,7 @@ This article describes a solution that exports Kubernetes events to
Stackdriver Logging, where they can be processed and analyzed.
{{< note >}}
-**Note:** It is not guaranteed that all events happening in a cluster will be
+It is not guaranteed that all events happening in a cluster will be
exported to Stackdriver. One possible scenario when events will not be
exported is when event exporter is not running (e.g. during restart or
upgrade). In most cases it's fine to use events for purposes like setting up
diff --git a/content/en/docs/tasks/debug-application-cluster/logging-elasticsearch-kibana.md b/content/en/docs/tasks/debug-application-cluster/logging-elasticsearch-kibana.md
index ebd03d84d2..93ae3c38dd 100644
--- a/content/en/docs/tasks/debug-application-cluster/logging-elasticsearch-kibana.md
+++ b/content/en/docs/tasks/debug-application-cluster/logging-elasticsearch-kibana.md
@@ -18,7 +18,7 @@ them using [Kibana](https://www.elastic.co/products/kibana), as an alternative t
Stackdriver Logging when running on GCE.
{{< note >}}
-**Note:** You cannot automatically deploy Elasticsearch and Kibana in the Kubernetes cluster hosted on Google Kubernetes Engine. You have to deploy them manually.
+You cannot automatically deploy Elasticsearch and Kibana in the Kubernetes cluster hosted on Google Kubernetes Engine. You have to deploy them manually.
{{< /note >}}
{{% /capture %}}
diff --git a/content/en/docs/tasks/debug-application-cluster/logging-stackdriver.md b/content/en/docs/tasks/debug-application-cluster/logging-stackdriver.md
index 378d5c6b33..1a5bc4e8e6 100644
--- a/content/en/docs/tasks/debug-application-cluster/logging-stackdriver.md
+++ b/content/en/docs/tasks/debug-application-cluster/logging-stackdriver.md
@@ -12,7 +12,7 @@ Before reading this page, it's highly recommended to familiarize yourself
with the [overview of logging in Kubernetes](/docs/concepts/cluster-administration/logging).
{{< note >}}
-**Note:** By default, Stackdriver logging collects only your container's standard output and
+By default, Stackdriver logging collects only your container's standard output and
standard error streams. To collect any logs your application writes to a file (for example),
see the [sidecar approach](/docs/concepts/cluster-administration/logging#sidecar-container-with-a-logging-agent)
in the Kubernetes logging overview.
@@ -52,7 +52,7 @@ consider starting a cluster without a pre-configured logging solution and then d
Stackdriver Logging agents to the running cluster.
{{< warning >}}
-**Warning:** The Stackdriver logging daemon has known issues on platforms other
+The Stackdriver logging daemon has known issues on platforms other
than Google Kubernetes Engine. Proceed at your own risk.
{{< /warning >}}
@@ -88,9 +88,11 @@ than Google Kubernetes Engine. Proceed at your own risk.
kubectl label node $NODE_NAME beta.kubernetes.io/fluentd-ds-ready=true
```
- {{< note >}}**Note:** If a node fails and has to be recreated, you must re-apply the label to
+ {{< note >}}
+ If a node fails and has to be recreated, you must re-apply the label to
the recreated node. To make this easier, you can use Kubelet's command-line parameter
- for applying node labels in your node startup script.{{< /note >}}
+ for applying node labels in your node startup script.
+ {{< /note >}}
1. Deploy a `ConfigMap` with the logging agent configuration by running the following command:
@@ -263,8 +265,12 @@ In this case you need to be able to change the parameters of `DaemonSet` and `Co
If you're using GKE and Stackdriver Logging is enabled in your cluster, you
cannot change its configuration, because it's managed and supported by GKE.
However, you can disable the default integration and deploy your own.
-{{< note >}}**Note:** You will have to support and maintain a newly deployed configuration
-yourself: update the image and configuration, adjust the resources and so on.{{< /note >}}
+
+{{< note >}}
+You will have to support and maintain a newly deployed configuration
+yourself: update the image and configuration, adjust the resources and so on.
+{{< /note >}}
+
To disable the default logging integration, use the following command:
```
@@ -325,7 +331,10 @@ kubectl get cm fluentd-gcp-config --namespace kube-system -o yaml > fluentd-gcp-
Then in the value for the key `containers.input.conf` insert a new filter right after
the `source` section.
-{{< note >}}**Note:** Order is important.{{< /note >}}
+
+{{< note >}}
+Order is important.
+{{< /note >}}
Updating `ConfigMap` in the apiserver is more complicated than updating `DaemonSet`. It's better
to consider `ConfigMap` to be immutable. Then, in order to update the configuration, you should
diff --git a/content/en/docs/tasks/example-task-template.md b/content/en/docs/tasks/example-task-template.md
index 285a832500..256a5638e1 100644
--- a/content/en/docs/tasks/example-task-template.md
+++ b/content/en/docs/tasks/example-task-template.md
@@ -8,7 +8,9 @@ toc_hide: true
{{% capture overview %}}
-**NOTE:** Be sure to also [create an entry in the table of contents](/docs/home/contribute/write-new-topic/#creating-an-entry-in-the-table-of-contents) for your new document.
+{{< note >}}
+Be sure to also [create an entry in the table of contents](/docs/home/contribute/write-new-topic/#creating-an-entry-in-the-table-of-contents) for your new document.
+{{< /note >}}
This page shows how to ...
diff --git a/content/en/docs/tasks/extend-kubectl/kubectl-plugins.md b/content/en/docs/tasks/extend-kubectl/kubectl-plugins.md
index f671ef5231..ee777c5600 100644
--- a/content/en/docs/tasks/extend-kubectl/kubectl-plugins.md
+++ b/content/en/docs/tasks/extend-kubectl/kubectl-plugins.md
@@ -18,9 +18,10 @@ of plugins as a means of utilizing these building blocks to create more complex
{{% capture prerequisites %}}
-You need to have a working `kubectl` binary installed.
+You need to have a working `kubectl` binary installed.
+
{{< note >}}
-**Note:** Plugins were officially introduced as an alpha feature in the v1.8.0 release. They have been re-worked in the v1.12.0 release to support a wider range of use-cases. So, while some parts of the plugins feature were already available in previous versions, a `kubectl` version of 1.12.0 or later is recommended if you are following these docs.
+Plugins were officially introduced as an alpha feature in the v1.8.0 release. They have been re-worked in the v1.12.0 release to support a wider range of use-cases. So, while some parts of the plugins feature were already available in previous versions, a `kubectl` version of 1.12.0 or later is recommended if you are following these docs.
{{< /note >}}
Until a GA version is released, plugins should be considered unstable, and their underlying mechanism is prone to change.
@@ -34,7 +35,7 @@ Until a GA version is released, plugins should be considered unstable, and their
A plugin is nothing more than a standalone executable file, whose name begins with `kubectl-`. To install a plugin, simply move this executable file to anywhere on your PATH.
{{< note >}}
-**Note:** Kubernetes does not provide a package manager or anything similar to install or update plugins. It is your responsibility to ensure that plugin executables have a filename that begins with `kubectl-`, and that they are placed somewhere on your PATH.
+Kubernetes does not provide a package manager or anything similar to install or update plugins. It is your responsibility to ensure that plugin executables have a filename that begins with `kubectl-`, and that they are placed somewhere on your PATH.
{{< /note >}}
### Discovering plugins
@@ -127,7 +128,7 @@ For example, a plugin that wishes to be invoked whenever the command `kubectl fo
#### Flags and argument handling
{{< note >}}
-**Note:** Unlike previous versions of `kubectl`, the plugin mechanism will _not_ create any custom, plugin-specific values or environment variables to a plugin process.
+Unlike previous versions of `kubectl`, the plugin mechanism will _not_ create any custom, plugin-specific values or environment variables to a plugin process.
This means that environment variables such as `KUBECTL_PLUGINS_CURRENT_NAMESPACE` are no longer provided to a plugin. Plugins must parse all of the arguments passed to them by a user,
and handle flag validation as part of their own implementation. For plugins written in Go, a set of utilities has been provided under [k8s.io/cli-runtime](https://github.com/kubernetes/cli-runtime) to assist with this.
{{< /note >}}
diff --git a/content/en/docs/tasks/federation/federation-service-discovery.md b/content/en/docs/tasks/federation/federation-service-discovery.md
index 6a8138193b..b80a6d8d22 100644
--- a/content/en/docs/tasks/federation/federation-service-discovery.md
+++ b/content/en/docs/tasks/federation/federation-service-discovery.md
@@ -135,7 +135,7 @@ Events:
```
{{< note >}}
-**Note:** The 'LoadBalancer Ingress' addresses of your Federated Service
+The 'LoadBalancer Ingress' addresses of your Federated Service
correspond with the 'LoadBalancer Ingress' addresses of all of the
underlying Kubernetes services (once these have been allocated - this
may take a few seconds). For inter-cluster and inter-cloud-provider
@@ -222,7 +222,7 @@ nginx.mynamespace.myfederation.svc.europe-west1-d.example.com. CNAME 180
```
{{< note >}}
-**Note:** If your Federation is configured to use AWS Route53, you can use one of the equivalent AWS tools, for example:
+If your Federation is configured to use AWS Route53, you can use one of the equivalent AWS tools, for example:
``` shell
$ aws route53 list-hosted-zones
diff --git a/content/en/docs/tasks/federation/set-up-cluster-federation-kubefed.md b/content/en/docs/tasks/federation/set-up-cluster-federation-kubefed.md
index e6db7c3c31..739d143931 100644
--- a/content/en/docs/tasks/federation/set-up-cluster-federation-kubefed.md
+++ b/content/en/docs/tasks/federation/set-up-cluster-federation-kubefed.md
@@ -44,7 +44,7 @@ Download the client tarball corresponding to the particular release and
extract the binaries in the tarball:
{{< note >}}
-**Note:** Until Kubernetes version `1.8.x` the federation project was
+Until Kubernetes version `1.8.x` the federation project was
maintained as part of the [core kubernetes repo](https://github.com/kubernetes/kubernetes).
Between Kubernetes releases `1.8` and `1.9`, the federation project moved into
a separate [federation repo](https://github.com/kubernetes/federation), where it is
@@ -59,7 +59,7 @@ curl -LO https://storage.googleapis.com/kubernetes-release/release/${RELEASE-VER
tar -xzvf kubernetes-client-linux-amd64.tar.gz
```
{{< note >}}
-**Note:** The `RELEASE-VERSION` variable should either be set to or replaced with the actual version needed.
+The `RELEASE-VERSION` variable should either be set to or replaced with the actual version needed.
{{< /note >}}
Copy the extracted binary to one of the directories in your `$PATH`
@@ -78,7 +78,7 @@ tar -xzvf federation-client-linux-amd64.tar.gz
```
{{< note >}}
-**Note:** The `RELEASE-VERSION` variable should be replaced with one of the release versions available at [federation release page](https://github.com/kubernetes/federation/releases).
+The `RELEASE-VERSION` variable should be replaced with one of the release versions available at [federation release page](https://github.com/kubernetes/federation/releases).
{{< /note >}}
Copy the extracted binary to one of the directories in your `$PATH`
@@ -179,7 +179,7 @@ modify a Google Kubernetes Engine cluster directly to add this scope, but you ca
new node pool for your cluster and delete the old one.
{{< note >}}
-**Note:** This will cause pods in the cluster to be rescheduled.
+This will cause pods in the cluster to be rescheduled.
{{< /note >}}
To add the new node pool, run:
@@ -200,8 +200,9 @@ gcloud container node-pools delete default-pool --cluster gke-cluster
`kubefed init` sets up the federation control plane in the host
cluster and also adds an entry for the federation API server in your
local kubeconfig.
+
{{< note >}}
-**Note:** In the beta release of Kubernetes 1.6, `kubefed init` does not automatically set the current context to the
+In the beta release of Kubernetes 1.6, `kubefed init` does not automatically set the current context to the
newly deployed federation. You can set the current context manually by running:
```shell
@@ -466,7 +467,7 @@ A new context has now been added to your kubeconfig named `fellowship` (after th
{{< note >}}
-**Note:** The name that you provide to the `join` command is used as the joining cluster's identity in federation. This name should adhere to the rules described in the [identifiers doc](/docs/concepts/overview/working-with-objects/names/). If the context
+The name that you provide to the `join` command is used as the joining cluster's identity in federation. This name should adhere to the rules described in the [identifiers doc](/docs/concepts/overview/working-with-objects/names/). If the context
corresponding to your joining cluster conforms to these rules, you can use the same name in the join command. Otherwise, you must choose a different name for your cluster's identity.
{{< /note >}}
@@ -515,7 +516,7 @@ kubefed join noldor --host-cluster-context=rivendell --secret-name=11kingdom
```
{{< note >}}
-**Note:** If your cluster name does not conform to the DNS subdomain name specification, all you need to do is supply the secret name using the `--secret-name` flag. `kubefed join` automatically creates the secret for you.
+If your cluster name does not conform to the DNS subdomain name specification, all you need to do is supply the secret name using the `--secret-name` flag. `kubefed join` automatically creates the secret for you.
{{< /note >}}
### `kube-dns` configuration
@@ -555,7 +556,7 @@ kubectl delete ns federation-system --context=rivendell
```
{{< note >}}
-**Note:** `rivendell` is the host cluster name. Replace that name with the appropriate name in your configuration.
+`rivendell` is the host cluster name. Replace that name with the appropriate name in your configuration.
{{< /note >}}
{{% /capture %}}
diff --git a/content/en/docs/tasks/federation/set-up-coredns-provider-federation.md b/content/en/docs/tasks/federation/set-up-coredns-provider-federation.md
index acfb9bf58b..b2379f79b9 100644
--- a/content/en/docs/tasks/federation/set-up-coredns-provider-federation.md
+++ b/content/en/docs/tasks/federation/set-up-coredns-provider-federation.md
@@ -118,15 +118,19 @@ coredns-provider.conf has below format:
- `zones` is the federation domain for which CoreDNS is authoritative and is same as --dns-zone-name flag of `kubefed init`.
- `coredns-endpoints` is the endpoint to access CoreDNS server. This is an optional parameter introduced from v1.7 onwards.
-{{< note >}}**Note**: *plugins.etcd.zones in CoreDNS configuration and --dns-zone-name flag to kubefed init should match.*{{< /note >}}
+{{< note >}}
+`plugins.etcd.zones` in the CoreDNS configuration and the `--dns-zone-name` flag to `kubefed init` should match.
+{{< /note >}}
## Setup CoreDNS server in nameserver resolv.conf chain
-*Note: The following section applies only to versions prior to v1.7
+{{< note >}}
+The following section applies only to versions prior to v1.7
and will be automatically taken care of if the `coredns-endpoints`
parameter is configured in `coredns-provider.conf` as described in
-section above.*
+section above.
+{{< /note >}}
Once the federation control plane is deployed and federated clusters
are joined to the federation, you need to add the CoreDNS server to the
diff --git a/content/en/docs/tasks/inject-data-application/define-command-argument-container.md b/content/en/docs/tasks/inject-data-application/define-command-argument-container.md
index d920dacdfb..64fc918206 100644
--- a/content/en/docs/tasks/inject-data-application/define-command-argument-container.md
+++ b/content/en/docs/tasks/inject-data-application/define-command-argument-container.md
@@ -35,7 +35,7 @@ If you define args, but do not define a command, the default command is used
with your new arguments.
{{< note >}}
-**Note:** the `command` field corresponds to `entrypoint` in some container
+The `command` field corresponds to `entrypoint` in some container
runtimes. Refer to the [Notes](#notes) below.
{{< /note >}}
@@ -85,7 +85,7 @@ and
[Secrets](/docs/concepts/configuration/secret/).
{{< note >}}
-**Note:** The environment variable appears in parentheses, `"$(VAR)"`. This is
+The environment variable appears in parentheses, `"$(VAR)"`. This is
required for the variable to be expanded in the `command` or `args` field.
{{< /note >}}
diff --git a/content/en/docs/tasks/inject-data-application/define-environment-variable-container.md b/content/en/docs/tasks/inject-data-application/define-environment-variable-container.md
index 89263d8661..f43c4cdc22 100644
--- a/content/en/docs/tasks/inject-data-application/define-environment-variable-container.md
+++ b/content/en/docs/tasks/inject-data-application/define-environment-variable-container.md
@@ -79,7 +79,7 @@ Pod:
1. To exit the shell, enter `exit`.
{{< note >}}
-**Note:** The environment variables set using the `env` or `envFrom` field
+The environment variables set using the `env` or `envFrom` field
will override any environment variables specified in the container image.
{{< /note >}}
diff --git a/content/en/docs/tasks/inject-data-application/distribute-credentials-secure.md b/content/en/docs/tasks/inject-data-application/distribute-credentials-secure.md
index 8e4f45d87c..3a086bd622 100644
--- a/content/en/docs/tasks/inject-data-application/distribute-credentials-secure.md
+++ b/content/en/docs/tasks/inject-data-application/distribute-credentials-secure.md
@@ -42,9 +42,10 @@ username and password:
```shell
kubectl create -f https://k8s.io/docs/tasks/inject-data-application/secret.yaml
```
-{{< note >}}
-**Note:** If you want to skip the Base64 encoding step, you can create a Secret by using the `kubectl create secret` command:
-{{< /note >}}
+ {{< note >}}
+ If you want to skip the Base64 encoding step, you can create a Secret by using the `kubectl create secret` command:
+ {{< /note >}}
+
```shell
kubectl create secret generic test-secret --from-literal=username='my-app' --from-literal=password='39528$vdg7Jb'
```
@@ -79,7 +80,7 @@ username and password:
{{< note >}}
-**Note:** If you want to skip the Base64 encoding step, you can create a Secret
+If you want to skip the Base64 encoding step, you can create a Secret
by using the `kubectl create secret` command:
{{< /note >}}
diff --git a/content/en/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information.md b/content/en/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information.md
index b3a3cca0f7..47e997e88c 100644
--- a/content/en/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information.md
+++ b/content/en/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information.md
@@ -49,7 +49,7 @@ The second element specifies that the value of the Pod's `annotations`
field should be stored in a file named `annotations`.
{{< note >}}
-**Note:** The fields in this example are Pod fields. They are not
+The fields in this example are Pod fields. They are not
fields of the Container in the Pod.
{{< /note >}}
@@ -139,7 +139,7 @@ atomically using
[rename(2)](http://man7.org/linux/man-pages/man2/rename.2.html).
{{< note >}}
-**Note:** A container using Downward API as a
+A container using Downward API as a
[subPath](/docs/concepts/storage/volumes/#using-subpath) volume mount will not
receive Downward API updates.
{{< /note >}}
@@ -221,7 +221,7 @@ In addition, the following information is available through
* `metadata.annotations` - all of the pod鈥檚 annotations, formatted as `annotation-key="escaped-annotation-value"` with one annotation per line
{{< note >}}
-**Note:** If CPU and memory limits are not specified for a Container, the
+If CPU and memory limits are not specified for a Container, the
Downward API defaults to the node allocatable value for CPU and memory.
{{< /note >}}
diff --git a/content/en/docs/tasks/inject-data-application/environment-variable-expose-pod-information.md b/content/en/docs/tasks/inject-data-application/environment-variable-expose-pod-information.md
index cb82dd3758..2c543b1d6f 100644
--- a/content/en/docs/tasks/inject-data-application/environment-variable-expose-pod-information.md
+++ b/content/en/docs/tasks/inject-data-application/environment-variable-expose-pod-information.md
@@ -48,7 +48,7 @@ variable gets its value from the Pod's `spec.nodeName` field. Similarly, the
other environment variables get their names from Pod fields.
{{< note >}}
-**Note:** The fields in this example are Pod fields. They are not fields of the
+The fields in this example are Pod fields. They are not fields of the
Container in the Pod.
{{< /note >}}
diff --git a/content/en/docs/tasks/job/automated-tasks-with-cron-jobs.md b/content/en/docs/tasks/job/automated-tasks-with-cron-jobs.md
index 4834e7ee91..df359ab7de 100644
--- a/content/en/docs/tasks/job/automated-tasks-with-cron-jobs.md
+++ b/content/en/docs/tasks/job/automated-tasks-with-cron-jobs.md
@@ -14,9 +14,11 @@ These automated jobs run like [Cron](https://en.wikipedia.org/wiki/Cron) tasks o
Cron jobs are useful for creating periodic and recurring tasks, like running backups or sending emails.
Cron jobs can also schedule individual tasks for a specific time, such as if you want to schedule a job for a low activity period.
-**Note:** CronJob resource in `batch/v2alpha1` API group has been deprecated starting from cluster version 1.8.
+{{< note >}}
+CronJob resource in `batch/v2alpha1` API group has been deprecated starting from cluster version 1.8.
You should switch to using `batch/v1beta1`, instead, which is enabled by default in the API server.
Examples in this document use `batch/v1beta1` in all examples.
+{{< /note >}}
Cron jobs have limitations and idiosyncrasies.
For example, in certain circumstances, a single cron job can create multiple jobs.
@@ -123,7 +125,9 @@ and [using kubectl to manage resources](/docs/user-guide/working-with-resources)
A cron job config also needs a [`.spec` section](https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status).
-**Note:** All modifications to a cron job, especially its `.spec`, are applied only to the following runs.
+{{< note >}}
+All modifications to a cron job, especially its `.spec`, are applied only to the following runs.
+{{< /note >}}
### Schedule
@@ -139,8 +143,9 @@ The format also includes extended `vixie cron` step values. As explained in the
> ``0,2,4,6,8,10,12,14,16,18,20,22''). Steps are also permitted after an
> asterisk, so if you want to say ``every two hours'', just use ``*/2''.
-
-**Note:** The question mark (`?`) in the schedule has the same meaning as an asterisk `*`, that is, it stands for any of available value for a given field.
+{{< note >}}
+The question mark (`?`) in the schedule has the same meaning as an asterisk `*`, that is, it stands for any of available value for a given field.
+{{< /note >}}
### Job Template
@@ -187,7 +192,7 @@ This setting does not apply to already started executions.
Defaults to false.
{{< caution >}}
-**Caution:** Executions that are suspended during their scheduled time count as missed jobs.
+Executions that are suspended during their scheduled time count as missed jobs.
When `.spec.suspend` changes from `true` to `false` on an existing cron job without a [starting deadline](#starting-deadline), the missed jobs are scheduled immediately.
{{< /caution >}}
diff --git a/content/en/docs/tasks/manage-daemon/rollback-daemon-set.md b/content/en/docs/tasks/manage-daemon/rollback-daemon-set.md
index fbd57b98c0..b522ecc8ed 100644
--- a/content/en/docs/tasks/manage-daemon/rollback-daemon-set.md
+++ b/content/en/docs/tasks/manage-daemon/rollback-daemon-set.md
@@ -140,7 +140,7 @@ previous revision through other commands, such as `kubectl edit` or `kubectl
apply`.
{{< note >}}
-**Note:** DaemonSet revisions only roll forward. That is to say, after a
+DaemonSet revisions only roll forward. That is to say, after a
rollback completes, the revision number (`.revision` field) of the
`ControllerRevision` being rolled back to will advance. For example, if you
have revision 1 and 2 in the system, and roll back from revision 2 to revision
diff --git a/content/en/docs/tasks/manage-daemon/update-daemon-set.md b/content/en/docs/tasks/manage-daemon/update-daemon-set.md
index d2cd15cdcd..4b380f772d 100644
--- a/content/en/docs/tasks/manage-daemon/update-daemon-set.md
+++ b/content/en/docs/tasks/manage-daemon/update-daemon-set.md
@@ -159,9 +159,10 @@ kubectl get pods -l = -o wide
```
Once you've found those nodes, delete some non-DaemonSet pods from the node to
-make room for new DaemonSet pods.
+make room for new DaemonSet pods.
+
{{< note >}}
-**Note:** This will cause service disruption when deleted pods are not controlled by any controllers or pods are not
+This will cause service disruption when deleted pods are not controlled by any controllers or pods are not
replicated. This does not respect [PodDisruptionBudget](/docs/tasks/configure-pod-container/configure-pod-disruption-budget/)
either.
{{< /note >}}
diff --git a/content/en/docs/tasks/run-application/configure-pdb.md b/content/en/docs/tasks/run-application/configure-pdb.md
index 7c291da37d..36a06dedda 100644
--- a/content/en/docs/tasks/run-application/configure-pdb.md
+++ b/content/en/docs/tasks/run-application/configure-pdb.md
@@ -91,7 +91,7 @@ of the number of pods from that set that can be unavailable after the eviction.
It can be either an absolute number or a percentage.
{{< note >}}
-**Note:** For versions 1.8 and earlier: When creating a `PodDisruptionBudget`
+For versions 1.8 and earlier: When creating a `PodDisruptionBudget`
object using the `kubectl` command line tool, the `minAvailable` field has a
default value of 1 if neither `minAvailable` nor `maxUnavailable` is specified.
{{< /note >}}
@@ -117,12 +117,14 @@ of the desired replicas are unhealthy.
In typical usage, a single budget would be used for a collection of pods managed by
a controller鈥攆or example, the pods in a single ReplicaSet or StatefulSet.
-**Note:** A disruption budget does not truly guarantee that the specified
+{{< note >}}
+A disruption budget does not truly guarantee that the specified
number/percentage of pods will always be up. For example, a node that hosts a
pod from the collection may fail when the collection is at the minimum size
specified in the budget, thus bringing the number of available pods from the
collection below the specified size. The budget can only protect against
voluntary evictions, not all causes of unavailability.
+{{< /note >}}
A `maxUnavailable` of 0% (or 0) or a `minAvailable` of 100% (or equal to the
number of replicas) may block node drains entirely. This is permitted as per the
diff --git a/content/en/docs/tasks/run-application/delete-stateful-set.md b/content/en/docs/tasks/run-application/delete-stateful-set.md
index 564d18114e..7c2db63971 100644
--- a/content/en/docs/tasks/run-application/delete-stateful-set.md
+++ b/content/en/docs/tasks/run-application/delete-stateful-set.md
@@ -59,7 +59,9 @@ kubectl delete pods -l app=myapp
Deleting the Pods in a StatefulSet will not delete the associated volumes. This is to ensure that you have the chance to copy data off the volume before deleting it. Deleting the PVC after the pods have left the [terminating state](/docs/concepts/workloads/pods/pod/#termination-of-pods) might trigger deletion of the backing Persistent Volumes depending on the storage class and reclaim policy. You should never assume ability to access a volume after claim deletion.
-**Note: Use caution when deleting a PVC, as it may lead to data loss.**
+{{< note >}}
+Use caution when deleting a PVC, as it may lead to data loss.
+{{< /note >}}
### Complete deletion of a StatefulSet
diff --git a/content/en/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md b/content/en/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md
index ce32d26691..39ab3fd150 100644
--- a/content/en/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md
+++ b/content/en/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md
@@ -130,9 +130,11 @@ NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
php-apache 7 7 7 7 19m
```
-**Note** Sometimes it may take a few minutes to stabilize the number of replicas.
-Since the amount of load is not controlled in any way it may happen that the final number of replicas will
-differ from this example.
+{{< note >}}
+It may take a few minutes to stabilize the number of replicas. Since the amount
+of load is not controlled in any way it may happen that the final number of replicas
+will differ from this example.
+{{< /note >}}
## Stop load
@@ -156,7 +158,7 @@ php-apache 1 1 1 1 27m
Here CPU utilization dropped to 0, and so HPA autoscaled the number of replicas back down to 1.
{{< note >}}
-**Note** autoscaling the replicas may take a few minutes.
+Autoscaling the replicas may take a few minutes.
{{< /note >}}
{{% /capture %}}
diff --git a/content/en/docs/tasks/run-application/horizontal-pod-autoscale.md b/content/en/docs/tasks/run-application/horizontal-pod-autoscale.md
index c3fd52981a..47e22881a0 100644
--- a/content/en/docs/tasks/run-application/horizontal-pod-autoscale.md
+++ b/content/en/docs/tasks/run-application/horizontal-pod-autoscale.md
@@ -222,11 +222,11 @@ upscale delay.
The default value is 5 minutes (`5m0s`).
{{< note >}}
-**Note**: When tuning these parameter values, a cluster operator should be aware of
-the possible consequences. If the delay (cooldown) value is set too long, there
-could be complaints that the Horizontal Pod Autoscaler is not responsive to workload
-changes. However, if the delay value is set too short, the scale of the replicas set
-may keep thrashing as usual.
+When tuning these parameter values, a cluster operator should be aware of the possible
+consequences. If the delay (cooldown) value is set too long, there could be complaints
+that the Horizontal Pod Autoscaler is not responsive to workload changes. However, if
+the delay value is set too short, the scale of the replicas set may keep thrashing as
+usual.
{{< /note >}}
## Support for multiple metrics
@@ -238,10 +238,12 @@ proposed scales will be used as the new scale.
## Support for custom metrics
-**Note**: Kubernetes 1.2 added alpha support for scaling based on application-specific metrics using special annotations.
+{{< note >}}
+Kubernetes 1.2 added alpha support for scaling based on application-specific metrics using special annotations.
Support for these annotations was removed in Kubernetes 1.6 in favor of the new autoscaling API. While the old method for collecting
custom metrics is still available, these metrics will not be available for use by the Horizontal Pod Autoscaler, and the former
annotations for specifying which custom metrics to scale on are no longer honored by the Horizontal Pod Autoscaler controller.
+{{< /note >}}
Kubernetes 1.6 adds support for making use of custom metrics in the Horizontal Pod Autoscaler.
You can add custom metrics for the Horizontal Pod Autoscaler to use in the `autoscaling/v2beta2` API.
diff --git a/content/en/docs/tasks/run-application/rolling-update-replication-controller.md b/content/en/docs/tasks/run-application/rolling-update-replication-controller.md
index 63db0a2ac0..e0ace5c4c9 100644
--- a/content/en/docs/tasks/run-application/rolling-update-replication-controller.md
+++ b/content/en/docs/tasks/run-application/rolling-update-replication-controller.md
@@ -9,7 +9,7 @@ weight: 80
{{% capture overview %}}
{{< note >}}
-**Note**: The preferred way to create a replicated application is to use a
+The preferred way to create a replicated application is to use a
[Deployment](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#deployment-v1-apps),
which in turn uses a
[ReplicaSet](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#replicaset-v1-apps).
diff --git a/content/en/docs/tasks/service-catalog/install-service-catalog-using-helm.md b/content/en/docs/tasks/service-catalog/install-service-catalog-using-helm.md
index 5b5c7e562d..728d7a8950 100644
--- a/content/en/docs/tasks/service-catalog/install-service-catalog-using-helm.md
+++ b/content/en/docs/tasks/service-catalog/install-service-catalog-using-helm.md
@@ -68,7 +68,7 @@ AUTHORIZATION_MODE=Node,RBAC hack/local-up-cluster.sh -O
By default, `helm init` installs the Tiller Pod into the `kube-system` namespace, with Tiller configured to use the `default` service account.
{{< note >}}
-**NOTE:** If you used the `--tiller-namespace` or `--service-account` flags when running `helm init`, the `--serviceaccount` flag in the following command needs to be adjusted to reference the appropriate namespace and ServiceAccount name.
+If you used the `--tiller-namespace` or `--service-account` flags when running `helm init`, the `--serviceaccount` flag in the following command needs to be adjusted to reference the appropriate namespace and ServiceAccount name.
{{< /note >}}
Configure Tiller to have `cluster-admin` access:
diff --git a/content/en/docs/tasks/tls/managing-tls-in-a-cluster.md b/content/en/docs/tasks/tls/managing-tls-in-a-cluster.md
index dba3f0e142..2180f05d36 100644
--- a/content/en/docs/tasks/tls/managing-tls-in-a-cluster.md
+++ b/content/en/docs/tasks/tls/managing-tls-in-a-cluster.md
@@ -50,7 +50,7 @@ The following section demonstrates how to create a TLS certificate for a
Kubernetes service accessed through DNS.
{{< note >}}
-**Note:** This tutorial uses CFSSL: Cloudflare's PKI and TLS toolkit [click here](https://blog.cloudflare.com/introducing-cfssl/) to know more.
+This tutorial uses CFSSL: Cloudflare's PKI and TLS toolkit [click here](https://blog.cloudflare.com/introducing-cfssl/) to know more.
{{< /note >}}
## Download and install CFSSL
diff --git a/content/en/docs/tasks/tools/install-kubectl.md b/content/en/docs/tasks/tools/install-kubectl.md
index e7f78b98cd..165c6e1586 100644
--- a/content/en/docs/tasks/tools/install-kubectl.md
+++ b/content/en/docs/tasks/tools/install-kubectl.md
@@ -106,7 +106,7 @@ If you are on Windows and using [Powershell Gallery](https://www.powershellgalle
```
{{< note >}}
-**Note:** If you do not specify a `DownloadLocation`, `kubectl` will be installed in the user's temp Directory.
+ If you do not specify a `DownloadLocation`, `kubectl` will be installed in the user's temp Directory.
{{< /note >}}
The installer creates `$HOME/.kube` and instructs it to create a config file
@@ -118,7 +118,7 @@ If you are on Windows and using [Powershell Gallery](https://www.powershellgalle
```
{{< note >}}
-**Note:** Updating the installation is performed by rerunning the two commands listed in step 1.
+ Updating the installation is performed by rerunning the two commands listed in step 1.
{{< /note >}}
## Install with Chocolatey on Windows
@@ -153,9 +153,13 @@ If you are on Windows and using [Chocolatey](https://chocolatey.org) package man
```
6. Configure kubectl to use a remote Kubernetes cluster:
- New-Item config -type file
+
+ ```
+ New-Item config -type file
+ ```
+
{{< note >}}
- **Note:** Edit the config file with a text editor of your choice, such as Notepad.
+ Edit the config file with a text editor of your choice, such as Notepad.
{{< /note >}}
## Download as part of the Google Cloud SDK
diff --git a/content/en/docs/tasks/tools/install-minikube.md b/content/en/docs/tasks/tools/install-minikube.md
index ad6fb28f73..ca56e7ef26 100644
--- a/content/en/docs/tasks/tools/install-minikube.md
+++ b/content/en/docs/tasks/tools/install-minikube.md
@@ -30,7 +30,7 @@ If you do not already have a hypervisor installed, install the appropriate one f
[KVM](http://www.linux-kvm.org/).
{{< note >}}
- **Note:** Minikube also supports a `-\-vm-driver=none` option that runs the Kubernetes components on the host and not in a VM. Using this driver requires Docker and a linux environment, but not a hypervisor.
+ Minikube also supports a `-\-vm-driver=none` option that runs the Kubernetes components on the host and not in a VM. Using this driver requires Docker and a linux environment, but not a hypervisor.
{{< /note >}}
* Windows: [VirtualBox](https://www.virtualbox.org/wiki/Downloads) or
diff --git a/content/en/docs/test.md b/content/en/docs/test.md
index 3866154477..e7faf57d12 100644
--- a/content/en/docs/test.md
+++ b/content/en/docs/test.md
@@ -157,7 +157,7 @@ $ echo 'Tab lists may contain code blocks!'
Nested header tags may also be included.
{{< warning >}}
-**Note**: Headers within tab lists will not appear in the Table of Contents.
+Headers within tab lists will not appear in the Table of Contents.
{{< /warning >}}
{{% /tab %}}
@@ -321,7 +321,7 @@ A sidebar offsets text visually, but without the visual prominence of
Admonitions (notes, warnings, etc) use Hugo shortcodes.
{{< note >}}
-**Note:** Notes catch the reader's attention without a sense of urgency.
+Notes catch the reader's attention without a sense of urgency.
You can have multiple paragraphs and block-level elements inside an admonition.
@@ -329,12 +329,12 @@ You can have multiple paragraphs and block-level elements inside an admonition.
{{< /note >}}
{{< caution >}}
-**Caution:** The reader should proceed with caution.
+The reader should proceed with caution.
{{< /caution >}}
{{< warning >}}
-**Warning:** Warnings point out something that could cause harm if ignored.
+Warnings point out something that could cause harm if ignored.
{{< /warning >}}
diff --git a/content/en/docs/tutorials/clusters/apparmor.md b/content/en/docs/tutorials/clusters/apparmor.md
index 9102185c38..ec35b1b3e1 100644
--- a/content/en/docs/tutorials/clusters/apparmor.md
+++ b/content/en/docs/tutorials/clusters/apparmor.md
@@ -65,9 +65,11 @@ Make sure:
If the Kubelet contains AppArmor support (>= v1.4), it will refuse to run a Pod with AppArmor
options if the kernel module is not enabled.
- **Note:** Ubuntu carries many AppArmor patches that have not been merged into the upstream Linux
- kernel, including patches that add additional hooks and features. Kubernetes has only been
- tested with the upstream version, and does not promise support for other features.
+ {{< note >}}
+ Ubuntu carries many AppArmor patches that have not been merged into the upstream Linux
+ kernel, including patches that add additional hooks and features. Kubernetes has only been
+ tested with the upstream version, and does not promise support for other features.
+ {{< /note >}}
3. Container runtime is Docker -- Currently the only Kubernetes-supported container runtime that
also supports AppArmor is Docker. As more runtimes add AppArmor support, the options will be
@@ -117,9 +119,11 @@ gke-test-default-pool-239f5d02-xwux: kubelet is posting ready status. AppArmor e
## Securing a Pod
-**Note:** AppArmor is currently in beta, so options are specified as annotations. Once support graduates to
+{{< note >}}
+AppArmor is currently in beta, so options are specified as annotations. Once support graduates to
general availability, the annotations will be replaced with first-class fields (more details in
[Upgrade path to GA](#upgrade-path-to-general-availability)).
+{{< /note >}}
AppArmor profiles are specified *per-container*. To specify the AppArmor profile to run a Pod
container with, add an annotation to the Pod's metadata:
diff --git a/content/en/docs/tutorials/hello-minikube.md b/content/en/docs/tutorials/hello-minikube.md
index 63f99066ce..6ce214c717 100644
--- a/content/en/docs/tutorials/hello-minikube.md
+++ b/content/en/docs/tutorials/hello-minikube.md
@@ -17,7 +17,7 @@ on Kubernetes using [Minikube](/docs/getting-started-guides/minikube) and Kataco
Katacoda provides a free, in-browser Kubernetes environment.
{{< note >}}
-**Note:** You can also follow this tutorial if you've installed Minikube locally.
+You can also follow this tutorial if you've installed Minikube locally.
{{< /note >}}
{{% /capture %}}
@@ -51,7 +51,8 @@ For more information, read the Docker documentation for [docker build](https://d
{{< kat-button >}}
{{< note >}}
- **Note:** If you installed Minikube locally, run
+ If you installed Minikube locally, run
+
```shell
minikube start
```
@@ -121,7 +122,7 @@ Pod runs a Container based on the provided Docker image.
```
{{< note >}}
- **Note:** For more information about `kubectl`commands, see the
+ For more information about `kubectl`commands, see the
[kubectl overview](/docs/user-guide/kubectl-overview/).
{{< /note >}}
@@ -200,7 +201,6 @@ Minikube has a set of built-in addons that can be enabled, disabled and opened i
- storage-provisioner: enabled
```
{{< note >}}
- **Note:**
Minikube must be running for these commands to take effect.
{{< /note >}}
diff --git a/content/en/docs/tutorials/stateful-application/basic-stateful-set.md b/content/en/docs/tutorials/stateful-application/basic-stateful-set.md
index 490d14ed83..93fee4e210 100644
--- a/content/en/docs/tutorials/stateful-application/basic-stateful-set.md
+++ b/content/en/docs/tutorials/stateful-application/basic-stateful-set.md
@@ -284,7 +284,7 @@ web-1
```
{{< note >}}
-**Note:** If you instead see 403 Forbidden responses for the above curl command,
+If you instead see 403 Forbidden responses for the above curl command,
you will need to fix the permissions of the directory mounted by the `volumeMounts`
(due to a [bug when using hostPath volumes](https://github.com/kubernetes/kubernetes/issues/2630)) with:
diff --git a/content/en/docs/tutorials/stateful-application/cassandra.md b/content/en/docs/tutorials/stateful-application/cassandra.md
index f1cd0c0d46..7313f8c0e0 100644
--- a/content/en/docs/tutorials/stateful-application/cassandra.md
+++ b/content/en/docs/tutorials/stateful-application/cassandra.md
@@ -48,13 +48,13 @@ To complete this tutorial, you should already have a basic familiarity with [Pod
* Have a supported Kubernetes cluster running
{{< note >}}
-**Note:** Please read the [getting started guides](/docs/setup/pick-right-solution/) if you do not already have a cluster.
+Please read the [getting started guides](/docs/setup/pick-right-solution/) if you do not already have a cluster.
{{< /note >}}
### Additional Minikube Setup Instructions
{{< caution >}}
-**Caution:** [Minikube](/docs/getting-started-guides/minikube/) defaults to 1024MB of memory and 1 CPU. Running Minikube with the default resource configuration results in insufficient resource errors during this tutorial. To avoid these errors, start Minikube with the following settings:
+[Minikube](/docs/getting-started-guides/minikube/) defaults to 1024MB of memory and 1 CPU. Running Minikube with the default resource configuration results in insufficient resource errors during this tutorial. To avoid these errors, start Minikube with the following settings:
```shell
minikube start --memory 5120 --cpus=4
@@ -101,7 +101,7 @@ Service creation failed if anything else is returned. Read [Debug Services](/doc
The StatefulSet manifest, included below, creates a Cassandra ring that consists of three Pods.
{{< note >}}
-**Note:** This example uses the default provisioner for Minikube. Please update the following StatefulSet for the cloud you are working with.
+This example uses the default provisioner for Minikube. Please update the following StatefulSet for the cloud you are working with.
{{< /note >}}
{{< codenew file="application/cassandra/cassandra-statefulset.yaml" >}}
@@ -228,7 +228,7 @@ Use `kubectl edit` to modify the size of a Cassandra StatefulSet.
Deleting or scaling a StatefulSet down does not delete the volumes associated with the StatefulSet. This setting is for your safety because your data is more valuable than automatically purging all related StatefulSet resources.
{{< warning >}}
-**Warning:** Depending on the storage class and reclaim policy, deleting the *PersistentVolumeClaims* may cause the associated volumes to also be deleted. Never assume you鈥檒l be able to access data if its volume claims are deleted.
+Depending on the storage class and reclaim policy, deleting the *PersistentVolumeClaims* may cause the associated volumes to also be deleted. Never assume you鈥檒l be able to access data if its volume claims are deleted.
{{< /warning >}}
1. Run the following commands (chained together into a single command) to delete everything in the Cassandra `StatefulSet`:
diff --git a/content/en/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume.md b/content/en/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume.md
index acebf69d6e..63b6b032db 100644
--- a/content/en/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume.md
+++ b/content/en/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume.md
@@ -12,11 +12,11 @@ This tutorial shows you how to deploy a WordPress site and a MySQL database usin
A [PersistentVolume](/docs/concepts/storage/persistent-volumes/) (PV) is a piece of storage in the cluster that has been manually provisioned by an administrator, or dynamically provisioned by Kubernetes using a [StorageClass](/docs/concepts/storage/storage-classes). A [PersistentVolumeClaim](/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims) (PVC) is a request for storage by a user that can be fulfilled by a PV. PersistentVolumes and PersistentVolumeClaims are independent from Pod lifecycles and preserve data through restarting, rescheduling, and even deleting Pods.
{{< warning >}}
-**Warning:** This deployment is not suitable for production use cases, as it uses single instance WordPress and MySQL Pods. Consider using [WordPress Helm Chart](https://github.com/kubernetes/charts/tree/master/stable/wordpress) to deploy WordPress in production.
+This deployment is not suitable for production use cases, as it uses single instance WordPress and MySQL Pods. Consider using [WordPress Helm Chart](https://github.com/kubernetes/charts/tree/master/stable/wordpress) to deploy WordPress in production.
{{< /warning >}}
{{< note >}}
-**Note:** The files provided in this tutorial are using GA Deployment APIs and are specific to kubernetes version 1.9 and later. If you wish to use this tutorial with an earlier version of Kubernetes, please update the API version appropriately, or reference earlier versions of this tutorial.
+The files provided in this tutorial are using GA Deployment APIs and are specific to kubernetes version 1.9 and later. If you wish to use this tutorial with an earlier version of Kubernetes, please update the API version appropriately, or reference earlier versions of this tutorial.
{{< /note >}}
{{% /capture %}}
@@ -53,15 +53,15 @@ Many cluster environments have a default StorageClass installed. When a Storage
When a PersistentVolumeClaim is created, a PersistentVolume is dynamically provisioned based on the StorageClass configuration.
{{< warning >}}
-**Warning:** In local clusters, the default StorageClass uses the `hostPath` provisioner. `hostPath` volumes are only suitable for development and testing. With `hostPath` volumes, your data lives in `/tmp` on the node the Pod is scheduled onto and does not move between nodes. If a Pod dies and gets scheduled to another node in the cluster, or the node is rebooted, the data is lost.
+In local clusters, the default StorageClass uses the `hostPath` provisioner. `hostPath` volumes are only suitable for development and testing. With `hostPath` volumes, your data lives in `/tmp` on the node the Pod is scheduled onto and does not move between nodes. If a Pod dies and gets scheduled to another node in the cluster, or the node is rebooted, the data is lost.
{{< /warning >}}
{{< note >}}
-**Note:** If you are bringing up a cluster that needs to use the `hostPath` provisioner, the `--enable-hostpath-provisioner` flag must be set in the `controller-manager` component.
+If you are bringing up a cluster that needs to use the `hostPath` provisioner, the `--enable-hostpath-provisioner` flag must be set in the `controller-manager` component.
{{< /note >}}
{{< note >}}
-**Note:** If you have a Kubernetes cluster running on Google Kubernetes Engine, please follow [this guide](https://cloud.google.com/kubernetes-engine/docs/tutorials/persistent-disk).
+If you have a Kubernetes cluster running on Google Kubernetes Engine, please follow [this guide](https://cloud.google.com/kubernetes-engine/docs/tutorials/persistent-disk).
{{< /note >}}
## Create a Secret for MySQL Password
@@ -89,7 +89,7 @@ A [Secret](/docs/concepts/configuration/secret/) is an object that stores a piec
```
{{< note >}}
-**Note:** To protect the Secret from exposure, neither `get` nor `describe` show its contents.
+To protect the Secret from exposure, neither `get` nor `describe` show its contents.
{{< /note >}}
## Deploy MySQL
@@ -124,7 +124,9 @@ The following manifest describes a single-instance MySQL Deployment. The MySQL c
kubectl get pods
```
- {{< note >}}**Note:** It can take up to a few minutes for the Pod's Status to be `RUNNING`.{{< /note >}}
+ {{< note >}}
+ It can take up to a few minutes for the Pod's Status to be `RUNNING`.
+ {{< /note >}}
The response should be like this:
@@ -151,7 +153,9 @@ The following manifest describes a single-instance WordPress Deployment and Serv
kubectl get pvc
```
- {{< note >}}**Note:** It can take up to a few minutes for the PVs to be provisioned and bound.{{< /note >}}
+ {{< note >}}
+ It can take up to a few minutes for the PVs to be provisioned and bound.
+ {{< /note >}}
The response should be like this:
@@ -173,7 +177,9 @@ The following manifest describes a single-instance WordPress Deployment and Serv
wordpress ClusterIP 10.0.0.89 80:32406/TCP 4m
```
- {{< note >}}**Note:** Minikube can only expose Services through `NodePort`. The EXTERNAL-IP is always pending.{{< /note >}}
+ {{< note >}}
+ Minikube can only expose Services through `NodePort`. The EXTERNAL-IP is always pending.
+ {{< /note >}}
4. Run the following command to get the IP Address for the WordPress Service:
@@ -194,7 +200,7 @@ The following manifest describes a single-instance WordPress Deployment and Serv

{{< warning >}}
-**Warning:** Do not leave your WordPress installation on this page. If another user finds it, they can set up a website on your instance and use it to serve malicious content.
Either install WordPress by creating a username and password or delete your instance.
+Do not leave your WordPress installation on this page. If another user finds it, they can set up a website on your instance and use it to serve malicious content.
Either install WordPress by creating a username and password or delete your instance.
{{< /warning >}}
{{% /capture %}}
diff --git a/content/en/docs/tutorials/stateless-application/guestbook.md b/content/en/docs/tutorials/stateless-application/guestbook.md
index 1b65910f27..2d82a7a045 100644
--- a/content/en/docs/tutorials/stateless-application/guestbook.md
+++ b/content/en/docs/tutorials/stateless-application/guestbook.md
@@ -70,7 +70,7 @@ The manifest file, included below, specifies a Deployment controller that runs a
```
{{< note >}}
-**Note:** Replace POD-NAME with the name of your Pod.
+Replace POD-NAME with the name of your Pod.
{{< /note >}}
### Creating the Redis Master Service
@@ -100,7 +100,7 @@ The guestbook applications needs to communicate to the Redis master to write its
```
{{< note >}}
-**Note:** This manifest file creates a Service named `redis-master` with a set of labels that match the labels previously defined, so the Service routes network traffic to the Redis master Pod.
+This manifest file creates a Service named `redis-master` with a set of labels that match the labels previously defined, so the Service routes network traffic to the Redis master Pod.
{{< /note >}}
@@ -200,7 +200,7 @@ The `redis-slave` and `redis-master` Services you applied are only accessible wi
If you want guests to be able to access your guestbook, you must configure the frontend Service to be externally visible, so a client can request the Service from outside the container cluster. Minikube can only expose Services through `NodePort`.
{{< note >}}
-**Note:** Some cloud providers, like Google Compute Engine or Google Kubernetes Engine, support external load balancers. If your cloud provider supports load balancers and you want to use it, simply delete or comment out `type: NodePort`, and uncomment `type: LoadBalancer`.
+Some cloud providers, like Google Compute Engine or Google Kubernetes Engine, support external load balancers. If your cloud provider supports load balancers and you want to use it, simply delete or comment out `type: NodePort`, and uncomment `type: LoadBalancer`.
{{< /note >}}
{{< codenew file="application/guestbook/frontend-service.yaml" >}}
diff --git a/content/en/includes/federation-current-state.md b/content/en/includes/federation-current-state.md
index 97d26cf075..d04fda15e0 100644
--- a/content/en/includes/federation-current-state.md
+++ b/content/en/includes/federation-current-state.md
@@ -1 +1 @@
-**Note:** `Federation V1`, the current Kubernetes federation API which reuses the Kubernetes API resources 'as is', is currently considered alpha for many of its features. There is no clear path to evolve the API to GA; however, there is a `Federation V2` effort in progress to implement a dedicated federation API apart from the Kubernetes API. The details are available at [sig-multicluster community page](https://github.com/kubernetes/community/tree/master/sig-multicluster).
+`Federation V1`, the current Kubernetes federation API which reuses the Kubernetes API resources 'as is', is currently considered alpha for many of its features. There is no clear path to evolve the API to GA; however, there is a `Federation V2` effort in progress to implement a dedicated federation API apart from the Kubernetes API. The details are available at [sig-multicluster community page](https://github.com/kubernetes/community/tree/master/sig-multicluster).
diff --git a/content/ko/docs/setup/custom-cloud/kubespray.md b/content/ko/docs/setup/custom-cloud/kubespray.md
index 11671b501c..b181b087e9 100644
--- a/content/ko/docs/setup/custom-cloud/kubespray.md
+++ b/content/ko/docs/setup/custom-cloud/kubespray.md
@@ -103,7 +103,7 @@ You can upgrade your cluster by running the upgrade-cluster playbook. For more i
You can reset your nodes and wipe out all components installed with Kubespray via the [reset playbook](https://github.com/kubernetes-incubator/kubespray/blob/master/reset.yml).
{{< caution >}}
-**Caution:** When running the reset playbook, be sure not to accidentally target your production cluster!
+When running the reset playbook, be sure not to accidentally target your production cluster!
{{< /caution >}}
## Feedback
diff --git a/content/ko/docs/setup/independent/create-cluster-kubeadm.md b/content/ko/docs/setup/independent/create-cluster-kubeadm.md
index f658956e1b..c867a11024 100644
--- a/content/ko/docs/setup/independent/create-cluster-kubeadm.md
+++ b/content/ko/docs/setup/independent/create-cluster-kubeadm.md
@@ -97,7 +97,7 @@ timeframe; which also applies to `kubeadm`.
See ["Installing kubeadm"](/docs/setup/independent/install-kubeadm/).
{{< note >}}
-**Note:** If you have already installed kubeadm, run `apt-get update &&
+If you have already installed kubeadm, run `apt-get update &&
apt-get upgrade` or `yum update` to get the latest version of kubeadm.
When you upgrade, the kubelet restarts every few seconds as it waits in a crashloop for
@@ -226,7 +226,7 @@ created, and deleted with the `kubeadm token` command. See the
### Installing a pod network add-on {#pod-network}
{{< caution >}}
-**Caution:** This section contains important information about installation and deployment order. Read it carefully before proceeding.
+This section contains important information about installation and deployment order. Read it carefully before proceeding.
{{< /caution >}}
You must install a pod network add-on so that your pods can communicate with
@@ -467,7 +467,7 @@ The output is similar to this:
```
{{< note >}}
-**Note:** To specify an IPv6 tuple for `:`, IPv6 address must be enclosed in square brackets, for example: `[fd00::101]:2073`.
+To specify an IPv6 tuple for `:`, IPv6 address must be enclosed in square brackets, for example: `[fd00::101]:2073`.
{{< /note >}}
The output should look something like:
@@ -500,7 +500,7 @@ kubectl --kubeconfig ./admin.conf get nodes
```
{{< note >}}
-**Note:** The example above assumes SSH access is enabled for root. If that is not the
+The example above assumes SSH access is enabled for root. If that is not the
case, you can copy the `admin.conf` file to be accessible by some other user
and `scp` using that other user instead.
diff --git a/content/ko/docs/setup/independent/high-availability.md b/content/ko/docs/setup/independent/high-availability.md
index d7cde10d82..363f29cf0b 100644
--- a/content/ko/docs/setup/independent/high-availability.md
+++ b/content/ko/docs/setup/independent/high-availability.md
@@ -20,7 +20,7 @@ with upgrading your clusters, for example. We encourage you to try either approa
and provide feedback.
{{< caution >}}
-**Caution**: This page does not address running your cluster on a cloud provider.
+This page does not address running your cluster on a cloud provider.
In a cloud environment, neither approach documented here works with Service objects
of type LoadBalancer, or with dynamic PersistentVolumes.
{{< /caution >}}
@@ -47,7 +47,7 @@ For the external etcd cluster only, you also need:
- Three additional machines for etcd members
{{< note >}}
-**Note**: The following examples run Calico as the Pod networking provider. If
+The following examples run Calico as the Pod networking provider. If
you run another networking provider, make sure to replace any default values as
needed.
{{< /note >}}
@@ -59,7 +59,7 @@ needed.
## First steps for both methods
{{< note >}}
-**Note**: All commands in this guide on any control plane or etcd node should be
+All commands in this guide on any control plane or etcd node should be
run as root.
{{< /note >}}
@@ -100,7 +100,7 @@ run as root.
### Create load balancer for kube-apiserver
{{< note >}}
-**Note**: There are many configurations for load balancers. The following
+There are many configurations for load balancers. The following
example is only one option. Your cluster requirements may need a
different configuration.
{{< /note >}}
@@ -138,7 +138,7 @@ different configuration.
### Bootstrap the first stacked control plane node
{{< note >}}
-**Note**: Optionally replace `stable` with a different version of Kubernetes, for example `v1.12.0`.
+Optionally replace `stable` with a different version of Kubernetes, for example `v1.12.0`.
{{< /note >}}
1. Create a `kubeadm-config.yaml` template file:
@@ -215,7 +215,7 @@ done
```
{{< note >}}
-**Note**: Remember that your config may differ from this example.
+Remember that your config may differ from this example.
{{< /note >}}
### Add the second stacked control plane node
@@ -435,7 +435,7 @@ done
1. Create a `kubeadm-config.yaml`:
{{< note >}}
-**Note**: Optionally replace `stable` with a different version of Kubernetes, for example `v1.11.3`.
+Optionally replace `stable` with a different version of Kubernetes, for example `v1.11.3`.
{{< /note >}}
apiVersion: kubeadm.k8s.io/v1alpha3
diff --git a/content/ko/docs/setup/independent/setup-ha-etcd-with-kubeadm.md b/content/ko/docs/setup/independent/setup-ha-etcd-with-kubeadm.md
index 2b53adbfa3..634df68995 100644
--- a/content/ko/docs/setup/independent/setup-ha-etcd-with-kubeadm.md
+++ b/content/ko/docs/setup/independent/setup-ha-etcd-with-kubeadm.md
@@ -36,7 +36,7 @@ The general approach is to generate all certs on one node and only distribute
the *necessary* files to the other nodes.
{{< note >}}
-**Note:** kubeadm contains all the necessary crytographic machinery to generate
+kubeadm contains all the necessary crytographic machinery to generate
the certificates described below; no other cryptographic tooling is required for
this example.
{{< /note >}}
diff --git a/content/ko/docs/setup/independent/troubleshooting-kubeadm.md b/content/ko/docs/setup/independent/troubleshooting-kubeadm.md
index 8a66795d50..950ea7bd23 100644
--- a/content/ko/docs/setup/independent/troubleshooting-kubeadm.md
+++ b/content/ko/docs/setup/independent/troubleshooting-kubeadm.md
@@ -255,7 +255,7 @@ kubectl -n kube-system get deployment coredns -o yaml | \
```
{{< warning >}}
-**Warning**: Disabling SELinux or setting `allowPrivilegeEscalation` to `true` can compromise
+Disabling SELinux or setting `allowPrivilegeEscalation` to `true` can compromise
the security of your cluster.
{{< /warning >}}
diff --git a/content/ko/docs/setup/multiple-zones.md b/content/ko/docs/setup/multiple-zones.md
index ea1d053fc3..0feb902f09 100644
--- a/content/ko/docs/setup/multiple-zones.md
+++ b/content/ko/docs/setup/multiple-zones.md
@@ -195,14 +195,16 @@ kubectl create -f - <}}
+For version 1.3+ Kubernetes will distribute dynamic PV claims across
the configured zones. For version 1.2, dynamic persistent volumes were
always created in the zone of the cluster master
(here us-central1-a / us-west-2a); that issue
([#23330](https://github.com/kubernetes/kubernetes/issues/23330))
was addressed in 1.3+.
+{{< /note >}}
-Now lets validate that Kubernetes automatically labeled the zone & region the PV was created in.
+Now let's validate that Kubernetes automatically labeled the zone & region the PV was created in.
```shell
> kubectl get pv --show-labels
diff --git a/content/ko/docs/setup/scratch.md b/content/ko/docs/setup/scratch.md
index ea0c97c8fc..20edb1feb3 100644
--- a/content/ko/docs/setup/scratch.md
+++ b/content/ko/docs/setup/scratch.md
@@ -483,11 +483,11 @@ You will need to run one or more instances of etcd.
- Not highly available, but easy to restore - Run one etcd instance, with its log written to a directory backed
by durable storage (RAID, GCE PD).
- {{< note >}}**Note:** May result in operations outages in case of
+ {{< note >}}May result in operations outages in case of
instance outage. {{< /note >}}
- Highly available - Run 3 or 5 etcd instances with non durable storage.
- {{< note >}}**Note:** Log can be written to non-durable storage
+ {{< note >}}Log can be written to non-durable storage
because storage is replicated.{{< /note >}}
See [cluster-troubleshooting](/docs/admin/cluster-troubleshooting/) for more discussion on factors affecting cluster
diff --git a/content/ko/docs/setup/turnkey/gce.md b/content/ko/docs/setup/turnkey/gce.md
index a69675a40e..153414a1a9 100644
--- a/content/ko/docs/setup/turnkey/gce.md
+++ b/content/ko/docs/setup/turnkey/gce.md
@@ -91,7 +91,7 @@ gcloud components install kubectl
```
{{< note >}}
-**Note:** The kubectl version bundled with `gcloud` may be older than the one
+The kubectl version bundled with `gcloud` may be older than the one
downloaded by the get.k8s.io install script. See [Installing kubectl](/docs/tasks/kubectl/install/)
document to see how you can set up the latest `kubectl` on your workstation.
{{< /note >}}
diff --git a/content/zh/docs/admin/kubelet-tls-bootstrapping.md b/content/zh/docs/admin/kubelet-tls-bootstrapping.md
index e195748965..92c3b2270c 100644
--- a/content/zh/docs/admin/kubelet-tls-bootstrapping.md
+++ b/content/zh/docs/admin/kubelet-tls-bootstrapping.md
@@ -186,11 +186,13 @@ kubectl config set-credentials kubelet-bootstrap --token=${BOOTSTRAP_TOKEN} --ku
When starting the kubelet, if the file specified by `--kubeconfig` does not exist, the bootstrap kubeconfig is used to request a client certificate from the API server. On approval of the certificate request and receipt back by the kubelet, a kubeconfig file referencing the generated key and obtained certificate is written to the path specified by `--kubeconfig`. The certificate and key file will be placed in the directory specified by `--cert-dir`.
-**Note:** The following flags are required to enable this bootstrapping when starting the kubelet:
+{{< note >}}
+The following flags are required to enable this bootstrapping when starting the kubelet:
```
--bootstrap-kubeconfig="/path/to/bootstrap/kubeconfig"
```
+{{< /note >}}
Additionally, in 1.7 the kubelet implements __alpha__ features for enabling rotation of both its client and/or serving certs.
These can be enabled through the respective `RotateKubeletClientCertificate` and `RotateKubeletServerCertificate` feature
diff --git a/content/zh/docs/concepts/configuration/taint-and-toleration.md b/content/zh/docs/concepts/configuration/taint-and-toleration.md
index a3c0eda8dd..388bb057c0 100755
--- a/content/zh/docs/concepts/configuration/taint-and-toleration.md
+++ b/content/zh/docs/concepts/configuration/taint-and-toleration.md
@@ -357,7 +357,7 @@ based on the Ready NodeCondition is disabled.
{{< note >}}
**娉ㄦ剰锛** 濡傛灉鎮ㄥ湪 Minikube 涓婅繍琛屾湇鍔★紝鎮ㄥ彲浠ラ氳繃浠ヤ笅鍛戒护鎵惧埌鍒嗛厤鐨 IP 鍦板潃鍜岀鍙o細
{{< /note >}}
diff --git a/content/zh/docs/tasks/access-application-cluster/list-all-running-container-images.md b/content/zh/docs/tasks/access-application-cluster/list-all-running-container-images.md
index a376b4c098..fb3850c3b0 100644
--- a/content/zh/docs/tasks/access-application-cluster/list-all-running-container-images.md
+++ b/content/zh/docs/tasks/access-application-cluster/list-all-running-container-images.md
@@ -102,7 +102,7 @@ jsonpath 瑙i噴濡備笅锛
{{< note >}}
diff --git a/content/zh/docs/tasks/access-application-cluster/load-balance-access-application-cluster.md b/content/zh/docs/tasks/access-application-cluster/load-balance-access-application-cluster.md
index 3308069220..b653c5aecb 100644
--- a/content/zh/docs/tasks/access-application-cluster/load-balance-access-application-cluster.md
+++ b/content/zh/docs/tasks/access-application-cluster/load-balance-access-application-cluster.md
@@ -109,7 +109,7 @@ load-balanced access to an application running in a cluster.
{{< note >}}
**娉ㄦ剰锛** 濡傛灉鎮ㄤ娇鐢 Minikube锛岄偅涔堟偍灏嗕笉浼氳幏寰楀閮 IP 鍦板潃銆傚閮 IP 鍦板潃灏嗕繚鎸 pending 鐘舵併
@@ -139,7 +139,7 @@ load-balanced access to an application running in a cluster.
{{< note >}}
**娉ㄦ剰锛** 濡傛灉鎮ㄤ娇鐢 Minikube锛岃緭鍏ヤ互涓嬪懡浠わ細
{{< /note >}}
diff --git a/content/zh/docs/tasks/access-application-cluster/port-forward-access-application-cluster.md b/content/zh/docs/tasks/access-application-cluster/port-forward-access-application-cluster.md
index 6bccf05cda..13eb4b1f49 100644
--- a/content/zh/docs/tasks/access-application-cluster/port-forward-access-application-cluster.md
+++ b/content/zh/docs/tasks/access-application-cluster/port-forward-access-application-cluster.md
@@ -200,7 +200,7 @@ local workstation to debug the database that is running in the pod.
{{< warning >}}
diff --git a/content/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-9.md b/content/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-9.md
index 56dae7aa97..6cde6e07cc 100644
--- a/content/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-9.md
+++ b/content/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-9.md
@@ -54,7 +54,7 @@ Before proceeding:
{{< caution >}}
**娉ㄦ剰:** 鐢变簬瀹瑰櫒鐨勫叿浣撳搱甯屽兼敼鍙樹簡锛屾墍鏈夌殑瀹瑰櫒鍦ㄥ崌绾т箣鍚庝細閲嶆柊鍚姩銆
@@ -98,7 +98,7 @@ chmod a+rx /usr/bin/kubeadm
{{< caution >}}
**娉ㄦ剰**: 绀轰緥涓殑 `net.ipv4.tcp_syncookies` 鍦↙inux 鍐呮牳 4.4 鎴栨洿浣庣殑鐗堟湰涓槸鏃犲懡鍚嶇┖闂寸殑銆
{{< /note >}}
@@ -226,7 +226,7 @@ spec:
{{< warning >}}
@@ -299,7 +299,7 @@ given sysctl is both allowed and forbidden.
{{< warning >}}
@@ -174,7 +174,7 @@ In both cases, audit events structure is defined by the API in the
{{< note >}}
diff --git a/content/zh/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information.md b/content/zh/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information.md
index a230f57afd..80e134d95e 100644
--- a/content/zh/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information.md
+++ b/content/zh/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information.md
@@ -184,7 +184,7 @@ kubectl exec -it kubernetes-downwardapi-volume-example-2 -- sh
* Pod鐨勬敞閲
{{< note >}}
-**Note:** 濡傛灉瀹瑰櫒鏈寚瀹欳PU鍜宮emory limits锛屽垯Downward API榛樿涓鸿妭鐐瑰彲鍒嗛厤鍊笺
+濡傛灉瀹瑰櫒鏈寚瀹欳PU鍜宮emory limits锛屽垯Downward API榛樿涓鸿妭鐐瑰彲鍒嗛厤鍊笺
{{< /note >}}
## 鎶曞皠瀵嗛挜鍒版寚瀹氳矾寰勫苟涓旀寚瀹氭枃浠舵潈闄
diff --git a/layouts/shortcodes/caution.html b/layouts/shortcodes/caution.html
index 4bc88c05fb..f31d09a273 100644
--- a/layouts/shortcodes/caution.html
+++ b/layouts/shortcodes/caution.html
@@ -1,3 +1,3 @@
- {{ .Inner | markdownify }}
-
+ Caution: {{ .Inner | markdownify }}
+
\ No newline at end of file
diff --git a/layouts/shortcodes/note.html b/layouts/shortcodes/note.html
index 7c096dd8e4..745ef5e6b3 100644
--- a/layouts/shortcodes/note.html
+++ b/layouts/shortcodes/note.html
@@ -1,3 +1,3 @@
- {{ .Inner | markdownify }}
+ Note: {{ .Inner | markdownify }}
diff --git a/layouts/shortcodes/warning.html b/layouts/shortcodes/warning.html
index 6b4ea6a3dc..b90f76d49c 100644
--- a/layouts/shortcodes/warning.html
+++ b/layouts/shortcodes/warning.html
@@ -1,3 +1,3 @@
- {{ .Inner | markdownify }}
+ Warning: {{ .Inner | markdownify }}
diff --git a/static/example-templates/example-tutorial-template.md b/static/example-templates/example-tutorial-template.md
index 5795140d87..ec2b70cc8e 100644
--- a/static/example-templates/example-tutorial-template.md
+++ b/static/example-templates/example-tutorial-template.md
@@ -7,7 +7,9 @@ content_template: templates/tutorial
{{% capture overview %}}
-**NOTE:** Be sure to also [create an entry in the table of contents](/docs/home/contribute/write-new-topic/#creating-an-entry-in-the-table-of-contents) for your new document.
+{{< note >}}
+Be sure to also [create an entry in the table of contents](/docs/home/contribute/write-new-topic/#creating-an-entry-in-the-table-of-contents) for your new document.
+{{< /note >}}
This page shows how to ...
From 08d0e1b93cca7cc1d3f2d68ffa497f28b2f00e0c Mon Sep 17 00:00:00 2001
From: William Morgan
Date: Thu, 8 Nov 2018 01:17:10 +0800
Subject: [PATCH 026/222] add "grpc load balancing on kubernetes without tears"
blog post (#10891)
* add grpc load balancing with linkerd blog post
* remove date from filenames
I can follow instructions.
* update links with new date-less paths
* Update grpc-load-balancing-with-linkerd.md
---
.../grpc-load-balancing-with-linkerd.md | 172 ++++++++++++++++++
...df1031c-cdd1-4164-8e91-00f2d941e93f.io.png | Bin 0 -> 33987 bytes
...o-8d2e53ef-b133-4aa0-9551-7e36a880c553.png | Bin 0 -> 21413 bytes
...ee81-144c-4eac-b73d-871bbf0ea22e.57.42.png | Bin 0 -> 123656 bytes
...6100-afc1-4a08-a01c-16da391756dd.34.36.png | Bin 0 -> 120411 bytes
...0448-5424-4e47-9828-20032de868b5.08.38.png | Bin 0 -> 88193 bytes
...o-09aff9d7-1c98-4a0a-9184-9998ed83a531.png | Bin 0 -> 22662 bytes
7 files changed, 172 insertions(+)
create mode 100644 content/en/blog/_posts/grpc-load-balancing-with-linkerd.md
create mode 100644 static/images/blog/grpc-load-balancing-with-linkerd/Linkerd-8df1031c-cdd1-4164-8e91-00f2d941e93f.io.png
create mode 100644 static/images/blog/grpc-load-balancing-with-linkerd/Mono-8d2e53ef-b133-4aa0-9551-7e36a880c553.png
create mode 100644 static/images/blog/grpc-load-balancing-with-linkerd/Screenshot2018-11-0116-24b8ee81-144c-4eac-b73d-871bbf0ea22e.57.42.png
create mode 100644 static/images/blog/grpc-load-balancing-with-linkerd/Screenshot2018-11-0116-c4d86100-afc1-4a08-a01c-16da391756dd.34.36.png
create mode 100644 static/images/blog/grpc-load-balancing-with-linkerd/Screenshot2018-11-0212-15ed0448-5424-4e47-9828-20032de868b5.08.38.png
create mode 100644 static/images/blog/grpc-load-balancing-with-linkerd/Stereo-09aff9d7-1c98-4a0a-9184-9998ed83a531.png
diff --git a/content/en/blog/_posts/grpc-load-balancing-with-linkerd.md b/content/en/blog/_posts/grpc-load-balancing-with-linkerd.md
new file mode 100644
index 0000000000..25739268c9
--- /dev/null
+++ b/content/en/blog/_posts/grpc-load-balancing-with-linkerd.md
@@ -0,0 +1,172 @@
+---
+layout: blog
+title: 'gRPC Load Balancing on Kubernetes without Tears'
+date: 2018-11-07
+---
+
+**Author**: William Morgan (Buoyant)
+
+Many new gRPC users are surprised to find that Kubernetes's default load
+balancing often doesn't work out of the box with gRPC. For example, here's what
+happens when you take a [simple gRPC Node.js microservices
+app](https://github.com/sourishkrout/nodevoto) and deploy it on Kubernetes:
+
+
+
+While the `voting` service displayed here has several pods, it's clear from
+Kubernetes's CPU graphs that only one of the pods is actually doing any
+work—because only one of the pods is receiving any traffic. Why?
+
+In this blog post, we describe why this happens, and how you can easily fix it
+by adding gRPC load balancing to any Kubernetes app with
+[Linkerd](https://linkerd.io), a [CNCF](https://cncf.io) service mesh and service sidecar.
+
+# Why does gRPC need special load balancing?
+
+First, let's understand why we need to do something special for gRPC.
+
+gRPC is an increasingly common choice for application developers. Compared to
+alternative protocols such as JSON-over-HTTP, gRPC can provide some significant
+benefits, including dramatically lower (de)serialization costs, automatic type
+checking, formalized APIs, and less TCP management overhead.
+
+However, gRPC also breaks the standard connection-level load balancing,
+including what's provided by Kubernetes. This is because gRPC is built on
+HTTP/2, and HTTP/2 is designed to have a single long-lived TCP connection,
+across which all requests are *multiplexed*—meaning multiple requests can be
+active on the same connection at any point in time. Normally, this is great, as
+it reduces the overhead of connection management. However, it also means that
+(as you might imagine) connection-level balancing isn't very useful. Once the
+connection is established, there's no more balancing to be done. All requests
+will get pinned to a single destination pod, as shown below:
+
+
+
+# Why doesn't this affect HTTP/1.1?
+
+The reason why this problem doesn't occur in HTTP/1.1, which also has the
+concept of long-lived connections, is because HTTP/1.1 has several features
+that naturally result in cycling of TCP connections. Because of this,
+connection-level balancing is "good enough", and for most HTTP/1.1 apps we
+don't need to do anything more.
+
+To understand why, let's take a deeper look at HTTP/1.1. In contrast to HTTP/2,
+HTTP/1.1 cannot multiplex requests. Only one HTTP request can be active at a
+time per TCP connection. The client makes a request, e.g. `GET /foo`, and then
+waits until the server responds. While that request-response cycle is
+happening, no other requests can be issued on that connection.
+
+Usually, we want lots of requests happening in parallel. Therefore, to have
+concurrent HTTP/1.1 requests, we need to make multiple HTTP/1.1 connections,
+and issue our requests across all of them. Additionally, long-lived HTTP/1.1
+connections typically expire after some time, and are torn down by the client
+(or server). These two factors combined mean that HTTP/1.1 requests typically
+cycle across multiple TCP connections, and so connection-level balancing works.
+
+# So how do we load balance gRPC?
+
+Now back to gRPC. Since we can't balance at the connection level, in order to
+do gRPC load balancing, we need to shift from connection balancing to *request*
+balancing. In other words, we need to open an HTTP/2 connection to each
+destination, and balance *requests* across these connections, as shown below:
+
+
+
+In network terms, this means we need to make decisions at L5/L7 rather than
+L3/L4, i.e. we need to understand the protocol sent over the TCP connections.
+
+How do we accomplish this? There are a couple options. First, our application
+code could manually maintain its own load balancing pool of destinations, and
+we could configure our gRPC client to [use this load balancing
+pool](https://godoc.org/google.golang.org/grpc/balancer). This approach gives
+us the most control, but it can be very complex in environments like Kubernetes
+where the pool changes over time as Kubernetes reschedules pods. Our
+application would have to watch the Kubernetes API and keep itself up to date
+with the pods.
+
+Alternatively, in Kubernetes, we could deploy our app as [headless
+services](https://kubernetes.io/docs/concepts/services-networking/service/#headless-services).
+In this case, Kubernetes [will create multiple A
+records](https://kubernetes.io/docs/concepts/services-networking/service/#headless-services)
+in the DNS entry for the service. If our gRPC client is sufficiently advanced,
+it can automatically maintain the load balancing pool from those DNS entries.
+But this approach restricts us to certain gRPC clients, and it's rarely
+possible to only use headless services.
+
+Finally, we can take a third approach: use a lightweight proxy.
+
+# gRPC load balancing on Kubernetes with Linkerd
+
+[Linkerd](https://linkerd.io) is a [CNCF](https://cncf.io)-hosted *service
+mesh* for Kubernetes. Most relevant to our purposes, Linkerd also functions as
+a *service sidecar*, where it can be applied to a single service—even without
+cluster-wide permissions. What this means is that when we add Linkerd to our
+service, it adds a tiny, ultra-fast proxy to each pod, and these proxies watch
+the Kubernetes API and do gRPC load balancing automatically. Our deployment
+then looks like this:
+
+
+
+Using Linkerd has a couple advantages. First, it works with services written in
+any language, with any gRPC client, and any deployment model (headless or not).
+Because Linkerd's proxies are completely transparent, they auto-detect HTTP/2
+and HTTP/1.x and do L7 load balancing, and they pass through all other traffic
+as pure TCP. This means that everything will *just work.*
+
+Second, Linkerd's load balancing is very sophisticated. Not only does Linkerd
+maintain a watch on the Kubernetes API and automatically update the load
+balancing pool as pods get rescheduled, Linkerd uses an *exponentially-weighted
+moving average* of response latencies to automatically send requests to the
+fastest pods. If one pod is slowing down, even momentarily, Linkerd will shift
+traffic away from it. This can reduce end-to-end tail latencies.
+
+Finally, Linkerd's Rust-based proxies are incredibly fast and small. They
+introduce <1ms of p99 latency and require <10mb of RSS per pod, meaning that
+the impact on system performance will be negligible.
+
+# gRPC Load Balancing in 60 seconds
+
+Linkerd is very easy to try. Just follow the steps in the [Linkerd Getting
+Started Instructions](https://linkerd.io/2/getting-started/)—install the
+CLI on your laptop, install the control plane on your cluster, and "mesh" your
+service (inject the proxies into each pod). You'll have Linkerd running on your
+service in no time, and should see proper gRPC balancing immediately.
+
+Let's take a look at our sample `voting` service again, this time after
+installing Linkerd:
+
+
+
+As we can see, the CPU graphs for all pods are active, indicating that all pods
+are now taking traffic—without having to change a line of code. Voila,
+gRPC load balancing as if by magic!
+
+Linkerd also gives us built-in traffic-level dashboards, so we don't even need
+to guess what's happening from CPU charts any more. Here's a Linkerd graph
+that's showing the success rate, request volume, and latency percentiles of
+each pod:
+
+
+
+We can see that each pod is getting around 5 RPS. We can also see that, while
+we've solved our load balancing problem, we still have some work to do on our
+success rate for this service. (The demo app is built with an intentional
+failure—as an exercise to the reader, see if you can figure it out by
+using the Linkerd dashboard!)
+
+# Wrapping it up
+
+If you're interested in a dead simple way to add gRPC load balancing to your
+Kubernetes services, regardless of what language it's written in, what gRPC
+client you're using, or how it's deployed, you can use Linkerd to add gRPC load
+balancing in a few commands.
+
+There's a lot more to Linkerd, including security, reliability, and debugging
+and diagnostics features, but those are topics for future blog posts.
+
+Want to learn more? We鈥檇 love to have you join our rapidly-growing community!
+Linkerd is a [CNCF](https://cncf.io) project, [hosted on
+GitHub](https://github.com/linkerd/linkerd2), and has a thriving community
+on [Slack](https://slack.linkerd.io), [Twitter](https://twitter.com/linkerd),
+and the [mailing lists](https://lists.cncf.io/g/cncf-linkerd-users). Come and
+join the fun!
diff --git a/static/images/blog/grpc-load-balancing-with-linkerd/Linkerd-8df1031c-cdd1-4164-8e91-00f2d941e93f.io.png b/static/images/blog/grpc-load-balancing-with-linkerd/Linkerd-8df1031c-cdd1-4164-8e91-00f2d941e93f.io.png
new file mode 100644
index 0000000000000000000000000000000000000000..eb538a22166a2dea4a05ba8375337fcf7273b96f
GIT binary patch
literal 33987
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
K(Mn;%fd2<#8X>m;
literal 0
HcmV?d00001
diff --git a/static/images/blog/grpc-load-balancing-with-linkerd/Mono-8d2e53ef-b133-4aa0-9551-7e36a880c553.png b/static/images/blog/grpc-load-balancing-with-linkerd/Mono-8d2e53ef-b133-4aa0-9551-7e36a880c553.png
new file mode 100644
index 0000000000000000000000000000000000000000..c49c8cca2d0e854be11ac65b88432cccf8f09b12
GIT binary patch
literal 21413
zcmd4(WmFtb)IN$16J!Vu3GNcy-8Hxd5AMO8;I09J1Pz)%kRXG*JA|OY2{5?B;Lhp%
z-uL{^xgYLY_v2-)S#(!dS5?1=Mr=I!VL)CPe>
zyoG>6M=K9AN^eI8CwC!lQR@F{2m#0cirJ|t|EuC*FG{VaqE0F8>}EyD%f`dTK`r)@
zl9E!y&C*)vos8`N-VU6JQh)I9a1ml>|M>AE+edCTXEz&mPC-FIb`CCfE-qG}2CKV|
zlZTl%tCKs;|1|P{wGjnH84^e9Be;xgwzyBGhhpqMh)030?
z|2`J*fb9RSuye9;u>YU7fm=oXl?ti3*;)ZT|7%~2Q{=yz{~u-l+m8tQzs~<(gZZB)
z{jU^wRI!&L?Eh!l#9k`*(CdRh5+DT`NiA=LBO}y#(zlsUPu$lCR8-jE;rDMOn!<+a
zWh8p&K2b+~@2Od@q=r;B{i;9y^a(7sj^xHt!s3Sd(hX7FNf3iN3j1@S3!Oye^Rln~
zlXFqgb8cpCX2(v2!v2zJOa%|z}!ZcXsN69j5g
z97uPd_#P1fH!xO