From 663e5707ce8c3faaee38a04d757fabb1436a6afc Mon Sep 17 00:00:00 2001 From: zhanwang Date: Tue, 31 Mar 2020 20:52:44 +0800 Subject: [PATCH 01/66] update context in i18n/ja.toml --- i18n/ja.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/i18n/ja.toml b/i18n/ja.toml index a80eac684f..5806716d01 100644 --- a/i18n/ja.toml +++ b/i18n/ja.toml @@ -25,6 +25,9 @@ other = "Stack Overflow" [community_twitter_name] other = "Twitter" +[community_youtube_name] +other = "YouTube" + [deprecation_warning] other = " のドキュメントは積極的にメンテナンスされていません。現在表示されているバージョンはスナップショットです。最新のドキュメントはこちらです: " From 629fbd43598f0ebf2a68e3618ebe5df4d0fe848b Mon Sep 17 00:00:00 2001 From: Giovanni Geraci Date: Fri, 24 Apr 2020 19:06:42 +0200 Subject: [PATCH 02/66] Update crio installation steps for CentOS/RHEL Hi, crio installation steps for CentOS/RHEL distribution are not valid anymore(CBS repo does not exist anymore) I'm updating the documentation following the exactly same instructions reported on crio official repository --- .../docs/setup/production-environment/container-runtimes.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/content/en/docs/setup/production-environment/container-runtimes.md b/content/en/docs/setup/production-environment/container-runtimes.md index cccf422587..37ba0513c9 100644 --- a/content/en/docs/setup/production-environment/container-runtimes.md +++ b/content/en/docs/setup/production-environment/container-runtimes.md @@ -218,10 +218,12 @@ sudo apt-get install cri-o-1.17 {{< tab name="CentOS/RHEL 7.4+" codelang="bash" >}} # Install prerequisites -yum-config-manager --add-repo=https://cbs.centos.org/repos/paas7-crio-115-release/x86_64/os/ +curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/CentOS_7/devel:kubic:libcontainers:stable.repo + +curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:[REQUIRED VERSION].repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:[REQUIRED VERSION]/CentOS_7/devel:kubic:libcontainers:stable:cri-o:[REQUIRED VERSION].repo # Install CRI-O -yum install --nogpgcheck -y cri-o +yum install -y cri-o {{< /tab >}} {{< tab name="openSUSE Tumbleweed" codelang="bash" >}} From b06e2af913ca8a91577cadce1f2b06b2efee36f6 Mon Sep 17 00:00:00 2001 From: Giovanni Geraci Date: Wed, 29 Apr 2020 12:40:16 +0200 Subject: [PATCH 03/66] Replaced [REQUIRED VERSION] with {{< skew latestVersion >}} --- .../en/docs/setup/production-environment/container-runtimes.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/en/docs/setup/production-environment/container-runtimes.md b/content/en/docs/setup/production-environment/container-runtimes.md index 37ba0513c9..dd65080994 100644 --- a/content/en/docs/setup/production-environment/container-runtimes.md +++ b/content/en/docs/setup/production-environment/container-runtimes.md @@ -219,8 +219,7 @@ sudo apt-get install cri-o-1.17 {{< tab name="CentOS/RHEL 7.4+" codelang="bash" >}} # Install prerequisites curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/CentOS_7/devel:kubic:libcontainers:stable.repo - -curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:[REQUIRED VERSION].repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:[REQUIRED VERSION]/CentOS_7/devel:kubic:libcontainers:stable:cri-o:[REQUIRED VERSION].repo +curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:{{< skew latestVersion >}}.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:{{< skew latestVersion >}}/CentOS_7/devel:kubic:libcontainers:stable:cri-o:{{< skew latestVersion >}}.repo # Install CRI-O yum install -y cri-o From 65d7bd91d279189ea4e21ac123cfb8ac6d0bfc61 Mon Sep 17 00:00:00 2001 From: Arhell Date: Mon, 4 May 2020 21:18:47 +0300 Subject: [PATCH 04/66] synchronization readme --- README-ru.md | 83 ++++++++++++++++++++-------------------------------- 1 file changed, 31 insertions(+), 52 deletions(-) diff --git a/README-ru.md b/README-ru.md index 357578acf8..bb290654a8 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,58 +1,9 @@ # Документация по Kubernetes -[![Build Status](https://api.travis-ci.org/kubernetes/website.svg?branch=master)](https://travis-ci.org/kubernetes/website) -[![GitHub release](https://img.shields.io/github/release/kubernetes/website.svg)](https://github.com/kubernetes/website/releases/latest) +[![Netlify Status](https://api.netlify.com/api/v1/badges/be93b718-a6df-402a-b4a4-855ba186c97d/deploy-status)](https://app.netlify.com/sites/kubernetes-io-master-staging/deploys) [![GitHub release](https://img.shields.io/github/release/kubernetes/website.svg)](https://github.com/kubernetes/website/releases/latest) Добро пожаловать! Данный репозиторий содержит все необходимые файлы для сборки [сайта Kubernetes и документации](https://kubernetes.io/). Мы благодарим вас за старания! -## Вклад в документацию - -Нажмите на кнопку **Fork** в правом верхнем углу, чтобы создать копию этого репозитория в ваш GitHub-аккаунт. Эта копия называется *форк-репозиторием*. Делайте любые изменения в вашем форк-репозитории, и когда вы будете готовы опубликовать изменения, откройте форк-репозиторий и создайте новый пулреквест, чтобы уведомить нас. - -После того, как вы отправите пулреквест, ревьювер Kubernetes даст по нему обратную связь. Вы, как автор пулреквеста, **должны обновить свой пулреквест после его рассмотрения ревьювером Kubernetes.** Вполне возможно, что более одного ревьювера Kubernetes оставят свои комментарии или даже может быть так, что новый комментарий ревьювера Kubernetes будет отличаться от первоначального назначенного ревьювера. Кроме того, в некоторых случаях один из ревьюверов может запросить технический обзор у [технического ревьювера Kubernetes](https://github.com/kubernetes/website/wiki/Tech-reviewers), если это будет необходимо. Ревьюверы сделают все возможное, чтобы как можно оперативно оставить свои предложения и пожелания, но время ответа может варьироваться в зависимости от обстоятельств. - -Узнать подробнее о том, как поучаствовать в документации Kubernetes, вы можете по ссылкам ниже: - -* [Начните вносить свой вклад](https://kubernetes.io/docs/contribute/start/) -* [Просмотр локальных изменений](http://kubernetes.io/docs/contribute/intermediate#view-your-changes-locally) -* [Использование шаблонов страниц](http://kubernetes.io/docs/contribute/style/page-templates/) -* [Руководство по оформлению документации](http://kubernetes.io/docs/contribute/style/style-guide/) -* [Руководство по локализации Kubernetes](https://kubernetes.io/docs/contribute/localization/) - -## Файл `README.md` на других языках -| | | -|-------------------------------|-------------------------------| -| [Английский](README.md) | [Французский](README-fr.md) | -| [Корейский](README-ko.md) | [Немецкий](README-de.md) | -| [Португальский](README-pt.md) | [Хинди](README-hi.md) | -| [Испанский](README-es.md) | [Индонезийский](README-id.md) | -| [Китайский](README-zh.md) | [Японский](README-ja.md) | -| [Вьетнамский](README-vi.md) | [Итальянский](README-it.md) | -| [Польский]( README-pl.md) | [Украинский](README-uk.md) | -| | | - -## Запуск сайта локально с помощью Docker - -Рекомендованный способ запуска сайта Kubernetes на локальной машине - использовать специальный образ [Docker](https://docker.com), который включает статический генератор сайтов [Hugo](https://gohugo.io). - -> Если вы используете Windows, вам необходимо установить дополнительные инструменты через [Chocolatey](https://chocolatey.org). `choco install make` - -> Если вы хотите запустить сайт локально без Docker, обратитесь к разделу [Запуск сайта с помощью Hugo](#запуск-сайта-с-помощью-hugo) ниже на этой странице. - -Когда Docker [установлен и запущен](https://www.docker.com/get-started), соберите локально Docker-образ `kubernetes-hugo`, выполнив команду в консоли: - -```bash -make docker-image -``` - -После того, как вы собрали образ, можно запустить сайт локально: - -```bash -make docker-serve -``` - -Откройте браузер и перейдите по ссылке http://localhost:1313, чтобы открыть сайт. Если вы редактируете исходные файлы сайта, Hugo автоматически применит изменения и обновит страницу в браузере. - ## Запуск сайта с помощью Hugo Обратитесь к [официальной документации Hugo](https://gohugo.io/getting-started/installing/), чтобы установить Hugo. Убедитесь, что вы установили правильную версию Hugo, которая устанавливается в переменной окружения `HUGO_VERSION` в файле [`netlify.toml`](netlify.toml#L10). @@ -60,7 +11,9 @@ make docker-serve После установки Hugo, чтобы запустить сайт, выполните в консоли: ```bash -make serve +git clone https://github.com/kubernetes/website.git +cd website +hugo server --buildFuture ``` Эта команда запустит сервер Hugo на порту 1313. Откройте браузер и перейдите по ссылке http://localhost:1313, чтобы открыть сайт. Если вы отредактируете исходные файлы сайта, Hugo автоматически применит изменения и обновит страницу в браузере. @@ -74,9 +27,35 @@ make serve - [Канал в Slack](https://kubernetes.slack.com/messages/sig-docs) - [Рассылка](https://groups.google.com/forum/#!forum/kubernetes-sig-docs) +## Вклад в документацию + +Нажмите на кнопку **Fork** в правом верхнем углу, чтобы создать копию этого репозитория в ваш GitHub-аккаунт. Эта копия называется *форк-репозиторием*. Делайте любые изменения в вашем форк-репозитории, и когда вы будете готовы опубликовать изменения, откройте форк-репозиторий и создайте новый пулреквест, чтобы уведомить нас. + +После того, как вы отправите пулреквест, ревьювер Kubernetes даст по нему обратную связь. Вы, как автор пулреквеста, **должны обновить свой пулреквест после его рассмотрения ревьювером Kubernetes.** + +Вполне возможно, что более одного ревьювера Kubernetes оставят свои комментарии или даже может быть так, что новый комментарий ревьювера Kubernetes будет отличаться от первоначального назначенного ревьювера. Кроме того, в некоторых случаях один из ревьюверов может запросить технический обзор у [технического ревьювера Kubernetes](https://github.com/kubernetes/website/wiki/Tech-reviewers), если это будет необходимо. Ревьюверы сделают все возможное, чтобы как можно оперативно оставить свои предложения и пожелания, но время ответа может варьироваться в зависимости от обстоятельств. + +Узнать подробнее о том, как поучаствовать в документации Kubernetes, вы можете по ссылкам ниже: + +* [Начните вносить свой вклад](https://kubernetes.io/docs/contribute/) +* [Использование шаблонов страниц](http://kubernetes.io/docs/contribute/style/page-templates/) +* [Руководство по оформлению документации](http://kubernetes.io/docs/contribute/style/style-guide/) +* [Руководство по локализации Kubernetes](https://kubernetes.io/docs/contribute/localization/) + +## Файл `README.md` на других языках +| другие языки | другие языки | +|-------------------------------|-------------------------------| +| [Английский](README.md) | [Французский](README-fr.md) | +| [Корейский](README-ko.md) | [Немецкий](README-de.md) | +| [Португальский](README-pt.md) | [Хинди](README-hi.md) | +| [Испанский](README-es.md) | [Индонезийский](README-id.md) | +| [Китайский](README-zh.md) | [Японский](README-ja.md) | +| [Вьетнамский](README-vi.md) | [Итальянский](README-it.md) | +| [Польский]( README-pl.md) | [Украинский](README-uk.md) | + ### Кодекс поведения -Участие в сообществе Kubernetes регулируется [кодексом поведения Kubernetes](code-of-conduct.md). +Участие в сообществе Kubernetes регулируется [кодексом поведения CNCF](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). ## Спасибо! From e381dc787aec8970130c2462e9c43094ed7a3a8a Mon Sep 17 00:00:00 2001 From: Jai Govindani Date: Thu, 7 May 2020 20:55:09 +0700 Subject: [PATCH 05/66] docs: tweak grammar, tenses, punctuation --- .../kustomization.md | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/content/en/docs/tasks/manage-kubernetes-objects/kustomization.md b/content/en/docs/tasks/manage-kubernetes-objects/kustomization.md index 61230513a4..c74374a0dc 100644 --- a/content/en/docs/tasks/manage-kubernetes-objects/kustomization.md +++ b/content/en/docs/tasks/manage-kubernetes-objects/kustomization.md @@ -46,13 +46,12 @@ Kustomize is a tool for customizing Kubernetes configurations. It has the follow ### Generating Resources -ConfigMap and Secret hold config or sensitive data that are used by other Kubernetes objects, such as Pods. The source -of truth of ConfigMap or Secret are usually from somewhere else, such as a `.properties` file or a ssh key file. +ConfigMaps and Secrets hold configuration or sensitive data that are used by other Kubernetes objects, such as Pods. The source of truth of ConfigMaps or Secrets are usually external to a cluster, such as a `.properties` file or an SSH keyfile. Kustomize has `secretGenerator` and `configMapGenerator`, which generate Secret and ConfigMap from files or literals. #### configMapGenerator -To generate a ConfigMap from a file, add an entry to `files` list in `configMapGenerator`. Here is an example of generating a ConfigMap with a data item from a file content. +To generate a ConfigMap from a file, add an entry to the `files` list in `configMapGenerator`. Here is an example of generating a ConfigMap with a data item from a `.properties` file: ```shell # Create a application.properties file @@ -68,7 +67,7 @@ configMapGenerator: EOF ``` -The generated ConfigMap can be checked by the following command: +The generated ConfigMap can be examined with the following command: ```shell kubectl kustomize ./ @@ -86,7 +85,7 @@ metadata: name: example-configmap-1-8mbdf7882g ``` -ConfigMap can also be generated from literal key-value pairs. To generate a ConfigMap from a literal key-value pair, add an entry to `literals` list in configMapGenerator. Here is an example of generating a ConfigMap with a data item from a key-value pair. +ConfigMaps can also be generated from literal key-value pairs. To generate a ConfigMap from a literal key-value pair, add an entry to the `literals` list in configMapGenerator. Here is an example of generating a ConfigMap with a data item from a key-value pair: ```shell cat <./kustomization.yaml @@ -103,7 +102,7 @@ The generated ConfigMap can be checked by the following command: kubectl kustomize ./ ``` -The generated ConfigMap is +The generated ConfigMap is: ```yaml apiVersion: v1 @@ -116,7 +115,7 @@ metadata: #### secretGenerator -You can generate Secrets from files or literal key-value pairs. To generate a Secret from a file, add an entry to `files` list in `secretGenerator`. Here is an example of generating a Secret with a data item from a file. +You can generate Secrets from files or literal key-value pairs. To generate a Secret from a file, add an entry to the `files` list in `secretGenerator`. Here is an example of generating a Secret with a data item from a file: ```shell # Create a password.txt file @@ -145,7 +144,7 @@ metadata: type: Opaque ``` -To generate a Secret from a literal key-value pair, add an entry to `literals` list in `secretGenerator`. Here is an example of generating a Secret with a data item from a key-value pair. +To generate a Secret from a literal key-value pair, add an entry to `literals` list in `secretGenerator`. Here is an example of generating a Secret with a data item from a key-value pair: ```shell cat <./kustomization.yaml @@ -172,7 +171,7 @@ type: Opaque #### generatorOptions -The generated ConfigMaps and Secrets have a suffix appended by hashing the contents. This ensures that a new ConfigMap or Secret is generated when the content is changed. To disable the behavior of appending a suffix, one can use `generatorOptions`. Besides that, it is also possible to specify cross-cutting options for generated ConfigMaps and Secrets. +The generated ConfigMaps and Secrets have a content hash suffix appended. This ensures that a new ConfigMap or Secret is generated when the contents are changed. To disable the behavior of appending a suffix, one can use `generatorOptions`. Besides that, it is also possible to specify cross-cutting options for generated ConfigMaps and Secrets. ```shell cat <./kustomization.yaml @@ -209,7 +208,7 @@ metadata: It is quite common to set cross-cutting fields for all Kubernetes resources in a project. Some use cases for setting cross-cutting fields: -* setting the same namespace for all Resource +* setting the same namespace for all Resources * adding the same name prefix or suffix * adding the same set of labels * adding the same set of annotations @@ -289,7 +288,7 @@ Kustomize offers composing Resources from different files and applying patches o #### Composing Kustomize supports composition of different resources. The `resources` field, in the `kustomization.yaml` file, defines the list of resources to include in a configuration. Set the path to a resource's configuration file in the `resources` list. -Here is an example for an nginx application with a Deployment and a Service. +Here is an example of an NGINX application comprised of a Deployment and a Service: ```shell # Create a deployment.yaml file @@ -339,11 +338,11 @@ resources: EOF ``` -The Resources from `kubectl kustomize ./` contains both the Deployment and the Service objects. +The Resources from `kubectl kustomize ./` contain both the Deployment and the Service objects. #### Customizing -On top of Resources, one can apply different customizations by applying patches. Kustomize supports different patching +Patches can be used to apply different customizations to Resources. Kustomize supports different patching mechanisms through `patchesStrategicMerge` and `patchesJson6902`. `patchesStrategicMerge` is a list of file paths. Each file should be resolved to a [strategic merge patch](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-api-machinery/strategic-merge-patch.md). The names inside the patches must match Resource names that are already loaded. Small patches that do one thing are recommended. For example, create one patch for increasing the deployment replica number and another patch for setting the memory limit. ```shell From fdb2318683fa03a7fa6bb3bffea28ad9f16fc052 Mon Sep 17 00:00:00 2001 From: Jim Angel Date: Fri, 27 Mar 2020 18:38:51 -0500 Subject: [PATCH 06/66] change hugo version unsafe --- config.toml | 24 ++++++++++++++---------- netlify.toml | 2 +- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/config.toml b/config.toml index d12e762a10..05430dc87b 100644 --- a/config.toml +++ b/config.toml @@ -14,12 +14,6 @@ contentDir = "content/en" timeout = 3000 -# Highlighting config. -pygmentsCodeFences = true -pygmentsUseClasses = false -# See https://help.farbox.com/pygments.html -pygmentsStyle = "emacs" - # Enable Git variables like commit, lastmod enableGitInfo = true @@ -27,10 +21,20 @@ enableGitInfo = true # Hindi is disabled because it's currently in development. disableLanguages = ["hi", "no"] -[blackfriday] -hrefTargetBlank = true -fractions = false -smartDashes = false +[markup] + [markup.goldmark] + [markup.goldmark.renderer] + unsafe = true + [markup.highlight] + codeFences = true + guessSyntax = false + hl_Lines = "" + lineNoStart = 1 + lineNos = false + lineNumbersInTable = true + noClasses = true + style = "emacs" + tabWidth = 4 [frontmatter] date = ["date", ":filename", "publishDate", "lastmod"] diff --git a/netlify.toml b/netlify.toml index 47fb91279b..96b981785e 100644 --- a/netlify.toml +++ b/netlify.toml @@ -7,7 +7,7 @@ functions = "functions" command = "make non-production-build" [build.environment] -HUGO_VERSION = "0.59.1" +HUGO_VERSION = "0.70.0" [context.production.environment] HUGO_BASEURL = "https://kubernetes.io/" From 6ce7de135e431c0b67a889b79ad3aea823f62d4e Mon Sep 17 00:00:00 2001 From: Mxxisv Date: Mon, 11 May 2020 14:47:42 +0800 Subject: [PATCH 07/66] zh: Revise translations to conform to the Chinese context * Update overview.md --- content/zh/docs/concepts/configuration/overview.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/content/zh/docs/concepts/configuration/overview.md b/content/zh/docs/concepts/configuration/overview.md index c62d6cd957..04a56b5425 100644 --- a/content/zh/docs/concepts/configuration/overview.md +++ b/content/zh/docs/concepts/configuration/overview.md @@ -191,7 +191,7 @@ A desired state of an object is described by a Deployment, and if changes to tha -当 [kubelet](/docs/admin/kubelet/)尝试拉取指定的镜像时,[imagePullPolicy](/docs/concepts/containers/images/#updating-images)和镜像的标签会生效。 +当 [kubelet](/docs/admin/kubelet/)尝试拉取指定的镜像时,[imagePullPolicy](/docs/concepts/containers/images/#升级镜像)和镜像标签会生效。 -- 省略`imagePullPolicy`,镜像标签为`:latest`或被省略,`Always`被应用。 +- `imagePullPolicy` 省略时,镜像标签为 `:latest` 或不存在,使用 `Always` 值。 -- `imagePullPolicy`被省略,并且镜像的标签被指定且不是`:latest`,`IfNotPresent`被应用。 +- `imagePullPolicy` 省略时,指定镜像标签并且不是 `:latest`,使用 `IfNotPresent` 值。 -- `imagePullPolicy: Never`:镜像被假设存在于本地。 - 没有尝试拉取镜像。 +- `imagePullPolicy: Never`:假设镜像已经存在本地,不会尝试拉取镜像。 -可以使用*拓扑扩展约束*来控制 {{< glossary_tooltip text="Pods" term_id="Pod" >}} 在集群内故障域(例如地区,区域,节点和其他用户自定义拓扑域)之间的分布。这可以帮助实现高可用以及提升资源利用率。 +可以使用 *拓扑扩展约束* 来控制 {{< glossary_tooltip text="Pods" term_id="Pod" >}} 在集群内故障域(例如地区,区域,节点和其他用户自定义拓扑域)之间的分布。这可以帮助实现高可用以及提升资源利用率。 {{% /capture %}} @@ -182,10 +182,10 @@ If we want an incoming Pod to be evenly spread with existing Pods across zones, {{< codenew file="pods/topology-spread-constraints/one-constraint.yaml" >}} -`topologyKey: zone` 意味着均匀分布将只应用于存在标签对为 "zone:" 的节点上。`whenUnsatisfiable: DoNotSchedule` 告诉调度器,如果传入的 pod 不满足约束,则让它保持挂起状态。 +`topologyKey: zone` 意味着均匀分布将只应用于存在标签对为 "zone:<any value>" 的节点上。`whenUnsatisfiable: DoNotSchedule` 告诉调度器,如果传入的 pod 不满足约束,则让它保持挂起状态。 -- 如果传入的 pod 定义了 `spec.nodeSelector` 或 `spec.affinity.nodeAffinity`,则将忽略不匹配的节点。 - -假设有一个从 zonea 到 zonec 的 5 节点集群: + + +- 如果传入的 pod 定义了 `spec.nodeSelector` 或 `spec.affinity.nodeAffinity`,则将忽略不匹配的节点。 + + 假设有一个从 zonea 到 zonec 的 5 节点集群: ``` +---------------+---------------+-------+ @@ -339,11 +343,7 @@ There are some implicit conventions worth noting here: +-------+-------+-------+-------+-------+ ``` - - -你知道 "zoneC" 必须被排除在外。在这种情况下,可以按如下方式编写 yaml,以便将 "mypod" 放置在 "zoneB" 上,而不是 "zoneC" 上。同样,`spec.nodeSelector` 也要一样处理。 + 你知道 "zoneC" 必须被排除在外。在这种情况下,可以按如下方式编写 yaml,以便将 "mypod" 放置在 "zoneB" 上,而不是 "zoneC" 上。同样,`spec.nodeSelector` 也要一样处理。 {{< codenew file="pods/topology-spread-constraints/one-constraint-with-nodeaffinity.yaml" >}} From afccb08ced18f198ef14df98158147c0af86980d Mon Sep 17 00:00:00 2001 From: Jim Angel Date: Mon, 11 May 2020 13:59:04 -0500 Subject: [PATCH 10/66] updating link for community cal --- layouts/partials/footer.html | 2 +- layouts/partials/header.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html index dfedd412b0..e132e3df38 100644 --- a/layouts/partials/footer.html +++ b/layouts/partials/footer.html @@ -17,7 +17,7 @@ {{ T "community_stack_overflow_name" }} {{ T "community_youtube_name" }} {{ T "community_forum_name" }} - {{ T "community_events_calendar" }} + {{ T "community_events_calendar" }}
{{ with site.GetPage "page" "/docs/setup/pick-right-solution/" }}{{ .LinkTitle }}{{ end }} diff --git a/layouts/partials/header.html b/layouts/partials/header.html index ac6c6f0d1f..44365f8ecb 100644 --- a/layouts/partials/header.html +++ b/layouts/partials/header.html @@ -64,7 +64,7 @@ {{ T "community_stack_overflow_name" }} {{ T "community_youtube_name" }} {{ T "community_forum_name" }} - {{ T "community_events_calendar" }} + {{ T "community_events_calendar" }}
From 5026ae659fe08497cdeedf253724c659f5800f11 Mon Sep 17 00:00:00 2001 From: dedy Date: Tue, 12 May 2020 02:48:23 +0700 Subject: [PATCH 11/66] ID translation for install minikube --- .../id/docs/tasks/tools/install-minikube.md | 256 ++++++++++++++++++ 1 file changed, 256 insertions(+) create mode 100644 content/id/docs/tasks/tools/install-minikube.md diff --git a/content/id/docs/tasks/tools/install-minikube.md b/content/id/docs/tasks/tools/install-minikube.md new file mode 100644 index 0000000000..f0e676e091 --- /dev/null +++ b/content/id/docs/tasks/tools/install-minikube.md @@ -0,0 +1,256 @@ +--- +title: Menginstal Minikube +content_template: templates/task +weight: 20 +card: + name: tasks + weight: 10 +--- + +{{% capture overview %}} + +Halaman ini menunjukkan cara instalasi [Minikube](/docs/tutorials/hello-minikube), sebuah alat untuk menjalankan sebuah klaster Kubernetes dengan satu Node pada mesin virtual yang ada di komputer kamu. + +{{% /capture %}} + +{{% capture prerequisites %}} + +{{< tabs name="minikube_before_you_begin" >}} +{{% tab name="Linux" %}} +Untuk mengecek jika virtualisasi didukung pada Linux, jalankan perintah berikut dan pastikan keluarannya tidak kosong: +``` +grep -E --color 'vmx|svm' /proc/cpuinfo +``` +{{% /tab %}} + +{{% tab name="macOS" %}} +Untuk mengecek jika virtualisasi didukung di macOS, jalankan perintah berikut di terminal kamu. +``` +sysctl -a | grep -E --color 'machdep.cpu.features|VMX' +``` +Jika kamu melihat `VMX` pada hasil keluaran (seharusnya berwarna), artinya fitur VT-x sudah diaktifkan di mesin kamu. +{{% /tab %}} + +{{% tab name="Windows" %}} +Untuk mengecek jika virtualisasi didukung di Windows 8 ke atas, jalankan perintah berikut di terminal Windows atau _command prompt_ kamu. + +``` +systeminfo +``` +Jika kamu melihat keluaran berikut, maka virtualisasi didukung di Windows kamu. +``` +Hyper-V Requirements: VM Monitor Mode Extensions: Yes + Virtualization Enabled In Firmware: Yes + Second Level Address Translation: Yes + Data Execution Prevention Available: Yes +``` +Jika kamu melihat keluaran berikut, sistem kamu sudah memiliki sebuah Hypervisor yang terinstal dan kamu bisa melewati langkah berikutnya. +``` +Hyper-V Requirements: A hypervisor has been detected. Features required for Hyper-V will not be displayed. +``` + + +{{% /tab %}} +{{< /tabs >}} + +{{% /capture %}} + +{{% capture steps %}} + +# Menginstal minikube + +{{< tabs name="tab_with_md" >}} +{{% tab name="Linux" %}} + +### Menginstal kubectl + +Pastikan kamu mempunyai kubectl yang terinstal. Kamu bisa menginstal kubectl dengan mengikuti instruksi pada halaman [Menginstal dan Menyiapkan kubectl](/docs/tasks/tools/install-kubectl/#install-kubectl-on-linux). + +### Menginstal sebuah Hypervisor + +Jika kamu belum menginstal sebuah Hypervisor, silakan instal salah satu dari: + +• [KVM](https://www.linux-kvm.org/), yang juga menggunakan QEMU + +• [VirtualBox](https://www.virtualbox.org/wiki/Downloads) + +Minikube juga mendukung sebuah opsi `--driver=none` untuk menjalankan komponen-komponen Kubernetes pada _host_, bukan di dalam VM. Untuk menggunakan _driver_ ini maka diperlukan [Docker](https://www.docker.com/products/docker-desktop) dan sebuah lingkungan Linux, bukan sebuah hypervisor. + +Jika kamu menggunakan _driver_ `none` pada Debian atau turunannya, gunakan paket (_package_) `.deb` untuk Docker daripada menggunakan paket _snap_-nya, karena paket _snap_ tidak berfungsi dengan Minikube. +Kamu bisa mengunduh paket `.deb` dari [Docker](https://www.docker.com/products/docker-desktop). + +{{< caution >}} +*Driver* VM `none` dapat menyebabkan masalah pada keamanan dan kehilangan data. Sebelum menggunakan opsi `--driver=none`, periksa [dokumentasi ini](https://minikube.sigs.k8s.io/docs/reference/drivers/none/) untuk informasi lebih lanjut. +{{< /caution >}} + +Minikube juga mendukung opsi `vm-driver=podman` yang mirip dengan _driver_ Docker. Podman yang berjalan dengan hak istimewa _superuser_ (pengguna _root_) adalah cara terbaik untuk memastikan kontainer-kontainer kamu memiliki akses penuh ke semua fitur yang ada pada sistem kamu. + +{{< caution >}} +_Driver_ `podman` memerlukan kontainer yang berjalan dengan akses _root_ karena akun pengguna biasa tidak memiliki akses penuh ke semua fitur sistem operasi yang mungkin diperlukan oleh kontainer. +{{< /caution >}} + +### Menginstal Minikube menggunakan sebuah paket + +Tersedia paket uji coba untuk Minikube, kamu bisa menemukan paket untuk Linux (AMD64) di laman [rilisnya](https://github.com/kubernetes/minikube/releases) Minikube di GitHub. + +Gunakan alat instalasi paket pada distribusi Linux kamu untuk menginstal paket yang sesuai. + +### Menginstal Minikube melalui pengunduhan langsung + +Jika kamu tidak menginstal melalui sebuah paket, kamu bisa mengunduh sebuah _stand-alone binary_ dan menggunakannya. + + +```shell +curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \ + && chmod +x minikube +``` + +Berikut adalah cara mudah untuk menambahkan program Minikube ke _path_ kamu. + +```shell +sudo mkdir -p /usr/local/bin/ +sudo install minikube /usr/local/bin/ +``` + +### Menginstal Minikube menggunakan Homebrew + +Sebagai alternatif, kamu bisa menginstal Minikube menggunakan Linux [Homebrew](https://docs.brew.sh/Homebrew-on-Linux): + +```shell +brew install minikube +``` + +{{% /tab %}} +{{% tab name="macOS" %}} +### Instalasi kubectl + +Pastikan kamu mempunyai kubectl yang terinstal. Kamu bisa menginstal kubectl berdasarkan instruksi pada laman [Menginstal dan Menyiapkan kubectl](/docs/tasks/tools/install-kubectl/#install-kubectl-on-macos). + +### Instalasi sebuah Hypervisor + +Jika kamu belum menginstal sebuah Hypervisor, silakan instal salah satu dari: + +• [HyperKit](https://github.com/moby/hyperkit) + +• [VirtualBox](https://www.virtualbox.org/wiki/Downloads) + +• [VMware Fusion](https://www.vmware.com/products/fusion) + +### Instalasi Minikube +Cara paling mudah untuk menginstal Minikube pada macOS adalah menggunakan [Homebrew](https://brew.sh): + +```shell +brew install minikube +``` + +Kamu juga bisa menginstalnya dengan mengunduh _stand-alone binary_-nya: + +```shell +curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64 \ + && chmod +x minikube +``` + +Berikut adalah cara mudah untuk menambahkan program Minikube ke _path_ kamu. + +```shell +sudo mv minikube /usr/local/bin +``` + +{{% /tab %}} +{{% tab name="Windows" %}} +### Instalasi kubectl + +Pastikan kamu mempunyai kubectl yang terinstal. Kamu bisa menginstal kubectl berdasarkan instruksi pada halaman [Menginstal dan Menyiapkan kubectl](/docs/tasks/tools/install-kubectl/#install-kubectl-on-windows). + +### Menginstal sebuah Hypervisor + +Jika kamu belum menginstal sebuah Hypervisor, silakan instal salah satu dari: + +• [Hyper-V](https://msdn.microsoft.com/en-us/virtualization/hyperv_on_windows/quick_start/walkthrough_install) + +• [VirtualBox](https://www.virtualbox.org/wiki/Downloads) + +{{< note >}} +Hyper-V hanya dapat berjalan pada tiga versi dari Windows 10: Windows 10 Enterprise, Windows 10 Professional, dan Windows 10 Education. +{{< /note >}} + +### Menginstal Minikube menggunakan Chocolatey + +Cara paling mudah untuk menginstal Minikube pada Windows adalah menggunakan [Chocolatey](https://chocolatey.org/) (jalankan sebagai administrator): + +```shell +choco install minikube +``` + +Setelah Minikube telah selesai diinstal, tutup sesi CLI dan hidupkan ulang CLI-nya. Minikube akan ditambahkan ke _path_ kamu secara otomatis. + +### Menginstal Minikube menggunakan sebuah program penginstal + +Untuk menginstal Minikube secara manual pada Windows menggunakan [Windows Installer](https://docs.microsoft.com/en-us/windows/desktop/msi/windows-installer-portal), unduh [`minikube-installer.exe`](https://github.com/kubernetes/minikube/releases/latest/download/minikube-installer.exe) dan jalankan program penginstal tersebut. + +### Menginstal Minikube melalui pengunduhan langsung + +Untuk menginstal Minikube secara manual pada Windows, unduh [`minikube-windows-amd64`](https://github.com/kubernetes/minikube/releases/latest), ubah nama menjadi `minikube.exe`, dan tambahkan ke _path_ kamu. + +{{% /tab %}} +{{< /tabs >}} + + +{{% /capture %}} + +{{% capture whatsnext %}} + +* [Menjalanakan Kubernetes secara lokal dengan Minikube](/docs/setup/learning-environment/minikube/) + +{{% /capture %}} + +## Memastikan instalasi + +Untuk memastikan keberhasilan kedua instalasi hypervisor dan Minikube, kamu bisa menjalankan perintah berikut untuk memulai sebuah klaster Kubernetes lokal: +{{< note >}} + +Untuk pengaturan `--driver` dengan `minikube start`, masukkan nama hypervisor `` yang kamu instal dengan huruf kecil seperti yang ditunjukan dibawah. Daftar lengkap nilai `--driver` tersedia di [dokumentasi menentukan *driver* VM](/docs/setup/learning-environment/minikube/#specifying-the-vm-driver). + +{{< /note >}} + +```shell +minikube start --driver= +``` + +Setelah `minikube start` selesai, jalankan perintah di bawah untuk mengecek status klaster: + +```shell +minikube status +``` + +Jika klasternya berjalan, keluaran dari `minikube status` akan mirip seperti ini: + +``` +host: Running +kubelet: Running +apiserver: Running +kubeconfig: Configured +``` + +Setelah kamu memastikan bahwa Minikube berjalan sesuai dengan hypervisor yang telah kamu pilih, kamu dapat melanjutkan untuk menggunakan Minikube atau menghentikan klaster kamu. Untuk menghentikan klaster, jalankan: + +```shell +minikube stop +``` + +## Membersihkan *state* lokal {#cleanup-local-state} + +Jika sebelumnya kamu pernah menginstal Minikube, dan menjalankan: +```shell +minikube start +``` + +dan `minikube start` memberikan pesan kesalahan: +``` +machine does not exist +``` + +maka kamu perlu membersihkan _state_ lokal Minikube: +```shell +minikube delete +``` From f3e733ecbac53e599ca77cc71a1b429dcabf7649 Mon Sep 17 00:00:00 2001 From: Jim Angel Date: Mon, 11 May 2020 11:01:05 -0500 Subject: [PATCH 12/66] fix for feature state shortcode --- .../en/docs/templates/feature-state-alpha.txt | 8 ----- .../en/docs/templates/feature-state-beta.txt | 8 ----- .../templates/feature-state-deprecated.txt | 2 -- .../docs/templates/feature-state-stable.txt | 5 ---- content/en/docs/templates/index.md | 13 --------- .../partials/templates/feature-dialog.html | 29 ------------------- layouts/partials/templates/feature-state.html | 21 -------------- layouts/shortcodes/feature-state.html | 9 +++--- 8 files changed, 5 insertions(+), 90 deletions(-) delete mode 100644 content/en/docs/templates/feature-state-alpha.txt delete mode 100644 content/en/docs/templates/feature-state-beta.txt delete mode 100644 content/en/docs/templates/feature-state-deprecated.txt delete mode 100644 content/en/docs/templates/feature-state-stable.txt delete mode 100644 content/en/docs/templates/index.md delete mode 100644 layouts/partials/templates/feature-dialog.html delete mode 100644 layouts/partials/templates/feature-state.html diff --git a/content/en/docs/templates/feature-state-alpha.txt b/content/en/docs/templates/feature-state-alpha.txt deleted file mode 100644 index 24b28a7e92..0000000000 --- a/content/en/docs/templates/feature-state-alpha.txt +++ /dev/null @@ -1,8 +0,0 @@ -This feature is currently in a *alpha* state, meaning: - -* The version names contain alpha (e.g. v1alpha1). -* Might be buggy. Enabling the feature may expose bugs. Disabled by default. -* Support for feature may be dropped at any time without notice. -* The API may change in incompatible ways in a later software release without notice. -* Recommended for use only in short-lived testing clusters, due to increased risk of bugs and lack of long-term support. - diff --git a/content/en/docs/templates/feature-state-beta.txt b/content/en/docs/templates/feature-state-beta.txt deleted file mode 100644 index 25bd7ca729..0000000000 --- a/content/en/docs/templates/feature-state-beta.txt +++ /dev/null @@ -1,8 +0,0 @@ -This feature is currently in a *beta* state, meaning: - -* The version names contain beta (e.g. v2beta3). -* Code is well tested. Enabling the feature is considered safe. Enabled by default. -* Support for the overall feature will not be dropped, though details may change. -* The schema and/or semantics of objects may change in incompatible ways in a subsequent beta or stable release. When this happens, we will provide instructions for migrating to the next version. This may require deleting, editing, and re-creating API objects. The editing process may require some thought. This may require downtime for applications that rely on the feature. -* Recommended for only non-business-critical uses because of potential for incompatible changes in subsequent releases. If you have multiple clusters that can be upgraded independently, you may be able to relax this restriction. -* **Please do try our beta features and give feedback on them! After they exit beta, it may not be practical for us to make more changes.** diff --git a/content/en/docs/templates/feature-state-deprecated.txt b/content/en/docs/templates/feature-state-deprecated.txt deleted file mode 100644 index f2a38e44bb..0000000000 --- a/content/en/docs/templates/feature-state-deprecated.txt +++ /dev/null @@ -1,2 +0,0 @@ - -This feature is *deprecated*. For more information on this state, see the [Kubernetes Deprecation Policy](/docs/reference/deprecation-policy/). diff --git a/content/en/docs/templates/feature-state-stable.txt b/content/en/docs/templates/feature-state-stable.txt deleted file mode 100644 index 6d6d580c5c..0000000000 --- a/content/en/docs/templates/feature-state-stable.txt +++ /dev/null @@ -1,5 +0,0 @@ - -This feature is *stable*, meaning: - -* The version name is vX where X is an integer. -* Stable versions of features will appear in released software for many subsequent versions. diff --git a/content/en/docs/templates/index.md b/content/en/docs/templates/index.md deleted file mode 100644 index 9d7bccd143..0000000000 --- a/content/en/docs/templates/index.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -headless: true - -resources: -- src: "*alpha*" - title: "alpha" -- src: "*beta*" - title: "beta" -- src: "*deprecated*" - title: "deprecated" -- src: "*stable*" - title: "stable" ---- diff --git a/layouts/partials/templates/feature-dialog.html b/layouts/partials/templates/feature-dialog.html deleted file mode 100644 index 2f25aefb02..0000000000 --- a/layouts/partials/templates/feature-dialog.html +++ /dev/null @@ -1,29 +0,0 @@ - -{{ .page.Title }} -
-{{ .page.Content | markdownify }} -
- diff --git a/layouts/partials/templates/feature-state.html b/layouts/partials/templates/feature-state.html deleted file mode 100644 index 2076b0f078..0000000000 --- a/layouts/partials/templates/feature-state.html +++ /dev/null @@ -1,21 +0,0 @@ -
-{{ $for_k8s_version := .for_k8s_version | default (.page.Param "version") }} -{{ $width := .width | default "600" }} -{{ $state := .state }} -FEATURE STATE: Kubernetes {{ $for_k8s_version }} -{{/* docs/templates is a Hugo page bundle */}} -{{ $templates_path := "docs/templates" }} -{{ $templates := site.GetPage "page" $templates_path }} -{{ with $templates.Resources }} - {{ $template_path := printf "**feature-state-%s*" $state }} - {{ $content_template := .GetMatch $template_path }} - {{ with $content_template }} - {{ $dialog := dict "page" $content_template "for_k8s_version" $for_k8s_version "width" $width }} - {{ partial "templates/feature-dialog.html" $dialog }} - {{ else }} - {{ errorf "[%s] template not found in %s" site.Language.Lang $template_path }} - {{ end }} -{{ else }} - {{ errorf "[%s] templates not found in docs/templates" site.Language.Lang }} -{{ end }} -
diff --git a/layouts/shortcodes/feature-state.html b/layouts/shortcodes/feature-state.html index 17f278b1f6..745c5f396e 100644 --- a/layouts/shortcodes/feature-state.html +++ b/layouts/shortcodes/feature-state.html @@ -1,10 +1,11 @@ {{ $valid_states := "alpha, beta, deprecated, stable" }} {{ $state := .Get "state" }} -{{ $for_k8s_version := .Get "for_k8s_version" }} -{{ $width := .Get "width" }} +{{ $for_k8s_version := .Get "for_k8s_version" | default (.Page.Param "version")}} {{ $is_valid := strings.Contains $valid_states $state }} {{ if not $is_valid }} {{ errorf "%q is not a valid feature-state, use one of %q" $valid_states }} {{ else }} -{{ partial "templates/feature-state.html" (dict "ctx" . "page" .Page "state" $state "for_k8s_version" $for_k8s_version "width" $width) }} -{{ end }} +
+FEATURE STATE: Kubernetes {{ $for_k8s_version }} [{{ $state }}] +
+{{ end }} \ No newline at end of file From c0f669ab681901f5fda6771b42768781495c12c6 Mon Sep 17 00:00:00 2001 From: Casey Davenport Date: Mon, 11 May 2020 14:00:26 -0700 Subject: [PATCH 13/66] Update the vesion of Calico --- .../tools/kubeadm/create-cluster-kubeadm.md | 4 ++-- .../production-environment/tools/kubeadm/high-availability.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/content/en/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm.md b/content/en/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm.md index 4a0d567f00..2d38666386 100644 --- a/content/en/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm.md +++ b/content/en/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm.md @@ -303,10 +303,10 @@ Below you can find installation instructions for some popular Pod network plugin {{% tab name="Calico" %}} [Calico](https://docs.projectcalico.org/latest/introduction/) is a networking and network policy provider. Calico supports a flexible set of networking options so you can choose the most efficient option for your situation, including non-overlay and overlay networks, with or without BGP. Calico uses the same engine to enforce network policy for hosts, pods, and (if using Istio & Envoy) applications at the service mesh layer. Calico works on several architectures, including `amd64`, `arm64`, and `ppc64le`. -By default, Calico uses `192.168.0.0/16` as the Pod network CIDR, though this can be configured in the calico.yaml file. For Calico to work correctly, you need to pass this same CIDR to the `kubeadm init` command using the `--pod-network-cidr=192.168.0.0/16` flag or via kubeadm's configuration. +Calico will automatically detect which IP address range to use for pod IPs based on the value provided via the `--pod-network-cidr` flag or via kubeadm's configuration. ```shell -kubectl apply -f https://docs.projectcalico.org/v3.11/manifests/calico.yaml +kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml ``` {{% /tab %}} diff --git a/content/en/docs/setup/production-environment/tools/kubeadm/high-availability.md b/content/en/docs/setup/production-environment/tools/kubeadm/high-availability.md index c93186b28d..9d67fa8e53 100644 --- a/content/en/docs/setup/production-environment/tools/kubeadm/high-availability.md +++ b/content/en/docs/setup/production-environment/tools/kubeadm/high-availability.md @@ -122,8 +122,8 @@ option. Your cluster requirements may need a different configuration. {{< /note >}} {{< note >}} - Some CNI network plugins like Calico require a CIDR such as `192.168.0.0/16` and - some like Weave do not. See the [CNI network documentation](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network). + Some CNI network plugins require additional configuration, for example specifying the pod IP CIDR, while others do not. + See the [CNI network documentation](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network). To add a pod CIDR pass the flag `--pod-network-cidr`, or if you are using a kubeadm configuration file set the `podSubnet` field under the `networking` object of `ClusterConfiguration`. {{< /note >}} From 7a98007a293d7865dd0d539b038e2064eb123cb1 Mon Sep 17 00:00:00 2001 From: Karen Bradshaw Date: Mon, 27 Apr 2020 16:04:40 -0400 Subject: [PATCH 14/66] update tabs shortcode --- .../setup/learning-environment/minikube.md | 213 ++++++++++-------- .../en/docs/tasks/tools/install-kubectl.md | 59 +++-- layouts/shortcodes/tabs.html | 74 +++--- 3 files changed, 200 insertions(+), 146 deletions(-) diff --git a/content/en/docs/setup/learning-environment/minikube.md b/content/en/docs/setup/learning-environment/minikube.md index ec8514c84c..e314d56608 100644 --- a/content/en/docs/setup/learning-environment/minikube.md +++ b/content/en/docs/setup/learning-environment/minikube.md @@ -37,116 +37,151 @@ See [Installing Minikube](/docs/tasks/tools/install-minikube/). This brief demo guides you on how to start, use, and delete Minikube locally. Follow the steps given below to start and explore Minikube. 1. Start Minikube and create a cluster: - ```shell - minikube start - ``` - The output is similar to this: - ``` - Starting local Kubernetes cluster... - Running pre-create checks... - Creating machine... - Starting local Kubernetes cluster... - ``` - For more information on starting your cluster on a specific Kubernetes version, VM, or container runtime, see [Starting a Cluster](#starting-a-cluster). + ```shell + minikube start + ``` + + The output is similar to this: + + ``` + Starting local Kubernetes cluster... + Running pre-create checks... + Creating machine... + Starting local Kubernetes cluster... + ``` + + For more information on starting your cluster on a specific Kubernetes version, VM, or container runtime, see [Starting a Cluster](#starting-a-cluster). 2. Now, you can interact with your cluster using kubectl. For more information, see [Interacting with Your Cluster](#interacting-with-your-cluster). - Let’s create a Kubernetes Deployment using an existing image named `echoserver`, which is a simple HTTP server and expose it on port 8080 using `--port`. - ```shell - kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.10 - ``` - The output is similar to this: - ``` - deployment.apps/hello-minikube created - ``` -3. To access the `hello-minikube` Deployment, expose it as a Service: - ```shell - kubectl expose deployment hello-minikube --type=NodePort --port=8080 - ``` - The option `--type=NodePort` specifies the type of the Service. + Let’s create a Kubernetes Deployment using an existing image named `echoserver`, which is a simple HTTP server and expose it on port 8080 using `--port`. + + ```shell + kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.10 + ``` + + The output is similar to this: + + ``` + deployment.apps/hello-minikube created + ``` +3. To access the `hello-minikube` Deployment, expose it as a Service: + + ```shell + kubectl expose deployment hello-minikube --type=NodePort --port=8080 + ``` + + The option `--type=NodePort` specifies the type of the Service. + + The output is similar to this: + + ``` + service/hello-minikube exposed + ``` - The output is similar to this: - ``` - service/hello-minikube exposed - ``` 4. The `hello-minikube` Pod is now launched but you have to wait until the Pod is up before accessing it via the exposed Service. - Check if the Pod is up and running: - ```shell - kubectl get pod - ``` - If the output shows the `STATUS` as `ContainerCreating`, the Pod is still being created: - ``` - NAME READY STATUS RESTARTS AGE - hello-minikube-3383150820-vctvh 0/1 ContainerCreating 0 3s - ``` - If the output shows the `STATUS` as `Running`, the Pod is now up and running: - ``` - NAME READY STATUS RESTARTS AGE - hello-minikube-3383150820-vctvh 1/1 Running 0 13s - ``` + Check if the Pod is up and running: + + ```shell + kubectl get pod + ``` + + If the output shows the `STATUS` as `ContainerCreating`, the Pod is still being created: + + ``` + NAME READY STATUS RESTARTS AGE + hello-minikube-3383150820-vctvh 0/1 ContainerCreating 0 3s + ``` + + If the output shows the `STATUS` as `Running`, the Pod is now up and running: + + ``` + NAME READY STATUS RESTARTS AGE + hello-minikube-3383150820-vctvh 1/1 Running 0 13s + ``` + 5. Get the URL of the exposed Service to view the Service details: - ```shell - minikube service hello-minikube --url - ``` + + ```shell + minikube service hello-minikube --url + ``` + 6. To view the details of your local cluster, copy and paste the URL you got as the output, on your browser. - The output is similar to this: - ``` - Hostname: hello-minikube-7c77b68cff-8wdzq + The output is similar to this: - Pod Information: - -no pod information available- + ``` + Hostname: hello-minikube-7c77b68cff-8wdzq - Server values: - server_version=nginx: 1.13.3 - lua: 10008 + Pod Information: + -no pod information available- - Request Information: - client_address=172.17.0.1 - method=GET - real path=/ - query= - request_version=1.1 - request_scheme=http - request_uri=http://192.168.99.100:8080/ + Server values: + server_version=nginx: 1.13.3 - lua: 10008 - Request Headers: + Request Information: + client_address=172.17.0.1 + method=GET + real path=/ + query= + request_version=1.1 + request_scheme=http + request_uri=http://192.168.99.100:8080/ + + Request Headers: accept=*/* host=192.168.99.100:30674 user-agent=curl/7.47.0 - Request Body: + Request Body: -no body in request- - ``` - If you no longer want the Service and cluster to run, you can delete them. + ``` + + If you no longer want the Service and cluster to run, you can delete them. + 7. Delete the `hello-minikube` Service: - ```shell - kubectl delete services hello-minikube - ``` - The output is similar to this: - ``` - service "hello-minikube" deleted - ``` + + ```shell + kubectl delete services hello-minikube + ``` + + The output is similar to this: + + ``` + service "hello-minikube" deleted + ``` + 8. Delete the `hello-minikube` Deployment: - ```shell - kubectl delete deployment hello-minikube - ``` - The output is similar to this: - ``` - deployment.extensions "hello-minikube" deleted - ``` + + ```shell + kubectl delete deployment hello-minikube + ``` + + The output is similar to this: + + ``` + deployment.extensions "hello-minikube" deleted + ``` + 9. Stop the local Minikube cluster: - ```shell - minikube stop - ``` - The output is similar to this: - ``` - Stopping "minikube"... - "minikube" stopped. - ``` - For more information, see [Stopping a Cluster](#stopping-a-cluster). + + ```shell + minikube stop + ``` + + The output is similar to this: + + ``` + Stopping "minikube"... + "minikube" stopped. + ``` + + For more information, see [Stopping a Cluster](#stopping-a-cluster). + 10. Delete the local Minikube cluster: + ```shell minikube delete ``` @@ -193,8 +228,8 @@ For example the command would be. minikube start --driver= ``` Minikube supports the following drivers: - {{< note >}} - See [DRIVERS](https://minikube.sigs.k8s.io/docs/reference/drivers/) for details on supported drivers and how to install +{{< note >}} +See [DRIVERS](https://minikube.sigs.k8s.io/docs/reference/drivers/) for details on supported drivers and how to install plugins. {{< /note >}} diff --git a/content/en/docs/tasks/tools/install-kubectl.md b/content/en/docs/tasks/tools/install-kubectl.md index 6d9ffdcd0a..131362109a 100644 --- a/content/en/docs/tasks/tools/install-kubectl.md +++ b/content/en/docs/tasks/tools/install-kubectl.md @@ -65,6 +65,7 @@ echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/ sudo apt-get update sudo apt-get install -y kubectl {{< /tab >}} + {{< tab name="CentOS, RHEL or Fedora" codelang="bash" >}}cat < /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes @@ -89,24 +90,30 @@ snap install kubectl --classic kubectl version --client ``` + {{% /tab %}} + {{% tab name="Homebrew" %}} If you are on Linux and using [Homebrew](https://docs.brew.sh/Homebrew-on-Linux) package manager, kubectl is available for [installation](https://docs.brew.sh/Homebrew-on-Linux#install). + ```shell brew install kubectl kubectl version --client ``` + {{% /tab %}} + {{< /tabs >}} + ## Install kubectl on macOS ### Install kubectl binary with curl on macOS 1. Download the latest release: - ``` + ``` curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl" ``` @@ -129,6 +136,7 @@ kubectl version --client ``` sudo mv ./kubectl /usr/local/bin/kubectl ``` + 4. Test to ensure the version you installed is up-to-date: ``` @@ -144,8 +152,9 @@ If you are on macOS and using [Homebrew](https://brew.sh/) package manager, you ``` brew install kubectl ``` - or - + + or + ``` brew install kubernetes-cli ``` @@ -188,11 +197,13 @@ If you are on macOS and using [Macports](https://macports.org/) package manager, To find out the latest stable version (for example, for scripting), take a look at [https://storage.googleapis.com/kubernetes-release/release/stable.txt](https://storage.googleapis.com/kubernetes-release/release/stable.txt). 2. Add the binary in to your PATH. + 3. Test to ensure the version of `kubectl` is the same as downloaded: ``` kubectl version --client ``` + {{< note >}} [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/#kubernetes) adds its own version of `kubectl` to PATH. If you have installed Docker Desktop before, you may need to place your PATH entry before the one added by the Docker Desktop installer or remove the Docker Desktop's `kubectl`. @@ -208,10 +219,11 @@ If you are on Windows and using [Powershell Gallery](https://www.powershellgalle Install-Script -Name install-kubectl -Scope CurrentUser -Force install-kubectl.ps1 [-DownloadLocation ] ``` - - {{< note >}}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 + +{{< note >}}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. 2. Test to ensure the version you installed is up-to-date: @@ -219,11 +231,14 @@ If you are on Windows and using [Powershell Gallery](https://www.powershellgalle kubectl version --client ``` - {{< note >}}Updating the installation is performed by rerunning the two commands listed in step 1.{{< /note >}} +{{< note >}} +Updating the installation is performed by rerunning the two commands listed in step 1. +{{< /note >}} ### Install on Windows using Chocolatey or Scoop -To install kubectl on Windows you can use either [Chocolatey](https://chocolatey.org) package manager or [Scoop](https://scoop.sh) command-line installer. +1. To install kubectl on Windows you can use either [Chocolatey](https://chocolatey.org) package manager or [Scoop](https://scoop.sh) command-line installer. + {{< tabs name="kubectl_win_install" >}} {{% tab name="choco" %}} @@ -236,6 +251,8 @@ To install kubectl on Windows you can use either [Chocolatey](https://chocolatey {{% /tab %}} {{< /tabs >}} + + 2. Test to ensure the version you installed is up-to-date: ``` @@ -265,13 +282,14 @@ To install kubectl on Windows you can use either [Chocolatey](https://chocolatey New-Item config -type file ``` - {{< note >}}Edit the config file with a text editor of your choice, such as Notepad.{{< /note >}} +{{< note >}}Edit the config file with a text editor of your choice, such as Notepad.{{< /note >}} ## Download as part of the Google Cloud SDK You can install kubectl as part of the Google Cloud SDK. 1. Install the [Google Cloud SDK](https://cloud.google.com/sdk/). + 2. Run the `kubectl` installation command: ``` @@ -293,6 +311,7 @@ Check that kubectl is properly configured by getting the cluster state: ```shell kubectl cluster-info ``` + If you see a URL response, kubectl is correctly configured to access your cluster. If you see a message similar to the following, kubectl is not configured correctly or is not able to connect to a Kubernetes cluster. @@ -350,18 +369,17 @@ You now need to ensure that the kubectl completion script gets sourced in all yo ```shell echo 'source <(kubectl completion bash)' >>~/.bashrc ``` - - Add the completion script to the `/etc/bash_completion.d` directory: ```shell kubectl completion bash >/etc/bash_completion.d/kubectl ``` -- If you have an alias for kubectl, you can extend shell completion to work with that alias: +If you have an alias for kubectl, you can extend shell completion to work with that alias: - ```shell - echo 'alias k=kubectl' >>~/.bashrc - echo 'complete -F __start_kubectl k' >>~/.bashrc - ``` +```shell +echo 'alias k=kubectl' >>~/.bashrc +echo 'complete -F __start_kubectl k' >>~/.bashrc +``` {{< note >}} bash-completion sources all completion scripts in `/etc/bash_completion.d`. @@ -382,7 +400,7 @@ The kubectl completion script for Bash can be generated with `kubectl completion However, the kubectl completion script depends on [**bash-completion**](https://github.com/scop/bash-completion) which you thus have to previously install. {{< warning>}} -there are two versions of bash-completion, v1 and v2. V1 is for Bash 3.2 (which is the default on macOS), and v2 is for Bash 4.1+. The kubectl completion script **doesn't work** correctly with bash-completion v1 and Bash 3.2. It requires **bash-completion v2** and **Bash 4.1+**. Thus, to be able to correctly use kubectl completion on macOS, you have to install and use Bash 4.1+ ([*instructions*](https://itnext.io/upgrading-bash-on-macos-7138bd1066ba)). The following instructions assume that you use Bash 4.1+ (that is, any Bash version of 4.1 or newer). +There are two versions of bash-completion, v1 and v2. V1 is for Bash 3.2 (which is the default on macOS), and v2 is for Bash 4.1+. The kubectl completion script **doesn't work** correctly with bash-completion v1 and Bash 3.2. It requires **bash-completion v2** and **Bash 4.1+**. Thus, to be able to correctly use kubectl completion on macOS, you have to install and use Bash 4.1+ ([*instructions*](https://itnext.io/upgrading-bash-on-macos-7138bd1066ba)). The following instructions assume that you use Bash 4.1+ (that is, any Bash version of 4.1 or newer). {{< /warning >}} ### Upgrade Bash @@ -454,9 +472,9 @@ You now have to ensure that the kubectl completion script gets sourced in all yo - If you installed kubectl with Homebrew (as explained [above](#install-with-homebrew-on-macos)), then the kubectl completion script should already be in `/usr/local/etc/bash_completion.d/kubectl`. In that case, you don't need to do anything. -{{< note >}} -the Homebrew installation of bash-completion v2 sources all the files in the `BASH_COMPLETION_COMPAT_DIR` directory, that's why the latter two methods work. -{{< /note >}} + {{< note >}} + The Homebrew installation of bash-completion v2 sources all the files in the `BASH_COMPLETION_COMPAT_DIR` directory, that's why the latter two methods work. + {{< /note >}} In any case, after reloading your shell, kubectl completion should be working. {{% /tab %}} @@ -489,6 +507,7 @@ compinit {{% /tab %}} {{< /tabs >}} + {{% /capture %}} {{% capture whatsnext %}} diff --git a/layouts/shortcodes/tabs.html b/layouts/shortcodes/tabs.html index cfb6246aae..7abe6c14e8 100644 --- a/layouts/shortcodes/tabs.html +++ b/layouts/shortcodes/tabs.html @@ -1,43 +1,43 @@ -{{ .Page.Scratch.Add "tabset-counter" 1 }} -{{ $tab_set_id := .Get "name" | default (printf "tabset-%s-%d" (.Page.RelPermalink) (.Page.Scratch.Get "tabset-counter") ) | anchorize }} -{{ $tabs := .Scratch.Get "tabs" }} -{{ if .Inner }}{{/* We don't use the inner content, but Hugo will complain if we don't reference it. */}}{{ end }} +{{- .Page.Scratch.Add "tabset-counter" 1 -}} +{{- $tab_set_id := .Get "name" | default (printf "tabset-%s-%d" (.Page.RelPermalink) (.Page.Scratch.Get "tabset-counter") ) | anchorize -}} +{{- $tabs := .Scratch.Get "tabs" -}} +{{- if .Inner -}}{{- /* We don't use the inner content, but Hugo will complain if we don't reference it. */ -}}{{- end -}}
    - {{ range $i, $e := $tabs }} - {{ $id := printf "%s-%d" $tab_set_id $i }} -
  • {{ trim .name " " }}
  • -{{ end }} + {{- range $i, $e := $tabs -}} + {{- $id := printf "%s-%d" $tab_set_id $i -}} +
  • {{- trim .name " " -}}
  • +{{- end -}}
-{{ range $i, $e := $tabs }} -{{ $id := printf "%s-%d" $tab_set_id $i }} +{{- range $i, $e := $tabs -}} +{{- $id := printf "%s-%d" $tab_set_id $i -}}
- {{ with .content }} - {{ . }} - {{ else }} - {{ if eq $.Page.BundleType "leaf" }} - {{/* find the file somewhere inside the bundle. Note the use of double asterisk */}} - {{ with $.Page.Resources.GetMatch (printf "**%s*" .include) }} - {{ if ne .ResourceType "page" }} - {{/* Assume it is a file that needs code highlighting. */}} - {{ $codelang := $e.codelang | default ( path.Ext .Name | strings.TrimPrefix ".") }} - {{ highlight .Content $codelang "" }} - {{ else}} - {{ .Content }} - {{ end }} - {{ end }} - {{ else}} - {{ $path := path.Join $.Page.File.Dir .include }} - {{ $page := site.GetPage "page" $path }} - {{ with $page }} - {{ .Content }} - {{ else }} - {{ errorf "[%s] tabs include not found for path %q" site.Language.Lang $path}} - {{ end }} - {{ end }} - {{ end }} + {{- with .content -}} + {{- . -}} + {{- else -}} + {{- if eq $.Page.BundleType "leaf" -}} + {{- /* find the file somewhere inside the bundle. Note the use of double asterisk */ -}} + {{- with $.Page.Resources.GetMatch (printf "**%s*" .include) -}} + {{- if ne .ResourceType "page" -}} + {{- /* Assume it is a file that needs code highlighting. */ -}} + {{- $codelang := $e.codelang | default ( path.Ext .Name | strings.TrimPrefix ".") -}} + {{- highlight .Content $codelang "" -}} + {{- else -}} + {{- .Content -}} + {{- end -}} + {{- end -}} + {{- else -}} + {{- $path := path.Join $.Page.File.Dir .include -}} + {{- $page := site.GetPage "page" $path -}} + {{- with $page -}} + {{- .Content -}} + {{- else -}} + {{- errorf "[%s] tabs include not found for path %q" site.Language.Lang $path -}} + {{- end -}} + {{- end -}} + {{- end -}}
-{{ end }} +{{- end -}}
-{{ $elem := $tab_set_id | safeJS }} - +{{- $elem := $tab_set_id | safeJS -}} + \ No newline at end of file From 4416288c28d4d8c1713ef3e3f601be330d387464 Mon Sep 17 00:00:00 2001 From: Karen Bradshaw Date: Mon, 27 Apr 2020 13:12:47 -0400 Subject: [PATCH 15/66] reformat kubelet ref page --- .../command-line-tools-reference/kubelet.md | 2266 ++++++++--------- 1 file changed, 1133 insertions(+), 1133 deletions(-) diff --git a/content/en/docs/reference/command-line-tools-reference/kubelet.md b/content/en/docs/reference/command-line-tools-reference/kubelet.md index 707005d020..595ef138fc 100644 --- a/content/en/docs/reference/command-line-tools-reference/kubelet.md +++ b/content/en/docs/reference/command-line-tools-reference/kubelet.md @@ -29,1240 +29,1240 @@ kubelet [flags] {{% capture options %}} - - - - - - +
++++ + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
--add-dir-header
If true, adds the file directory to the header
--add-dir-header
If true, adds the file directory to the header
--address 0.0.0.0
The IP address for the Kubelet to serve on (set to 0.0.0.0 for all IPv4 interfaces and `::` for all IPv6 interfaces) (default 0.0.0.0) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--address 0.0.0.0
The IP address for the Kubelet to serve on (set to 0.0.0.0 for all IPv4 interfaces and `::` for all IPv6 interfaces) (default 0.0.0.0) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--allowed-unsafe-sysctls strings
Comma-separated whitelist of unsafe sysctls or unsafe sysctl patterns (ending in *). Use these at your own risk. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--allowed-unsafe-sysctls strings
Comma-separated whitelist of unsafe sysctls or unsafe sysctl patterns (ending in *). Use these at your own risk. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--alsologtostderr
log to standard error as well as files
--alsologtostderr
log to standard error as well as files
--anonymous-auth
Enables anonymous requests to the Kubelet server. Requests that are not rejected by another authentication method are treated as anonymous requests. Anonymous requests have a username of system:anonymous, and a group name of system:unauthenticated. (default true) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--anonymous-auth
Enables anonymous requests to the Kubelet server. Requests that are not rejected by another authentication method are treated as anonymous requests. Anonymous requests have a username of system:anonymous, and a group name of system:unauthenticated. (default true) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--application-metrics-count-limit int
Max number of application metrics to store (per container) (default 100) (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--application-metrics-count-limit int
Max number of application metrics to store (per container) (default 100) (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns,it will follow the standard CLI deprecation timeline before being removed.)
--authentication-token-webhook
Use the TokenReview API to determine authentication for bearer tokens. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--authentication-token-webhook
Use the TokenReview API to determine authentication for bearer tokens. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--authentication-token-webhook-cache-ttl duration
The duration to cache responses from the webhook token authenticator. (default 2m0s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--authentication-token-webhook-cache-ttl duration
The duration to cache responses from the webhook token authenticator. (default 2m0s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's +--config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--authorization-mode string
Authorization mode for Kubelet server. Valid options are AlwaysAllow or Webhook. Webhook mode uses the SubjectAccessReview API to determine authorization. (default "AlwaysAllow" when --config flag is not provided; "Webhook" when --config flag presents.) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--authorization-mode string
Authorization mode for Kubelet server. Valid options are AlwaysAllow or Webhook. Webhook mode uses the SubjectAccessReview API to determine authorization. (default "AlwaysAllow" when --config flag is not provided; "Webhook" when --config flag presents.) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--authorization-webhook-cache-authorized-ttl duration
The duration to cache 'authorized' responses from the webhook authorizer. (default 5m0s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--authorization-webhook-cache-authorized-ttl duration
The duration to cache 'authorized' responses from the webhook authorizer. (default 5m0s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--authorization-webhook-cache-unauthorized-ttl duration
The duration to cache 'unauthorized' responses from the webhook authorizer. (default 30s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--authorization-webhook-cache-unauthorized-ttl duration
The duration to cache 'unauthorized' responses from the webhook authorizer. (default 30s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--azure-container-registry-config string
Path to the file container Azure container registry configuration information.
--azure-container-registry-config string
Path to the file container Azure container registry configuration information.
--boot-id-file string
Comma-separated list of files to check for boot-id. Use the first one that exists. (default "/proc/sys/kernel/random/boot_id") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--boot-id-file string
Comma-separated list of files to check for boot-id. Use the first one that exists. (default "/proc/sys/kernel/random/boot_id") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--bootstrap-checkpoint-path string
Path to the directory where the checkpoints are stored
--bootstrap-checkpoint-path string
<Warning: Alpha feature> Path to the directory where the checkpoints are stored
--bootstrap-kubeconfig string
Path to a kubeconfig file that will be used to get client certificate for 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 success, a kubeconfig file referencing the generated client certificate and key is written to the path specified by --kubeconfig. The client certificate and key file will be stored in the directory pointed by --cert-dir.
--bootstrap-kubeconfig string
Path to a kubeconfig file that will be used to get client certificate for 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 success, a kubeconfig file referencing the generated client certificate and key is written to the path specified by --kubeconfig. The client certificate and key file will be stored in the directory pointed by --cert-dir.
--cert-dir string
The directory where the TLS certs are located. If --tls-cert-file and --tls-private-key-file are provided, this flag will be ignored. (default "/var/lib/kubelet/pki")
--cert-dir string
The directory where the TLS certs are located. If --tls-cert-file and --tls-private-key-file are provided, this flag will be ignored. (default "/var/lib/kubelet/pki")
--cgroup-driver string
Driver that the kubelet uses to manipulate cgroups on the host. Possible values: 'cgroupfs', 'systemd' (default "cgroupfs") (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)/td> -
--cgroup-driver string
Driver that the kubelet uses to manipulate cgroups on the host. Possible values: 'cgroupfs', 'systemd' (default "cgroupfs") (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)/td> +
--cgroup-root string
Optional root cgroup to use for pods. This is handled by the container runtime on a best effort basis. Default: '', which means use the container runtime default. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--cgroup-root string
Optional root cgroup to use for pods. This is handled by the container runtime on a best effort basis. Default: '', which means use the container runtime default. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--cgroups-per-qos
Enable creation of QoS cgroup hierarchy, if true top level QoS and pod cgroups are created. (default true) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--cgroups-per-qos
Enable creation of QoS cgroup hierarchy, if true top level QoS and pod cgroups are created. (default true) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--chaos-chance float
If > 0.0, introduce random client errors and latency. Intended for testing.
--chaos-chance float
If > 0.0, introduce random client errors and latency. Intended for testing.
--client-ca-file string
If set, any request presenting a client certificate signed by one of the authorities in the client-ca-file is authenticated with an identity corresponding to the CommonName of the client certificate. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--client-ca-file string
If set, any request presenting a client certificate signed by one of the authorities in the client-ca-file is authenticated with an identity corresponding to the CommonName of the client certificate. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--cloud-config string
The path to the cloud provider configuration file.
--cloud-config string
The path to the cloud provider configuration file.
--cloud-provider string
The provider for cloud services. Specify empty string for running with no cloud provider. If set, the cloud provider determines the name of the node (consult cloud provider documentation to determine if and how the hostname is used).
--cloud-provider string
The provider for cloud services. Specify empty string for running with no cloud provider. If set, the cloud provider determines the name of the node (consult cloud provider documentation to determine if and how the hostname is used).
--cluster-dns strings
Comma-separated list of DNS server IP address. This value is used for containers DNS server in case of Pods with "dnsPolicy=ClusterFirst". Note: all DNS servers appearing in the list MUST serve the same set of records otherwise name resolution within the cluster may not work correctly. There is no guarantee as to which DNS server may be contacted for name resolution. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--cluster-dns strings
Comma-separated list of DNS server IP address. This value is used for containers DNS server in case of Pods with "dnsPolicy=ClusterFirst". Note: all DNS servers appearing in the list MUST serve the same set of records otherwise name resolution within the cluster may not work correctly. There is no guarantee as to which DNS server may be contacted for name resolution. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--cluster-domain string
Domain for this cluster. If set, kubelet will configure all containers to search this domain in addition to the host's search domains (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--cluster-domain string
Domain for this cluster. If set, kubelet will configure all containers to search this domain in addition to the host's search domains (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--cni-bin-dir string
A comma-separated list of full paths of directories in which to search for CNI plugin binaries. This docker-specific flag only works when container-runtime is set to docker. (default "/opt/cni/bin")
--cni-bin-dir string
<Warning: Alpha feature> A comma-separated list of full paths of directories in which to search for CNI plugin binaries. This docker-specific flag only works when container-runtime is set to docker. (default "/opt/cni/bin")
--cni-cache-dir string
The full path of the directory in which CNI should store cache files. This docker-specific flag only works when container-runtime is set to docker. (default "/var/lib/cni/cache")
--cni-cache-dir string
<Warning: Alpha feature> The full path of the directory in which CNI should store cache files. This docker-specific flag only works when container-runtime is set to docker. (default "/var/lib/cni/cache")
--cni-conf-dir string
The full path of the directory in which to search for CNI config files. This docker-specific flag only works when container-runtime is set to docker. (default "/etc/cni/net.d")
--cni-conf-dir string
<Warning: Alpha feature> The full path of the directory in which to search for CNI config files. This docker-specific flag only works when container-runtime is set to docker. (default "/etc/cni/net.d")
--config string
The Kubelet will load its initial configuration from this file. The path may be absolute or relative; relative paths start at the Kubelet's current working directory. Omit this flag to use the built-in default configuration values. Command-line flags override configuration from this file.
--config string
The Kubelet will load its initial configuration from this file. The path may be absolute or relative; relative paths start at the Kubelet's current working directory. Omit this flag to use the built-in default configuration values. Command-line flags override configuration from this file.
--container-hints string
location of the container hints file (default "/etc/cadvisor/container_hints.json") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--container-hints string
location of the container hints file (default "/etc/cadvisor/container_hints.json") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--container-log-max-files int32
Set the maximum number of container log files that can be present for a container. The number must be >= 2. This flag can only be used with --container-runtime=remote. (default 5) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--container-log-max-size string
Set the maximum size (e.g. 10Mi) of container log file before it is rotated. This flag can only be used with --container-runtime=remote. (default "10Mi") (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--container-log-max-files int32
<Warning: Beta feature> Set the maximum number of container log files that can be present for a container. The number must be ≥ 2. This flag can only be used with --container-runtime=remote. (default 5) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--container-runtime string
The container runtime to use. Possible values: 'docker', 'remote', 'rkt(deprecated)'. (default "docker")
--container-log-max-size string
<Warning: Beta feature> Set the maximum size (e.g. 10Mi) of container log file before it is rotated. This flag can only be used with --container-runtime=remote. (default "10Mi") (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--container-runtime-endpoint string
[Experimental] The endpoint of remote runtime service. Currently unix socket endpoint is supported on Linux, while npipe and tcp endpoints are supported on windows. Examples:'unix:///var/run/dockershim.sock', 'npipe:////./pipe/dockershim' (default "unix:///var/run/dockershim.sock")
--container-runtime string
The container runtime to use. Possible values: 'docker', 'remote', 'rkt(deprecated)'. (default "docker")
--containerd string
containerd endpoint (default "/run/containerd/containerd.sock") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--container-runtime-endpoint string
[Experimental] The endpoint of remote runtime service. Currently unix socket endpoint is supported on Linux, while npipe and tcp endpoints are supported on windows. Examples:'unix:///var/run/dockershim.sock', 'npipe:////./pipe/dockershim' (default "unix:///var/run/dockershim.sock")
--containerd string
containerd endpoint (default "/run/containerd/containerd.sock") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--contention-profiling
Enable lock contention profiling, if profiling is enabled (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--contention-profiling
Enable lock contention profiling, if profiling is enabled (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--cpu-cfs-quota
Enable CPU CFS quota enforcement for containers that specify CPU limits (default true) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--cpu-cfs-quota
Enable CPU CFS quota enforcement for containers that specify CPU limits (default true) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--cpu-cfs-quota-period duration
Sets CPU CFS quota period value, cpu.cfs_period_us, defaults to Linux Kernel default (default 100ms) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--cpu-cfs-quota-period duration
Sets CPU CFS quota period value, cpu.cfs_period_us, defaults to Linux Kernel default (default 100ms) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--cpu-manager-policy string
CPU Manager policy to use. Possible values: 'none', 'static'. Default: 'none' (default "none") (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--cpu-manager-policy string
CPU Manager policy to use. Possible values: 'none', 'static'. Default: 'none' (default "none") (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--cpu-manager-reconcile-period NodeStatusUpdateFrequency
CPU Manager reconciliation period. Examples: '10s', or '1m'. If not supplied, defaults to NodeStatusUpdateFrequency (default 10s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--cpu-manager-reconcile-period NodeStatusUpdateFrequency
<Warning: Alpha feature> CPU Manager reconciliation period. Examples: '10s', or '1m'. If not supplied, defaults to NodeStatusUpdateFrequency (default 10s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--docker string
docker endpoint (default "unix:///var/run/docker.sock") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--docker string
docker endpoint (default "unix:///var/run/docker.sock") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--docker-endpoint string
Use this for the docker endpoint to communicate with. This docker-specific flag only works when container-runtime is set to docker. (default "unix:///var/run/docker.sock")
--docker-endpoint string
Use this for the docker endpoint to communicate with. This docker-specific flag only works when container-runtime is set to docker. (default "unix:///var/run/docker.sock")
--docker-env-metadata-whitelist string
a comma-separated list of environment variable keys that needs to be collected for docker containers (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--docker-env-metadata-whitelist string
a comma-separated list of environment variable keys that needs to be collected for docker containers (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--docker-only
Only report docker containers in addition to root stats (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--docker-only
Only report docker containers in addition to root stats (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--docker-root string
DEPRECATED: docker root is read from docker info (this is a fallback, default: /var/lib/docker) (default "/var/lib/docker")
--docker-root string
DEPRECATED: docker root is read from docker info (this is a fallback, default: /var/lib/docker) (default "/var/lib/docker")
--docker-tls
use TLS to connect to docker (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--docker-tls
use TLS to connect to docker (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--docker-tls-ca string
path to trusted CA (default "ca.pem") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--docker-tls-ca string
path to trusted CA (default "ca.pem") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--docker-tls-cert string
path to client certificate (default "cert.pem") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--docker-tls-cert string
path to client certificate (default "cert.pem") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--docker-tls-key string
path to private key (default "key.pem") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--docker-tls-key string
path to private key (default "key.pem") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--dynamic-config-dir string
The Kubelet will use this directory for checkpointing downloaded configurations and tracking configuration health. The Kubelet will create this directory if it does not already exist. The path may be absolute or relative; relative paths start at the Kubelet's current working directory. Providing this flag enables dynamic Kubelet configuration. The DynamicKubeletConfig feature gate must be enabled to pass this flag; this gate currently defaults to true because the feature is beta.
--dynamic-config-dir string
The Kubelet will use this directory for checkpointing downloaded configurations and tracking configuration health. The Kubelet will create this directory if it does not already exist. The path may be absolute or relative; relative paths start at the Kubelet's current working directory. Providing this flag enables dynamic Kubelet configuration. The DynamicKubeletConfig feature gate must be enabled to pass this flag; this gate currently defaults to true because the feature is beta.
--enable-cadvisor-json-endpoints
Enable cAdvisor json /spec and /stats/* endpoints. (default false) (DEPRECATED: will be removed in a future version)
--enable-cadvisor-json-endpoints
Enable cAdvisor json /spec and /stats/* endpoints. (default false) (DEPRECATED: will be removed in a future version)
--enable-controller-attach-detach
Enables the Attach/Detach controller to manage attachment/detachment of volumes scheduled to this node, and disables kubelet from executing any attach/detach operations (default true)
--enable-controller-attach-detach
Enables the Attach/Detach controller to manage attachment/detachment of volumes scheduled to this node, and disables kubelet from executing any attach/detach operations (default true)
--enable-debugging-handlers
Enables server endpoints for log collection and local running of containers and commands (default true) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--enable-debugging-handlers
Enables server endpoints for log collection and local running of containers and commands (default true) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--enable-load-reader
Whether to enable cpu load reader (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--enable-load-reader
Whether to enable cpu load reader (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--enable-server
Enable the Kubelet's server (default true)
--enable-server
Enable the Kubelet's server (default true)
--enforce-node-allocatable stringSlice
A comma separated list of levels of node allocatable enforcement to be enforced by kubelet. Acceptable options are 'none', 'pods', 'system-reserved', and 'kube-reserved'. If the latter two options are specified, '--system-reserved-cgroup' and '--kube-reserved-cgroup' must also be set, respectively. If 'none' is specified, no additional options should be set. See https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources/ for more details. (default [pods]) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--enforce-node-allocatable stringSlice
A comma separated list of levels of node allocatable enforcement to be enforced by kubelet. Acceptable options are 'none', 'pods', 'system-reserved', and 'kube-reserved'. If the latter two options are specified, '--system-reserved-cgroup' and '--kube-reserved-cgroup' must also be set, respectively. If 'none' is specified, no additional options should be set. See https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources/ for more details. (default [pods]) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--event-burst int32
Maximum size of a bursty event records, temporarily allows event records to burst to this number, while still not exceeding event-qps. Only used if --event-qps > 0 (default 10) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--event-burst int32
Maximum size of a bursty event records, temporarily allows event records to burst to this number, while still not exceeding event-qps. Only used if --event-qps > 0 (default 10) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--event-qps int32
If > 0, limit event creations per second to this value. If 0, unlimited. (default 5) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--event-qps int32
If > 0, limit event creations per second to this value. If 0, unlimited. (default 5) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--event-storage-age-limit string
Max length of time for which to store events (per type). Value is a comma separated list of key values, where the keys are event types (e.g.: creation, oom) or "default" and the value is a duration. Default is applied to all non-specified event types (default "default=0") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--event-storage-age-limit string
Max length of time for which to store events (per type). Value is a comma separated list of key values, where the keys are event types (e.g.: creation, oom) or "default" and the value is a duration. Default is applied to all non-specified event types (default "default=0") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--event-storage-event-limit string
Max number of events to store (per type). Value is a comma separated list of key values, where the keys are event types (e.g.: creation, oom) or "default" and the value is an integer. Default is applied to all non-specified event types (default "default=0") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--event-storage-event-limit string
Max number of events to store (per type). Value is a comma separated list of key values, where the keys are event types (e.g.: creation, oom) or "default" and the value is an integer. Default is applied to all non-specified event types (default "default=0") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--eviction-hard mapStringString
A set of eviction thresholds (e.g. memory.available<1Gi) that if met would trigger a pod eviction. (default imagefs.available<15%,memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--eviction-hard mapStringString
A set of eviction thresholds (e.g. memory.available<1Gi) that if met would trigger a pod eviction. (default imagefs.available<15%,memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--eviction-max-pod-grace-period int32
Maximum allowed grace period (in seconds) to use when terminating pods in response to a soft eviction threshold being met. If negative, defer to pod specified value. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--eviction-max-pod-grace-period int32
Maximum allowed grace period (in seconds) to use when terminating pods in response to a soft eviction threshold being met. If negative, defer to pod specified value. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--eviction-minimum-reclaim mapStringString
A set of minimum reclaims (e.g. imagefs.available=2Gi) that describes the minimum amount of resource the kubelet will reclaim when performing a pod eviction if that resource is under pressure. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--eviction-minimum-reclaim mapStringString
A set of minimum reclaims (e.g. imagefs.available=2Gi) that describes the minimum amount of resource the kubelet will reclaim when performing a pod eviction if that resource is under pressure. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--eviction-pressure-transition-period duration
Duration for which the kubelet has to wait before transitioning out of an eviction pressure condition. (default 5m0s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--eviction-pressure-transition-period duration
Duration for which the kubelet has to wait before transitioning out of an eviction pressure condition. (default 5m0s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--eviction-soft mapStringString
A set of eviction thresholds (e.g. memory.available<1.5Gi) that if met over a corresponding grace period would trigger a pod eviction. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--eviction-soft mapStringString
A set of eviction thresholds (e.g. memory.available<1.5Gi) that if met over a corresponding grace period would trigger a pod eviction. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--eviction-soft-grace-period mapStringString
A set of eviction grace periods (e.g. memory.available=1m30s) that correspond to how long a soft eviction threshold must hold before triggering a pod eviction. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--eviction-soft-grace-period mapStringString
A set of eviction grace periods (e.g. memory.available=1m30s) that correspond to how long a soft eviction threshold must hold before triggering a pod eviction. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--exit-on-lock-contention
Whether kubelet should exit upon lock-file contention.
--exit-on-lock-contention
Whether kubelet should exit upon lock-file contention.
--experimental-allocatable-ignore-eviction
When set to 'true', Hard Eviction Thresholds will be ignored while calculating Node Allocatable. See https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources/ for more details. [default=false]
--experimental-allocatable-ignore-eviction
When set to 'true', Hard Eviction Thresholds will be ignored while calculating Node Allocatable. See https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources/ for more details. [default=false]
--experimental-bootstrap-kubeconfig string
(DEPRECATED: Use --bootstrap-kubeconfig)
--experimental-bootstrap-kubeconfig string
(DEPRECATED: Use --bootstrap-kubeconfig)
--experimental-check-node-capabilities-before-mount
[Experimental] if set true, the kubelet will check the underlying node for required components (binaries, etc.) before performing the mount
--experimental-check-node-capabilities-before-mount
[Experimental] if set true, the kubelet will check the underlying node for required components (binaries, etc.) before performing the mount
--experimental-kernel-memcg-notification
If enabled, the kubelet will integrate with the kernel memcg notification to determine if memory eviction thresholds are crossed rather than polling.
--experimental-kernel-memcg-notification
If enabled, the kubelet will integrate with the kernel memcg notification to determine if memory eviction thresholds are crossed rather than polling.
--experimental-mounter-path string
[Experimental] Path of mounter binary. Leave empty to use the default mount.
--experimental-mounter-path string
[Experimental] Path of mounter binary. Leave empty to use the default mount.
--fail-swap-on
Makes the Kubelet fail to start if swap is enabled on the node. (default true) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--fail-swap-on
Makes the Kubelet fail to start if swap is enabled on the node. (default true) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--feature-gates mapStringBool
A set of key=value pairs that describe feature gates for alpha/experimental features. Options are:
APIListChunking=true|false (BETA - default=true)
APIResponseCompression=true|false (BETA - default=true)
AllAlpha=true|false (ALPHA - default=false)
AppArmor=true|false (BETA - default=true)
AttachVolumeLimit=true|false (BETA - default=true)
BalanceAttachedNodeVolumes=true|false (ALPHA - default=false)
BlockVolume=true|false (BETA - default=true)
BoundServiceAccountTokenVolume=true|false (ALPHA - default=false)
CPUManager=true|false (BETA - default=true)
CRIContainerLogRotation=true|false (BETA - default=true) -
CSIBlockVolume=true|false (BETA - default=true)
CSIDriverRegistry=true|false (BETA - default=true)
CSIInlineVolume=true|false (BETA - default=true)
CSIMigration=true|false (ALPHA - default=false)
CSIMigrationAWS=true|false (ALPHA - default=false)
CSIMigrationAzureDisk=true|false (ALPHA - default=false)
CSIMigrationAzureFile=true|false (ALPHA - default=false)
CSIMigrationGCE=true|false (ALPHA - default=false)
CSIMigrationOpenStack=true|false (ALPHA - default=false)
CSINodeInfo=true|false (BETA - default=true)
CustomCPUCFSQuotaPeriod=true|false (ALPHA - default=false)
CustomResourceDefaulting=true|false (BETA - default=true)
DevicePlugins=true|false (BETA - default=true)
DryRun=true|false (BETA - default=true)
DynamicAuditing=true|false (ALPHA - default=false)
DynamicKubeletConfig=true|false (BETA - default=true)
EndpointSlice=true|false (ALPHA - default=false)
EphemeralContainers=true|false (ALPHA - default=false)
EvenPodsSpread=true|false (ALPHA - default=false)
ExpandCSIVolumes=true|false (BETA - default=true)
ExpandInUsePersistentVolumes=true|false (BETA - default=true)
ExpandPersistentVolumes=true|false (BETA - default=true)
ExperimentalHostUserNamespaceDefaulting=true|false (BETA - default=false)
HPAScaleToZero=true|false (ALPHA - default=false)
HyperVContainer=true|false (ALPHA - default=false)
IPv6DualStack=true|false (ALPHA - default=false)
KubeletPodResources=true|false (BETA - default=true)
LegacyNodeRoleBehavior=true|false (ALPHA - default=true)
LocalStorageCapacityIsolation=true|false (BETA - default=true)
LocalStorageCapacityIsolationFSQuotaMonitoring=true|false (ALPHA - default=false)
MountContainers=true|false (ALPHA - default=false)
NodeDisruptionExclusion=true|false (ALPHA - default=false)
NodeLease=true|false (BETA - default=true)
NonPreemptingPriority=true|false (ALPHA - default=false)
PodOverhead=true|false (ALPHA - default=false)
PodShareProcessNamespace=true|false (BETA - default=true)
ProcMountType=true|false (ALPHA - default=false)br/>QOSReserved=true|false (ALPHA - default=false)
RemainingItemCount=true|false (BETA - default=true)
RemoveSelfLink=true|false (ALPHA - default=false)
RequestManagement=true|false (ALPHA - default=false)
ResourceLimitsPriorityFunction=true|false (ALPHA - default=false)
ResourceQuotaScopeSelectors=true|false (BETA - default=true)
RotateKubeletClientCertificate=true|false (BETA - default=true)
RotateKubeletServerCertificate=true|false (BETA - default=true)
RunAsGroup=true|false (BETA - default=true)
RuntimeClass=true|false (BETA - default=true)
SCTPSupport=true|false (ALPHA - default=false)
ScheduleDaemonSetPods=true|false (BETA - default=true)
ServerSideApply=true|false (BETA - default=true)
ServiceLoadBalancerFinalizer=true|false (BETA - default=true)
ServiceNodeExclusion=true|false (ALPHA - default=false)
StartupProbe=true|false (BETA - default=true)
StorageVersionHash=true|false (BETA - default=true)
StreamingProxyRedirects=true|false (BETA - default=true)
SupportNodePidsLimit=true|false (BETA - default=true)
SupportPodPidsLimit=true|false (BETA - default=true)
Sysctls=true|false (BETA - default=true)
TTLAfterFinished=true|false (ALPHA - default=false)
TaintBasedEvictions=true|false (BETA - default=true)
TaintNodesByCondition=true|false (BETA - default=true)
TokenRequest=true|false (BETA - default=true)
TokenRequestProjection=true|false (BETA - default=true)
TopologyManager=true|false (ALPHA - default=false)
ValidateProxyRedirects=true|false (BETA - default=true)
VolumePVCDataSource=true|false (BETA - default=true)
VolumeSnapshotDataSource=true|false (ALPHA - default=false)
VolumeSubpathEnvExpansion=true|false (BETA - default=true)
WatchBookmark=true|false (BETA - default=true)
WinDSR=true|false (ALPHA - default=false)
WinOverlay=true|false (ALPHA - default=false)
WindowsGMSA=true|false (BETA - default=true)
WindowsRunAsUserName=true|false (ALPHA - default=false) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--feature-gates mapStringBool
A set of key=value pairs that describe feature gates for alpha/experimental features. Options are:
APIListChunking=true|false (BETA - default=true)
APIResponseCompression=true|false (BETA - default=true)
AllAlpha=true|false (ALPHA - default=false)
AppArmor=true|false (BETA - default=true)
AttachVolumeLimit=true|false (BETA - default=true)
BalanceAttachedNodeVolumes=true|false (ALPHA - default=false)
BlockVolume=true|false (BETA - default=true)
BoundServiceAccountTokenVolume=true|false (ALPHA - default=false)
CPUManager=true|false (BETA - default=true)
CRIContainerLogRotation=true|false (BETA - default=true) +
CSIBlockVolume=true|false (BETA - default=true)
CSIDriverRegistry=true|false (BETA - default=true)
CSIInlineVolume=true|false (BETA - default=true)
CSIMigration=true|false (ALPHA - default=false)
CSIMigrationAWS=true|false (ALPHA - default=false)
CSIMigrationAzureDisk=true|false (ALPHA - default=false)
CSIMigrationAzureFile=true|false (ALPHA - default=false)
CSIMigrationGCE=true|false (ALPHA - default=false)
CSIMigrationOpenStack=true|false (ALPHA - default=false)
CSINodeInfo=true|false (BETA - default=true)
CustomCPUCFSQuotaPeriod=true|false (ALPHA - default=false)
CustomResourceDefaulting=true|false (BETA - default=true)
DevicePlugins=true|false (BETA - default=true)
DryRun=true|false (BETA - default=true)
DynamicAuditing=true|false (ALPHA - default=false)
DynamicKubeletConfig=true|false (BETA - default=true)
EndpointSlice=true|false (ALPHA - default=false)
EphemeralContainers=true|false (ALPHA - default=false)
EvenPodsSpread=true|false (ALPHA - default=false)
ExpandCSIVolumes=true|false (BETA - default=true)
ExpandInUsePersistentVolumes=true|false (BETA - default=true)
ExpandPersistentVolumes=true|false (BETA - default=true)
ExperimentalHostUserNamespaceDefaulting=true|false (BETA - default=false)
HPAScaleToZero=true|false (ALPHA - default=false)
HyperVContainer=true|false (ALPHA - default=false)
IPv6DualStack=true|false (ALPHA - default=false)
KubeletPodResources=true|false (BETA - default=true)
LegacyNodeRoleBehavior=true|false (ALPHA - default=true)
LocalStorageCapacityIsolation=true|false (BETA - default=true)
LocalStorageCapacityIsolationFSQuotaMonitoring=true|false (ALPHA - default=false)
MountContainers=true|false (ALPHA - default=false)
NodeDisruptionExclusion=true|false (ALPHA - default=false)
NodeLease=true|false (BETA - default=true)
NonPreemptingPriority=true|false (ALPHA - default=false)
PodOverhead=true|false (ALPHA - default=false)
PodShareProcessNamespace=true|false (BETA - default=true)
ProcMountType=true|false (ALPHA - default=false)br/>QOSReserved=true|false (ALPHA - default=false)
RemainingItemCount=true|false (BETA - default=true)
RemoveSelfLink=true|false (ALPHA - default=false)
RequestManagement=true|false (ALPHA - default=false)
ResourceLimitsPriorityFunction=true|false (ALPHA - default=false)
ResourceQuotaScopeSelectors=true|false (BETA - default=true)
RotateKubeletClientCertificate=true|false (BETA - default=true)
RotateKubeletServerCertificate=true|false (BETA - default=true)
RunAsGroup=true|false (BETA - default=true)
RuntimeClass=true|false (BETA - default=true)
SCTPSupport=true|false (ALPHA - default=false)
ScheduleDaemonSetPods=true|false (BETA - default=true)
ServerSideApply=true|false (BETA - default=true)
ServiceLoadBalancerFinalizer=true|false (BETA - default=true)
ServiceNodeExclusion=true|false (ALPHA - default=false)
StartupProbe=true|false (BETA - default=true)
StorageVersionHash=true|false (BETA - default=true)
StreamingProxyRedirects=true|false (BETA - default=true)
SupportNodePidsLimit=true|false (BETA - default=true)
SupportPodPidsLimit=true|false (BETA - default=true)
Sysctls=true|false (BETA - default=true)
TTLAfterFinished=true|false (ALPHA - default=false)
TaintBasedEvictions=true|false (BETA - default=true)
TaintNodesByCondition=true|false (BETA - default=true)
TokenRequest=true|false (BETA - default=true)
TokenRequestProjection=true|false (BETA - default=true)
TopologyManager=true|false (ALPHA - default=false)
ValidateProxyRedirects=true|false (BETA - default=true)
VolumePVCDataSource=true|false (BETA - default=true)
VolumeSnapshotDataSource=true|false (ALPHA - default=false)
VolumeSubpathEnvExpansion=true|false (BETA - default=true)
WatchBookmark=true|false (BETA - default=true)
WinDSR=true|false (ALPHA - default=false)
WinOverlay=true|false (ALPHA - default=false)
WindowsGMSA=true|false (BETA - default=true)
WindowsRunAsUserName=true|false (ALPHA - default=false) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--file-check-frequency duration
Duration between checking config files for new data (default 20s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--file-check-frequency duration
Duration between checking config files for new data (default 20s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--global-housekeeping-interval duration
Interval between global housekeepings (default 1m0s) (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--global-housekeeping-interval duration
Interval between global housekeepings (default 1m0s) (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--hairpin-mode string
How should the kubelet setup hairpin NAT. This allows endpoints of a Service to loadbalance back to themselves if they should try to access their own Service. Valid values are "promiscuous-bridge", "hairpin-veth" and "none". (default "promiscuous-bridge") (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--hairpin-mode string
How should the kubelet setup hairpin NAT. This allows endpoints of a Service to loadbalance back to themselves if they should try to access their own Service. Valid values are "promiscuous-bridge", "hairpin-veth" and "none". (default "promiscuous-bridge") (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--healthz-bind-address 0.0.0.0
The IP address for the healthz server to serve on (set to 0.0.0.0 for all IPv4 interfaces and `::` for all IPv6 interfaces) (default 127.0.0.1) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--healthz-bind-address 0.0.0.0
The IP address for the healthz server to serve on (set to 0.0.0.0 for all IPv4 interfaces and `::` for all IPv6 interfaces) (default 127.0.0.1) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--healthz-port int32
The port of the localhost healthz endpoint (set to 0 to disable) (default 10248) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--healthz-port int32
The port of the localhost healthz endpoint (set to 0 to disable) (default 10248) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
-h, --help
help for kubelet
-h, --help
help for kubelet
--hostname-override string
If non-empty, will use this string as identification instead of the actual hostname. If --cloud-provider is set, the cloud provider determines the name of the node (consult cloud provider documentation to determine if and how the hostname is used).
--hostname-override string
If non-empty, will use this string as identification instead of the actual hostname. If --cloud-provider is set, the cloud provider determines the name of the node (consult cloud provider documentation to determine if and how the hostname is used).
--housekeeping-interval duration
Interval between container housekeepings (default 10s)
--housekeeping-interval duration
Interval between container housekeepings (default 10s)
--http-check-frequency duration
Duration between checking http for new data (default 20s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--http-check-frequency duration
Duration between checking http for new data (default 20s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--image-gc-high-threshold int32
The percent of disk usage after which image garbage collection is always run. Values must be within the range [0, 100], To disable image garbage collection, set to 100. (default 85) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--image-gc-high-threshold int32
The percent of disk usage after which image garbage collection is always run. Values must be within the range [0, 100], To disable image garbage collection, set to 100. (default 85) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--image-gc-low-threshold int32
The percent of disk usage before which image garbage collection is never run. Lowest disk usage to garbage collect to. Values must be within the range [0, 100] and should not be larger than that of --image-gc-high-threshold. (default 80) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--image-gc-low-threshold int32
The percent of disk usage before which image garbage collection is never run. Lowest disk usage to garbage collect to. Values must be within the range [0, 100] and should not be larger than that of --image-gc-high-threshold. (default 80) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--image-pull-progress-deadline duration
If no pulling progress is made before this deadline, the image pulling will be cancelled. This docker-specific flag only works when container-runtime is set to docker. (default 1m0s)
--image-pull-progress-deadline duration
If no pulling progress is made before this deadline, the image pulling will be cancelled. This docker-specific flag only works when container-runtime is set to docker. (default 1m0s)
--image-service-endpoint string
[Experimental] The endpoint of remote image service. If not specified, it will be the same with container-runtime-endpoint by default. Currently unix socket endpoint is supported on Linux, while npipe and tcp endpoints are supported on windows. Examples:'unix:///var/run/dockershim.sock', 'npipe:////./pipe/dockershim'
--image-service-endpoint string
[Experimental] The endpoint of remote image service. If not specified, it will be the same with container-runtime-endpoint by default. Currently unix socket endpoint is supported on Linux, while npipe and tcp endpoints are supported on windows. Examples:'unix:///var/run/dockershim.sock', 'npipe:////./pipe/dockershim'
--iptables-drop-bit int32
The bit of the fwmark space to mark packets for dropping. Must be within the range [0, 31]. (default 15) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--iptables-drop-bit int32
The bit of the fwmark space to mark packets for dropping. Must be within the range [0, 31]. (default 15) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--iptables-masquerade-bit int32
The bit of the fwmark space to mark packets for SNAT. Must be within the range [0, 31]. Please match this parameter with corresponding parameter in kube-proxy. (default 14) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--iptables-masquerade-bit int32
The bit of the fwmark space to mark packets for SNAT. Must be within the range [0, 31]. Please match this parameter with corresponding parameter in kube-proxy. (default 14) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--keep-terminated-pod-volumes
Keep terminated pod volumes mounted to the node after the pod terminates. Can be useful for debugging volume related issues. (DEPRECATED: will be removed in a future version)
--keep-terminated-pod-volumes
Keep terminated pod volumes mounted to the node after the pod terminates. Can be useful for debugging volume related issues. (DEPRECATED: will be removed in a future version)
--kube-api-burst int32
Burst to use while talking with kubernetes apiserver (default 10) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--kube-api-burst int32
Burst to use while talking with kubernetes apiserver (default 10) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--kube-api-content-type string
Content type of requests sent to apiserver. (default "application/vnd.kubernetes.protobuf") (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--kube-api-content-type string
Content type of requests sent to apiserver. (default "application/vnd.kubernetes.protobuf") (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--kube-api-qps int32
QPS to use while talking with kubernetes apiserver (default 5) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--kube-api-qps int32
QPS to use while talking with kubernetes apiserver (default 5) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--kube-reserved mapStringString
A set of ResourceName=ResourceQuantity (e.g. cpu=200m,memory=500Mi,ephemeral-storage=1Gi) pairs that describe resources reserved for kubernetes system components. Currently cpu, memory and local ephemeral storage for root file system are supported. See http://kubernetes.io/docs/user-guide/compute-resources for more detail. [default=none] (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--kube-reserved mapStringString
A set of ResourceName=ResourceQuantity (e.g. cpu=200m,memory=500Mi,ephemeral-storage=1Gi) pairs that describe resources reserved for kubernetes system components. Currently cpu, memory and local ephemeral storage for root file system are supported. See http://kubernetes.io/docs/user-guide/compute-resources for more detail. [default=none] (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--kube-reserved-cgroup string
Absolute name of the top level cgroup that is used to manage kubernetes components for which compute resources were reserved via '--kube-reserved' flag. Ex. '/kube-reserved'. [default=''] (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--kube-reserved-cgroup string
Absolute name of the top level cgroup that is used to manage kubernetes components for which compute resources were reserved via '--kube-reserved' flag. Ex. '/kube-reserved'. [default=''] (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--kubeconfig string
Path to a kubeconfig file, specifying how to connect to the API server. Providing --kubeconfig enables API server mode, omitting --kubeconfig enables standalone mode.
--kubeconfig string
Path to a kubeconfig file, specifying how to connect to the API server. Providing --kubeconfig enables API server mode, omitting --kubeconfig enables standalone mode.
--kubelet-cgroups string
Optional absolute name of cgroups to create and run the Kubelet in. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--kubelet-cgroups string
Optional absolute name of cgroups to create and run the Kubelet in. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--lock-file string
The path to file for kubelet to use as a lock file.
--lock-file string
<Warning: Alpha feature> The path to file for kubelet to use as a lock file.
--log-backtrace-at traceLocation
when logging hits line file:N, emit a stack trace (default :0)
--log-backtrace-at traceLocation
when logging hits line file:N, emit a stack trace (default :0)
--log-cadvisor-usage
Whether to log the usage of the cAdvisor container (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--log-cadvisor-usage
Whether to log the usage of the cAdvisor container (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--log-dir string
If non-empty, write log files in this directory
--log-dir string
If non-empty, write log files in this directory
--log-file string
If non-empty, use this log file
--log-file-max-size uint
Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800)
--log-flush-frequency duration
Maximum number of seconds between log flushes (default 5s)
--logtostderr
log to standard error instead of files (default true)
--machine-id-file string
Comma-separated list of files to check for machine-id. Use the first one that exists. (default "/etc/machine-id,/var/lib/dbus/machine-id") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--make-iptables-util-chains
If true, kubelet will ensure iptables utility rules are present on host. (default true) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--manifest-url string
URL for accessing additional Pod specifications to run (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--manifest-url-header --manifest-url-header 'a:hello,b:again,c:world' --manifest-url-header 'b:beautiful'
Comma-separated list of HTTP headers to use when accessing the url provided to --manifest-url. Multiple headers with the same name will be added in the same order provided. This flag can be repeatedly invoked. For example: --manifest-url-header 'a:hello,b:again,c:world' --manifest-url-header 'b:beautiful' (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--master-service-namespace string
The namespace from which the kubernetes master services should be injected into pods (default "default") (DEPRECATED: This flag will be removed in a future version.)
--log-file string
If non-empty, use this log file
--log-file-max-size uint
Defines the maximum - size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800)
--log-flush-frequency duration
Maximum number of seconds between log flushes (default 5s)
--logtostderr
log to standard error instead of files (default true)
--machine-id-file string
Comma-separated list of files to check for machine-id. Use the first one that exists. (default "/etc/machine-id,/var/lib/dbus/machine-id") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--make-iptables-util-chains
If true, kubelet will ensure iptables utility rules are present on host. (default true) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--manifest-url string
URL for accessing additional Pod specifications to run (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--manifest-url-header --manifest-url-header 'a:hello,b:again,c:world' --manifest-url-header 'b:beautiful'
Comma-separated list of HTTP headers to use when accessing the url provided to --manifest-url. Multiple headers with the same name will be added in the same order provided. This flag can be repeatedly invoked. For example: --manifest-url-header 'a:hello,b:again,c:world' --manifest-url-header 'b:beautiful' (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--master-service-namespace string
The namespace from which the kubernetes master services should be injected into pods (default "default") (DEPRECATED: This flag will be removed in a future version.)
--max-open-files int
Number of files that can be opened by Kubelet process. (default 1000000) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--max-pods int32
Number of Pods that can run on this Kubelet. (default 110) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--maximum-dead-containers int32
Maximum number of old instances of containers to retain globally. Each container takes up some disk space. To disable, set to a negative number. (default -1) (DEPRECATED: Use --eviction-hard or --eviction-soft instead. Will be removed in a future version.)
--maximum-dead-containers-per-container int32
Maximum number of old instances to retain per container. Each container takes up some disk space. (default 1) (DEPRECATED: Use --eviction-hard or --eviction-soft instead. Will be removed in a future version.)
--minimum-container-ttl-duration duration
Minimum age for a finished container before it is garbage collected. Examples: '300ms', '10s' or '2h45m' (DEPRECATED: Use --eviction-hard or --eviction-soft instead. Will be removed in a future version.)
--minimum-image-ttl-duration duration
Minimum age for an unused image before it is garbage collected. Examples: '300ms', '10s' or '2h45m'. (default 2m0s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--network-plugin string
The name of the network plugin to be invoked for various events in kubelet/pod lifecycle. This docker-specific flag only works when container-runtime is set to docker.
--network-plugin-mtu int32
The MTU to be passed to the network plugin, to override the default. Set to 0 to use the default 1460 MTU. This docker-specific flag only works when container-runtime is set to docker.
--node-ip string
IP address of the node. If set, kubelet will use this IP address for the node
--node-labels mapStringString
Labels to add when registering the node in the cluster. Labels must be key=value pairs separated by ','. Labels in the 'kubernetes.io' namespace must begin with an allowed prefix (kubelet.kubernetes.io, node.kubernetes.io) or be in the specifically allowed set (beta.kubernetes.io/arch, beta.kubernetes.io/instance-type, beta.kubernetes.io/os, failure-domain.beta.kubernetes.io/region, failure-domain.beta.kubernetes.io/zone, failure-domain.kubernetes.io/region, failure-domain.kubernetes.io/zone, kubernetes.io/arch, kubernetes.io/hostname, kubernetes.io/instance-type, kubernetes.io/os)
--node-status-max-images int32
The maximum number of images to report in Node.Status.Images. If -1 is specified, no cap will be applied. (default 50)
--node-status-update-frequency duration
Specifies how often kubelet posts node status to master. Note: be cautious when changing the constant, it must work with nodeMonitorGracePeriod in nodecontroller. (default 10s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--non-masquerade-cidr string
Traffic to IPs outside this range will use IP masquerade. Set to '0.0.0.0/0' to never masquerade. (default "10.0.0.0/8") (DEPRECATED: will be removed in a future version)
--oom-score-adj int32
The oom-score-adj value for kubelet process. Values must be within the range [-1000, 1000] (default -999) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--pod-cidr string
The CIDR to use for pod IP addresses, only used in standalone mode. In cluster mode, this is obtained from the master. For IPv6, the maximum number of IP's allocated is 65536 (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--pod-infra-container-image string
The image whose network/ipc namespaces containers in each pod will use. This docker-specific flag only works when container-runtime is set to docker. (default "k8s.gcr.io/pause:3.2")
--pod-manifest-path string
Path to the directory containing static pod files to run, or the path to a single static pod file. Files starting with dots will be ignored. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--pod-max-pids int
Set the maximum number of processes per pod. If -1, the kubelet defaults to the node allocatable pid capacity. (default -1) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--pods-per-core int32
Number of Pods per core that can run on this Kubelet. The total number of Pods on this Kubelet cannot exceed max-pods, so max-pods will be used if this calculation results in a larger number of Pods allowed on the Kubelet. A value of 0 disables this limit. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--port int32
The port for the Kubelet to serve on. (default 10250) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--protect-kernel-defaults
Default kubelet behaviour for kernel tuning. If set, kubelet errors if any of kernel tunables is different than kubelet defaults. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--provider-id string
Unique identifier for identifying the node in a machine database, i.e cloudprovider
--qos-reserved mapStringString
A set of ResourceName=Percentage (e.g. memory=50%) pairs that describe how pod resource requests are reserved at the QoS level. Currently only memory is supported. Requires the QOSReserved feature gate to be enabled. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--read-only-port int32
The read-only port for the Kubelet to serve on with no authentication/authorization (set to 0 to disable) (default 10255) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--really-crash-for-testing
If true, when panics occur crash. Intended for testing.
--redirect-container-streaming
Enables container streaming redirect. If false, kubelet will proxy container streaming data between apiserver and container runtime; if true, kubelet will return an http redirect to apiserver, and apiserver will access container runtime directly. The proxy approach is more secure, but introduces some overhead. The redirect approach is more performant, but less secure because the connection between apiserver and container runtime may not be authenticated.
--register-node
Register the node with the apiserver. If --kubeconfig is not provided, this flag is irrelevant, as the Kubelet won't have an apiserver to register with. Default=true. (default true)
--register-schedulable
Register the node as schedulable. Won't have any effect if register-node is false. (default true) (DEPRECATED: will be removed in a future version)
--register-with-taints []api.Taint
Register the node with the given list of taints (comma separated "=:"). No-op if register-node is false.
--registry-burst int32
Maximum size of a bursty pulls, temporarily allows pulls to burst to this number, while still not exceeding registry-qps. Only used if --registry-qps > 0 (default 10) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--registry-qps int32
If > 0, limit registry pull QPS to this value. If 0, unlimited. (default 5) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--resolv-conf string
Resolver configuration file used as the basis for the container DNS resolution configuration. (default "/etc/resolv.conf") (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--root-dir string
Directory path for managing kubelet files (volume mounts,etc). (default "/var/lib/kubelet")
--rotate-certificates
Auto rotate the kubelet client certificates by requesting new certificates from the kube-apiserver when the certificate expiration approaches. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--rotate-server-certificates
Auto-request and rotate the kubelet serving certificates by requesting new certificates from the kube-apiserver when the certificate expiration approaches. Requires the RotateKubeletServerCertificate feature gate to be enabled, and approval of the submitted CertificateSigningRequest objects. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--runonce
If true, exit after spawning pods from local manifests or remote urls. Exclusive with --enable-server
--runtime-cgroups string
Optional absolute name of cgroups to create and run the runtime in.
--runtime-request-timeout duration
Timeout of all runtime requests except long running request - pull, logs, exec and attach. When timeout exceeded, kubelet will cancel the request, throw out an error and retry later. (default 2m0s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--seccomp-profile-root string
Directory path for seccomp profiles. (default "/var/lib/kubelet/seccomp")
--serialize-image-pulls
Pull images one at a time. We recommend *not* changing the default value on nodes that run docker daemon with version < 1.9 or an Aufs storage backend. Issue #10959 has more details. (default true) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--skip-headers
If true, avoid header prefixes in the log messages
--skip-log-headers
If true, avoid headers when opening log files
--stderrthreshold severity
logs at or above this threshold go to stderr (default 2)
--storage-driver-buffer-duration duration
Writes in the storage driver will be buffered for this duration, and committed to the non memory backends as a single transaction (default 1m0s) (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--storage-driver-db string
database name (default "cadvisor") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--storage-driver-host string
database host:port (default "localhost:8086") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--storage-driver-password string
database password (default "root") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--storage-driver-secure
use secure connection with database (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--storage-driver-table string
table name (default "stats") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--storage-driver-user string
database username (default "root") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--streaming-connection-idle-timeout duration
Maximum time a streaming connection can be idle before the connection is automatically closed. 0 indicates no timeout. Example: '5m' (default 4h0m0s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--sync-frequency duration
Max period between synchronizing running containers and config (default 1m0s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--system-cgroups /
Optional absolute name of cgroups in which to place all non-kernel processes that are not already inside a cgroup under /. Empty for no container. Rolling back the flag requires a reboot. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--system-reserved mapStringString
A set of ResourceName=ResourceQuantity (e.g. cpu=200m,memory=500Mi,ephemeral-storage=1Gi) pairs that describe resources reserved for non-kubernetes components. Currently only cpu and memory are supported. See http://kubernetes.io/docs/user-guide/compute-resources for more detail. [default=none] (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--system-reserved-cgroup string
Absolute name of the top level cgroup that is used to manage non-kubernetes components for which compute resources were reserved via '--system-reserved' flag. Ex. '/system-reserved'. [default=''] (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--tls-cert-file string
File containing x509 Certificate used for serving HTTPS (with intermediate certs, if any, concatenated after server cert). If --tls-cert-file and --tls-private-key-file are not provided, a self-signed certificate and key are generated for the public address and saved to the directory passed to --cert-dir. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--tls-cipher-suites stringSlice
Comma-separated list of cipher suites for the server. If omitted, the default Go cipher suites will be used. Possible values: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_RC4_128_SHA (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--tls-min-version string
Minimum TLS version supported. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13 (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--tls-private-key-file string
File containing x509 private key matching --tls-cert-file. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--topology-manager-policy string
Topology Manager policy to use. Possible values: 'none', 'best-effort', 'restricted', 'single-numa-node'. (default "none") (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
-v, --v Level
number for the log level verbosity
--version version[=true]
Print version information and quit
--vmodule moduleSpec
comma-separated list of pattern=N settings for file-filtered logging
--volume-plugin-dir string
The full path of the directory in which to search for additional third party volume plugins (default "/usr/libexec/kubernetes/kubelet-plugins/volume/exec/")
--volume-stats-agg-period duration
Specifies interval for kubelet to calculate and cache the volume disk usage for all pods and volumes. To disable volume calculations, set to 0. (default 1m0s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--max-open-files int
Number of files that can be opened by Kubelet process. (default 1000000) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--max-pods int32
Number of Pods that can run on this Kubelet. (default 110) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--maximum-dead-containers int32
Maximum number of old instances of containers to retain globally. Each container takes up some disk space. To disable, set to a negative number. (default -1) (DEPRECATED: Use --eviction-hard or --eviction-soft instead. Will be removed in a future version.)
--maximum-dead-containers-per-container int32
Maximum number of old instances to retain per container. Each container takes up some disk space. (default 1) (DEPRECATED: Use --eviction-hard or --eviction-soft instead. Will be removed in a future version.)
--minimum-container-ttl-duration duration
Minimum age for a finished container before it is garbage collected. Examples: '300ms', '10s' or '2h45m' (DEPRECATED: Use --eviction-hard or --eviction-soft instead. Will be removed in a future version.)
--minimum-image-ttl-duration duration
Minimum age for an unused image before it is garbage collected. Examples: '300ms', '10s' or '2h45m'. (default 2m0s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--network-plugin string
<Warning: Alpha feature> The name of the network plugin to be invoked for various events in kubelet/pod lifecycle. This docker-specific flag only works when container-runtime is set to docker.
--network-plugin-mtu int32
<Warning: Alpha feature> The MTU to be passed to the network plugin, to override the default. Set to 0 to use the default 1460 MTU. This docker-specific flag only works when container-runtime is set to docker.
--node-ip string
IP address of the node. If set, kubelet will use this IP address for the node
--node-labels mapStringString
<Warning: Alpha feature> Labels to add when registering the node in the cluster. Labels must be key=value pairs separated by ','. Labels in the 'kubernetes.io' namespace must begin with an allowed prefix (kubelet.kubernetes.io, node.kubernetes.io) or be in the specifically allowed set (beta.kubernetes.io/arch, beta.kubernetes.io/instance-type, beta.kubernetes.io/os, failure-domain.beta.kubernetes.io/region, failure-domain.beta.kubernetes.io/zone, failure-domain.kubernetes.io/region, failure-domain.kubernetes.io/zone, kubernetes.io/arch, kubernetes.io/hostname, kubernetes.io/instance-type, kubernetes.io/os)
--node-status-max-images int32
<Warning: Alpha feature> The maximum number of images to report in Node.Status.Images. If -1 is specified, no cap will be applied. (default 50)
--node-status-update-frequency duration
Specifies how often kubelet posts node status to master. Note: be cautious when changing the constant, it must work with nodeMonitorGracePeriod in nodecontroller. (default 10s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--non-masquerade-cidr string
Traffic to IPs outside this range will use IP masquerade. Set to '0.0.0.0/0' to never masquerade. (default "10.0.0.0/8") (DEPRECATED: will be removed in a future version)
--oom-score-adj int32
The oom-score-adj value for kubelet process. Values must be within the range [-1000, 1000] (default -999) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--pod-cidr string
The CIDR to use for pod IP addresses, only used in standalone mode. In cluster mode, this is obtained from the master. For IPv6, the maximum number of IP's allocated is 65536 (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--pod-infra-container-image string
The image whose network/ipc namespaces containers in each pod will use. This docker-specific flag only works when container-runtime is set to docker. (default "k8s.gcr.io/pause:3.2")
--pod-manifest-path string
Path to the directory containing static pod files to run, or the path to a single static pod file. Files starting with dots will be ignored. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--pod-max-pids int
Set the maximum number of processes per pod. If -1, the kubelet defaults to the node allocatable pid capacity. (default -1) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--pods-per-core int32
Number of Pods per core that can run on this Kubelet. The total number of Pods on this Kubelet cannot exceed max-pods, so max-pods will be used if this calculation results in a larger number of Pods allowed on the Kubelet. A value of 0 disables this limit. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--port int32
The port for the Kubelet to serve on. (default 10250) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--protect-kernel-defaults
Default kubelet behaviour for kernel tuning. If set, kubelet errors if any of kernel tunables is different than kubelet defaults. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--provider-id string
Unique identifier for identifying the node in a machine database, i.e cloudprovider
--qos-reserved mapStringString
<Warning: Alpha feature> A set of ResourceName=Percentage (e.g. memory=50%) pairs that describe how pod resource requests are reserved at the QoS level. Currently only memory is supported. Requires the QOSReserved feature gate to be enabled. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--read-only-port int32
The read-only port for the Kubelet to serve on with no authentication/authorization (set to 0 to disable) (default 10255) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--really-crash-for-testing
If true, when panics occur crash. Intended for testing.
--redirect-container-streaming
Enables container streaming redirect. If false, kubelet will proxy container streaming data between apiserver and container runtime; if true, kubelet will return an http redirect to apiserver, and apiserver will access container runtime directly. The proxy approach is more secure, but introduces some overhead. The redirect approach is more performant, but less secure because the connection between apiserver and container runtime may not be authenticated.
--register-node
Register the node with the apiserver. If --kubeconfig is not provided, this flag is irrelevant, as the Kubelet won't have an apiserver to register with. Default=true. (default true)
--register-schedulable
Register the node as schedulable. Won't have any effect if register-node is false. (default true) (DEPRECATED: will be removed in a future version)
--register-with-taints []api.Taint
Register the node with the given list of taints (comma separated "=:"). No-op if register-node is false.
--registry-burst int32
Maximum size of a bursty pulls, temporarily allows pulls to burst to this number, while still not exceeding registry-qps. Only used if --registry-qps > 0 (default 10) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--registry-qps int32
If > 0, limit registry pull QPS to this value. If 0, unlimited. (default 5) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--resolv-conf string
Resolver configuration file used as the basis for the container DNS resolution configuration. (default "/etc/resolv.conf") (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--root-dir string
Directory path for managing kubelet files (volume mounts,etc). (default "/var/lib/kubelet")
--rotate-certificates
<Warning: Beta feature> Auto rotate the kubelet client certificates by requesting new certificates from the kube-apiserver when the certificate expiration approaches. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--rotate-server-certificates
Auto-request and rotate the kubelet serving certificates by requesting new certificates from the kube-apiserver when the certificate expiration approaches. Requires the RotateKubeletServerCertificate feature gate to be enabled, and approval of the submitted CertificateSigningRequest objects. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--runonce
If true, exit after spawning pods from local manifests or remote urls. Exclusive with --enable-server
--runtime-cgroups string
Optional absolute name of cgroups to create and run the runtime in.
--runtime-request-timeout duration
Timeout of all runtime requests except long running request - pull, logs, exec and attach. When timeout exceeded, kubelet will cancel the request, throw out an error and retry later. (default 2m0s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--seccomp-profile-root string
<Warning: Alpha feature> Directory path for seccomp profiles. (default "/var/lib/kubelet/seccomp")
--serialize-image-pulls
Pull images one at a time. We recommend *not* changing the default value on nodes that run docker daemon with version < 1.9 or an Aufs storage backend. Issue #10959 has more details. (default true) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--skip-headers
If true, avoid header prefixes in the log messages
--skip-log-headers
If true, avoid headers when opening log files
--stderrthreshold severity
logs at or above this threshold go to stderr (default 2)
--storage-driver-buffer-duration duration
Writes in the storage driver will be buffered for this duration, and committed to the non memory backends as a single transaction (default 1m0s) (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--storage-driver-db string
database name (default "cadvisor") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--storage-driver-host string
database host:port (default "localhost:8086") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--storage-driver-password string
database password (default "root") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--storage-driver-secure
use secure connection with database (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--storage-driver-table string
table name (default "stats") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--storage-driver-user string
database username (default "root") (DEPRECATED: This is a cadvisor flag that was mistakenly registered with the Kubelet. Due to legacy concerns, it will follow the standard CLI deprecation timeline before being removed.)
--streaming-connection-idle-timeout duration
Maximum time a streaming connection can be idle before the connection is automatically closed. 0 indicates no timeout. Example: '5m' (default 4h0m0s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--sync-frequency duration
Max period between synchronizing running containers and config (default 1m0s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--system-cgroups /
Optional absolute name of cgroups in which to place all non-kernel processes that are not already inside a cgroup under /. Empty for no container. Rolling back the flag requires a reboot. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--system-reserved mapStringString
A set of ResourceName=ResourceQuantity (e.g. cpu=200m,memory=500Mi,ephemeral-storage=1Gi) pairs that describe resources reserved for non-kubernetes components. Currently only cpu and memory are supported. See http://kubernetes.io/docs/user-guide/compute-resources for more detail. [default=none] (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--system-reserved-cgroup string
Absolute name of the top level cgroup that is used to manage non-kubernetes components for which compute resources were reserved via '--system-reserved' flag. Ex. '/system-reserved'. [default=''] (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--tls-cert-file string
File containing x509 Certificate used for serving HTTPS (with intermediate certs, if any, concatenated after server cert). If --tls-cert-file and --tls-private-key-file are not provided, a self-signed certificate and key are generated for the public address and saved to the directory passed to --cert-dir. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--tls-cipher-suites stringSlice
Comma-separated list of cipher suites for the server. If omitted, the default Go cipher suites will be used. Possible values: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_RC4_128_SHA (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--tls-min-version string
Minimum TLS version supported. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13 (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--tls-private-key-file string
File containing x509 private key matching --tls-cert-file. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
--topology-manager-policy string
Topology Manager policy to use. Possible values: 'none', 'best-effort', 'restricted', 'single-numa-node'. (default "none") (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
-v, --v Level
number for the log level verbosity
--version version[=true]
Print version information and quit
--vmodule moduleSpec
comma-separated list of pattern=N settings for file-filtered logging
--volume-plugin-dir string
<Warning: Alpha feature> The full path of the directory in which to search for additional third party volume plugins (default "/usr/libexec/kubernetes/kubelet-plugins/volume/exec/")
--volume-stats-agg-period duration
Specifies interval for kubelet to calculate and cache the volume disk usage for all pods and volumes. To disable volume calculations, set to 0. (default 1m0s) (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
{{% /capture %}} From f24c5aad2dbc504395dd79abdfb1f8f5b17c2764 Mon Sep 17 00:00:00 2001 From: tranquanghuy0801 Date: Tue, 12 May 2020 11:56:59 +1000 Subject: [PATCH 16/66] translate the Tut Kube Basic Explore Your App (Vietnamese) --- .../kubernetes-basics/explore/_index.md | 4 + .../explore/explore-interactive.html | 41 +++++ .../explore/explore-intro.html | 143 ++++++++++++++++++ 3 files changed, 188 insertions(+) create mode 100644 content/vi/docs/tutorials/kubernetes-basics/explore/_index.md create mode 100644 content/vi/docs/tutorials/kubernetes-basics/explore/explore-interactive.html create mode 100644 content/vi/docs/tutorials/kubernetes-basics/explore/explore-intro.html diff --git a/content/vi/docs/tutorials/kubernetes-basics/explore/_index.md b/content/vi/docs/tutorials/kubernetes-basics/explore/_index.md new file mode 100644 index 0000000000..45e1a94bc0 --- /dev/null +++ b/content/vi/docs/tutorials/kubernetes-basics/explore/_index.md @@ -0,0 +1,4 @@ +--- +title: Khám phá ứng dụng +weight: 30 +--- \ No newline at end of file diff --git a/content/vi/docs/tutorials/kubernetes-basics/explore/explore-interactive.html b/content/vi/docs/tutorials/kubernetes-basics/explore/explore-interactive.html new file mode 100644 index 0000000000..c592705757 --- /dev/null +++ b/content/vi/docs/tutorials/kubernetes-basics/explore/explore-interactive.html @@ -0,0 +1,41 @@ +--- +title: Hướng dẫn tương tác - Khám phá ứng dụng +weight: 20 +--- + + + + + + + + + + + +
+ +
+ +
+
+ +
+ Để tương tác với Terminal, hãy sử dụng phiên bản dành cho desktop/tablet +
+ +
+
+
+ + +
+ +
+ + + diff --git a/content/vi/docs/tutorials/kubernetes-basics/explore/explore-intro.html b/content/vi/docs/tutorials/kubernetes-basics/explore/explore-intro.html new file mode 100644 index 0000000000..1e7dc0c356 --- /dev/null +++ b/content/vi/docs/tutorials/kubernetes-basics/explore/explore-intro.html @@ -0,0 +1,143 @@ +--- +title: Khám Phá Pods Và Nodes +weight: 10 +--- + + + + + + + + + + +
+ +
+ +
+ +
+

Mục tiêu

+
    +
  • Tìm hiểu Kubernetes Pods là gì ?
  • +
  • Tìm hiểu Kubernetes Nodes là gì ?
  • +
  • Khắc phục sự cố ứng dụng đã triển khai
  • +
+
+ +
+

Kubernetes Pods

+

Khi bạn triển khai ứng dụng thông qua Module 2, Kubernetes tạo ra Pod để lưu trữ phiên bản chạy của ứng dụng của bạn. Một Pod là một khái niệm trừu tượng của Kubernetes, đại diện cho một nhóm gồm một hoặc nhiều ứng dụng containers (ví dụ như Docker hoặc rkt) và một số tài nguyên được chia sẻ cho các containers đó. Những tài nguyên đó bao gồm:

+
    +
  • Lưu trữ được chia sẻ, dưới dạng Tập (Volumes)
  • +
  • Kết nối mạng, như một cụm địa chỉ IP duy nhất
  • +
  • Thông tin về cách chạy từng container, chẳng hạn như phiên bản hình ảnh container hoặc các cổng cụ thể để sử dụng
  • +
+

Một Pod mô phỏng một "máy chủ logic" dành riêng cho ứng dụng và có thể chứa các ứng dụng containers khác nhau được liên kết tương đối chặt chẽ. Ví dụ, một Pod có thể bao gồm cả container với ứng dụng Node.js của bạn cũng như một container khác cung cấp dữ liệu hiển thị bởi webserver của Nodejs. Các containers trong một Pod chia sẻ một địa chỉ IP và không gian cổng, chúng luôn được đặt cùng vị trí, cùng lên lịch trình, và chạy trong ngữ cảnh được chia sẻ trên cùng một Node.

+ +

Pods là các đơn vị nguyên tử trên nền tảng Kubernetes. Khi chúng tôi tạo một kịch bản triển khai (Deployment) trên Kubernetes, kịch bản triển khai đó tạo ra các Pods với các containers bên trong chúng (trái ngược với việc tạo các containers trực tiếp). Mỗi Pod được gắn với Node nơi nó được lên lịch trình, và tiếp tục ở đó cho đến khi chấm dứt (theo chính sách khởi động lại). Trong trường hợp có lỗi ở Node, các Pods giống nhau được lên lịch trình trên các Nodes có sẵn khác trong cụm.

+ +
+
+
+

Tổng Kết:

+
    +
  • Pods
  • +
  • Nodes
  • +
  • Những lệnh chính của Kubectl
  • +
+
+
+

+ Một Pod là một nhóm gồm một hoặc nhiều ứng dụng containers (như Docker hoặc rkt) và bao gồm lưu trữ được chia sẻ (dưới dạng volumes), địa chỉ IP và thông tin về cách chạy chúng. +

+
+
+
+
+ +
+
+

Tổng quan về Pods

+
+
+ +
+
+

+
+
+
+ +
+
+

Nodes

+

Một Pod luôn chạy trên một Node. Một Node là một máy worker trong Kubernetes và có thể là máy ảo hoặc máy vật lý, tuỳ thuộc vào cụm. Mỗi Node được quản lí bởi Master. Một Node có thể chứa nhiều Pods và Kubernetes master tự động xử lí việc lên lịch trình các Pods thuộc các Nodes ở trong cụm. Việc lên lịch trình tự động của Master sẽ tính đến các tài nguyên có sẵn trên mỗi Node.

+ +

Mỗi Node ở Kubernetes chạy ít nhất:

+
    +
  • Kubelet, một quy trình chịu trách nhiệm liên lạc giữa Kubernetes Master và Node; quản lí các Pods và các containers đang chạy trên cùng một máy.
  • +
  • Một container runtime (như Docker, rkt) chịu trách nhiệm lấy hình ảnh container từ một nơi đăng kí (registry), giải nén container và chạy ứng dụng. Các containers chỉ nên được lên lịch trình cùng nhau trong một Pod duy nhất nếu chúng được liên kết chặt chẽ.
  • +
+ +
+
+
+

Các containers chỉ nên được lên lịch trình cùng nhau trong một Pod duy nhất nếu chúng được liên kết chặt chẽ và cần chia sẻ tài nguyên nhữ đĩa.

+
+
+
+ +
+ +
+
+

Tổng quan về Node

+
+
+ +
+
+

+
+
+
+ +
+
+

Khắc phục sự cố với kubectl

+

Ở Module 2, bạn đã sử dụng giao diện dòng lệnh Kubectl. Bạn sẽ tiếp tục sử dụng nó trong Module 3 để nhận thông tin về các ứng dụng đã triển khai và môi trường của chúng. Các hoạt động phổ biến nhất có thể được thực hiện với các lệnh kubectl sau:

+
    +
  • kubectl get - liệt kê các tài nguyên
  • +
  • kubectl describe - hiển thị thông tin chi tiết về một tài nguyên
  • +
  • kubectl logs - in các bản ghi (logs) từ một container trong một pod
  • +
  • kubectl exec - thực hiện một lệnh trên một container trong một nhóm
  • +
+ +

Bạn có thể sử dụng các lệnh này để xem khi nào các ứng dụng được triển khai, trạng thái hiện tại của chúng là gì, nơi chúng đang chạy và cấu hình của chúng là gì.

+ +

Bây giờ chúng ta đã biết thêm về các thành phần cụm và dòng lệnh, hãy khám phá ứng dụng của chúng tôi.

+ +
+
+
+

Một Node là một máy worker trong Kubernetes và có thể là máy ảo hoặc máy vật lý, tuỳ thuộc vào cụm. Nhiều Pods có thể chạy trên cùng một Node.

+
+
+
+
+ + + +
+ +
+ + + From d33071dd7cb2d064841780a283749bce9792b9f6 Mon Sep 17 00:00:00 2001 From: mufti ismi Date: Tue, 21 Apr 2020 17:05:42 +0700 Subject: [PATCH 17/66] ID add task for automatic running task with cronjob --- .../job/automated-tasks-with-cron-jobs.md | 214 ++++++++++++++++++ .../id/examples/application/job/cronjob.yaml | 18 ++ 2 files changed, 232 insertions(+) create mode 100644 content/id/docs/tasks/job/automated-tasks-with-cron-jobs.md create mode 100644 content/id/examples/application/job/cronjob.yaml diff --git a/content/id/docs/tasks/job/automated-tasks-with-cron-jobs.md b/content/id/docs/tasks/job/automated-tasks-with-cron-jobs.md new file mode 100644 index 0000000000..d945e156b4 --- /dev/null +++ b/content/id/docs/tasks/job/automated-tasks-with-cron-jobs.md @@ -0,0 +1,214 @@ +--- +title: Menjalankan Tugas-Tugas Otomatis dengan CronJob +min-kubernetes-server-version: v1.8 +content_template: templates/task +weight: 10 +--- + +{{% capture overview %}} + +Kamu dapat menggunakan {{< glossary_tooltip text="CronJob" term_id="cronjob" >}} untuk menjalankan {{< glossary_tooltip text="Job" term_id="job" >}} yang dijadwalkan berbasis waktu. Job akan berjalan seperti pekerjaan-pekerjaan [Cron](https://en.wikipedia.org/wiki/Cron) di Linux atau sistem UNIX. + +CronJob sangat berguna untuk membuat pekerjaan yang berjalan secara periodik dan berulang, misalnya menjalankan (_backup_) atau mengirim email. +CronJob juga dapat menjalankan pekerjaan individu pada waktu tertentu, misalnya jika kamu ingin menjadwalkan sebuah pekerjaan dengan periode aktivitas yang rendah. + +CronJob memiliki keterbatasan dan kekhasan. +Misalnya, dalam keadaan tertentu, sebuah CronJob dapat membuat banyak Job. +Karena itu, Job haruslah _idempotent._ + +Untuk informasi lanjut mengenai keterbatasan, lihat [CronJob](/docs/concepts/workloads/controllers/cron-jobs). + +{{% /capture %}} + +{{% capture prerequisites %}} + +* {{< include "task-tutorial-prereqs.md" >}} + +{{% /capture %}} + +{{% capture steps %}} + +## Membuat Sebuah CronJob + +CronJob membutuhkan sebuah berkas konfigurasi. +Ini adalah contoh dari berkas konfigurasi CronJob `.spec` yang akan mencetak waktu sekarang dan pesan "hello" setiap menit: + +{{< codenew file="application/job/cronjob.yaml" >}} + +Jalankan contoh CronJob menggunakan perintah berikut: + +```shell +kubectl create -f https://k8s.io/examples/application/job/cronjob.yaml +``` +Keluaran akan mirip dengan ini: + +``` +cronjob.batch/hello created +``` + +Kamu juga dapat menggunakan `kubectl run` untuk membuat sebuah CronJob tanpa menulis sebuah konfigurasi yang lengkap: + +```shell +kubectl run hello --schedule="*/1 * * * *" --restart=OnFailure --image=busybox -- /bin/sh -c "date; echo Hello from the Kubernetes cluster" +``` + +Setelah membuat sebuah CronJob, untuk mengecek statusnya kamu dapat menggunakan perintah berikut: + +```shell +kubectl get cronjob hello +``` +Keluaran akan mirip dengan ini: + +``` +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +hello */1 * * * * False 0 10s +``` + +Seperti yang kamu lihat dari hasil perintah di atas, CronJob belum menjadwalkan atau menjalankan pekerjaan apa pun. +Waktu yang biasanya dibutuhkan untuk mengamati Job hingga Job tersebut dibuat akan membutuhkan sekitar satu menit: + +```shell +kubectl get jobs --watch +``` + +Keluaran akan mirip dengan ini: + +``` +NAME COMPLETIONS DURATION AGE +hello-4111706356 0/1 0s +hello-4111706356 0/1 0s 0s +hello-4111706356 1/1 5s 5s +``` + +Sekarang kamu telah melihat satu Job berjalan yang dijadwalkan oleh "hello" CronJob. +Kamu dapat berhenti mengamati Job dan melihat CronJob lagi untuk melihat CronJob menjadwalkan sebuah Job: + +```shell +kubectl get cronjob hello +``` +Keluaran akan mirip dengan ini: + +``` +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +hello */1 * * * * False 0 50s 75s +``` + +Kamu dapat melihat bahwa CronJob `hello` berhasil menjadwalkan sebuah Job pada waktu yang ditentukan dalam `LAST SCHEDULE`. Saat ini ada 0 Job yang aktif, berarti sebuah Job telah selesai atau gagal. + +Sekarang, temukan Pod yang dibuat oleh jadwal Job terakhir dan melihat keluaran bawaan dari salah satu Pod. + +{{< note >}} +Nama Job dan nama Pod itu berbeda. +{{< /note >}} + +```shell +# Ganti "hello-4111706356" dengan nama Job di sistem kamu +pods=$(kubectl get pods --selector=job-name=hello-4111706356 --output=jsonpath={.items[*].metadata.name}) +``` +Menampilkan log sebuah Pod: + +```shell +kubectl logs $pods +``` +Keluaran akan mirip dengan ini: + +``` +Fri Feb 22 11:02:09 UTC 2019 +Hello from the Kubernetes cluster +``` + +## Menghapus sebuah CronJob + +Ketika kamu tidak membutuhkan sebuah CronJob lagi, kamu dapat megnhapusnya dengan perintah `kubectl delete cronjob `: + +```shell +kubectl delete cronjob hello +``` + +Menghapus CronJob akan menghapus semua Job dan Pod yang telah terbuat dan menghentikanya dari pembuatan Job tambahan. +Kamu dapat membaca lebih lanjut tentang menghapus Job di [_garbage collection_](/docs/concepts/workloads/controllers/garbage-collection/). + +## Menulis Speifikasi Sebuah Cron + +Seperti semua konfigurasi Kubernetes, sebuah CronJob membutuhkan _field_ `apiVersion`, `kind`, dan `metadata`. Untuk informasi +umum tentang bekerja dengan berkas konfigurasi, lihat dokumentasi [men-_deploy_ aplikasi](/docs/user-guide/deploying-applications), +dan [mengunakan kubectl untuk manajemen sumber daya](/docs/user-guide/working-with-resources). + +Sebuah konfigurasi CronJob juga membutuhkan sebuah [bagian `.spec`](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status). + +{{< note >}} +Semua modifikasi pada sebuah CronJob, terutama `.spec`, akan diterapkan pada proses berikut. +{{< /note >}} + +### Penjadwalan + +`.spec.schedule` adalah _field_ yang wajib diisi dari sebuah `.spec` +Dibutuhkan sebuah format string [Cron](https://en.wikipedia.org/wiki/Cron), misalnya `0 * * * *` atau `@hourly`, sebagai jadwal Job untuk dibuat dan dieksekusi. + +Format ini juga mencakup nilai langkah `Vixie cron`. Seperti penjelasan di [FreeBSD manual](https://www.freebsd.org/cgi/man.cgi?crontab%285%29): + +> Nilai langkah dapat digunakan bersama dengan rentang. Sebuah rentang diikuti dengan +> `/` menentukan lompatan angka melalui rentang. +> Misalnya, `0-23/2` dapat digunakan dalam jam untuk menentukan +> perintah akan dieksekusi setiap jam (alternatif dalam bawaan v7 adalah +> `0,2,4,6,8,10,12,14,16,18,20,22`). Langkah-langkah juga diizinkan setelah +> tanda bintang, jadi jika kamu menginginkan "setiap dua jam", gunakan saja `*/2`. + +{{< note >}} +Sebuah tanda tanya (`?`) dalam penjadwalan memiliki makna yang sama dengan tanda bintang `*`, yaitu, singkatan dari nilai apa pun yang tersedia untuk _field_ tertentu. +{{< /note >}} + +### Templat Job + +`.spec.JobTemplate` adalah templat untuk sebuah Job, dan itu wajib. +Templat Job memiliki skema yang sama dengan [Job](/docs/concepts/workloads/controllers/jobs-run-to-completion/), kecuali jika bersarang dan tidak memiliki sebuah `apiVersion` atau `kind`. +Untuk informasi lebih lanjut tentang menulis sebuah Job `.spec` lihat [Menulis spesifikasi Job](/docs/concepts/workloads/controllers/jobs-run-to-completion/#writing-a-job-spec). + +### _Starting Deadline_ + +_Field_ `.spec.startingDeadlineSeconds` adalah _field_ opsional. +_Field_ tersebut berarti batas waktu dalam satuan detik untuk memulai sebuah Job jika Job melewatkan waktu yang telah dijadwalkan karena alasan apapun. +Setelah mencapai batas waktu, CronJob tidak akan memulai sebuah Job. +Job yang tidak memenuhi batas waktu, dengan cara ini dianggap sebagai Job yang gagal. +Jika _field_ ini tidak ditentukan, maka Job tidak memiliki batas waktu. + +_Controller_ CronJob menghitung berapa banyak jadwal yang terlewat untuk sebuah CronJob. jika lebih dari 100 jadwal yang terlewat, maka tidak ada lagi CronJob yang akan dijadwalkan. Ketika `.spec.startingDeadlineSeconds` tidak disetel, CronJob Controller menghitung jadwal yang terlewat dari `status.lastScheduleTime` hingga sekarang. + +Misalnya, sebuah CronJob seharusnya berjalan setiap menit, `status.lastScheduleTime` CronJob adalah pukul 5:00am, tetapi sekarang pukul 07:00am. Itu berarti ada 120 jadwal yang terlewat, maka tidak ada lagi CronJob yang akan dijadwalkan. + +Jika _field_ `.spec.startingDeadlineSeconds` disetel (tidak kosong), CronJob Controller akah menghitung berapa banyak Job yang terlewat dari nilai `.spec.startingDeadlineSeconds` hingga sekarang. + +Misalnya, jika disetel ke `200`, CronJob Controller akan menghitung jadwal yang terlewat dalam 200 detik terakhir. Pada kasus ini, jika terdapat lebih dari 100 jadwal yang terlewat dalam 200 detik terakhir, maka tidak ada lagi CronJob yang akan dijadwalkan. + +### Kebijakan _Concurrency_ + +_Field_ `.spec.concurrencyPolicy` juga opsional. +_Field_ tersebut menentukan bagaimana memperlakukan eksekusi _concurrent_ dari sebuah Job yang dibuat oleh CronJob. +Kamu dapat menetapkan hanya satu dari kebijakan _concurrency_: + +* `Allow` (bawaan): CronJob mengizinkan Job berjalan secara _concurrent_ +* `Forbid` : Job tidak mengizinkan Job berjalan secara _concurrent_; jika sudah saatnya untuk menjalankan Job baru dan Job sebelumnya belum selesai, maka CronJob akan melewatkan Job baru yang akan berjalan +* `Replace`: Jika sudah saatnya untuk menjalankan Job baru dan Job sebelumnya belum selesai, maka CronJob akan mengganti Job yang sedang berjalan dengan Job baru. + +Perhatikan bahwa kebijakan _concurrency_ hanya berlaku untuk Job yang dibuat dengan CronJob yang sama. +Jika terdapat banyak CronJob, Job akan selalu diizinkan untuk berjalan secara _concurrent_. + +### Penangguhan + +_Field_ `.spec.suspend` juga opsional. +Jika _field_ tersebut disetel `true`, semua eksekusi selanjutnya akan ditangguhkan. +Konfigurasi ini tidak dapat berlaku untuk eksekusi yang sudah dimulai. +Secara bawaan _false_. + +{{< caution >}} +Eksekusi yang ditangguhkan selama waktu yang dijadwalkan dihitung sebagai Job yang terlewat. +Ketika `.spec.suspend` diubah dari `true` ke `false` pada CronJob yang memiliki konfigurasi tanpa [batas waktu](#starting-deadline), Job yang terlewat akan dijadwalkan segera. +{{< /caution >}} + +### Batas Riwayat Pekerjaan + +_Field_ `.spec.successfulJobHistoryLimit` dan `.spec.failedJobHistoryLimit` juga opsional. +_Field_ tersebut menentukan berapa banyak Job yang sudah selesai dan gagal yang harus disimpan. +Secara bawaan, masing-masing _field_ tersebut disetel 3 dan 1. Mensetel batas ke `0` untuk menjaga tidak ada Job yang sesuai setelah Job tersebut selesai. + +{{% /capture %}} diff --git a/content/id/examples/application/job/cronjob.yaml b/content/id/examples/application/job/cronjob.yaml new file mode 100644 index 0000000000..c9d3893027 --- /dev/null +++ b/content/id/examples/application/job/cronjob.yaml @@ -0,0 +1,18 @@ +apiVersion: batch/v1beta1 +kind: CronJob +metadata: + name: hello +spec: + schedule: "*/1 * * * *" + jobTemplate: + spec: + template: + spec: + containers: + - name: hello + image: busybox + args: + - /bin/sh + - -c + - date; echo Hello from the Kubernetes cluster + restartPolicy: OnFailure From 1d32fd057fe2c6ca9d81dddcea09072c7c69779e Mon Sep 17 00:00:00 2001 From: Jie Shen Date: Tue, 12 May 2020 11:48:29 +0800 Subject: [PATCH 18/66] Update content/zh/docs/concepts/workloads/pods/pod-topology-spread-constraints.md Co-authored-by: LiuDui <1693291525@qq.com> --- .../concepts/workloads/pods/pod-topology-spread-constraints.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/docs/concepts/workloads/pods/pod-topology-spread-constraints.md b/content/zh/docs/concepts/workloads/pods/pod-topology-spread-constraints.md index 21badb450b..96200f706e 100644 --- a/content/zh/docs/concepts/workloads/pods/pod-topology-spread-constraints.md +++ b/content/zh/docs/concepts/workloads/pods/pod-topology-spread-constraints.md @@ -22,7 +22,7 @@ weight: 50 You can use _topology spread constraints_ to control how {{< glossary_tooltip text="Pods" term_id="Pod" >}} are spread across your cluster among failure-domains such as regions, zones, nodes, and other user-defined topology domains. This can help to achieve high availability as well as efficient resource utilization. --> -可以使用 *拓扑扩展约束* 来控制 {{< glossary_tooltip text="Pods" term_id="Pod" >}} 在集群内故障域(例如地区,区域,节点和其他用户自定义拓扑域)之间的分布。这可以帮助实现高可用以及提升资源利用率。 +可以使用*拓扑扩展约束*来控制 {{< glossary_tooltip text="Pods" term_id="Pod" >}} 在集群内故障域(例如地区,区域,节点和其他用户自定义拓扑域)之间的分布。这可以帮助实现高可用以及提升资源利用率。 {{% /capture %}} From f50994a08cb5d4e27856e6adfdf237491f224a57 Mon Sep 17 00:00:00 2001 From: Anusha Ramineni Date: Tue, 12 May 2020 12:12:22 +0530 Subject: [PATCH 19/66] Update volumes.md --- content/en/docs/concepts/storage/volumes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/concepts/storage/volumes.md b/content/en/docs/concepts/storage/volumes.md index ac72a32555..cacab214b6 100644 --- a/content/en/docs/concepts/storage/volumes.md +++ b/content/en/docs/concepts/storage/volumes.md @@ -248,14 +248,14 @@ spec: #### CSI Migration -{{< feature-state for_k8s_version="v1.14" state="alpha" >}} +{{< feature-state for_k8s_version="v1.18" state="beta" >}} The CSI Migration feature for Cinder, when enabled, shims all plugin operations from the existing in-tree plugin to the `cinder.csi.openstack.org` Container Storage Interface (CSI) Driver. In order to use this feature, the [Openstack Cinder CSI Driver](https://github.com/kubernetes/cloud-provider-openstack/blob/master/docs/using-cinder-csi-plugin.md) must be installed on the cluster and the `CSIMigration` and `CSIMigrationOpenStack` -Alpha features must be enabled. +Beta features must be enabled. ### configMap {#configmap} From c57fa62223afa7b4b0ec11309114db2b2a87ea51 Mon Sep 17 00:00:00 2001 From: Teodor Haret Date: Tue, 12 May 2020 12:20:01 +0300 Subject: [PATCH 20/66] Update kubectl overview page - list of operations --- content/en/docs/reference/kubectl/overview.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/content/en/docs/reference/kubectl/overview.md b/content/en/docs/reference/kubectl/overview.md index de5c98c887..fa8633fb5f 100644 --- a/content/en/docs/reference/kubectl/overview.md +++ b/content/en/docs/reference/kubectl/overview.md @@ -69,31 +69,49 @@ The following table includes short descriptions and the general syntax for all o Operation | Syntax | Description -------------------- | -------------------- | -------------------- +`alpha` | `kubectl alpha SUBCOMMAND [flags]` | List the available commands that correspond to alpha features, which are not enabled in Kubernetes clusters by default. `annotate` | kubectl annotate (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] | Add or update the annotations of one or more resources. +`api-resources` | `kubectl api-resources [flags]` | List the API resources that are available. `api-versions` | `kubectl api-versions [flags]` | List the API versions that are available. `apply` | `kubectl apply -f FILENAME [flags]`| Apply a configuration change to a resource from a file or stdin. `attach` | `kubectl attach POD -c CONTAINER [-i] [-t] [flags]` | Attach to a running container either to view the output stream or interact with the container (stdin). +`auth` | `kubectl auth [flags] [options]` | Inspect authorization. `autoscale` | kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags] | Automatically scale the set of pods that are managed by a replication controller. +`certificate` | `kubectl certificate SUBCOMMAND [options]` | Modify certificate resources. `cluster-info` | `kubectl cluster-info [flags]` | Display endpoint information about the master and services in the cluster. +`completion` | `kubectl completion SHELL [options]` | Output shell completion code for the specified shell (bash or zsh). `config` | `kubectl config SUBCOMMAND [flags]` | Modifies kubeconfig files. See the individual subcommands for details. +`convert` | `kubectl convert -f FILENAME [options]` | Convert config files between different API versions. Both YAML and JSON formats are accepted. +`cordon` | `kubectl cordon NODE [options]` | Mark node as unschedulable. +`cp` | `kubectl cp [options]` | Copy files and directories to and from containers. `create` | `kubectl create -f FILENAME [flags]` | Create one or more resources from a file or stdin. `delete` | kubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | --all]) [flags] | Delete resources either from a file, stdin, or specifying label selectors, names, resource selectors, or resources. `describe` | kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags] | Display the detailed state of one or more resources. `diff` | `kubectl diff -f FILENAME [flags]`| Diff file or stdin against live configuration. +`drain` | `kubectl drain NODE [options]` | Drain node in preparation for maintenance. `edit` | kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags] | Edit and update the definition of one or more resources on the server by using the default editor. `exec` | `kubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [-- COMMAND [args...]]` | Execute a command against a container in a pod. `explain` | `kubectl explain [--recursive=false] [flags]` | Get documentation of various resources. For instance pods, nodes, services, etc. `expose` | kubectl expose (-f FILENAME | TYPE NAME | TYPE/NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type] [flags] | Expose a replication controller, service, or pod as a new Kubernetes service. `get` | kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags] | List one or more resources. +`kustomize` | `kubectl kustomize [flags] [options]` | List a set of API resources generated from instructions in a kustomization.yaml file. The argument must be the path to the directory containing the file, or a git repository URL with a path suffix specifying same with respect to the repository root. `label` | kubectl label (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] | Add or update the labels of one or more resources. `logs` | `kubectl logs POD [-c CONTAINER] [--follow] [flags]` | Print the logs for a container in a pod. +`options` | `kubectl options` | List of global command-line options, which apply to all commands. `patch` | kubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) --patch PATCH [flags] | Update one or more fields of a resource by using the strategic merge patch process. +`plugin` | `kubectl plugin [flags] [options]` | Provides utilities for interacting with plugins. `port-forward` | `kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] [flags]` | Forward one or more local ports to a pod. `proxy` | `kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [flags]` | Run a proxy to the Kubernetes API server. `replace` | `kubectl replace -f FILENAME` | Replace a resource from a file or stdin. +`rollout` | `kubectl rollout SUBCOMMAND [options]` | Manage the rollout of a resource. Valid resource types include: deployments, daemonsets and statefulsets. `run` | kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server|client|none] [--overrides=inline-json] [flags] | Run a specified image on the cluster. `scale` | kubectl scale (-f FILENAME | TYPE NAME | TYPE/NAME) --replicas=COUNT [--resource-version=version] [--current-replicas=count] [flags] | Update the size of the specified replication controller. +`set` | `kubectl set SUBCOMMAND [options]` | Configure application resources. +`taint` | `kubectl taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 ... KEY_N=VAL_N:TAINT_EFFECT_N [options]` | Update the taints on one or more nodes. +`top` | `kubectl top [flags] [options]` | Display Resource (CPU/Memory/Storage) usage. +`uncordon` | `kubectl uncordon NODE [options]` | Mark node as schedulable. `version` | `kubectl version [--client] [flags]` | Display the Kubernetes version running on the client and server. +`wait` | kubectl wait ([-f FILENAME] | resource.group/resource.name | resource.group [(-l label | --all)]) [--for=delete|--for condition=available] [options] | Experimental: Wait for a specific condition on one or many resources. Remember: For more about command operations, see the [kubectl](/docs/user-guide/kubectl/) reference documentation. From 929fd093156453812cc53e9e2eb03c5be321264e Mon Sep 17 00:00:00 2001 From: baijunyao Date: Mon, 11 May 2020 23:48:23 +0800 Subject: [PATCH 21/66] Update PULL_REQUEST_TEMPLATE URL --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 25b0ff4753..795b340ba3 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -16,7 +16,7 @@ If you're working on a different localization (not English), or you are documenting a feature that will be part of a future release, see - https://kubernetes.io/docs/contribute/start#choose-which-git-branch-to-use + https://kubernetes.io/docs/contribute/new-content/overview/#choose-which-git-branch-to-use for advice. --> From a0dfd8743f08404e57379741654a3ee67cecf44b Mon Sep 17 00:00:00 2001 From: Dave Barnow Date: Tue, 12 May 2020 10:59:42 -0400 Subject: [PATCH 22/66] Fix broken layout in docs --- .../docs/tasks/access-application-cluster/web-ui-dashboard.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/tasks/access-application-cluster/web-ui-dashboard.md b/content/en/docs/tasks/access-application-cluster/web-ui-dashboard.md index b62438a8a1..0069334214 100644 --- a/content/en/docs/tasks/access-application-cluster/web-ui-dashboard.md +++ b/content/en/docs/tasks/access-application-cluster/web-ui-dashboard.md @@ -97,7 +97,7 @@ If needed, you can expand the **Advanced options** section where you can specify Example: - ```conf +```conf release=1.0 tier=frontend environment=pod From c7971b5ed3acd88516f49c6babfc1f117fb49b9a Mon Sep 17 00:00:00 2001 From: jfcgaspar <46935422+jfcgaspar@users.noreply.github.com> Date: Wed, 22 Apr 2020 17:01:55 +0100 Subject: [PATCH 23/66] Update install-kubeadm.md (SELinux note) Added a note regarding the possibility of keeping SELinux enabled for advanced users at own risk. Update content/en/docs/setup/production-environment/tools/kubeadm/install-kubeadm.md Co-Authored-By: Jim Angel Clean up text from rebase Revert "Clean up text from rebase" This reverts commit ac82a7f1981fe6e09ba1e101b372fa6d154125d2. Clean up rebase text --- .../production-environment/tools/kubeadm/install-kubeadm.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/content/en/docs/setup/production-environment/tools/kubeadm/install-kubeadm.md b/content/en/docs/setup/production-environment/tools/kubeadm/install-kubeadm.md index b44275302a..c7ddf65501 100644 --- a/content/en/docs/setup/production-environment/tools/kubeadm/install-kubeadm.md +++ b/content/en/docs/setup/production-environment/tools/kubeadm/install-kubeadm.md @@ -210,12 +210,14 @@ yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes systemctl enable --now kubelet ``` - **Note:** + **Notes:** - Setting SELinux in permissive mode by running `setenforce 0` and `sed ...` effectively disables it. This is required to allow containers to access the host filesystem, which is needed by pod networks for example. You have to do this until SELinux support is improved in the kubelet. + - You can leave SELinux enabled if you know how to configure it but it may require settings that are not supported by kubeadm. + {{% /tab %}} {{% tab name="Container Linux" %}} Install CNI plugins (required for most pod network): From 380add941973027de5d060dec94df55a95336075 Mon Sep 17 00:00:00 2001 From: Irvi Firqotul Aini Date: Tue, 12 May 2020 21:22:42 +0700 Subject: [PATCH 24/66] Fix indentation. --- .../concepts/services-networking/ingress.md | 9 ++++----- .../workloads/controllers/deployment.md | 17 ++++++----------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/content/en/docs/concepts/services-networking/ingress.md b/content/en/docs/concepts/services-networking/ingress.md index 39e57ffdb0..75748d238f 100644 --- a/content/en/docs/concepts/services-networking/ingress.md +++ b/content/en/docs/concepts/services-networking/ingress.md @@ -134,11 +134,10 @@ path types: to the list of labels in the path split by the `/` separator. A request is a match for path _p_ if every _p_ is an element-wise prefix of _p_ of the request path. - {{< note >}} - If the last element of the path is a substring of the - last element in request path, it is not a match (for example: - `/foo/bar` matches`/foo/bar/baz`, but does not match `/foo/barbaz`). - {{< /note >}} + + {{< note >}} + If the last element of the path is a substring of the last element in request path, it is not a match (for example: `/foo/bar` matches`/foo/bar/baz`, but does not match `/foo/barbaz`). + {{< /note >}} #### Multiple Matches In some cases, multiple paths within an Ingress will match a request. In those diff --git a/content/en/docs/concepts/workloads/controllers/deployment.md b/content/en/docs/concepts/workloads/controllers/deployment.md index c5751059f6..33f388247d 100644 --- a/content/en/docs/concepts/workloads/controllers/deployment.md +++ b/content/en/docs/concepts/workloads/controllers/deployment.md @@ -53,11 +53,9 @@ In this example: In this case, you simply select a label that is defined in the Pod template (`app: nginx`). However, more sophisticated selection rules are possible, as long as the Pod template itself satisfies the rule. + {{< note >}} - The `.spec.selector.matchLabels` field is a map of {key,value} pairs. A single {key,value} in the `matchLabels` map - is equivalent to an element of `matchExpressions`, whose key field is "key" the operator is "In", - and the values array contains only "value". - All of the requirements, from both `matchLabels` and `matchExpressions`, must be satisfied in order to match. + The `.spec.selector.matchLabels` field is a map of {key,value} pairs. A single {key,value} in the `matchLabels` map is equivalent to an element of `matchExpressions`, whose key field is "key" the operator is "In", and the values array contains only "value". All of the requirements, from both `matchLabels` and `matchExpressions`, must be satisfied in order to match. {{< /note >}} * The `template` field contains the following sub-fields: @@ -73,10 +71,9 @@ In this example: 1. Create the Deployment by running the following command: - {{< note >}} - You may specify the `--record` flag to write the command executed in the resource annotation `kubernetes.io/change-cause`. It is useful for future introspection. - For example, to see the commands executed in each Deployment revision. - {{< /note >}} + {{< note >}} + You may specify the `--record` flag to write the command executed in the resource annotation `kubernetes.io/change-cause`. It is useful for future introspection. For example, to see the commands executed in each Deployment revision. + {{< /note >}} ```shell kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml @@ -409,9 +406,7 @@ rolled back. ``` {{< note >}} - The Deployment controller stops the bad rollout automatically, and stops scaling up the new - ReplicaSet. This depends on the rollingUpdate parameters (`maxUnavailable` specifically) that you have specified. - Kubernetes by default sets the value to 25%. + The Deployment controller stops the bad rollout automatically, and stops scaling up the new ReplicaSet. This depends on the rollingUpdate parameters (`maxUnavailable` specifically) that you have specified. sKubernetes by default sets the value to 25%. {{< /note >}} * Get the description of the Deployment: From 491c9e2718c383d9fb4d260f98be55e31702555c Mon Sep 17 00:00:00 2001 From: Arhell Date: Tue, 12 May 2020 20:46:35 +0300 Subject: [PATCH 25/66] add localization for subscribe button --- i18n/en.toml | 3 +++ layouts/index.html | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/i18n/en.toml b/i18n/en.toml index c3a5ab69ae..015897ce78 100644 --- a/i18n/en.toml +++ b/i18n/en.toml @@ -175,6 +175,9 @@ other = "Objectives" [prerequisites_heading] other = "Before you begin" +[subscribe_button] +other = "Subscribe" + [ui_search_placeholder] other = "Search" diff --git a/layouts/index.html b/layouts/index.html index 955bd6a934..1e14ba9228 100644 --- a/layouts/index.html +++ b/layouts/index.html @@ -28,7 +28,7 @@ -
+
{{ T "main_kubeweekly_past_link" }}
From 0729189257d25e58ecdd613285850065ceae9a2a Mon Sep 17 00:00:00 2001 From: Tim Bannister Date: Tue, 12 May 2020 19:06:26 +0100 Subject: [PATCH 26/66] Adjust Deployment Markdown for Hugo 0.70.x Shortcodes that deal with indentation seem tricky in Hugo. Try this work-around. --- .../workloads/controllers/deployment.md | 134 ++++++++++-------- 1 file changed, 71 insertions(+), 63 deletions(-) diff --git a/content/en/docs/concepts/workloads/controllers/deployment.md b/content/en/docs/concepts/workloads/controllers/deployment.md index 33f388247d..af42da5f1b 100644 --- a/content/en/docs/concepts/workloads/controllers/deployment.md +++ b/content/en/docs/concepts/workloads/controllers/deployment.md @@ -53,10 +53,10 @@ In this example: In this case, you simply select a label that is defined in the Pod template (`app: nginx`). However, more sophisticated selection rules are possible, as long as the Pod template itself satisfies the rule. - - {{< note >}} - The `.spec.selector.matchLabels` field is a map of {key,value} pairs. A single {key,value} in the `matchLabels` map is equivalent to an element of `matchExpressions`, whose key field is "key" the operator is "In", and the values array contains only "value". All of the requirements, from both `matchLabels` and `matchExpressions`, must be satisfied in order to match. - {{< /note >}} + + {{< note >}} + The `.spec.selector.matchLabels` field is a map of {key,value} pairs. A single {key,value} in the `matchLabels` map is equivalent to an element of `matchExpressions`, whose key field is "key" the operator is "In", and the values array contains only "value". All of the requirements, from both `matchLabels` and `matchExpressions`, must be satisfied in order to match. + {{< /note >}} * The `template` field contains the following sub-fields: * The Pods are labeled `app: nginx`using the `.metadata.labels` field. @@ -65,77 +65,85 @@ In this example: [Docker Hub](https://hub.docker.com/) image at version 1.14.2. * Create one container and name it `nginx` using the `.spec.template.spec.containers[0].name` field. - Follow the steps given below to create the above Deployment: +Before you begin, make sure your Kubernetes cluster is up and running. +Follow the steps given below to create the above Deployment: - Before you begin, make sure your Kubernetes cluster is up and running. - 1. Create the Deployment by running the following command: +1. Create the Deployment by running the following command: - {{< note >}} - You may specify the `--record` flag to write the command executed in the resource annotation `kubernetes.io/change-cause`. It is useful for future introspection. For example, to see the commands executed in each Deployment revision. - {{< /note >}} + ```shell + kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml + ``` - ```shell - kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml - ``` + {{< note >}} + You can specify the `--record` flag to write the command executed in the resource annotation `kubernetes.io/change-cause`. The recorded change is useful for future introspection. For example, to see the commands executed in each Deployment revision. + {{< /note >}} - 2. Run `kubectl get deployments` to check if the Deployment was created. If the Deployment is still being created, the output is similar to the following: - ```shell - NAME READY UP-TO-DATE AVAILABLE AGE - nginx-deployment 0/3 0 0 1s - ``` - When you inspect the Deployments in your cluster, the following fields are displayed: - * `NAME` lists the names of the Deployments in the namespace. - * `READY` displays how many replicas of the application are available to your users. It follows the pattern ready/desired. - * `UP-TO-DATE` displays the number of replicas that have been updated to achieve the desired state. - * `AVAILABLE` displays how many replicas of the application are available to your users. - * `AGE` displays the amount of time that the application has been running. +2. Run `kubectl get deployments` to check if the Deployment was created. - Notice how the number of desired replicas is 3 according to `.spec.replicas` field. + If the Deployment is still being created, the output is similar to the following: + ```shell + NAME READY UP-TO-DATE AVAILABLE AGE + nginx-deployment 0/3 0 0 1s + ``` + When you inspect the Deployments in your cluster, the following fields are displayed: + * `NAME` lists the names of the Deployments in the namespace. + * `READY` displays how many replicas of the application are available to your users. It follows the pattern ready/desired. + * `UP-TO-DATE` displays the number of replicas that have been updated to achieve the desired state. + * `AVAILABLE` displays how many replicas of the application are available to your users. + * `AGE` displays the amount of time that the application has been running. - 3. To see the Deployment rollout status, run `kubectl rollout status deployment.v1.apps/nginx-deployment`. The output is similar to this: - ```shell - Waiting for rollout to finish: 2 out of 3 new replicas have been updated... - deployment.apps/nginx-deployment successfully rolled out - ``` + Notice how the number of desired replicas is 3 according to `.spec.replicas` field. - 4. Run the `kubectl get deployments` again a few seconds later. The output is similar to this: - ```shell - NAME READY UP-TO-DATE AVAILABLE AGE - nginx-deployment 3/3 3 3 18s - ``` - Notice that the Deployment has created all three replicas, and all replicas are up-to-date (they contain the latest Pod template) and available. +3. To see the Deployment rollout status, run `kubectl rollout status deployment.v1.apps/nginx-deployment`. - 5. To see the ReplicaSet (`rs`) created by the Deployment, run `kubectl get rs`. The output is similar to this: - ```shell - NAME DESIRED CURRENT READY AGE - nginx-deployment-75675f5897 3 3 3 18s - ``` - ReplicaSet output shows the following fields: - - * `NAME` lists the names of the ReplicaSets in the namespace. - * `DESIRED` displays the desired number of _replicas_ of the application, which you define when you create the Deployment. This is the _desired state_. - * `CURRENT` displays how many replicas are currently running. - * `READY` displays how many replicas of the application are available to your users. - * `AGE` displays the amount of time that the application has been running. - - Notice that the name of the ReplicaSet is always formatted as `[DEPLOYMENT-NAME]-[RANDOM-STRING]`. The random string is - randomly generated and uses the `pod-template-hash` as a seed. + The output is similar to: + ```shell + Waiting for rollout to finish: 2 out of 3 new replicas have been updated... + deployment.apps/nginx-deployment successfully rolled out + ``` - 6. To see the labels automatically generated for each Pod, run `kubectl get pods --show-labels`. The following output is returned: - ```shell - NAME READY STATUS RESTARTS AGE LABELS - nginx-deployment-75675f5897-7ci7o 1/1 Running 0 18s app=nginx,pod-template-hash=3123191453 - nginx-deployment-75675f5897-kzszj 1/1 Running 0 18s app=nginx,pod-template-hash=3123191453 - nginx-deployment-75675f5897-qqcnn 1/1 Running 0 18s app=nginx,pod-template-hash=3123191453 - ``` - The created ReplicaSet ensures that there are three `nginx` Pods. +4. Run the `kubectl get deployments` again a few seconds later. + The output is similar to this: + ```shell + NAME READY UP-TO-DATE AVAILABLE AGE + nginx-deployment 3/3 3 3 18s + ``` + Notice that the Deployment has created all three replicas, and all replicas are up-to-date (they contain the latest Pod template) and available. - {{< note >}} - You must specify an appropriate selector and Pod template labels in a Deployment (in this case, - `app: nginx`). Do not overlap labels or selectors with other controllers (including other Deployments and StatefulSets). Kubernetes doesn't stop you from overlapping, and if multiple controllers have overlapping selectors those controllers might conflict and behave unexpectedly. - {{< /note >}} +5. To see the ReplicaSet (`rs`) created by the Deployment, run `kubectl get rs`. The output is similar to this: + ```shell + NAME DESIRED CURRENT READY AGE + nginx-deployment-75675f5897 3 3 3 18s + ``` + ReplicaSet output shows the following fields: + + * `NAME` lists the names of the ReplicaSets in the namespace. + * `DESIRED` displays the desired number of _replicas_ of the application, which you define when you create the Deployment. This is the _desired state_. + * `CURRENT` displays how many replicas are currently running. + * `READY` displays how many replicas of the application are available to your users. + * `AGE` displays the amount of time that the application has been running. + + Notice that the name of the ReplicaSet is always formatted as `[DEPLOYMENT-NAME]-[RANDOM-STRING]`. + The random string is randomly generated and uses the `pod-template-hash` as a seed. + +6. To see the labels automatically generated for each Pod, run `kubectl get pods --show-labels`. + The output is similar to: + ```shell + NAME READY STATUS RESTARTS AGE LABELS + nginx-deployment-75675f5897-7ci7o 1/1 Running 0 18s app=nginx,pod-template-hash=3123191453 + nginx-deployment-75675f5897-kzszj 1/1 Running 0 18s app=nginx,pod-template-hash=3123191453 + nginx-deployment-75675f5897-qqcnn 1/1 Running 0 18s app=nginx,pod-template-hash=3123191453 + ``` + The created ReplicaSet ensures that there are three `nginx` Pods. + +{{< note >}} +You must specify an appropriate selector and Pod template labels in a Deployment +(in this case, `app: nginx`). + +Do not overlap labels or selectors with other controllers (including other Deployments and StatefulSets). Kubernetes doesn't stop you from overlapping, and if multiple controllers have overlapping selectors those controllers might conflict and behave unexpectedly. +{{< /note >}} ### Pod-template-hash label From 34894dafc2df754520eaa098b1fb88e5c75bdd4b Mon Sep 17 00:00:00 2001 From: Tim Bannister Date: Tue, 12 May 2020 19:07:16 +0100 Subject: [PATCH 27/66] Upgrade Note to Caution This is a strong caution against making the change described here. --- content/en/docs/concepts/workloads/controllers/deployment.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/concepts/workloads/controllers/deployment.md b/content/en/docs/concepts/workloads/controllers/deployment.md index af42da5f1b..aeb9542126 100644 --- a/content/en/docs/concepts/workloads/controllers/deployment.md +++ b/content/en/docs/concepts/workloads/controllers/deployment.md @@ -147,9 +147,9 @@ Do not overlap labels or selectors with other controllers (including other Deplo ### Pod-template-hash label -{{< note >}} +{{< caution >}} Do not change this label. -{{< /note >}} +{{< /caution >}} The `pod-template-hash` label is added by the Deployment controller to every ReplicaSet that a Deployment creates or adopts. From 89c99bac818f076d31649cd9e4e813318b45ceba Mon Sep 17 00:00:00 2001 From: Tim Bannister Date: Tue, 12 May 2020 19:35:56 +0100 Subject: [PATCH 28/66] Fix Markdown for secret encryption at rest Adapt Markdown for CommonMark / Hugo 0.70.x --- .../tasks/administer-cluster/encrypt-data.md | 47 ++++++++++--------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/content/en/docs/tasks/administer-cluster/encrypt-data.md b/content/en/docs/tasks/administer-cluster/encrypt-data.md index 920fe19197..ee8ca2e526 100644 --- a/content/en/docs/tasks/administer-cluster/encrypt-data.md +++ b/content/en/docs/tasks/administer-cluster/encrypt-data.md @@ -62,12 +62,12 @@ but not both in the same item). The first provider in the list is used to encrypt resources going into storage. When reading resources from storage each provider that matches the stored data attempts to decrypt the data in -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. +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. {{< caution >}} -**IMPORTANT:** 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 +**IMPORTANT:** 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 >}} @@ -117,9 +117,9 @@ To create a new secret perform the following steps: 1. Generate a 32 byte random key and base64 encode it. If you're on Linux or macOS, run the following command: - ``` - head -c 32 /dev/urandom | base64 - ``` + ```shell + head -c 32 /dev/urandom | base64 + ``` 2. Place that value in the secret field. 3. Set the `--encryption-provider-config` flag on the `kube-apiserver` to point to the location of the config file. @@ -138,33 +138,33 @@ program to retrieve the contents of your secret. 1. Create a new secret called `secret1` in the `default` namespace: - ``` - kubectl create secret generic secret1 -n default --from-literal=mykey=mydata - ``` + ```shell + kubectl create secret generic secret1 -n default --from-literal=mykey=mydata + ``` 2. Using the etcdctl commandline, read that secret out of etcd: - ``` -    ETCDCTL_API=3 etcdctl get /registry/secrets/default/secret1 [...] | hexdump -C - ``` + `ETCDCTL_API=3 etcdctl get /registry/secrets/default/secret1 [...] | hexdump -C` + + where `[...]` must be the additional arguments for connecting to the etcd server. + +3. Verify the stored secret is prefixed with `k8s:enc:aescbc:v1:` which indicates the `aescbc` provider has encrypted the resulting data. - where `[...]` must be the additional arguments for connecting to the etcd server. -3. Verify the stored secret is prefixed with `k8s:enc:aescbc:v1:` which indicates the `aescbc` provider has encrypted the resulting data. 4. Verify the secret is correctly decrypted when retrieved via the API: - ``` - kubectl describe secret secret1 -n default - ``` + ```shell + kubectl describe secret secret1 -n default + ``` - should match `mykey: bXlkYXRh`, mydata is encoded, check [decoding a secret](/docs/concepts/configuration/secret#decoding-a-secret) to - completely decode the secret. + should match `mykey: bXlkYXRh`, mydata is encoded, check [decoding a secret](/docs/concepts/configuration/secret#decoding-a-secret) to + completely decode the secret. ## Ensure all secrets are encrypted Since secrets are encrypted on write, performing an update on a secret will encrypt that content. -``` +```shell kubectl get secrets --all-namespaces -o json | kubectl replace -f - ``` @@ -206,7 +206,10 @@ resources: secret: ``` -and restart all `kube-apiserver` processes. Then run the command `kubectl get secrets --all-namespaces -o json | kubectl replace -f -` +and restart all `kube-apiserver` processes. Then run: +```shell +kubectl get secrets --all-namespaces -o json | kubectl replace -f - +``` to force all secrets to be decrypted. {{% /capture %}} From 0cd227897e67a91d9b387ff8ad52072f5e686beb Mon Sep 17 00:00:00 2001 From: Tim Bannister Date: Tue, 12 May 2020 19:36:38 +0100 Subject: [PATCH 29/66] Highlight note with appropriate shortcode --- content/en/docs/tasks/administer-cluster/encrypt-data.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/content/en/docs/tasks/administer-cluster/encrypt-data.md b/content/en/docs/tasks/administer-cluster/encrypt-data.md index ee8ca2e526..b96f034963 100644 --- a/content/en/docs/tasks/administer-cluster/encrypt-data.md +++ b/content/en/docs/tasks/administer-cluster/encrypt-data.md @@ -169,8 +169,11 @@ kubectl get secrets --all-namespaces -o json | kubectl replace -f - ``` The command above reads all secrets and then updates them to apply server side encryption. + +{{< note >}} If an error occurs due to a conflicting write, retry the command. For larger clusters, you may wish to subdivide the secrets by namespace or script an update. +{{< /note >}} ## Rotating a decryption key From dfeed456d33ab5ed952c02ca42b5da228b39204b Mon Sep 17 00:00:00 2001 From: Celeste Horgan Date: Tue, 12 May 2020 09:56:37 -0700 Subject: [PATCH 30/66] Fix template Signed-off-by: Celeste Horgan --- .../configure-pod-container/configure-runasusername.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/content/en/docs/tasks/configure-pod-container/configure-runasusername.md b/content/en/docs/tasks/configure-pod-container/configure-runasusername.md index 530666e9dc..ac912327f3 100644 --- a/content/en/docs/tasks/configure-pod-container/configure-runasusername.md +++ b/content/en/docs/tasks/configure-pod-container/configure-runasusername.md @@ -16,6 +16,10 @@ This page shows how to use the `runAsUserName` setting for Pods and containers t You need to have a Kubernetes cluster and the kubectl command-line tool must be configured to communicate with your cluster. The cluster is expected to have Windows worker nodes where pods with containers running Windows workloads will get scheduled. +{{% /capture %}} + +{{% capture steps %}} + ## Set the Username for a Pod To specify the username with which to execute the Pod's container processes, include the `securityContext` field ([PodSecurityContext](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#podsecuritycontext-v1-core) in the Pod specification, and within it, the `windowsOptions` ([WindowsSecurityContextOptions](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#windowssecuritycontextoptions-v1-core) field containing the `runAsUserName` field. @@ -118,4 +122,4 @@ For more information about these limtations, check [here](https://support.micros * [Managing Workload Identity with Group Managed Service Accounts (GMSA)](/docs/setup/production-environment/windows/user-guide-windows-containers/#managing-workload-identity-with-group-managed-service-accounts) * [Configure GMSA for Windows pods and containers](/docs/tasks/configure-pod-container/configure-gmsa/) -{{% /capture %}} +{{% /capture %}} \ No newline at end of file From f49cb16f8bac50f9d3bb375caa59e82372b5a844 Mon Sep 17 00:00:00 2001 From: Tim Bannister Date: Tue, 12 May 2020 21:06:16 +0100 Subject: [PATCH 31/66] Work around tab / codelang formatting issues Rather than tabs with a codelang set, use tabs containing Markdown --- .../container-runtimes.md | 138 ++++++++++++++---- 1 file changed, 106 insertions(+), 32 deletions(-) diff --git a/content/en/docs/setup/production-environment/container-runtimes.md b/content/en/docs/setup/production-environment/container-runtimes.md index dd65080994..7db25e022b 100644 --- a/content/en/docs/setup/production-environment/container-runtimes.md +++ b/content/en/docs/setup/production-environment/container-runtimes.md @@ -21,8 +21,8 @@ A flaw was found in the way runc handled system file descriptors when running co A malicious container could use this flaw to overwrite contents of the runc binary and consequently run arbitrary commands on the container host system. -Please refer to this link for more information about this issue -[cve-2019-5736 : runc vulnerability ] (https://access.redhat.com/security/cve/cve-2019-5736) +Please refer to [CVE-2019-5736](https://access.redhat.com/security/cve/cve-2019-5736) for more +information about the issue. {{< /caution >}} ### Applicability @@ -70,29 +70,39 @@ Keep track of the latest verified Docker version in the Kubernetes release notes Use the following commands to install Docker on your system: {{< tabs name="tab-cri-docker-installation" >}} -{{< tab name="Ubuntu 16.04+" codelang="bash" >}} -# Install Docker CE +{{< tab name="Ubuntu 16.04+" >}} + +```shell +# (Install Docker CE) ## Set up the repository: ### Install packages to allow apt to use a repository over HTTPS apt-get update && apt-get install -y \ apt-transport-https ca-certificates curl software-properties-common gnupg2 +``` -### Add Docker’s official GPG key +```shell +# Add Docker’s official GPG key: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - +``` -### Add Docker apt repository. +```shell +# Add the Docker apt repository: add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" +``` -## Install Docker CE. +```shell +# Install Docker CE apt-get update && apt-get install -y \ containerd.io=1.2.13-1 \ docker-ce=5:19.03.8~3-0~ubuntu-$(lsb_release -cs) \ docker-ce-cli=5:19.03.8~3-0~ubuntu-$(lsb_release -cs) +``` -# Setup daemon. +```shell +# Set up the Docker daemon cat > /etc/docker/daemon.json < /etc/docker/daemon.json <}} -{{< tab name="CentOS/RHEL 7.4+" codelang="bash" >}} +{{< tab name="CentOS/RHEL 7.4+" >}} -# Install Docker CE +```shell +# (Install Docker CE) ## Set up the repository -### Install required packages. +### Install required packages yum install -y yum-utils device-mapper-persistent-data lvm2 +``` -### Add Docker repository. +```shell +## Add the Docker repository yum-config-manager --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo +``` -## Install Docker CE. +```shell +# Install Docker CE yum update -y && yum install -y \ containerd.io-1.2.13 \ docker-ce-19.03.8 \ docker-ce-cli-19.03.8 +``` -## Create /etc/docker directory. +```shell +## Create /etc/docker mkdir /etc/docker +``` -# Setup daemon. +```shell +# Set up the Docker daemon cat > /etc/docker/daemon.json < /etc/docker/daemon.json <}} {{< /tabs >}} @@ -173,7 +202,7 @@ For more information, see the [CRI-O compatiblity matrix](https://github.com/cri modprobe overlay modprobe br_netfilter -# Setup required sysctl params, these persist across reboots. +# Set up required sysctl params, these persist across reboots. cat > /etc/sysctl.d/99-kubernetes-cri.conf <}} -{{< tab name="Debian" codelang="bash" >}} +{{< tab name="Debian" >}} + +```shell # Debian Unstable/Sid echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Debian_Unstable/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list wget -nv https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/Debian_Unstable/Release.key -O- | sudo apt-key add - +``` +```shell # Debian Testing echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Debian_Testing/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list wget -nv https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/Debian_Testing/Release.key -O- | sudo apt-key add - +``` +```shell # Debian 10 echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Debian_10/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list wget -nv https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/Debian_10/Release.key -O- | sudo apt-key add - +``` +```shell # Raspbian 10 echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Raspbian_10/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list wget -nv https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/Raspbian_10/Release.key -O- | sudo apt-key add - +``` -# Install CRI-O +and then install CRI-O: +```shell sudo apt-get install cri-o-1.17 +``` {{< /tab >}} -{{< tab name="Ubuntu 18.04, 19.04 and 19.10" codelang="bash" >}} -# Setup repository +{{< tab name="Ubuntu 18.04, 19.04 and 19.10" >}} + +```shell +# Configure package repository . /etc/os-release sudo sh -c "echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/x${NAME}_${VERSION_ID}/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list" wget -nv https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/x${NAME}_${VERSION_ID}/Release.key -O- | sudo apt-key add - sudo apt-get update +``` +```shell # Install CRI-O sudo apt-get install cri-o-1.17 +``` {{< /tab >}} -{{< tab name="CentOS/RHEL 7.4+" codelang="bash" >}} +{{< tab name="CentOS/RHEL 7.4+" >}} + +```shell # Install prerequisites curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/CentOS_7/devel:kubic:libcontainers:stable.repo curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:{{< skew latestVersion >}}.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:{{< skew latestVersion >}}/CentOS_7/devel:kubic:libcontainers:stable:cri-o:{{< skew latestVersion >}}.repo +``` +```shell # Install CRI-O yum install -y cri-o +``` {{< /tab >}} -{{< tab name="openSUSE Tumbleweed" codelang="bash" >}} +{{< tab name="openSUSE Tumbleweed" >}} + +```shell sudo zypper install cri-o +``` {{< /tab >}} {{< /tabs >}} ### Start CRI-O -``` +```shell systemctl daemon-reload systemctl start crio ``` @@ -270,51 +323,72 @@ sysctl --system ### Install containerd {{< tabs name="tab-cri-containerd-installation" >}} -{{< tab name="Ubuntu 16.04" codelang="bash" >}} -# Install containerd +{{< tab name="Ubuntu 16.04" >}} + +```shell +# (Install containerd) ## Set up the repository ### Install packages to allow apt to use a repository over HTTPS apt-get update && apt-get install -y apt-transport-https ca-certificates curl software-properties-common +``` -### Add Docker’s official GPG key +```shell +## Add Docker’s official GPG key curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - +``` -### Add Docker apt repository. +```shell +## Add Docker apt repository. add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" +``` +```shell ## Install containerd apt-get update && apt-get install -y containerd.io +``` +```shell # Configure containerd mkdir -p /etc/containerd containerd config default > /etc/containerd/config.toml +``` +```shell # Restart containerd systemctl restart containerd +``` {{< /tab >}} -{{< tab name="CentOS/RHEL 7.4+" codelang="bash" >}} -# Install containerd +{{< tab name="CentOS/RHEL 7.4+" >}} + +```shell +# (Install containerd) ## Set up the repository ### Install required packages yum install -y yum-utils device-mapper-persistent-data lvm2 -### Add docker repository +```shell +## Add docker repository yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo +```shell ## Install containerd yum update -y && yum install -y containerd.io -# Configure containerd +```shell +## Configure containerd mkdir -p /etc/containerd containerd config default > /etc/containerd/config.toml +``` +```shell # Restart containerd systemctl restart containerd +``` {{< /tab >}} {{< /tabs >}} From e0ae1338cd818646d2a73db992d0d522e9931a18 Mon Sep 17 00:00:00 2001 From: Celeste Horgan Date: Tue, 12 May 2020 10:04:27 -0700 Subject: [PATCH 32/66] Correct links Signed-off-by: Celeste Horgan --- .../cluster-administration/flow-control.md | 18 +++++++++--------- .../concepts/extend-kubernetes/operator.md | 4 ++-- .../scheduling-framework.md | 6 +++--- .../services-networking/dns-pod-service.md | 8 +++----- .../concepts/storage/persistent-volumes.md | 8 ++++---- .../concepts/workloads/pods/init-containers.md | 4 ++-- .../en/docs/contribute/review/for-approvers.md | 3 +-- .../tools/kubeadm/install-kubeadm.md | 6 +++--- .../production-environment/tools/kubespray.md | 4 ++-- .../access-cluster.md | 4 ++-- .../custom-resource-definitions.md | 4 ++-- .../administer-cluster/reconfigure-kubelet.md | 16 ++++++++-------- .../reserve-compute-resources.md | 6 +++--- content/en/docs/tasks/example-task-template.md | 8 +++----- .../guestbook-logs-metrics-with-elk.md | 12 ++++++------ 15 files changed, 53 insertions(+), 58 deletions(-) diff --git a/content/en/docs/concepts/cluster-administration/flow-control.md b/content/en/docs/concepts/cluster-administration/flow-control.md index 6540a05e8f..c56d177e5d 100644 --- a/content/en/docs/concepts/cluster-administration/flow-control.md +++ b/content/en/docs/concepts/cluster-administration/flow-control.md @@ -131,14 +131,14 @@ classes: namespace). These are important to isolate from other traffic because failures in leader election cause their controllers to fail and restart, which in turn causes more expensive traffic as the new controllers sync their informers. - + * The `workload-high` priority level is for other requests from built-in controllers. - + * The `workload-low` priority level is for requests from any other service account, which will typically include all requests from controllers runing in Pods. - + * The `global-default` priority level handles all other traffic, e.g. interactive `kubectl` commands run by nonprivileged users. @@ -150,7 +150,7 @@ are built in and may not be overwritten: special `exempt` FlowSchema classifies all requests from the `system:masters` group into this priority level. You may define other FlowSchemas that direct other requests to this priority level, if appropriate. - + * The special `catch-all` priority level is used in combination with the special `catch-all` FlowSchema to make sure that every request gets some kind of classification. Typically you should not rely on this catch-all configuration, @@ -164,7 +164,7 @@ are built in and may not be overwritten: ## Resources The flow control API involves two kinds of resources. -[PriorityLevelConfigurations](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#prioritylevelconfiguration-v1alpha1-flowcontrol-apiserver-k8s-io) +[PriorityLevelConfigurations](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#prioritylevelconfiguration-v1alpha1-flowcontrol-apiserver-k8s-io) define the available isolation classes, the share of the available concurrency budget that each can handle, and allow for fine-tuning queuing behavior. [FlowSchemas](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#flowschema-v1alpha1-flowcontrol-apiserver-k8s-io) @@ -204,7 +204,7 @@ to balance progress between request flows. The queuing configuration allows tuning the fair queuing algorithm for a priority level. Details of the algorithm can be read in the [enhancement -proposal](#what-s-next), but in short: +proposal](#whats-next), but in short: * Increasing `queues` reduces the rate of collisions between different flows, at the cost of increased memory usage. A value of 1 here effectively disables the @@ -291,7 +291,7 @@ enabled has two extra headers: `X-Kubernetes-PF-FlowSchema-UID` and `X-Kubernetes-PF-PriorityLevel-UID`, noting the flow schema that matched the request and the priority level to which it was assigned, respectively. The API objects' names are not included in these headers in case the requesting user does not -have permission to view them, so when debugging you can use a command like +have permission to view them, so when debugging you can use a command like ```shell kubectl get flowschemas -o custom-columns="uid:{metadata.uid},name:{metadata.name}" @@ -363,7 +363,7 @@ poorly-behaved workloads that may be harming system health. * `apiserver_flowcontrol_request_execution_seconds` gives a histogram of how long requests took to actually execute, grouped by the FlowSchema that matched the request and the PriorityLevel to which it was assigned. - + {{% /capture %}} @@ -374,4 +374,4 @@ the [enhancement proposal](https://github.com/kubernetes/enhancements/blob/maste You can make suggestions and feature requests via [SIG API Machinery](https://github.com/kubernetes/community/tree/master/sig-api-machinery). -{{% /capture %}} +{{% /capture %}} \ No newline at end of file diff --git a/content/en/docs/concepts/extend-kubernetes/operator.md b/content/en/docs/concepts/extend-kubernetes/operator.md index f77d83a553..eb56d5475a 100644 --- a/content/en/docs/concepts/extend-kubernetes/operator.md +++ b/content/en/docs/concepts/extend-kubernetes/operator.md @@ -106,7 +106,7 @@ as well as keeping the existing service in good shape. ## Writing your own Operator {#writing-operator} If there isn't an Operator in the ecosystem that implements the behavior you -want, you can code your own. In [What's next](#what-s-next) you'll find a few +want, you can code your own. In [What's next](#whats-next) you'll find a few links to libraries and tools you can use to write your own cloud native Operator. @@ -129,4 +129,4 @@ that can act as a [client for the Kubernetes API](/docs/reference/using-api/clie * Read [CoreOS' original article](https://coreos.com/blog/introducing-operators.html) that introduced the Operator pattern * Read an [article](https://cloud.google.com/blog/products/containers-kubernetes/best-practices-for-building-kubernetes-operators-and-stateful-apps) from Google Cloud about best practices for building Operators -{{% /capture %}} +{{% /capture %}} \ No newline at end of file diff --git a/content/en/docs/concepts/scheduling-eviction/scheduling-framework.md b/content/en/docs/concepts/scheduling-eviction/scheduling-framework.md index 0d4c633391..d1123b72e1 100644 --- a/content/en/docs/concepts/scheduling-eviction/scheduling-framework.md +++ b/content/en/docs/concepts/scheduling-eviction/scheduling-framework.md @@ -157,13 +157,13 @@ the three things: 1. **wait** (with a timeout) \ If a Permit plugin returns "wait", then the Pod is kept in an internal "waiting" Pods list, and the binding cycle of this Pod starts but directly blocks until it - gets [approved](#frameworkhandle). If a timeout occurs, **wait** becomes **deny** + gets approved. If a timeout occurs, **wait** becomes **deny** and the Pod is returned to the scheduling queue, triggering [Unreserve](#unreserve) plugins. {{< note >}} While any plugin can access the list of "waiting" Pods and approve them -(see [`FrameworkHandle`](#frameworkhandle)), we expect only the permit +(see [`FrameworkHandle`](https://github.com/kubernetes/enhancements/blob/master/keps/sig-scheduling/20180409-scheduling-framework.md#frameworkhandle)), we expect only the permit plugins to approve binding of reserved Pods that are in "waiting" state. Once a Pod is approved, it is sent to the [PreBind](#pre-bind) phase. {{< /note >}} @@ -239,4 +239,4 @@ If you are using Kubernetes v1.18 or later, you can configure a set of plugins a a scheduler profile and then define multiple profiles to fit various kinds of workload. Learn more at [multiple profiles](/docs/reference/scheduling/profiles/#multiple-profiles). -{{% /capture %}} +{{% /capture %}} \ No newline at end of file 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 ba77587457..b479d8c96a 100644 --- a/content/en/docs/concepts/services-networking/dns-pod-service.md +++ b/content/en/docs/concepts/services-networking/dns-pod-service.md @@ -171,7 +171,7 @@ following pod-specific DNS policies. These policies are specified in the - "`None`": It allows a Pod to ignore DNS settings from the Kubernetes environment. All DNS settings are supposed to be provided using the `dnsConfig` field in the Pod Spec. - See [Pod's DNS config](#pod-s-dns-config) subsection below. + See [Pod's DNS config](#pod-dns-config) subsection below. {{< note >}} "Default" is not the default DNS policy. If `dnsPolicy` is not @@ -201,7 +201,7 @@ spec: dnsPolicy: ClusterFirstWithHostNet ``` -### Pod's DNS Config +### Pod's DNS Config {#pod-dns-config} Pod's DNS Config allows users more control on the DNS settings for a Pod. @@ -269,6 +269,4 @@ The availability of Pod DNS Config and DNS Policy "`None`"" is shown as below. For guidance on administering DNS configurations, check [Configure DNS Service](/docs/tasks/administer-cluster/dns-custom-nameservers/) -{{% /capture %}} - - +{{% /capture %}} \ No newline at end of file diff --git a/content/en/docs/concepts/storage/persistent-volumes.md b/content/en/docs/concepts/storage/persistent-volumes.md index 4b22929177..c365e02171 100644 --- a/content/en/docs/concepts/storage/persistent-volumes.md +++ b/content/en/docs/concepts/storage/persistent-volumes.md @@ -736,9 +736,9 @@ and need persistent storage, it is recommended that you use the following patter `persistentVolumeClaim.storageClassName` field. This will cause the PVC to match the right storage class if the cluster has StorageClasses enabled by the admin. - - If the user does not provide a storage class name, leave the - `persistentVolumeClaim.storageClassName` field as nil. This will cause a - PV to be automatically provisioned for the user with the default StorageClass + - If the user does not provide a storage class name, leave the + `persistentVolumeClaim.storageClassName` field as nil. This will cause a + PV to be automatically provisioned for the user with the default StorageClass in the cluster. Many cluster environments have a default StorageClass installed, or administrators can create their own default StorageClass. - In your tooling, watch for PVCs that are not getting bound after some time @@ -759,4 +759,4 @@ and need persistent storage, it is recommended that you use the following patter * [PersistentVolumeSpec](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#persistentvolumespec-v1-core) * [PersistentVolumeClaim](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#persistentvolumeclaim-v1-core) * [PersistentVolumeClaimSpec](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#persistentvolumeclaimspec-v1-core) -{{% /capture %}} +{{% /capture %}} \ No newline at end of file diff --git a/content/en/docs/concepts/workloads/pods/init-containers.md b/content/en/docs/concepts/workloads/pods/init-containers.md index 8565f49bb3..eaf48a95a6 100644 --- a/content/en/docs/concepts/workloads/pods/init-containers.md +++ b/content/en/docs/concepts/workloads/pods/init-containers.md @@ -241,7 +241,7 @@ myapp-pod 1/1 Running 0 9m ``` This simple example should provide some inspiration for you to create your own -init containers. [What's next](#what-s-next) contains a link to a more detailed example. +init containers. [What's next](#whats-next) contains a link to a more detailed example. ## Detailed behavior @@ -325,4 +325,4 @@ reasons: * Read about [creating a Pod that has an init container](/docs/tasks/configure-pod-container/configure-pod-initialization/#creating-a-pod-that-has-an-init-container) * Learn how to [debug init containers](/docs/tasks/debug-application-cluster/debug-init-containers/) -{{% /capture %}} +{{% /capture %}} \ No newline at end of file diff --git a/content/en/docs/contribute/review/for-approvers.md b/content/en/docs/contribute/review/for-approvers.md index f2be84f10d..dccc6cfe38 100644 --- a/content/en/docs/contribute/review/for-approvers.md +++ b/content/en/docs/contribute/review/for-approvers.md @@ -73,8 +73,7 @@ true: [Prow](https://github.com/kubernetes/test-infra/blob/master/prow/README.md) is the Kubernetes-based CI/CD system that runs jobs against pull requests (PRs). Prow enables chatbot-style commands to handle GitHub actions across the Kubernetes -organization, like [adding and removing -labels](#add-and-remove-labels), closing issues, and assigning an approver. Enter Prow commands as GitHub comments using the `/` format. +organization, like [adding and removing labels](#adding-and-removing-issue-labels), closing issues, and assigning an approver. Enter Prow commands as GitHub comments using the `/` format. The most common prow commands reviewers and approvers use are: diff --git a/content/en/docs/setup/production-environment/tools/kubeadm/install-kubeadm.md b/content/en/docs/setup/production-environment/tools/kubeadm/install-kubeadm.md index c7ddf65501..9438e86140 100644 --- a/content/en/docs/setup/production-environment/tools/kubeadm/install-kubeadm.md +++ b/content/en/docs/setup/production-environment/tools/kubeadm/install-kubeadm.md @@ -28,7 +28,7 @@ For information how to create a cluster with kubeadm once you have performed thi * 2 GB or more of RAM per machine (any less will leave little room for your apps) * 2 CPUs or more * Full network connectivity between all machines in the cluster (public or private network is fine) -* Unique hostname, MAC address, and product_uuid for every node. See [here](#verify-the-mac-address-and-product-uuid-are-unique-for-every-node) for more details. +* Unique hostname, MAC address, and product_uuid for every node. See [here](#verify-mac-address) for more details. * Certain ports are open on your machines. See [here](#check-required-ports) for more details. * Swap disabled. You **MUST** disable swap in order for the kubelet to work properly. @@ -36,7 +36,7 @@ For information how to create a cluster with kubeadm once you have performed thi {{% capture steps %}} -## Verify the MAC address and product_uuid are unique for every node +## Verify the MAC address and product_uuid are unique for every node {#verify-mac-address} * You can get the MAC address of the network interfaces using the command `ip link` or `ifconfig -a` * The product_uuid can be checked by using the command `sudo cat /sys/class/dmi/id/product_uuid` @@ -305,4 +305,4 @@ If you are running into difficulties with kubeadm, please consult our [troublesh * [Using kubeadm to Create a Cluster](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/) -{{% /capture %}} +{{% /capture %}} \ No newline at end of file diff --git a/content/en/docs/setup/production-environment/tools/kubespray.md b/content/en/docs/setup/production-environment/tools/kubespray.md index 996f588dc7..ae323d38cf 100644 --- a/content/en/docs/setup/production-environment/tools/kubespray.md +++ b/content/en/docs/setup/production-environment/tools/kubespray.md @@ -21,7 +21,7 @@ Kubespray is a composition of [Ansible](http://docs.ansible.com/) playbooks, [in * openSUSE Leap 15 * continuous integration tests -To choose a tool which best fits your use case, read [this comparison](https://github.com/kubernetes-sigs/kubespray/blob/master/docs/comparisons.md) to [kubeadm](/docs/admin/kubeadm/) and [kops](../kops). +To choose a tool which best fits your use case, read [this comparison](https://github.com/kubernetes-sigs/kubespray/blob/master/docs/comparisons.md) to [kubeadm](/docs/admin/kubeadm/) and [kops](/docs/setup/production-environment/tools/kops/). {{% /capture %}} @@ -119,4 +119,4 @@ When running the reset playbook, be sure not to accidentally target your product Check out planned work on Kubespray's [roadmap](https://github.com/kubernetes-sigs/kubespray/blob/master/docs/roadmap.md). -{{% /capture %}} +{{% /capture %}} \ No newline at end of file diff --git a/content/en/docs/tasks/access-application-cluster/access-cluster.md b/content/en/docs/tasks/access-application-cluster/access-cluster.md index bd0de435e4..05835f2b08 100644 --- a/content/en/docs/tasks/access-application-cluster/access-cluster.md +++ b/content/en/docs/tasks/access-application-cluster/access-cluster.md @@ -277,7 +277,7 @@ This shows the proxy-verb URL for accessing each service. For example, this cluster has cluster-level logging enabled (using Elasticsearch), which can be reached at `https://104.197.5.247/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy/` if suitable credentials are passed. Logging can also be reached through a kubectl proxy, for example at: `http://localhost:8080/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy/`. -(See [above](#accessing-the-cluster-api) for how to pass credentials or use kubectl proxy.) +(See [Access Clusters Using the Kubernetes API](/docs/tasks/administer-cluster/access-cluster-api/) for how to pass credentials or use kubectl proxy.) #### Manually constructing apiserver proxy URLs @@ -376,4 +376,4 @@ There are several different proxies you may encounter when using Kubernetes: Kubernetes users will typically not need to worry about anything other than the first two types. The cluster admin will typically ensure that the latter types are setup correctly. -{{% /capture %}} +{{% /capture %}} \ No newline at end of file diff --git a/content/en/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions.md b/content/en/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions.md index ddcf7d4875..91235312d2 100644 --- a/content/en/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions.md +++ b/content/en/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions.md @@ -362,7 +362,7 @@ Structural schemas are a requirement for `apiextensions.k8s.io/v1`, and disables * [Webhook Conversion](/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definition-versioning/#webhook-conversion) * [Pruning](#preserving-unknown-fields) -### Pruning versus preserving unknown fields +### Pruning versus preserving unknown fields {#preserving-unknown-fields} {{< feature-state state="stable" for_k8s_version="v1.16" >}} @@ -1431,4 +1431,4 @@ crontabs/my-new-cron-object 3s * Serve [multiple versions](/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definition-versioning/) of a CustomResourceDefinition. -{{% /capture %}} +{{% /capture %}} \ No newline at end of file diff --git a/content/en/docs/tasks/administer-cluster/reconfigure-kubelet.md b/content/en/docs/tasks/administer-cluster/reconfigure-kubelet.md index 83bb8f3379..af5696d622 100644 --- a/content/en/docs/tasks/administer-cluster/reconfigure-kubelet.md +++ b/content/en/docs/tasks/administer-cluster/reconfigure-kubelet.md @@ -70,10 +70,10 @@ and is overridden by command-line flags. Unspecified values in the new configura will receive default values appropriate to the configuration version (e.g. `kubelet.config.k8s.io/v1beta1`), unless overridden by flags. -The status of the Node's kubelet configuration is reported via +The status of the Node's kubelet configuration is reported via `Node.Spec.Status.Config`. Once you have updated a Node to use the new ConfigMap, you can observe this status to confirm that the Node is using the -intended configuration. +intended configuration. This document describes editing Nodes using `kubectl edit`. There are other ways to modify a Node's spec, including `kubectl patch`, for @@ -136,7 +136,7 @@ adapt the steps if you prefer to extract the `kubeletconfig` subobject manually. 1. Choose a Node to reconfigure. In this example, the name of this Node is referred to as `NODE_NAME`. -2. Start the kubectl proxy in the background using the following command: +2. Start the kubectl proxy in the background using the following command: ```bash kubectl proxy --port=8001 & @@ -236,8 +236,8 @@ Retrieve the Node using the `kubectl get node ${NODE_NAME} -o yaml` command and The`lastKnownGood` configuration might not be present if it is set to its default value, the local config deployed with the node. The status will update `lastKnownGood` to -match a valid `assigned` config after the kubelet becomes comfortable with the config. -The details of how the kubelet determines a config should become the `lastKnownGood` are +match a valid `assigned` config after the kubelet becomes comfortable with the config. +The details of how the kubelet determines a config should become the `lastKnownGood` are not guaranteed by the API, but is currently implemented as a 10-minute grace period. You can use the following command (using `jq`) to filter down @@ -287,7 +287,7 @@ by eye). If an error occurs, the kubelet reports it in the `Node.Status.Config.Error` structure. Possible errors are listed in -[Understanding Node.Status.Config.Error messages](#understanding-node-status-config-error-messages). +[Understanding Node.Status.Config.Error messages](#understanding-node-config-status-errors). You can search for the identical text in the kubelet log for additional details and context about the error. @@ -355,7 +355,7 @@ metadata and checkpoints. The structure of the kubelet's checkpointing directory | - ... ``` -## Understanding Node.Status.Config.Error messages +## Understanding Node.Status.Config.Error messages {#understanding-node-config-status-errors} The following table describes error messages that can occur when using Dynamic Kubelet Config. You can search for the identical text @@ -379,4 +379,4 @@ internal failure, see Kubelet log for details | The kubelet encountered some int - For more information on configuring the kubelet via a configuration file, see [Set kubelet parameters via a config file](/docs/tasks/administer-cluster/kubelet-config-file). - See the reference documentation for [`NodeConfigSource`](https://kubernetes.io/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#nodeconfigsource-v1-core) -{{% /capture %}} +{{% /capture %}} \ No newline at end of file diff --git a/content/en/docs/tasks/administer-cluster/reserve-compute-resources.md b/content/en/docs/tasks/administer-cluster/reserve-compute-resources.md index e82b55583b..c78c9edb42 100644 --- a/content/en/docs/tasks/administer-cluster/reserve-compute-resources.md +++ b/content/en/docs/tasks/administer-cluster/reserve-compute-resources.md @@ -173,7 +173,7 @@ For example: in Centos, you can do this using the tuned toolset. Memory pressure at the node level leads to System OOMs which affects the entire node and all pods running on it. Nodes can go offline temporarily until memory has been reclaimed. To avoid (or reduce the probability of) system OOMs kubelet -provides [`Out of Resource`](./out-of-resource.md) management. Evictions are +provides [`Out of Resource`](/docs/tasks/administer-cluster/out-of-resource/) management. Evictions are supported for `memory` and `ephemeral-storage` only. By reserving some memory via `--eviction-hard` flag, the `kubelet` attempts to `evict` pods whenever memory availability on the node drops below the reserved value. Hypothetically, if @@ -190,7 +190,7 @@ The scheduler treats `Allocatable` as the available `capacity` for pods. `kubelet` enforce `Allocatable` across pods by default. Enforcement is performed by evicting pods whenever the overall usage across all pods exceeds `Allocatable`. More details on eviction policy can be found -[here](./out-of-resource.md#eviction-policy). This enforcement is controlled by +[here](/docs/tasks/administer-cluster/out-of-resource/#eviction-policy). This enforcement is controlled by specifying `pods` value to the kubelet flag `--enforce-node-allocatable`. @@ -251,4 +251,4 @@ If `kube-reserved` and/or `system-reserved` is not enforced and system daemons exceed their reservation, `kubelet` evicts pods whenever the overall node memory usage is higher than `31.5Gi` or `storage` is greater than `90Gi` -{{% /capture %}} +{{% /capture %}} \ No newline at end of file diff --git a/content/en/docs/tasks/example-task-template.md b/content/en/docs/tasks/example-task-template.md index 256a5638e1..c723460fc0 100644 --- a/content/en/docs/tasks/example-task-template.md +++ b/content/en/docs/tasks/example-task-template.md @@ -9,7 +9,7 @@ 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. +Be sure to also [create an entry in the table of contents](/docs/contribute/style/write-new-topic/#placing-your-topic-in-the-table-of-contents) for your new document. {{< /note >}} This page shows how to ... @@ -29,7 +29,7 @@ This page shows how to ... ## Doing ... 1. Do this. -1. Do this next. Possibly read this [related explanation](...). +1. Do this next. Possibly read this [related explanation](#). {{% /capture %}} @@ -49,6 +49,4 @@ Here's an interesting thing to know about the steps you just did. * Learn more about [Writing a New Topic](/docs/home/contribute/write-new-topic/). * See [Using Page Templates - Task template](/docs/home/contribute/page-templates/#task_template) for how to use this template. -{{% /capture %}} - - +{{% /capture %}} \ No newline at end of file diff --git a/content/en/docs/tutorials/stateless-application/guestbook-logs-metrics-with-elk.md b/content/en/docs/tutorials/stateless-application/guestbook-logs-metrics-with-elk.md index ced3ba7ebc..bc991098d5 100644 --- a/content/en/docs/tutorials/stateless-application/guestbook-logs-metrics-with-elk.md +++ b/content/en/docs/tutorials/stateless-application/guestbook-logs-metrics-with-elk.md @@ -11,9 +11,9 @@ card: --- {{% capture overview %}} -This tutorial builds upon the [PHP Guestbook with Redis](../guestbook) tutorial. Lightweight log, metric, and network data open source shippers, or *Beats*, from Elastic are deployed in the same Kubernetes cluster as the guestbook. The Beats collect, parse, and index the data into Elasticsearch so that you can view and analyze the resulting operational information in Kibana. This example consists of the following components: +This tutorial builds upon the [PHP Guestbook with Redis](/docs/tutorials/stateless-application/guestbook) tutorial. Lightweight log, metric, and network data open source shippers, or *Beats*, from Elastic are deployed in the same Kubernetes cluster as the guestbook. The Beats collect, parse, and index the data into Elasticsearch so that you can view and analyze the resulting operational information in Kibana. This example consists of the following components: -* A running instance of the [PHP Guestbook with Redis tutorial](../guestbook) +* A running instance of the [PHP Guestbook with Redis tutorial](/docs/tutorials/stateless-application/guestbook) * Elasticsearch and Kibana * Filebeat * Metricbeat @@ -36,16 +36,16 @@ This tutorial builds upon the [PHP Guestbook with Redis](../guestbook) tutorial. Additionally you need: -* A running deployment of the [PHP Guestbook with Redis](../guestbook) tutorial. +* A running deployment of the [PHP Guestbook with Redis](/docs/tutorials/stateless-application/guestbook) tutorial. -* A running Elasticsearch and Kibana deployment. You can use [Elasticsearch Service in Elastic Cloud](https://cloud.elastic.co), run the [download files](https://www.elastic.co/guide/en/elastic-stack-get-started/current/get-started-elastic-stack.html) on your workstation or servers, or the [Elastic Helm Charts](https://github.com/elastic/helm-charts). +* A running Elasticsearch and Kibana deployment. You can use [Elasticsearch Service in Elastic Cloud](https://cloud.elastic.co), run the [download files](https://www.elastic.co/guide/en/elastic-stack-get-started/current/get-started-elastic-stack.html) on your workstation or servers, or the [Elastic Helm Charts](https://github.com/elastic/helm-charts). {{% /capture %}} {{% capture lessoncontent %}} ## Start up the PHP Guestbook with Redis -This tutorial builds on the [PHP Guestbook with Redis](../guestbook) tutorial. If you have the guestbook application running, then you can monitor that. If you do not have it running then follow the instructions to deploy the guestbook and do not perform the **Cleanup** steps. Come back to this page when you have the guestbook running. +This tutorial builds on the [PHP Guestbook with Redis](/docs/tutorials/stateless-application/guestbook) tutorial. If you have the guestbook application running, then you can monitor that. If you do not have it running then follow the instructions to deploy the guestbook and do not perform the **Cleanup** steps. Come back to this page when you have the guestbook running. ## Add a Cluster role binding Create a [cluster level role binding](/docs/reference/access-authn-authz/rbac/#rolebinding-and-clusterrolebinding) so that you can deploy kube-state-metrics and the Beats at the cluster level (in kube-system). @@ -403,4 +403,4 @@ Deleting the Deployments and Services also deletes any running Pods. Use labels * Read more about [logging architecture](/docs/concepts/cluster-administration/logging/) * Read more about [application introspection and debugging](/docs/tasks/debug-application-cluster/) * Read more about [troubleshoot applications](/docs/tasks/debug-application-cluster/resource-usage-monitoring/) -{{% /capture %}} +{{% /capture %}} \ No newline at end of file From 30af6f807e40d9eeea93e6b25a10e32a7680e4bc Mon Sep 17 00:00:00 2001 From: cristiano-degiorgis Date: Wed, 13 May 2020 00:14:08 +0200 Subject: [PATCH 33/66] adding _index.md for docs/concepts/overview/ --- content/it/docs/concepts/overview/_index.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100755 content/it/docs/concepts/overview/_index.md diff --git a/content/it/docs/concepts/overview/_index.md b/content/it/docs/concepts/overview/_index.md new file mode 100755 index 0000000000..ec86980c4b --- /dev/null +++ b/content/it/docs/concepts/overview/_index.md @@ -0,0 +1,4 @@ +--- +title: "Overview" +weight: 20 +--- \ No newline at end of file From 78ee63f6201071afa29a66a56ee162098e1ab3a8 Mon Sep 17 00:00:00 2001 From: zacharysarah Date: Tue, 12 May 2020 17:01:38 -0700 Subject: [PATCH 34/66] Remove table shortcode --- .../cluster-administration/flow-control.md | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/content/en/docs/concepts/cluster-administration/flow-control.md b/content/en/docs/concepts/cluster-administration/flow-control.md index 6540a05e8f..219573a08a 100644 --- a/content/en/docs/concepts/cluster-administration/flow-control.md +++ b/content/en/docs/concepts/cluster-administration/flow-control.md @@ -233,20 +233,21 @@ given mouse (low-intensity flow) is squished by the elephants (high-intensity fl an illustrative collection of numbers of elephants. See https://play.golang.org/p/Gi0PLgVHiUg , which computes this table. -{{< table caption="Example Shuffle Sharding Configurations" >}} -|HandSize| Queues| 1 elephant| 4 elephants| 16 elephants| -|--------|-----------|------------|----------------|--------------------| -| 12| 32| 4.428838398950118e-09| 0.11431348830099144| 0.9935089607656024| -| 10| 32| 1.550093439632541e-08| 0.0626479840223545| 0.9753101519027554| -| 10| 64| 6.601827268370426e-12| 0.00045571320990370776| 0.49999929150089345| -| 9| 64| 3.6310049976037345e-11| 0.00045501212304112273| 0.4282314876454858| -| 8| 64| 2.25929199850899e-10| 0.0004886697053040446| 0.35935114681123076| -| 8| 128| 6.994461389026097e-13| 3.4055790161620863e-06| 0.02746173137155063| -| 7| 128| 1.0579122850901972e-11| 6.960839379258192e-06| 0.02406157386340147| -| 7| 256| 7.597695465552631e-14| 6.728547142019406e-08| 0.0006709661542533682| -| 6| 256| 2.7134626662687968e-12| 2.9516464018476436e-07| 0.0008895654642000348| -| 6| 512| 4.116062922897309e-14| 4.982983350480894e-09| 2.26025764343413e-05| -| 6| 1024| 6.337324016514285e-16| 8.09060164312957e-11| 4.517408062903668e-07| +{{< table caption = "Example Shuffle Sharding Configurations" >}} +HandSize | Queues | 1 elephant | 4 elephants | 16 elephants +|----------|-----------|------------|----------------|--------------------| +| 12 | 32 | 4.428838398950118e-09 | 0.11431348830099144 | 0.9935089607656024 | +| 10 | 32 | 1.550093439632541e-08 | 0.0626479840223545 | 0.9753101519027554 | +| 10 | 64 | 6.601827268370426e-12 | 0.00045571320990370776 | 0.49999929150089345 | +| 9 | 64 | 3.6310049976037345e-11 | 0.00045501212304112273 | 0.4282314876454858 | +| 8 | 64 | 2.25929199850899e-10 | 0.0004886697053040446 | 0.35935114681123076 | +| 8 | 128 | 6.994461389026097e-13 | 3.4055790161620863e-06 | 0.02746173137155063 | +| 7 | 128 | 1.0579122850901972e-11 | 6.960839379258192e-06 | 0.02406157386340147 | +| 7 | 256 | 7.597695465552631e-14 | 6.728547142019406e-08 | 0.0006709661542533682 | +| 6 | 256 | 2.7134626662687968e-12 | 2.9516464018476436e-07 | 0.0008895654642000348 | +| 6 | 512 | 4.116062922897309e-14 | 4.982983350480894e-09 | 2.26025764343413e-05 | +| 6 | 1024 | 6.337324016514285e-16 | 8.09060164312957e-11 | 4.517408062903668e-07 | +{{< /table >}} ### FlowSchema From 32fdc5c8237d7b56c66e02fe378e468041d1fc0d Mon Sep 17 00:00:00 2001 From: Alan Date: Wed, 13 May 2020 08:47:50 +0800 Subject: [PATCH 35/66] fix some word format of cluster-administration-overview.md fix some word format of cluster-administration-overview.md fix some word format of cluster-administration-overview.md --- .../cluster-administration/cluster-administration-overview.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/zh/docs/concepts/cluster-administration/cluster-administration-overview.md b/content/zh/docs/concepts/cluster-administration/cluster-administration-overview.md index 020581f4d1..f8d6d2e568 100644 --- a/content/zh/docs/concepts/cluster-administration/cluster-administration-overview.md +++ b/content/zh/docs/concepts/cluster-administration/cluster-administration-overview.md @@ -47,9 +47,9 @@ Before choosing a guide, here are some considerations: - 你是打算在你的电脑上尝试 Kubernetes,还是要构建一个高可用的多节点集群?请选择最适合你需求的发行版。 - **如果你正在设计一个高可用集群**,请了解[在多个 zones 中配置集群](/docs/concepts/cluster-administration/federation/)。 - 您正在使用 类似 [Google Kubernetes Engine](https://cloud.google.com/kubernetes-engine/) 这样的**被托管的Kubernetes集群**, 还是**管理您自己的集群**? - - 你的集群是在**本地**还是**云(IaaS)**上? Kubernetes 不能直接支持混合集群。作为代替,你可以建立多个集群。 + - 你的集群是在**本地**还是 **云(IaaS)** 上? Kubernetes 不能直接支持混合集群。作为代替,你可以建立多个集群。 - **如果你在本地配置 Kubernetes**,需要考虑哪种[网络模型](/docs/concepts/cluster-administration/networking/)最适合。 - - 你的 Kubernetes 在 **裸金属硬件** 还是 **虚拟机(VMs)**上运行? + - 你的 Kubernetes 在 **裸金属硬件** 还是 **虚拟机(VMs)** 上运行? - 你**只想运行一个集群**,还是打算**活动开发 Kubernetes 项目代码**?如果是后者,请选择一个活动开发的发行版。某些发行版只提供二进制发布版,但提供更多的选择。 - 让你自己熟悉运行一个集群所需的[组件](/docs/admin/cluster-components) 。 From adaf41035e8a5437758bfd02aeec06f19f57352c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B4=AA=E5=B7=9E?= Date: Wed, 13 May 2020 11:21:31 +0800 Subject: [PATCH 36/66] update zh-trans docs. --- .../access-authn-authz/extensible-admission-controllers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/docs/reference/access-authn-authz/extensible-admission-controllers.md b/content/zh/docs/reference/access-authn-authz/extensible-admission-controllers.md index 53a08310dd..9f0df8dd7a 100644 --- a/content/zh/docs/reference/access-authn-authz/extensible-admission-controllers.md +++ b/content/zh/docs/reference/access-authn-authz/extensible-admission-controllers.md @@ -2018,7 +2018,7 @@ In the cases above, the webhook can be safely reinvoked, or admit an object that 2. 对于 `CREATE` Pod 请求,如果未设置容器的字段 `.spec.containers[].resources.limits`,设置默认资源限制值。 -3. 对于 `CREATE` pod 请求,盲目地添加一个名为 `foo-sidecar` 的 sidecar 容器,而未查看 Pod 中是否已经有 `foo-sidecar` 容器。 +3. 对于 `CREATE` pod 请求,如果 Pod 中不存在名为 `foo-sidecar` 的 sidecar 容器,向 Pod 注入一个 `foo-sidecar` 容器。 在上述情况下,可以安全地重新调用 Webhook,或接受已经设置了字段的对象。 From 01adc8cf1fc6ac9e421ea5d2b7530261eed5aed0 Mon Sep 17 00:00:00 2001 From: tranquanghuy0801 Date: Wed, 13 May 2020 22:31:54 +1000 Subject: [PATCH 37/66] Update suggested translation errors - Explore Your App --- .../explore/explore-intro.html | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/content/vi/docs/tutorials/kubernetes-basics/explore/explore-intro.html b/content/vi/docs/tutorials/kubernetes-basics/explore/explore-intro.html index 1e7dc0c356..fbde8b0797 100644 --- a/content/vi/docs/tutorials/kubernetes-basics/explore/explore-intro.html +++ b/content/vi/docs/tutorials/kubernetes-basics/explore/explore-intro.html @@ -21,8 +21,8 @@ weight: 10

Mục tiêu

    -
  • Tìm hiểu Kubernetes Pods là gì ?
  • -
  • Tìm hiểu Kubernetes Nodes là gì ?
  • +
  • Tìm hiểu Kubernetes Pods là gì?
  • +
  • Tìm hiểu Kubernetes Nodes là gì?
  • Khắc phục sự cố ứng dụng đã triển khai
@@ -31,13 +31,13 @@ weight: 10

Kubernetes Pods

Khi bạn triển khai ứng dụng thông qua Module 2, Kubernetes tạo ra Pod để lưu trữ phiên bản chạy của ứng dụng của bạn. Một Pod là một khái niệm trừu tượng của Kubernetes, đại diện cho một nhóm gồm một hoặc nhiều ứng dụng containers (ví dụ như Docker hoặc rkt) và một số tài nguyên được chia sẻ cho các containers đó. Những tài nguyên đó bao gồm:

    -
  • Lưu trữ được chia sẻ, dưới dạng Tập (Volumes)
  • -
  • Kết nối mạng, như một cụm địa chỉ IP duy nhất
  • -
  • Thông tin về cách chạy từng container, chẳng hạn như phiên bản hình ảnh container hoặc các cổng cụ thể để sử dụng
  • +
  • Lưu trữ được chia sẻ, dưới dạng Volumes
  • +
  • Kết nối mạng, như một cluster IP duy nhất
  • +
  • Thông tin về cách chạy từng container, chẳng hạn như phiên bản container image hoặc các ports cụ thể để sử dụng
-

Một Pod mô phỏng một "máy chủ logic" dành riêng cho ứng dụng và có thể chứa các ứng dụng containers khác nhau được liên kết tương đối chặt chẽ. Ví dụ, một Pod có thể bao gồm cả container với ứng dụng Node.js của bạn cũng như một container khác cung cấp dữ liệu hiển thị bởi webserver của Nodejs. Các containers trong một Pod chia sẻ một địa chỉ IP và không gian cổng, chúng luôn được đặt cùng vị trí, cùng lên lịch trình, và chạy trong ngữ cảnh được chia sẻ trên cùng một Node.

+

Một Pod mô phỏng một "máy chủ logic" dành riêng cho ứng dụng và có thể chứa các ứng dụng containers khác nhau được liên kết tương đối chặt chẽ. Ví dụ, một Pod có thể bao gồm cả container với ứng dụng Node.js của bạn cũng như một container khác cung cấp dữ liệu hiển thị bởi webserver của Node.js. Các containers trong một Pod chia sẻ một địa chỉ IP và port space, chúng luôn được đặt cùng vị trí, cùng lên lịch trình, và chạy trong ngữ cảnh được chia sẻ trên cùng một Node.

-

Pods là các đơn vị nguyên tử trên nền tảng Kubernetes. Khi chúng tôi tạo một kịch bản triển khai (Deployment) trên Kubernetes, kịch bản triển khai đó tạo ra các Pods với các containers bên trong chúng (trái ngược với việc tạo các containers trực tiếp). Mỗi Pod được gắn với Node nơi nó được lên lịch trình, và tiếp tục ở đó cho đến khi chấm dứt (theo chính sách khởi động lại). Trong trường hợp có lỗi ở Node, các Pods giống nhau được lên lịch trình trên các Nodes có sẵn khác trong cụm.

+

Pods là các đơn vị nguyên tử trên nền tảng Kubernetes. Khi chúng tôi tạo một kịch bản triển khai (Deployment) trên Kubernetes, kịch bản triển khai đó tạo ra các Pods với các containers bên trong chúng (trái ngược với việc tạo các containers trực tiếp). Mỗi Pod được gắn với Node nơi nó được lên lịch trình, và tiếp tục ở đó cho đến khi chấm dứt (theo chính sách khởi động lại). Trong trường hợp có lỗi ở Node, các Pods giống nhau được lên lịch trình trên các Nodes có sẵn khác trong cluster.

@@ -74,18 +74,18 @@ weight: 10

Nodes

-

Một Pod luôn chạy trên một Node. Một Node là một máy worker trong Kubernetes và có thể là máy ảo hoặc máy vật lý, tuỳ thuộc vào cụm. Mỗi Node được quản lí bởi Master. Một Node có thể chứa nhiều Pods và Kubernetes master tự động xử lí việc lên lịch trình các Pods thuộc các Nodes ở trong cụm. Việc lên lịch trình tự động của Master sẽ tính đến các tài nguyên có sẵn trên mỗi Node.

+

Một Pod luôn chạy trên một Node. Một Node là một máy worker trong Kubernetes và có thể là máy ảo hoặc máy vật lý, tuỳ thuộc vào cluster. Mỗi Node được quản lí bởi Master. Một Node có thể chứa nhiều Pods và Kubernetes master tự động xử lí việc lên lịch trình các Pods thuộc các Nodes ở trong cluster. Việc lên lịch trình tự động của Master sẽ tính đến các tài nguyên có sẵn trên mỗi Node.

Mỗi Node ở Kubernetes chạy ít nhất:

  • Kubelet, một quy trình chịu trách nhiệm liên lạc giữa Kubernetes Master và Node; quản lí các Pods và các containers đang chạy trên cùng một máy.
  • -
  • Một container runtime (như Docker, rkt) chịu trách nhiệm lấy hình ảnh container từ một nơi đăng kí (registry), giải nén container và chạy ứng dụng. Các containers chỉ nên được lên lịch trình cùng nhau trong một Pod duy nhất nếu chúng được liên kết chặt chẽ.
  • +
  • Một container runtime (như Docker, rkt) chịu trách nhiệm lấy container image từ registry, giải nén container và chạy ứng dụng. Các containers chỉ nên được lên lịch trình cùng nhau trong một Pod duy nhất nếu chúng được liên kết chặt chẽ.
-

Các containers chỉ nên được lên lịch trình cùng nhau trong một Pod duy nhất nếu chúng được liên kết chặt chẽ và cần chia sẻ tài nguyên nhữ đĩa.

+

Các containers chỉ nên được lên lịch trình cùng nhau trong một Pod duy nhất nếu chúng được liên kết chặt chẽ và cần chia sẻ tài nguyên như disk.

@@ -113,17 +113,17 @@ weight: 10
  • kubectl get - liệt kê các tài nguyên
  • kubectl describe - hiển thị thông tin chi tiết về một tài nguyên
  • kubectl logs - in các bản ghi (logs) từ một container trong một pod
  • -
  • kubectl exec - thực hiện một lệnh trên một container trong một nhóm
  • +
  • kubectl exec - thực hiện một lệnh trên một container trong một pod
  • Bạn có thể sử dụng các lệnh này để xem khi nào các ứng dụng được triển khai, trạng thái hiện tại của chúng là gì, nơi chúng đang chạy và cấu hình của chúng là gì.

    -

    Bây giờ chúng ta đã biết thêm về các thành phần cụm và dòng lệnh, hãy khám phá ứng dụng của chúng tôi.

    +

    Bây giờ chúng ta đã biết thêm về các thành phần cluster và dòng lệnh, hãy khám phá ứng dụng của chúng tôi.

    -

    Một Node là một máy worker trong Kubernetes và có thể là máy ảo hoặc máy vật lý, tuỳ thuộc vào cụm. Nhiều Pods có thể chạy trên cùng một Node.

    +

    Một Node là một máy worker trong Kubernetes và có thể là máy ảo hoặc máy vật lý, tuỳ thuộc vào cluster. Nhiều Pods có thể chạy trên cùng một Node.

    From 86b30fc72114280b898ca31d57e739cf19ff07d9 Mon Sep 17 00:00:00 2001 From: Aris Cahyadi Risdianto Date: Mon, 20 Apr 2020 23:46:57 +0800 Subject: [PATCH 38/66] Add new file for ID localization. ID Localization for Flow Control (API Priority and Fairness). Fixed the broken deploy. Fixed the broken deploy #2. Fixed wording/terminology consistency. Fixed the word consistency. --- .../cluster-administration/flow-control.md | 374 ++++++++++++++++++ 1 file changed, 374 insertions(+) create mode 100644 content/id/docs/concepts/cluster-administration/flow-control.md diff --git a/content/id/docs/concepts/cluster-administration/flow-control.md b/content/id/docs/concepts/cluster-administration/flow-control.md new file mode 100644 index 0000000000..e95bb84d82 --- /dev/null +++ b/content/id/docs/concepts/cluster-administration/flow-control.md @@ -0,0 +1,374 @@ +--- +title: Prioritas dan Kesetaraan API (API Priority and Fairness) +content_template: templates/concept +min-kubernetes-server-version: v1.18 +--- + +{{% capture overview %}} + +{{< feature-state state="alpha" for_k8s_version="v1.18" >}} + +Mengontrol perilaku server API dari Kubernetes pada situasi beban berlebih +merupakan tugas utama dari administrator klaster. {{< glossary_tooltip term_id="kube-apiserver" text="kube-apiserver" >}} memiliki beberapa kontrol yang tersedia +(seperti opsi `--max-request-inflight` dan `--max-mutating-request-inflight` +pada baris perintah atau _command-line_) untuk membatasi jumlah pekerjaan luar biasa yang akan +diterima, untuk mencegah banjirnya permintaan masuk dari beban berlebih +yang berpotensi untuk menghancurkan server API. Namun opsi ini tidak cukup untuk memastikan +bahwa permintaan yang paling penting dapat diteruskan pada saat kondisi lalu lintas (_traffic_) yang cukup tinggi. + +Fitur Prioritas dan Kesetaraan API atau _API Priority and Fairness_ (APF) adalah alternatif untuk meningkatkan +batasan _max-inflight_ seperti yang disebutkan di atas. APF mengklasifikasi +dan mengisolasi permintaan dengan cara yang lebih halus. Fitur ini juga memperkenalkan +jumlah antrian yang terbatas, sehingga tidak ada permintaan yang ditolak +pada saat terjadi lonjakan permintaan dalam waktu yang sangat singkat. Permintaan dibebaskan dari antrian dengan menggunakan +teknik antrian yang adil (_fair queuing_) sehingga, sebagai contoh, perilaku buruk dari satu +{{}} tidak seharusnya +mengakibatkan _controller_ yang lain menderita (meskipun pada tingkat prioritas yang sama). + +{{< caution >}} +Permintaan yang diklasifikasikan sebagai "long running" - terutama _watch_ - tidak +mengikuti filter prioritas dan kesetaraan API. Dimana ini juga berlaku pada +opsi `--max-request-inflight` tanpa mengaktifkan APF. + +{{< /caution >}} + +{{% /capture %}} + +{{% capture body %}} + +## Mengaktifkan prioritas dan kesetaraan API + +Fitur APF dikontrol oleh sebuah gerbang fitur (_feature gate_) +dan fitur ini tidak diaktifkan secara bawaan. Silahkan lihat +[gerbang fitur](/docs/reference/command-line-tools-reference/feature-gates/) +untuk penjelasan umum tentang gerbang fitur dan bagaimana cara mengaktifkan dan menonaktifkannya. +Nama gerbang fitur untuk APF adalah "APIPriorityAndFairness". +Fitur ini melibatkan sebuah {{}} yang harus juga diaktifkan. Kamu bisa melakukan ini dengan +menambahkan opsi pada baris perintah berikut pada permintaan ke `kube-apiserver` kamu: + +```shell +kube-apiserver \ +--feature-gates=APIPriorityAndFairness=true \ +--runtime-config=flowcontrol.apiserver.k8s.io/v1alpha1=true \ + # …dan opsi-opsi lainnya seperti biasa +``` + +Opsi pada baris perintah `--enable-priority-and-fairness=false` akan menonaktifkan fitur +APF, bahkan ketika opsi yang lain telah mengaktifkannya. + +## Konsep +Ada beberapa fitur lainnya yang terlibat dalam fitur APF. Permintaan yang masuk diklasifikasikan berdasarkan atribut permintaan dengan menggunakan +FlowSchema, dan diserahkan ke tingkat prioritas. Tingkat prioritas menambahkan tingkat +isolasi dengan mempertahankan batas konkurensi yang terpisah, sehingga permintaan yang diserahkan +ke tingkat prioritas yang berbeda tidak dapat membuat satu sama lain menderita. Dalam sebuah tingkat prioritas, +algoritma _fair-queuing_ mencegah permintaan dari _flows_ yang berbeda akan memberikan penderitaan +kepada yang lainnya, dan memperbolehkan permintaan untuk dimasukkan ke dalam antrian untuk mencegah pelonjakan lalu lintas +yang akan menyebabkan gagalnya permintaan, walaupun pada saat beban rata-ratanya cukup rendah. + +### Tingkat prioritas (_Priority Level_) +Tanpa pengaktifan APF, keseluruhan konkurensi dalam +server API dibatasi oleh opsi pada `kube-apiserver` +`--max-request-inflight` dan `--max-mutating-request-inflight`. Dengan pengaktifan APF, +batas konkurensi yang ditentukan oleh opsi ini akan dijumlahkan dan kemudian jumlah tersebut dibagikan +untuk sekumpulan tingkat prioritas (_priority level_) yang dapat dikonfigurasi. Setiap permintaan masuk diserahkan +ke sebuah tingkat prioritas, dan setiap tingkat prioritas hanya akan meneruskan sebanyak mungkin +permintaan secara bersamaan sesuai dengan yang diijinkan dalam konfigurasi. + +Konfigurasi bawaan, misalnya, sudah mencakup tingkat prioritas terpisah untuk +permintaan dalam rangka pemilihan pemimpin (_leader-election_), permintaan dari _controller_ bawaan, dan permintaan dari +Pod. Hal ini berarti bahwa Pod yang berperilaku buruk, yang bisa membanjiri server API +dengan permintaan, tidak akan mampu mencegah kesuksesan pemilihan pemimpin atau tindakan yang dilakukan oleh _controller_ bawaan. + +### Antrian (_Queuing_) + +Bahkan dalam sebuah tingkat prioritas mungkin akan ada sumber lalu lintas yang berbeda dalam jumlah besar. +Dalam situasi beban berlebih, sangat penting untuk mencegah satu aliran +permintaan dari penderitaan karena aliran yang lainnya (khususnya, dalam kasus yang relatif umum dari sebuah +klien tunggal bermasalah (_buggy_) yang dapat membanjiri _kube-apiserver_ dengan permintaan, klien bermasalah itu +idealnya tidak memiliki banyak dampak yang bisa diukur terhadap klien yang lainnya). Hal ini +ditangani dengan menggunakan algoritma _fair-queuing_ untuk memproses permintaan yang diserahkan +oleh tingkat prioritas yang sama. Setiap permintaan diserahkan ke sebuah _flow_, yang diidentifikasi berdasarkan +nama FlowSchema yang sesuai, ditambah dengan _flow distinguisher_ - yang +bisa saja didasarkan pada pengguna yang meminta, sumber daya Namespace dari target, atau tidak sama sekali - dan +sistem mencoba untuk memberikan bobot yang hampir sama untuk permintaan dalam _flow_ yang berbeda dengan tingkat prioritas yang sama. + +Setelah mengklasifikasikan permintaan ke dalam sebuah _flow_, fitur APF kemudian +dapat menyerahkan permintaan ke dalam sebuah antrian. Penyerahan ini menggunakan +teknik yang dikenal sebagai {{}}, yang membuat penggunaan antrian yang relatif efisien +untuk mengisolasi _flow_ dengan intensitas rendah dari _flow_ dengan intensitas tinggi. + +Detail dari algoritma antrian dapat disesuaikan untuk setiap tingkat prioritas, dan +memperbolehkan administrator untuk menukar (_trade off_) dengan penggunaan memori, kesetaraan (properti dimana +_flow_ yang independen akan membuat semua kemajuan ketika total dari lalu lintas sudah melebihi kapasitas), +toleransi untuk lonjakan lalu lintas, dan penambahan latensi yang dihasilkan oleh antrian. + +### Permintaan yang dikecualikan (_Exempt Request_) +Beberapa permintaan dianggap cukup penting sehingga mereka tidak akan mengikuti +salah satu batasan yang diberlakukan oleh fitur ini. Pengecualian ini untuk mencegah +konfigurasi _flow control_ yang tidak terkonfigurasi dengan baik sehingga tidak benar-benar menonaktifkan server API. + +## Bawaan (_Default_) + +Fitur APF dikirimkan dengan konfigurasi yang disarankan +dimana konfigurasi itu seharusnya cukup untuk bereksperimen; jika klaster kamu cenderung +mengalami beban berat maka kamu harus mempertimbangkan konfigurasi apa yang akan bekerja paling baik. +Kelompok konfigurasi yang disarankan untuk semua permintaan terbagi dalam lima prioritas +kelas: + +* Tingkat prioritas `system` diperuntukkan bagi permintaan dari grup `system:nodes`, + mis. Kubelet, yang harus bisa menghubungi server API agar + mendapatkan _workload_ untuk dijadwalkan. + +* Tingkat prioritas `leader-election` diperuntukkan bagi permintaan dalam pemilihan pemimpin (_leader election_) + dari _controller_ bawaan (khususnya, permintaan untuk `endpoint`, `configmaps`, + atau `leases` yang berasal dari `system:kube-controller-manager` atau pengguna + `system:kube-scheduler` dan akun Service di Namespace `kube-system`). Hal ini + penting untuk mengisolasi permintaan ini dari lalu lintas yang lain karena + kegagalan dalam pemilihan pemimpin menyebabkan _controller_ akan gagal dan memulai kembali (_restart_), + yang pada akhirnya menyebabkan lalu lintas yang lebih mahal karena _controller_ + yang baru perlu menyinkronkan para informannya. + +* Tingkat prioritas `workload-high` diperuntukkan bagi permintaan yang lain dari _controller_ bawaan. +   +* Tingkat prioritas `workload-low` diperuntukkan bagi permintaan dari akun Service yang lain, + yang biasanya mencakup semua permintaan dari _controller_ yang bekerja didalam Pod. +   +* Tingkat prioritas `global-default` menangani semua lalu lintas lainnya, mis. + perintah interaktif `kubectl` yang dijalankan oleh pengguna yang tidak memiliki hak khusus. + +Kemudian, ada dua PriorityLevelConfiguration dan dua FlowSchema yang telah +dibangun dan tidak mungkin ditimpa ulang: + +* Tingkat prioritas khusus `exempt` diperuntukkan bagi permintaan yang tidak akan dikenakan + _flow control_ sama sekali: permintaan itu akan selalu diteruskan sesegera mungkin. + FlowSchema `exempt` khusus mengklasifikasikan semua permintaan dari kelompok `system:masters` + ke dalam tingkat prioritas khusus ini. Kamu juga dapat menentukan FlowSchema lain yang mengarahkan + permintaan lain ke tingkat prioritas ini juga, apabila permintaan tersebut sesuai. + +* Tingkat prioritas khusus `catch-all` digunakan secara kombinasi dengan spesial + FlowSchema `catch-all` untuk memastikan bahwa setiap permintaan mendapatkan proses + klasifikasi. Biasanya kamu tidak harus bergantung pada konfigurasi _catch-all_ ini, + dan kamu seharusnya membuat FlowSchema _catch-all_ dan PriorityLevelConfiguration kamu sendiri + (atau gunakan konfigurasi `global-default` yang sudah diinstal secara bawaan) secara benar. + Untuk membantu menemukan kesalahan konfigurasi yang akan melewatkan beberapa klasifikasi + permintaan, maka tingkat prioritas `catch-all` hanya wajib mengijinkan satu konkurensi + bersama dan tidak melakukan memasukkan permintaan dalam antrian, sehingga membuat lalu lintas + yang secara relatif hanya sesuai dengan FlowSchema `catch-all` akan ditolak dengan kode kesalahan HTTP 429. + +## Sumber daya (_Resource_) +_Flow control_ API melibatkan dua jenis sumber daya. +[PriorityLevelConfiguration](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#prioritylevelconfiguration-v1alpha1-flowcontrol-apiserver-k8s-io) +yang menentukan kelas isolasi yang tersedia, bagian dari konkurensi anggaran yang tersedia +yang masing-masing dapat menangani bagian tersebut, dan memperbolehkan untuk melakukan _fine-tuning_ terhadap perilaku antrian. +[FlowSchema](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#flowschema-v1alpha1-flowcontrol-apiserver-k8s-io) +yang digunakan untuk mengklasifikasikan permintaan individu yang masuk, mencocokkan masing-masing dengan setiap +PriorityLevelConfiguration. + +### PriorityLevelConfiguration +Sebuah PriorityLevelConfiguration merepresentasikan sebuah kelas isolasi tunggal. Setiap +PriorityLevelConfiguration memiliki batas independensi dalam hal jumlah +permintaan yang belum diselesaikan, dan batasan dalam hal jumlah permintaan yang mengantri. + +Batas konkurensi untuk PriorityLevelConfiguration tidak disebutkan dalam +jumlah permintaan secara mutlak, melainkan dalam "concurrency shares." Total batas konkurensi +untuk server API didistribusikan di antara PriorityLevelConfiguration yang ada +secara proporsional dengan "concurrency shares" tersebut. Ini mengizinkan seorang +administrator klaster untuk meningkatkan atau menurunkan jumlah total lalu lintas ke sebuah +server dengan memulai kembali `kube-apiserver` dengan nilai opsi +`--max-request-inflight` (atau `--max-mutating-request-inflight`) yang berbeda, dan semua +PriorityLevelConfiguration akan melihat konkurensi maksimum yang diizinkan kepadanya untuk menaikkan (atau +menurunkan) dalam fraksi yang sama. + +{{< caution >}} +Dengan fitur Prioritas dan Kesetaraan yang diaktifkan, batas total konkurensi untuk +server diatur pada nilai penjumlahan dari `--max-request-inflight` dan +`--max-mutating-request-inflight`. Tidak akan ada lagi perbedaan +antara permintaan yang bermutasi dan permintaan yang tidak bermutasi; jika kamu ingin melayaninya +secara terpisah untuk suatu sumber daya yang ada, maka perlu membuat FlowSchema terpisah yang sesuai dengan +masing-masing kata kerja dari permintaan yang bermutasi dan yang tidak bermutasi tersebut. +{{< /caution >}} + +Ketika jumlah permintaan masuk yang diserahkan kepada sebuah +PriorityLevelConfiguration melebihi dari tingkat konkurensi yang diizinkan, +bagian `type` dari spesifikasinya menentukan apa yang akan terjadi pada permintaan selanjutnya. +Tipe `Reject` berarti bahwa kelebihan lalu lintas akan segera ditolak +dengan kode kesalahan HTTP 429 (yang artinya terlalu banyak permintaan). Tipe `Queue` berarti permintaan +di atas batas tersebut akan mengantri, dengan teknik _sharding shuffle_ dan _fair queuing_ yang digunakan +untuk menyelaraskan kemajuan antara _flow_ permintaan. + +Konfigurasi antrian memungkinkan mengatur algoritma _fair queuing_ untuk sebuah +tingkat prioritas. Detail algoritma dapat dibaca di [proposal pembaharuan](#what-s-next), namun secara singkat: + +* Meningkatkan `queue` (antrian) berarti mengurangi tingkat tabrakan antara _flow_ yang berbeda, + sehingga berakibat pada biaya untuk meningkatkan penggunaan memori. Nilai 1 di sini secara + efektif menonaktifkan logika _fair-queuing_, tetapi masih mengizinkan permintaan untuk + dimasukkan kedalam antrian. + +* Meningkatkan `queueLengthLimit` berarti memperbolehkan lonjakan yang lebih besar dari lalu lintas + untuk berkelanjutan tanpa menggagalkan permintaan apa pun, dengan konsekuensi akan meningkatkan + latensi dan penggunaan memori. + +* Mengubah `handSize` berarti memperbolehkan kamu untuk menyesuaikan probabilitas tabrakan antara +   _flow_ yang berbeda dan keseluruhan konkurensi yang tersedia untuk satu _flow_ tunggal + dalam situasi beban berlebih. + + {{< note >}} + `HandSize` yang lebih besar membuat dua _flow_ individual berpeluang kecil untuk bertabrakan + (dan dimana _flow_ yang satu bisa membuat _flow_ yang lain menderita), tetapi akan lebih memungkinkan + bahwa _flow_ dalam jumlah kecil akan dapat mendominasi apiserver. `HandSize` yang lebih besar juga + berpotensi meningkatkan jumlah latensi yang diakibatkan oleh satu _flow_ lalu lintas tunggal + yang tinggi. Jumlah maksimum permintaan dalam antrian yang diijinkan dari sebuah _flow_ tunggal + adalah `handSize * queueLengthLimit`. + {{< /note >}} + +Berikut ini adalah tabel yang menunjukkan koleksi konfigurasi _shuffle sharding_ +yang menarik, dimana setiap probabilitas _mouse_ (_flow_ dengan intensitas rendah) +yang diberikan akan dimampatkan oleh _elephant_ (_flow_ dengan intensitas tinggi) dalam sebuah koleksi ilustratif +dari jumlah _elephant_ yang berbeda. Silahkan lihat pada +https://play.golang.org/p/Gi0PLgVHiUg, yang digunakan untuk menghitung nilai-nilai dalam tabel ini. + +{{< table caption="Contoh Konfigurasi Shuffle Sharding" >}} +|HandSize| Queues| 1 elephant| 4 elephants| 16 elephants| +|--------|-----------|------------|----------------|--------------------| +| 12| 32| 4.428838398950118e-09| 0.11431348830099144| 0.9935089607656024| +| 10| 32| 1.550093439632541e-08| 0.0626479840223545| 0.9753101519027554| +| 10| 64| 6.601827268370426e-12| 0.00045571320990370776| 0.49999929150089345| +| 9| 64| 3.6310049976037345e-11| 0.00045501212304112273| 0.4282314876454858| +| 8| 64| 2.25929199850899e-10| 0.0004886697053040446| 0.35935114681123076| +| 8| 128| 6.994461389026097e-13| 3.4055790161620863e-06| 0.02746173137155063| +| 7| 128| 1.0579122850901972e-11| 6.960839379258192e-06| 0.02406157386340147| +| 7| 256| 7.597695465552631e-14| 6.728547142019406e-08| 0.0006709661542533682| +| 6| 256| 2.7134626662687968e-12| 2.9516464018476436e-07| 0.0008895654642000348| +| 6| 512| 4.116062922897309e-14| 4.982983350480894e-09| 2.26025764343413e-05| +| 6| 1024| 6.337324016514285e-16| 8.09060164312957e-11| 4.517408062903668e-07| + +### FlowSchema + +FlowSchema mencocokkan beberapa permintaan yang masuk dan menetapkan permintaan ke dalam sebuah +tingkat prioritas. Setiap permintaan masuk diuji dengan setiap +FlowSchema secara bergiliran, dimulai dari yang terendah secara numerik --- +yang kita anggap sebagai yang tertinggi secara logis --- `matchingPrecedence` dan +begitu seterusnya. FlowSchema yang cocok pertama kali akan menang. + +{{< caution >}} +Hanya FlowSchema yang pertama kali cocok untuk permintaan yang diberikan yang akan dianggap penting. Jika ada banyak +FlowSchema yang cocok dengan sebuah permintaan masuk, maka akan ditetapkan berdasarkan salah satu +yang mempunyai `matchingPrecedence` tertinggi. Jika ada beberapa FlowSchema dengan nilai +`matchingPrecedence` yang sama dan cocok dengan permintaan yang sama juga, permintaan dengan leksikografis +`name` yang lebih kecil akan menang, tetapi akan lebih baik untuk tidak mengandalkan metode ini, dan sebaiknya +perlu memastikan bahwa tidak ada dua FlowSchema yang memiliki `matchingPrecedence` yang sama. +{{< /caution >}} + +Sebuah FlowSchema dianggap cocok dengan sebuah permintaan yang diberikan jika setidaknya salah satu dari `rules` nya +ada yang cocok. Sebuah aturan (_rule_) cocok jika setidaknya satu dari `subject` *dan* +ada salah satu dari `resourceRules` atau` nonResourceRules` (tergantung dari apakah permintaan +yang masuk adalah untuk URL sumber daya atau non-sumber daya) yang cocok dengan permintaan tersebut. + +Untuk bagian `name` dalam subjek, dan bagian `verbs`, `apiGroups`, `resources`, +`namespaces`, dan `nonResourceURLs` dalam aturan sumber daya dan non-sumber daya, +_wildcard_ `*` mungkin bisa ditetapkan untuk mencocokkan semua nilai pada bagian yang diberikan, +sehingga secara efektif menghapusnya dari pertimbangan. + +Sebuah `DistinguisherMethod.type` dari FlowSchema menentukan bagaimana permintaan +yang cocok dengan Skema itu akan dipisahkan menjadi _flow_. Nilai tipe itu bisa jadi `ByUser`, dalam +hal ini satu pengguna yang meminta tidak akan bisa menghabiskan kapasitas dari pengguna lain, +atau bisa juga `ByNamespace`, dalam hal ini permintaan sumber daya +di salah satu Namespace tidak akan bisa menyebabkan penderitaan bagi permintaan akan sumber daya +dalam kapasitas Namespace yang lain, atau bisa juga kosong (atau `distinguisherMethod` +dihilangkan seluruhnya), dalam hal ini semua permintaan yang cocok dengan FlowSchema ini akan +dianggap sebagai bagian dari sebuah _flow_ tunggal. Pilihan yang tepat untuk FlowSchema yang diberikan +akan bergantung pada sumber daya dan lingkungan khusus kamu. + +## Diagnosis +Setiap respons HTTP dari server API dengan fitur prioritas dan kesetaraan +yang diaktifkan memiliki dua _header_ tambahan: `X-Kubernetes-PF-FlowSchema-UID` dan +`X-Kubernetes-PF-PriorityLevel-UID`, yang mencatat skema _flow_ yang cocok dengan permintaan +dan tingkat prioritas masing-masing. Name Objek API tidak termasuk dalam _header_ ini jika pengguna peminta tidak +memiliki izin untuk melihatnya, jadi ketika melakukan _debugging_ kamu dapat menggunakan perintah seperti ini + +```shell +kubectl get flowschema -o custom-columns="uid:{metadata.uid},name:{metadata.name}" +kubectl get prioritylevelconfiguration -o custom-columns="uid:{metadata.uid},name:{metadata.name}" +``` + +untuk mendapatkan pemetaan UID ke names baik untuk FlowSchema maupun PriorityLevelConfiguration. + +## Observabilitas +Saat kamu mengaktifkan fitur Prioritas dan Kesetaraan API atau APF, kube-apiserver +akan mengeluarkan metrik tambahan. Dengan memantau metrik ini dapat membantu kamu untuk menentukan apakah +konfigurasi kamu tidak tepat dalam membatasi lalu lintas yang penting, atau menemukan +beban kerja yang berperilaku buruk yang dapat membahayakan kesehatan dari sistem. + +* `apiserver_flowcontrol_rejected_requests_total` menghitung permintaan yang + ditolak, mengelompokkannya berdasarkan nama dari tingkat prioritas yang ditetapkan, + nama FlowSchema yang ditetapkan, dan alasan penolakan tersebut. + Alasan penolakan akan mengambil dari salah satu alasan-alasan berikut: + * `queue-full`, yang mengindikasikan bahwa sudah terlalu banyak permintaan + yang menunggu dalam antrian, + * `concurrency-limit`, yang mengindikasikan bahwa PriorityLevelConfiguration + telah dikonfigurasi untuk menolak, bukan untuk memasukan permintaan berlebih ke + dalam antrian, atau + * `time-out`, yang mengindikasikan bahwa permintaan masih dalam antrian + ketika batas waktu antriannya telah berakhir. + +* `apiserver_flowcontrol_dispatched_requests_total` menghitung permintaan + yang sudah mulai dieksekusi, mengelompokkannya berdasarkan nama dari tingkat + prioritas yang ditetapkan, dan nama dari FlowSchema yang ditetapkan. + +* `apiserver_flowcontrol_current_inqueue_requests` memberikan + jumlah total sesaat secara instan dari permintaan dalam antrian (bukan yang dieksekusi), + dan mengelompokkannya berdasarkan tingkat prioritas dan FlowSchema. + +* `apiserver_flowcontrol_current_executing_requests` memberikan + jumlah total yang instan dari permintaan yang dieksekusi, dan mengelompokkannya + berdasarkan tingkat prioritas dan FlowSchema. + +* `apiserver_flowcontrol_request_queue_length_after_enqueue` memberikan + histogram dari panjang antrian untuk semua antrian yang ada, mengelompokkannya berdasarkan + tingkat prioritas dan FlowSchema, berdasarkan pengambilan sampel oleh permintaan + _enqueued_. Setiap permintaan yang mendapatkan antrian berkontribusi ke satu sampel + dalam histogramnya, pelaporan panjang antrian dilakukan setelah permintaan yang + mengantri tersebut ditambahkan. Perlu dicatat bahwa ini akan menghasilkan statistik + yang berbeda dengan survei yang tidak bias. + {{< note >}} + Nilai asing atau tidak biasa dalam histogram akan berarti ada kemungkinan sebuah _flow_ + (misalnya, permintaan oleh satu pengguna atau untuk satu _namespace_, tergantung pada + konfigurasinya) telah membanjiri server API, dan sedang dicekik. Sebaliknya, jika + histogram dari satu tingkat prioritas menunjukkan bahwa semua antrian dalam prioritas + level itu lebih panjang daripada level prioritas yang lainnya, mungkin akan sesuai + untuk meningkatkan _concurrency shares_ dari PriorityLevelConfiguration itu. + {{< /note >}} + +* `apiserver_flowcontrol_request_concurrency_limit` memberikan hasil perhitungan + batas konkurensi (berdasarkan pada batas konkurensi total dari server API dan + _concurrency share_ dari PriorityLevelConfiguration) untuk setiap + PriorityLevelConfiguration. + +* `apiserver_flowcontrol_request_wait_duration_seconds` memberikan histogram tentang bagaimana + permintaan yang panjang dihabiskan dalam antrian, mengelompokkannya berdasarkan FlowSchema + yang cocok dengan permintaan, tingkat prioritas yang ditetapkan, dan apakah permintaan + tersebut berhasil dieksekusi atau tidak. + {{< note >}} + Karena setiap FlowSchema selalu memberikan permintaan untuk satu + PriorityLevelConfiguration, kamu dapat menambahkan histogram untuk semua + FlowSchema dalam satu tingkat prioritas untuk mendapatkan histogram yang efektif + dari permintaan yang ditetapkan ke tingkat prioritas tersebut. + {{< /note >}} + +* `apiserver_flowcontrol_request_execution_seconds` memberikan histogram tentang bagaimana + caranya permintaan yang panjang diambil untuk benar-benar dieksekusi, mengelompokkannya + berdasarkan FlowSchema yang cocok dengan permintaan dan tingkat prioritas yang ditetapkan pada + permintaan tersebut. + +{{% /capture %}} + +{{% capture whatsnext %}} + +Untuk latar belakang informasi mengenai detail desain dari prioritas dan kesetaraan API, silahkan lihat +[proposal pembaharuan](https://github.com/kubernetes/enhancements/blob/master/keps/sig-api-machinery/20190228-priority-and-fairness.md). +Kamu juga dapat membuat saran dan permintaan akan fitur melalui [SIG API +Machinery](https://github.com/kubernetes/community/tree/master/sig-api-machinery). + +{{% /capture %}} From cb734dfdcf75df0c9312626955989c6dabf21f74 Mon Sep 17 00:00:00 2001 From: Marco Bellaccini <24960638+marcobellaccini@users.noreply.github.com> Date: Thu, 7 May 2020 18:42:50 +0200 Subject: [PATCH 39/66] Fixed indentation in TLS Ingress example - Fixed indentation in TLS Ingress example - Made indentation uniform Bad indentation resulted in a YAML-to-JSON conversion error when running kubectl --- .../docs/concepts/services-networking/ingress.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/content/en/docs/concepts/services-networking/ingress.md b/content/en/docs/concepts/services-networking/ingress.md index 39e57ffdb0..8daefc5688 100644 --- a/content/en/docs/concepts/services-networking/ingress.md +++ b/content/en/docs/concepts/services-networking/ingress.md @@ -402,16 +402,16 @@ metadata: spec: tls: - hosts: - - sslexample.foo.com + - sslexample.foo.com secretName: testsecret-tls rules: - - host: sslexample.foo.com - http: - paths: - - path: / - backend: - serviceName: service1 - servicePort: 80 + - host: sslexample.foo.com + http: + paths: + - path: / + backend: + serviceName: service1 + servicePort: 80 ``` {{< note >}} From 4d6d79b4d448d2d6e47b70a4904ecd9e224c6665 Mon Sep 17 00:00:00 2001 From: mristok Date: Wed, 13 May 2020 10:43:36 -0500 Subject: [PATCH 40/66] fix misspelling in overview.md fix two misspellings in overview.md: technnology -> technology standardisation -> standardization --- content/en/docs/concepts/containers/overview.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/concepts/containers/overview.md b/content/en/docs/concepts/containers/overview.md index 968ba7104a..49162710d7 100644 --- a/content/en/docs/concepts/containers/overview.md +++ b/content/en/docs/concepts/containers/overview.md @@ -9,9 +9,9 @@ weight: 1 {{% capture overview %}} -Containers are a technnology for packaging the (compiled) code for an +Containers are a technology for packaging the (compiled) code for an application along with the dependencies it needs at run time. Each -container that you run is repeatable; the standardisation from having +container that you run is repeatable; the standardization from having dependencies included means that you get the same behavior wherever you run it. From 836907c43ad27049a6c4c0908a8b4a47d54ce4c0 Mon Sep 17 00:00:00 2001 From: Alex Contini Date: Wed, 13 May 2020 13:10:55 -0400 Subject: [PATCH 41/66] add Denso case study and fix svg images at top of case study landing page --- ...tured.svg => booz-allen-featured-logo.svg} | 0 content/en/case-studies/booz-allen/index.html | 4 +- .../denso/denso_featured_logo.svg | 1 + content/en/case-studies/denso/index.html | 110 ++++++++++++++++++ static/css/case-studies-gradient.css | 2 +- static/css/gridpage.css | 1 + static/images/Denso1.png | Bin 0 -> 652327 bytes static/images/Denso2.jpg | Bin 0 -> 130903 bytes static/images/Denso4.jpg | Bin 0 -> 88182 bytes static/images/babylon_featured_logo.png | Bin 8671 -> 0 bytes static/images/babylon_featured_logo.svg | 1 + static/images/denso_featured_logo.svg | 1 + 12 files changed, 117 insertions(+), 3 deletions(-) rename content/en/case-studies/booz-allen/{booz-allen-featured.svg => booz-allen-featured-logo.svg} (100%) create mode 100644 content/en/case-studies/denso/denso_featured_logo.svg create mode 100644 content/en/case-studies/denso/index.html create mode 100644 static/images/Denso1.png create mode 100644 static/images/Denso2.jpg create mode 100644 static/images/Denso4.jpg delete mode 100644 static/images/babylon_featured_logo.png create mode 100644 static/images/babylon_featured_logo.svg create mode 100644 static/images/denso_featured_logo.svg diff --git a/content/en/case-studies/booz-allen/booz-allen-featured.svg b/content/en/case-studies/booz-allen/booz-allen-featured-logo.svg similarity index 100% rename from content/en/case-studies/booz-allen/booz-allen-featured.svg rename to content/en/case-studies/booz-allen/booz-allen-featured-logo.svg diff --git a/content/en/case-studies/booz-allen/index.html b/content/en/case-studies/booz-allen/index.html index 8b82ef3787..2a48c7f3b7 100644 --- a/content/en/case-studies/booz-allen/index.html +++ b/content/en/case-studies/booz-allen/index.html @@ -1,10 +1,10 @@ --- title: Booz Allen Case Study -linkTitle: booz-allen +linkTitle: Booz Allen Hamilton case_study_styles: true cid: caseStudies css: /css/case-studies-gradient.css -logo: booz-allen_featured_logo.png +logo: booz-allen-featured-logo.svg featured: true weight: 2 quote: > diff --git a/content/en/case-studies/denso/denso_featured_logo.svg b/content/en/case-studies/denso/denso_featured_logo.svg new file mode 100644 index 0000000000..375d9cefbc --- /dev/null +++ b/content/en/case-studies/denso/denso_featured_logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/content/en/case-studies/denso/index.html b/content/en/case-studies/denso/index.html new file mode 100644 index 0000000000..3ad0812d24 --- /dev/null +++ b/content/en/case-studies/denso/index.html @@ -0,0 +1,110 @@ +--- +title: Denso Case Study +linkTitle: Denso +case_study_styles: true +cid: caseStudies +css: /css/case-studies-gradient.css +logo: denso_featured_logo.svg +featured: true +weight: 4 +quote: > + We got Kubernetes experts involved on our team, and it dramatically accelerated development speed. +--- + + +
    +

    CASE STUDY: Denso

    +
    How DENSO Is Fueling Development on the Vehicle Edge with Kubernetes
    +
    + +
    + Company  Denso     Location  Japan     Industry  Automotive, Edge +
    + +
    +
    +
    +
    +

    Challenge

    + DENSO Corporation is one of the biggest automotive components suppliers in the world. With the advent of connected cars, the company launched a Digital Innovation Department to expand into software, working on vehicle edge and vehicle cloud products. But there were several technical challenges to creating an integrated vehicle edge/cloud platform: "the amount of computing resources, the occasional lack of mobile signal, and an enormous number of distributed vehicles," says R&D Product Manager Seiichi Koizumi. + + +

    Solution

    + Koizumi’s team realized that because mobility services evolve every day, they needed the flexibility of the cloud native ecosystem for their platform. After considering other orchestrators, DENSO went with Kubernetes for orchestration and added Prometheus, Fluentd, Envoy, Istio, and Helm to the platform. Today, DENSO is using a vehicle edge computer, a private Kubernetes cloud, and managed Kubernetes (GKE, EKS, AKS). + +

    Impact

    + Critical layer features can take 2-3 years to implement in the traditional, waterfall model of development at DENSO. With the Kubernetes platform and agile methods, there’s a 2-month development cycle for non-critical software. Now, ten new applications are released a year, and a new prototype is introduced every week. "By utilizing Kubernetes managed services, such as GKE/EKS/AKS, we can unify the environment and simplify our maintenance operation," says Koizumi. +
    +
    +
    +
    + "Another disruptive innovation is coming, so to survive in this situation, we need to change our culture." +

    - SEIICHI KOIZUMI, R&D PRODUCT MANAGER, DIGITAL INNOVATION DEPARTMENT AT DENSO

    +
    +
    + + +
    +
    +

    Spun off from Toyota in 1949, DENSO Corporation is one of the top automotive suppliers in the world today, with consolidated net revenue of $48.3 billion. +

    + +

    The company’s mission is "contributing to a better world by creating value together with a vision for the future"—and part of that vision in recent years has been development on the vehicle edge and vehicle cloud.

    + +

    With the advent of connected cars, DENSO established a Digital Innovation Department to expand its business beyond the critical layer of the engine, braking systems, and other automotive parts into the non-critical analytics and entertainment layer. Comparing connected cars to smartphones, R&D Product Manager Seiichi Koizumi says DENSO wants the ability to quickly and easily develop and install apps for the "blank slate" of the car, and iterate them based on the driver’s preferences. Thus "we need a flexible application platform," he says.

    + +

    But working on vehicle edge and vehicle cloud products meant there were several technical challenges: "the amount of computing resources, the occasional lack of mobile signal, and an enormous number of distributed vehicles," says Koizumi. "We are tackling these challenges to create an integrated vehicle edge/cloud platform."

    + + +
    +
    + +
    +
    + "We got Kubernetes experts involved on our team, and it dramatically accelerated development speed."

    — SEIICHI KOIZUMI, R&D PRODUCT MANAGER, DIGITAL INNOVATION DEPARTMENT AT DENSO

    +
    +
    + +
    +
    +

    + Koizumi’s team realized that because mobility services evolve every day, they needed the flexibility of the cloud native ecosystem for their platform. As they evaluated technologies, they were led by these criteria: Because their service-enabler business needed to support multiple cloud and on-premise environments, the solution needed to be cloud agnostic, with no vendor lock-in and open governance. It also had to support an edge-cloud integrated environment.

    +

    + After considering other orchestrators, DENSO went with Kubernetes for orchestration and added Prometheus, Fluentd, Envoy, Istio, and Helm to the platform. During implementation, the team used "design thinking to clarify use cases and their value proposition," says Koizumi. Next, an agile development team worked on a POC, then an MVP, in DevOps style. "Even in the development phase, we are keeping a channel to end users," he adds.

    +

    + One lesson learned during this process was the value of bringing in experts. "We tried to learn Kubernetes and cloud native technologies from scratch, but it took more time than expected," says Koizumi. "We got Kubernetes experts involved on our team, and it dramatically accelerated development speed."

    + +

    +
    +
    + + +
    +
    + "By utilizing Kubernetes managed services, such as GKE/EKS/AKS, we can unify the environment and simplify our maintenance operation."

    - SEIICHI KOIZUMI, R&D PRODUCT MANAGER, DIGITAL INNOVATION DEPARTMENT AT DENSO

    +
    +
    + +
    +
    +

    + Today, DENSO is using a vehicle edge computer, a private Kubernetes cloud, and managed Kubernetes on GKE, EKS, and AKS. "We are developing a vehicle edge/cloud integrated platform based on a microservice and service mesh architecture," says Koizumi. "We extend cloud into multiple vehicle edges and manage it as a unified platform."

    +

    + Cloud native has enabled DENSO to deliver applications via its new dash cam, which has a secure connection that collects data to the cloud. "It’s like a smartphone," he says. "We are installing new applications and getting the data through the cloud, and we can keep updating new applications all through the dash cam."

    +

    + The unified cloud native platform, combined with agile development, has had a positive impact on productivity. Critical layer features—those involving engines or braking systems, for example—can take 2-3 years to implement at DENSO, because of the time needed to test safety, but also because of the traditional, waterfall model of development. With the Kubernetes platform and agile methods, there’s a 2-month development cycle for non-critical software. Now, ten new applications are released a year, and with the department’s scrum-style development, a new prototype is introduced every week.

    +

    + Application portability has also led to greater developer efficiency. "There’s no need to care about differences in the multi-cloud platform anymore," says Koizumi. Now, "we are also trying to have the same portability between vehicle edge and cloud platform." +

    +

    + Another improvement: Automotive Tier-1 suppliers like DENSO always have multiple Tier-2 suppliers. "To provide automotive-grade high-availability services, we tried to do the same thing on a multi-cloud platform," says Koizumi. Before Kubernetes, maintaining two different systems simultaneously was difficult. "By utilizing Kubernetes managed services, such as GKE/EKS/AKS, we can unify the environment and simplify our maintenance operation," he says. +

    +

    +Cloud native has also profoundly changed the culture at DENSO. The Digital Innovation Department is known as "Noah’s Ark," and it has grown from 2 members to 70—with plans to more than double in the next year. The way they operate is completely different from the traditional Japanese automotive culture. But just as the company embraced change brought by hybrid cars in the past decade, Koizumi says, they’re doing it again now, as technology companies have moved into the connected car space. "Another disruptive innovation is coming," he says, "so to survive in this situation, we need to change our culture." +

    +

    +Looking ahead, Koizumi and his team are expecting serverless and zero-trust security architecture to be important enhancements of Kubernetes. They are glad DENSO has come along for the ride. "Mobility service businesses require agility and flexibility," he says. "DENSO is trying to bring cloud native flexibility into the vehicle infrastructure." +

    +
    +
    + diff --git a/static/css/case-studies-gradient.css b/static/css/case-studies-gradient.css index a696aa94fb..d33439d91f 100644 --- a/static/css/case-studies-gradient.css +++ b/static/css/case-studies-gradient.css @@ -195,7 +195,7 @@ h4 { font-size:1.2em !important; color:#3366ff; letter-spacing:0.03em; - padding-bottom:1% !important; + padding-bottom:2% !important; padding-top:2%; margin-left:0; padding-left:10%; diff --git a/static/css/gridpage.css b/static/css/gridpage.css index 297c7d3637..542eadea8f 100644 --- a/static/css/gridpage.css +++ b/static/css/gridpage.css @@ -84,6 +84,7 @@ .case-study img { position: absolute; top: 0; + width:215px; left: 0; } diff --git a/static/images/Denso1.png b/static/images/Denso1.png new file mode 100644 index 0000000000000000000000000000000000000000..1c6304bc97c4241a66f2b58985cd0d4b894887a6 GIT binary patch literal 652327 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� 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 z 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

    2p+6V)Jd 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

    Y?~llSe@l6agBb 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ℑ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
    U%L{ex&JXwS1y;N<4|JH35r{rbI=3xVqG`>~{R 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%0D==7pUd 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 AYXATM literal 0 HcmV?d00001 diff --git a/static/images/Denso2.jpg b/static/images/Denso2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2356a9ed1614edc16e48b6e2f9bd216c8d6e06ca GIT binary patch literal 130903 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

    !_3miNk?!US>5O-O5dSI|y8QWw{ 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

    _Dm9wg(O`c??k*~+oF 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 diff --git a/static/images/babylon_featured_logo.svg b/static/images/babylon_featured_logo.svg new file mode 100644 index 0000000000..8bea0b8fc3 --- /dev/null +++ b/static/images/babylon_featured_logo.svg @@ -0,0 +1 @@ +babylon_featured_logo \ No newline at end of file diff --git a/static/images/denso_featured_logo.svg b/static/images/denso_featured_logo.svg new file mode 100644 index 0000000000..375d9cefbc --- /dev/null +++ b/static/images/denso_featured_logo.svg @@ -0,0 +1 @@ + \ No newline at end of file From 3530e6d6d0513d6de06341d4d1827c2dfa0b8408 Mon Sep 17 00:00:00 2001 From: Irvi Firqotul Aini Date: Wed, 13 May 2020 21:50:31 +0700 Subject: [PATCH 42/66] Using regex to allow rendering notes with an indent, for example: {{< note >}} If the last element of the path is a substring of the last element in request path, it is not a match (for example: `/foo/bar` matches`/foo/bar/baz`, but does not match `/foo/barbaz`). {{< /note >}} After changin to hugo 0.70 trim seems to be not working. --- layouts/shortcodes/note.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/shortcodes/note.html b/layouts/shortcodes/note.html index 1161c2366c..1da48797c5 100644 --- a/layouts/shortcodes/note.html +++ b/layouts/shortcodes/note.html @@ -1,3 +1,3 @@

    -
    {{ T "note" }} {{ trim .Inner " \n" | markdownify }}
    +
    {{ T "note" }} {{ replaceRE "\\s+|\n" " " .Inner | markdownify }}
    \ No newline at end of file From e852b9bb810fe0254423bf03462072df62e54487 Mon Sep 17 00:00:00 2001 From: Irvi Firqotul Aini Date: Thu, 14 May 2020 00:18:40 +0700 Subject: [PATCH 43/66] Make small changes to trigger tide. --- .../workloads/controllers/deployment.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/content/en/docs/concepts/workloads/controllers/deployment.md b/content/en/docs/concepts/workloads/controllers/deployment.md index aeb9542126..a8ccfaa32c 100644 --- a/content/en/docs/concepts/workloads/controllers/deployment.md +++ b/content/en/docs/concepts/workloads/controllers/deployment.md @@ -55,7 +55,10 @@ In this example: as long as the Pod template itself satisfies the rule. {{< note >}} - The `.spec.selector.matchLabels` field is a map of {key,value} pairs. A single {key,value} in the `matchLabels` map is equivalent to an element of `matchExpressions`, whose key field is "key" the operator is "In", and the values array contains only "value". All of the requirements, from both `matchLabels` and `matchExpressions`, must be satisfied in order to match. + The `.spec.selector.matchLabels` field is a map of {key,value} pairs. + A single {key,value} in the `matchLabels` map is equivalent to an element of `matchExpressions`, + whose key field is "key" the operator is "In", and the values array contains only "value". + All of the requirements, from both `matchLabels` and `matchExpressions`, must be satisfied in order to match. {{< /note >}} * The `template` field contains the following sub-fields: @@ -75,9 +78,10 @@ Follow the steps given below to create the above Deployment: kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml ``` - {{< note >}} - You can specify the `--record` flag to write the command executed in the resource annotation `kubernetes.io/change-cause`. The recorded change is useful for future introspection. For example, to see the commands executed in each Deployment revision. - {{< /note >}} + {{< note >}} + You can specify the `--record` flag to write the command executed in the resource annotation `kubernetes.io/change-cause`. + The recorded change is useful for future introspection. For example, to see the commands executed in each Deployment revision. + {{< /note >}} 2. Run `kubectl get deployments` to check if the Deployment was created. @@ -904,9 +908,9 @@ example, rollback the Deployment to its previous version. {{< /note >}} {{< note >}} -If you pause a Deployment, Kubernetes does not check progress against your specified deadline. You can -safely pause a Deployment in the middle of a rollout and resume without triggering the condition for exceeding the -deadline. +If you pause a Deployment, Kubernetes does not check progress against your specified deadline. +You can safely pause a Deployment in the middle of a rollout and resume without triggering +the condition for exceeding the deadline. {{< /note >}} You may experience transient errors with your Deployments, either due to a low timeout that you have set or From 93fae6aba4f2513ed7531162a2e9284de60c55d4 Mon Sep 17 00:00:00 2001 From: Arhell Date: Thu, 14 May 2020 00:20:27 +0300 Subject: [PATCH 44/66] localization for subscribe button --- i18n/uk.toml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/i18n/uk.toml b/i18n/uk.toml index ef59e46cfa..ec60865783 100644 --- a/i18n/uk.toml +++ b/i18n/uk.toml @@ -226,6 +226,10 @@ other = "Цілі" # other = "Before you begin" other = "Перш ніж ви розпочнете" +[subscribe_button] +# other = "Subscribe" +other = "Підписатися" + [ui_search_placeholder] # other = "Search" other = "Пошук" From d656fd1cc14b521217f54e69683e94a9c7f51bdc Mon Sep 17 00:00:00 2001 From: zacharysarah Date: Wed, 13 May 2020 16:45:36 -0700 Subject: [PATCH 45/66] Specify a node version in package.json --- netlify.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/netlify.toml b/netlify.toml index 96b981785e..136652e60c 100644 --- a/netlify.toml +++ b/netlify.toml @@ -8,6 +8,7 @@ command = "make non-production-build" [build.environment] HUGO_VERSION = "0.70.0" +NODE_VERSION = "10.20.0" [context.production.environment] HUGO_BASEURL = "https://kubernetes.io/" From 020b6312e3bbfd990264009eeb51ad540ddaf23d Mon Sep 17 00:00:00 2001 From: Maciej Filocha Date: Thu, 14 May 2020 15:09:14 +0200 Subject: [PATCH 46/66] Synchronize Polish localization with English master Synchronize Polish content up to 991aadb64f986cc74d2f50d00d631fc430e567ea. --- content/pl/_index.html | 2 +- .../pl/docs/concepts/overview/components.md | 2 +- .../pl/docs/templates/feature-state-alpha.txt | 8 ---- .../pl/docs/templates/feature-state-beta.txt | 8 ---- .../templates/feature-state-deprecated.txt | 2 - .../docs/templates/feature-state-stable.txt | 5 -- content/pl/docs/templates/index.md | 13 ------ content/pl/docs/tutorials/hello-minikube.md | 46 +++++++++---------- content/pl/examples/minikube/Dockerfile | 4 -- content/pl/examples/minikube/server.js | 9 ---- 10 files changed, 23 insertions(+), 76 deletions(-) delete mode 100644 content/pl/docs/templates/feature-state-alpha.txt delete mode 100644 content/pl/docs/templates/feature-state-beta.txt delete mode 100644 content/pl/docs/templates/feature-state-deprecated.txt delete mode 100644 content/pl/docs/templates/feature-state-stable.txt delete mode 100644 content/pl/docs/templates/index.md delete mode 100644 content/pl/examples/minikube/Dockerfile delete mode 100644 content/pl/examples/minikube/server.js diff --git a/content/pl/_index.html b/content/pl/_index.html index f021fc51e9..42e5bb4ae7 100644 --- a/content/pl/_index.html +++ b/content/pl/_index.html @@ -45,7 +45,7 @@ Kubernetes jako projekt open-source daje Ci wolność wyboru ⏤ skorzystaj z pr


    -
    Weź udział w KubeCon w Amsterdamie 13-16.08.2020 + Weź udział w wirtualnym KubeCon 17-20.08.2020


    diff --git a/content/pl/docs/concepts/overview/components.md b/content/pl/docs/concepts/overview/components.md index bc79d8382d..e3438b2b54 100644 --- a/content/pl/docs/concepts/overview/components.md +++ b/content/pl/docs/concepts/overview/components.md @@ -79,7 +79,7 @@ Składniki węzłów uruchomiane są na każdym węźle. Utrzymują pody w dzia {{< glossary_definition term_id="kube-proxy" length="all" >}} -### Container Runtime +### Container runtime {{< glossary_definition term_id="container-runtime" length="all" >}} diff --git a/content/pl/docs/templates/feature-state-alpha.txt b/content/pl/docs/templates/feature-state-alpha.txt deleted file mode 100644 index c6c74ede8e..0000000000 --- a/content/pl/docs/templates/feature-state-alpha.txt +++ /dev/null @@ -1,8 +0,0 @@ -Ta funkcjonalność jest w fazie *alfa*, co oznacza: - -* Nazwa wersji zawiera słowo _alpha_ (np. v1alpha1). -* Może zawierać błędy. Włączenie tej funkcjonalności może wyeksponować także inne błędy. Domyślnie jest wyłączona. -* Wsparcie dla tej funkcjonalności może być zakończone w dowolnej chwili bez uprzedniego powiadomienia. -* W kolejnych wersjach API może zostać zmienione w sposób niezgodny z wersjami wcześniejszymi. -* Rekomendowana do użycia tylko na często przebudowywanych klastrach testowych ze względu na duże ryzyko wystąpienia błędów i brak gwarancji wsparcia w dalszym horyzoncie. - diff --git a/content/pl/docs/templates/feature-state-beta.txt b/content/pl/docs/templates/feature-state-beta.txt deleted file mode 100644 index df010ee34d..0000000000 --- a/content/pl/docs/templates/feature-state-beta.txt +++ /dev/null @@ -1,8 +0,0 @@ -Ta funkcjonalność jest w fazie *beta*, co oznacza: - -* Nazwa wersji zawiera słowo beta (np. v2beta3). -* Oprogramowanie jest dobrze przetestowane. Włączenie tej funkcjonalności uznaje się za bezpieczne. Funkcjonalność domyślnie włączona. -* Wsparcie dla funkcjonalności będzie utrzymywane, choć może zmieniać się w niektórych szczegółach. -* Schemat lub semantyka obiektu może się zmienić w sposób niezgodny z poprzednimi wersjami w następnych wydaniach beta lub stabilnych. Jeśli taka zmiana będzie miała miejsce, dostarczymy instrukcję migracji do kolejnej wersji. Możemy wymagać skasowania, zmiany i odtworzenia obiektów API. Proces zmiany może wymagać dodatkowych wstępnych analiz. W czasie wprowadzania zmian mogą wystąpić przerwy w dostępności aplikacji, które z tej funkcjonalności korzystają. -* Rekomendowane tylko dla zastosowań niekrytycznych dla biznesu ze względu na potencjalnie niezgodne zmiany w kolejnych wersjach oprogramowania. Jeśli masz wiele klastrów, które mogą być aktualizowane niezależnie, można to ograniczenie pominąć. -* **Testuj nasze funkcjonalności w fazie beta i zgłaszaj swoje uwagi! Po wyjściu z fazy beta, możemy nie mieć już możliwości - ze względów praktycznych - wprowadzać w nich żadnych zmian.** diff --git a/content/pl/docs/templates/feature-state-deprecated.txt b/content/pl/docs/templates/feature-state-deprecated.txt deleted file mode 100644 index 9ec63cf0f1..0000000000 --- a/content/pl/docs/templates/feature-state-deprecated.txt +++ /dev/null @@ -1,2 +0,0 @@ - -Ta funkcjonalność jest fazie *wycofywania*. Więcej informacji na temat tej fazy jest opisane w [Kubernetes Deprecation Policy](/docs/reference/deprecation-policy/). diff --git a/content/pl/docs/templates/feature-state-stable.txt b/content/pl/docs/templates/feature-state-stable.txt deleted file mode 100644 index f54ae36ac2..0000000000 --- a/content/pl/docs/templates/feature-state-stable.txt +++ /dev/null @@ -1,5 +0,0 @@ - -Ta funkcjonalność jest *stabilna*, co oznacza: - -* Nazwa wersji jest w postaci vX, gdzie X jest liczbą naturalną. -* Stabilne funkcjonalności będą dostępne w wielu kolejnych wersjach oprogramowania. diff --git a/content/pl/docs/templates/index.md b/content/pl/docs/templates/index.md deleted file mode 100644 index 64f3d0c489..0000000000 --- a/content/pl/docs/templates/index.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -headless: true - -resources: -- src: "*alpha*" - title: "alfa" -- src: "*beta*" - title: "beta" -- src: "*deprecated*" - title: "wycofywane" -- src: "*stable*" - title: "stabilne" ---- diff --git a/content/pl/docs/tutorials/hello-minikube.md b/content/pl/docs/tutorials/hello-minikube.md index bee3dd0b65..9e49efe989 100644 --- a/content/pl/docs/tutorials/hello-minikube.md +++ b/content/pl/docs/tutorials/hello-minikube.md @@ -7,7 +7,7 @@ menu: title: "Jak zacząć?" weight: 10 post: > -

    Jesteś gotowy ubrudzić ręce? Zbuduj własny klaster kubernetes z działającą na nim aplikacją "Hello World" w Node.js.

    +

    Jesteś gotowy ubrudzić ręce? Zbuduj własny klaster Kubernetes z działającą na nim przykładową aplikacją.

    card: name: tutorials weight: 10 @@ -15,7 +15,7 @@ card: {{% capture overview %}} -Ten samouczek pokaże, jak uruchomić prostą aplikację Hello World w Node.js +Ten samouczek pokaże, jak uruchomić przykładową aplikację na Kubernetes przy użyciu [Minikube](/docs/setup/learning-environment/minikube) oraz Katacoda. Katacoda to darmowe środowisko Kubernetes dostępne bezpośrednio z przeglądarki web. @@ -27,7 +27,7 @@ Możesz też skorzystać z tego samouczka, jeśli już zainstalowałeś [Minikub {{% capture objectives %}} -* Skonfiguruj aplikację *hello world* do uruchomienia w Minikube. +* Skonfiguruj przykładową aplikację do uruchomienia w Minikube. * Uruchom aplikację. * Przejrzyj jej logi. @@ -35,13 +35,7 @@ Możesz też skorzystać z tego samouczka, jeśli już zainstalowałeś [Minikub {{% capture prerequisites %}} -W tym samouczku wykorzystamy obraz kontenera zbudowany z następujących plików: - -{{< codenew language="js" file="minikube/server.js" >}} - -{{< codenew language="conf" file="minikube/Dockerfile" >}} - -Więcej informacji na temat polecenia `docker build` znajdziesz w [dokumentacji Dockera](https://docs.docker.com/engine/reference/commandline/build/). +W tym samouczku wykorzystamy obraz kontenera, który korzysta z NGINX, aby wyświetlić z powrotem wszystkie przychodzące zapytania. {{% /capture %}} @@ -67,9 +61,10 @@ Więcej informacji na temat polecenia `docker build` znajdziesz w [dokumentacji ## Stwórz Deployment -[*Pod*](/docs/concepts/workloads/pods/pod/) w Kubernetes to grupa jednego lub wielu kontenerów połączonych ze sobą -na potrzeby administrowania i dostępu sieci. W tym samouczku Pod zawiera tylko jeden kontener. -[*Deployment*](/docs/concepts/workloads/controllers/deployment/) w Kubernetes monitoruje stan twojego Poda +[*Pod*](/docs/concepts/workloads/pods/pod/) w Kubernetes to grupa jednego lub wielu kontenerów +połączonych ze sobą na potrzeby administrowania i dostępu sieci. W tym samouczku Pod +zawiera tylko jeden kontener. [*Deployment*](/docs/concepts/workloads/controllers/deployment/) +w Kubernetes monitoruje stan twojego Poda i restartuje należący do niego kontener, jeśli ten z jakichś powodów przestanie działać. Użycie Deploymentu to rekomendowana metoda zarządzania tworzeniem i skalowaniem Podów. @@ -122,9 +117,10 @@ wykorzystując podany obraz Dockera. ## Stwórz Serwis -Domyślnie Pod jest dostępny tylko poprzez swój wewnętrzny adres IP wewnątrz klastra -Kubernetes. Aby kontener `hello-node` był osiągalny spoza wirtualnej sieci Kubernetes, -musisz najpierw wystawić Pod jako [*Serwis*](/docs/concepts/services-networking/service/) Kubernetes, na który można będzie dostać się z zewnątrz. +Domyślnie Pod jest dostępny tylko poprzez swój wewnętrzny adres IP +wewnątrz klastra Kubernetes. Aby kontener `hello-node` był osiągalny spoza +wirtualnej sieci Kubernetes, musisz najpierw udostępnić Pod +jako [*Serwis*](/docs/concepts/services-networking/service/) Kubernetes. 1. Udostępnij Pod w Internecie przy pomocy polecenia `kubectl expose`: @@ -151,7 +147,8 @@ musisz najpierw wystawić Pod jako [*Serwis*](/docs/concepts/services-networking U dostawców usług chmurowych, którzy obsługują *load balancers*, zostanie przydzielony zewnętrzny adres IP na potrzeby serwisu. - W Minikube, typ `LoadBalancer` udostępnia serwis poprzez polecenie `minikube service`. + W Minikube, typ `LoadBalancer` udostępnia serwis poprzez polecenie + `minikube service`. 3. Uruchom poniższe polecenie: @@ -163,7 +160,7 @@ musisz najpierw wystawić Pod jako [*Serwis*](/docs/concepts/services-networking 5. Tylko w Katacoda: Wpisz `30369` (sprawdź numer portu obok `8080` w opisie Serwisu) i kliknij **Display Port** - Otworzy sie okno przeglądarki obsługującej twoją aplikację i wyświetli w nim komunikat "Hello World". + Otworzy sie okno przeglądarki obsługującej twoją aplikację i wyświetli odpowiedź tej aplikacji. ## Włącz dodatki @@ -230,13 +227,12 @@ Minikube ma zestaw wbudowanych {{< glossary_tooltip text="dodatków" term_id="ad pod/kube-proxy-rnlps 1/1 Running 0 34m pod/kube-scheduler-minikube 1/1 Running 0 34m pod/storage-provisioner 1/1 Running 0 34m - - NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE - service/metrics-server ClusterIP 10.96.241.45 80/TCP 26s - service/kube-dns ClusterIP 10.96.0.10 53/UDP,53/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/metrics-server ClusterIP 10.96.241.45 80/TCP 26s + service/kube-dns ClusterIP 10.96.0.10 53/UDP,53/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 ``` 4. Wyłącz dodatek `metrics-server`: @@ -248,7 +244,7 @@ Minikube ma zestaw wbudowanych {{< glossary_tooltip text="dodatków" term_id="ad Wynik powinien wyglądać podobnie do: ``` - heapster was successfully metrics-server + metrics-server was successfully disabled ``` ## Porządkujemy po sobie diff --git a/content/pl/examples/minikube/Dockerfile b/content/pl/examples/minikube/Dockerfile deleted file mode 100644 index dd58cb7e75..0000000000 --- a/content/pl/examples/minikube/Dockerfile +++ /dev/null @@ -1,4 +0,0 @@ -FROM node:6.14.2 -EXPOSE 8080 -COPY server.js . -CMD [ "node", "server.js" ] diff --git a/content/pl/examples/minikube/server.js b/content/pl/examples/minikube/server.js deleted file mode 100644 index 76345a17d8..0000000000 --- a/content/pl/examples/minikube/server.js +++ /dev/null @@ -1,9 +0,0 @@ -var http = require('http'); - -var handleRequest = function(request, response) { - console.log('Received request for URL: ' + request.url); - response.writeHead(200); - response.end('Hello World!'); -}; -var www = http.createServer(handleRequest); -www.listen(8080); From 8232eb30feca94909bebd43aac12678a8dce377c Mon Sep 17 00:00:00 2001 From: Jim Angel Date: Thu, 14 May 2020 08:58:30 -0500 Subject: [PATCH 47/66] reformat kubeadm upgrade page --- .../kubeadm/kubeadm-upgrade.md | 136 +++++++++--------- 1 file changed, 68 insertions(+), 68 deletions(-) diff --git a/content/en/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade.md b/content/en/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade.md index 6e7cfe079d..f0368ecaf9 100644 --- a/content/en/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade.md +++ b/content/en/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade.md @@ -50,59 +50,59 @@ The upgrade workflow at high level is the following: ## Determine which version to upgrade to -1. Find the latest stable 1.18 version: +Find the latest stable 1.18 version: - {{< tabs name="k8s_install_versions" >}} - {{% tab name="Ubuntu, Debian or HypriotOS" %}} +{{< tabs name="k8s_install_versions" >}} +{{% tab name="Ubuntu, Debian or HypriotOS" %}} apt update apt-cache madison kubeadm # find the latest 1.18 version in the list # it should look like 1.18.x-00, where x is the latest patch - {{% /tab %}} - {{% tab name="CentOS, RHEL or Fedora" %}} +{{% /tab %}} +{{% tab name="CentOS, RHEL or Fedora" %}} yum list --showduplicates kubeadm --disableexcludes=kubernetes # find the latest 1.18 version in the list # it should look like 1.18.x-0, where x is the latest patch - {{% /tab %}} - {{< /tabs >}} +{{% /tab %}} +{{< /tabs >}} ## Upgrading control plane nodes ### Upgrade the first control plane node -1. On your first control plane node, upgrade kubeadm: +- On your first control plane node, upgrade kubeadm: - {{< tabs name="k8s_install_kubeadm_first_cp" >}} - {{% tab name="Ubuntu, Debian or HypriotOS" %}} +{{< tabs name="k8s_install_kubeadm_first_cp" >}} +{{% tab name="Ubuntu, Debian or HypriotOS" %}} # replace x in 1.18.x-00 with the latest patch version apt-mark unhold kubeadm && \ apt-get update && apt-get install -y kubeadm=1.18.x-00 && \ apt-mark hold kubeadm - + - # since apt-get version 1.1 you can also use the following method apt-get update && \ apt-get install -y --allow-change-held-packages kubeadm=1.18.x-00 - {{% /tab %}} - {{% tab name="CentOS, RHEL or Fedora" %}} +{{% /tab %}} +{{% tab name="CentOS, RHEL or Fedora" %}} # replace x in 1.18.x-0 with the latest patch version yum install -y kubeadm-1.18.x-0 --disableexcludes=kubernetes - {{% /tab %}} - {{< /tabs >}} +{{% /tab %}} +{{< /tabs >}} -1. Verify that the download works and has the expected version: +- Verify that the download works and has the expected version: ```shell kubeadm version ``` -1. Drain the control plane node: +- Drain the control plane node: ```shell # replace with the name of your control plane node kubectl drain --ignore-daemonsets ``` -1. On the control plane node, run: +- On the control plane node, run: ```shell sudo kubeadm upgrade plan @@ -145,13 +145,13 @@ The upgrade workflow at high level is the following: This command checks that your cluster can be upgraded, and fetches the versions you can upgrade to. - {{< note >}} - `kubeadm upgrade` also automatically renews the certificates that it manages on this node. - To opt-out of certificate renewal the flag `--certificate-renewal=false` can be used. - For more information see the [certificate management guide](/docs/tasks/administer-cluster/kubeadm/kubeadm-certs). - {{}} +{{< note >}} +`kubeadm upgrade` also automatically renews the certificates that it manages on this node. +To opt-out of certificate renewal the flag `--certificate-renewal=false` can be used. +For more information see the [certificate management guide](/docs/tasks/administer-cluster/kubeadmkubeadm-certs). +{{}} -1. Choose a version to upgrade to, and run the appropriate command. For example: +- Choose a version to upgrade to, and run the appropriate command. For example: ```shell # replace x with the patch version you picked for this upgrade @@ -240,7 +240,7 @@ The upgrade workflow at high level is the following: [upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven't already done so. ``` -1. Manually upgrade your CNI provider plugin. +- Manually upgrade your CNI provider plugin. Your Container Network Interface (CNI) provider may have its own upgrade instructions to follow. Check the [addons](/docs/concepts/cluster-administration/addons/) page to @@ -248,7 +248,7 @@ The upgrade workflow at high level is the following: This step is not required on additional control plane nodes if the CNI provider runs as a DaemonSet. -1. Uncordon the control plane node: +- Uncordon the control plane node: ```shell # replace with the name of your control plane node @@ -257,46 +257,46 @@ The upgrade workflow at high level is the following: ### Upgrade additional control plane nodes -1. Same as the first control plane node but use: +Same as the first control plane node but use: - ``` - sudo kubeadm upgrade node - ``` +``` +sudo kubeadm upgrade node +``` - instead of: +instead of: - ``` - sudo kubeadm upgrade apply - ``` +``` +sudo kubeadm upgrade apply +``` - Also `sudo kubeadm upgrade plan` is not needed. +Also `sudo kubeadm upgrade plan` is not needed. ### Upgrade kubelet and kubectl -1. Upgrade the kubelet and kubectl on all control plane nodes: +Upgrade the kubelet and kubectl on all control plane nodes: - {{< tabs name="k8s_install_kubelet" >}} - {{% tab name="Ubuntu, Debian or HypriotOS" %}} +{{< tabs name="k8s_install_kubelet" >}} +{{% tab name="Ubuntu, Debian or HypriotOS" %}} # replace x in 1.18.x-00 with the latest patch version apt-mark unhold kubelet kubectl && \ apt-get update && apt-get install -y kubelet=1.18.x-00 kubectl=1.18.x-00 && \ apt-mark hold kubelet kubectl - + - # since apt-get version 1.1 you can also use the following method apt-get update && \ apt-get install -y --allow-change-held-packages kubelet=1.18.x-00 kubectl=1.18.x-00 - {{% /tab %}} - {{% tab name="CentOS, RHEL or Fedora" %}} +{{% /tab %}} +{{% tab name="CentOS, RHEL or Fedora" %}} # replace x in 1.18.x-0 with the latest patch version yum install -y kubelet-1.18.x-0 kubectl-1.18.x-0 --disableexcludes=kubernetes - {{% /tab %}} - {{< /tabs >}} +{{% /tab %}} +{{< /tabs >}} -1. Restart the kubelet +Restart the kubelet - ```shell - sudo systemctl restart kubelet - ``` +```shell +sudo systemctl restart kubelet +``` ## Upgrade worker nodes @@ -305,28 +305,28 @@ without compromising the minimum required capacity for running your workloads. ### Upgrade kubeadm -1. Upgrade kubeadm on all worker nodes: +- Upgrade kubeadm on all worker nodes: - {{< tabs name="k8s_install_kubeadm_worker_nodes" >}} - {{% tab name="Ubuntu, Debian or HypriotOS" %}} +{{< tabs name="k8s_install_kubeadm_worker_nodes" >}} +{{% tab name="Ubuntu, Debian or HypriotOS" %}} # replace x in 1.18.x-00 with the latest patch version apt-mark unhold kubeadm && \ apt-get update && apt-get install -y kubeadm=1.18.x-00 && \ apt-mark hold kubeadm - + - # since apt-get version 1.1 you can also use the following method apt-get update && \ apt-get install -y --allow-change-held-packages kubeadm=1.18.x-00 - {{% /tab %}} - {{% tab name="CentOS, RHEL or Fedora" %}} +{{% /tab %}} +{{% tab name="CentOS, RHEL or Fedora" %}} # replace x in 1.18.x-0 with the latest patch version yum install -y kubeadm-1.18.x-0 --disableexcludes=kubernetes - {{% /tab %}} - {{< /tabs >}} +{{% /tab %}} +{{< /tabs >}} ### Drain the node -1. Prepare the node for maintenance by marking it unschedulable and evicting the workloads: +- Prepare the node for maintenance by marking it unschedulable and evicting the workloads: ```shell # replace with the name of your node you are draining @@ -343,7 +343,7 @@ without compromising the minimum required capacity for running your workloads. ### Upgrade the kubelet configuration -1. Call the following command: +- Call the following command: ```shell sudo kubeadm upgrade node @@ -351,26 +351,26 @@ without compromising the minimum required capacity for running your workloads. ### Upgrade kubelet and kubectl -1. Upgrade the kubelet and kubectl on all worker nodes: +- Upgrade the kubelet and kubectl on all worker nodes: - {{< tabs name="k8s_kubelet_and_kubectl" >}} - {{% tab name="Ubuntu, Debian or HypriotOS" %}} +{{< tabs name="k8s_kubelet_and_kubectl" >}} +{{% tab name="Ubuntu, Debian or HypriotOS" %}} # replace x in 1.18.x-00 with the latest patch version apt-mark unhold kubelet kubectl && \ apt-get update && apt-get install -y kubelet=1.18.x-00 kubectl=1.18.x-00 && \ apt-mark hold kubelet kubectl - + - # since apt-get version 1.1 you can also use the following method apt-get update && \ apt-get install -y --allow-change-held-packages kubelet=1.18.x-00 kubectl=1.18.x-00 - {{% /tab %}} - {{% tab name="CentOS, RHEL or Fedora" %}} +{{% /tab %}} +{{% tab name="CentOS, RHEL or Fedora" %}} # replace x in 1.18.x-0 with the latest patch version yum install -y kubelet-1.18.x-0 kubectl-1.18.x-0 --disableexcludes=kubernetes - {{% /tab %}} - {{< /tabs >}} +{{% /tab %}} +{{< /tabs >}} -1. Restart the kubelet +- Restart the kubelet ```shell sudo systemctl restart kubelet @@ -378,7 +378,7 @@ without compromising the minimum required capacity for running your workloads. ### Uncordon the node -1. Bring the node back online by marking it schedulable: +- Bring the node back online by marking it schedulable: ```shell # replace with the name of your node @@ -441,4 +441,4 @@ and post-upgrade manifest file for a certain component, a backup file for it wil `kubeadm upgrade node` does the following on worker nodes: - Fetches the kubeadm `ClusterConfiguration` from the cluster. -- Upgrades the kubelet configuration for this node. +- Upgrades the kubelet configuration for this node. \ No newline at end of file From 679b35a569218dd510fab577b6578e01599e3ac2 Mon Sep 17 00:00:00 2001 From: Tim Bannister Date: Thu, 14 May 2020 18:19:15 +0100 Subject: [PATCH 48/66] Fix Markdown for CustomResourceDefinition task --- .../custom-resource-definitions.md | 80 ++++++++++++------- 1 file changed, 53 insertions(+), 27 deletions(-) diff --git a/content/en/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions.md b/content/en/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions.md index 91235312d2..4fcd389ba2 100644 --- a/content/en/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions.md +++ b/content/en/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions.md @@ -28,6 +28,7 @@ into the Kubernetes API by creating a {{% /capture %}} {{% capture steps %}} + ## Create a CustomResourceDefinition When you create a new CustomResourceDefinition (CRD), the Kubernetes API Server @@ -41,6 +42,7 @@ For example, if you save the following CustomResourceDefinition to `resourcedefi {{< tabs name="CustomResourceDefinition_example_1" >}} {{% tab name="apiextensions.k8s.io/v1" %}} + ```yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition @@ -83,8 +85,10 @@ spec: shortNames: - ct ``` + {{% /tab %}} {{% tab name="apiextensions.k8s.io/v1beta1" %}} + ```yaml # Deprecated in v1.16 in favor of apiextensions.k8s.io/v1 apiVersion: apiextensions.k8s.io/v1beta1 @@ -129,6 +133,7 @@ spec: replicas: type: integer ``` + {{% /tab %}} {{< /tabs >}} @@ -188,7 +193,7 @@ kubectl get crontab Should print a list like this: -```console +```none NAME AGE my-new-cron-object 6s ``` @@ -205,7 +210,7 @@ kubectl get ct -o yaml You should see that it contains the custom `cronSpec` and `image` fields from the yaml you used to create it: -```console +```yaml apiVersion: v1 kind: List items: @@ -228,14 +233,14 @@ metadata: ## Delete a CustomResourceDefinition When you delete a CustomResourceDefinition, the server will uninstall the RESTful API endpoint -and **delete all custom objects stored in it**. +and delete all custom objects stored in it. ```shell kubectl delete -f resourcedefinition.yaml kubectl get crontabs ``` -```console +```none Error from server (NotFound): Unable to list {"stable.example.com" "v1" "crontabs"}: the server could not find the requested resource (get crontabs.stable.example.com) ``` @@ -630,7 +635,9 @@ These fields can only be set with specific features enabled: - `default`: can be set for `apiextensions.k8s.io/v1` CustomResourceDefinitions. Defaulting is in GA since 1.17 (beta since 1.16 with the `CustomResourceDefaulting` feature gate to be enabled, which is the case automatically for many clusters for beta features). Compare [Validation Schema Defaulting](/docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/#defaulting). -Note: compare with [structural schemas](#specifying-a-structural-schema) for further restriction required for certain CustomResourceDefinition features. +{{< note >}} +Compare with [structural schemas](#specifying-a-structural-schema) for further restriction required for certain CustomResourceDefinition features. +{{< /note >}} The schema is defined in the CustomResourceDefinition. In the following example, the CustomResourceDefinition applies the following validations on the custom object: @@ -642,6 +649,7 @@ Save the CustomResourceDefinition to `resourcedefinition.yaml`: {{< tabs name="CustomResourceDefinition_validation" >}} {{% tab name="apiextensions.k8s.io/v1" %}} + ```yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition @@ -676,8 +684,10 @@ spec: shortNames: - ct ``` + {{% /tab %}} {{% tab name="apiextensions.k8s.io/v1beta1" %}} + ```yaml # Deprecated in v1.16 in favor of apiextensions.k8s.io/v1 apiVersion: apiextensions.k8s.io/v1beta1 @@ -714,6 +724,7 @@ spec: minimum: 1 maximum: 10 ``` + {{% /tab %}} {{< /tabs >}} @@ -852,7 +863,7 @@ spec: replicas: 1 ``` -Note that defaulting happens on the object +Defaulting happens on the object * in the request to the API server using the request version defaults, * when reading from etcd using the storage version defaults, @@ -895,9 +906,11 @@ columns are shown by the `kubectl get` command. You can customize these columns CustomResourceDefinition. The following example adds the `Spec`, `Replicas`, and `Age` columns. -1. Save the CustomResourceDefinition to `resourcedefinition.yaml`. - {{< tabs name="CustomResourceDefinition_printer_columns" >}} - {{% tab name="apiextensions.k8s.io/v1" %}} +Save the CustomResourceDefinition to `resourcedefinition.yaml`: + +{{< tabs name="CustomResourceDefinition_printer_columns" >}} +{{% tab name="apiextensions.k8s.io/v1" %}} + ```yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition @@ -942,8 +955,10 @@ spec: type: date jsonPath: .metadata.creationTimestamp ``` - {{% /tab %}} - {{% tab name="apiextensions.k8s.io/v1beta1" %}} + +{{% /tab %}} +{{% tab name="apiextensions.k8s.io/v1beta1" %}} + ```yaml # Deprecated in v1.16 in favor of apiextensions.k8s.io/v1 apiVersion: apiextensions.k8s.io/v1beta1 @@ -986,31 +1001,34 @@ spec: type: date JSONPath: .metadata.creationTimestamp ``` - {{% /tab %}} - {{< /tabs >}} -2. Create the CustomResourceDefinition: +{{% /tab %}} +{{< /tabs >}} - ```shell - kubectl apply -f resourcedefinition.yaml - ``` +Create the CustomResourceDefinition: -3. Create an instance using the `my-crontab.yaml` from the previous section. +```shell +kubectl apply -f resourcedefinition.yaml +``` -4. Invoke the server-side printing: +Create an instance using the `my-crontab.yaml` from the previous section. - ```shell - kubectl get crontab my-new-cron-object - ``` +Invoke the server-side printing: - Notice the `NAME`, `SPEC`, `REPLICAS`, and `AGE` columns in the output: +```shell +kubectl get crontab my-new-cron-object +``` - ``` - NAME SPEC REPLICAS AGE - my-new-cron-object * * * * * 1 7s - ``` +Notice the `NAME`, `SPEC`, `REPLICAS`, and `AGE` columns in the output: +``` +NAME SPEC REPLICAS AGE +my-new-cron-object * * * * * 1 7s +``` + +{{< note >}} The `NAME` column is implicit and does not need to be defined in the CustomResourceDefinition. +{{< /note >}} #### Priority @@ -1133,6 +1151,7 @@ Save the CustomResourceDefinition to `resourcedefinition.yaml`: {{< tabs name="CustomResourceDefinition_scale" >}} {{% tab name="apiextensions.k8s.io/v1" %}} + ```yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition @@ -1184,8 +1203,10 @@ spec: shortNames: - ct ``` + {{% /tab %}} {{% tab name="apiextensions.k8s.io/v1beta1" %}} + ```yaml # Deprecated in v1.16 in favor of apiextensions.k8s.io/v1 apiVersion: apiextensions.k8s.io/v1beta1 @@ -1238,6 +1259,7 @@ spec: # labelSelectorPath defines the JSONPath inside of a custom resource that corresponds to Scale.Status.Selector. labelSelectorPath: .status.labelSelector ``` + {{% /tab %}} {{< /tabs >}} @@ -1307,6 +1329,7 @@ Save the following CustomResourceDefinition to `resourcedefinition.yaml`: {{< tabs name="CustomResourceDefinition_categories" >}} {{% tab name="apiextensions.k8s.io/v1" %}} + ```yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition @@ -1342,8 +1365,10 @@ spec: categories: - all ``` + {{% /tab %}} {{% tab name="apiextensions.k8s.io/v1beta1" %}} + ```yaml # Deprecated in v1.16 in favor of apiextensions.k8s.io/v1 apiVersion: apiextensions.k8s.io/v1beta1 @@ -1380,6 +1405,7 @@ spec: categories: - all ``` + {{% /tab %}} {{< /tabs >}} From c5915cb7224a1502960023a977b0532517833665 Mon Sep 17 00:00:00 2001 From: Divya Bhushan Date: Thu, 14 May 2020 23:39:36 +0200 Subject: [PATCH 49/66] #20970-fixed broken link in concepts/workloads/controllers/statefulset/ --- content/en/docs/concepts/workloads/controllers/statefulset.md | 2 +- content/es/docs/concepts/workloads/controllers/statefulset.md | 2 +- content/id/docs/concepts/workloads/controllers/statefulset.md | 2 +- content/ja/docs/concepts/workloads/controllers/statefulset.md | 2 +- content/ko/docs/concepts/workloads/controllers/statefulset.md | 2 +- content/zh/docs/concepts/workloads/controllers/statefulset.md | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/content/en/docs/concepts/workloads/controllers/statefulset.md b/content/en/docs/concepts/workloads/controllers/statefulset.md index aa6a07788b..661955cb48 100644 --- a/content/en/docs/concepts/workloads/controllers/statefulset.md +++ b/content/en/docs/concepts/workloads/controllers/statefulset.md @@ -156,7 +156,7 @@ Cluster Domain | Service (ns/name) | StatefulSet (ns/name) | StatefulSet Domain {{< note >}} Cluster Domain will be set to `cluster.local` unless -[otherwise configured](/docs/concepts/services-networking/dns-pod-service/#how-it-works). +[otherwise configured](/docs/concepts/services-networking/dns-pod-service/). {{< /note >}} ### Stable Storage diff --git a/content/es/docs/concepts/workloads/controllers/statefulset.md b/content/es/docs/concepts/workloads/controllers/statefulset.md index 096600bb33..390fdc21fe 100644 --- a/content/es/docs/concepts/workloads/controllers/statefulset.md +++ b/content/es/docs/concepts/workloads/controllers/statefulset.md @@ -146,7 +146,7 @@ Cluster Domain | Service (ns/nombre) | StatefulSet (ns/nombre) | StatefulSet Do {{< note >}} El valor de Cluster Domain se pondrá a `cluster.local` a menos que -[se configure de otra forma](/docs/concepts/services-networking/dns-pod-service/#how-it-works). +[se configure de otra forma](/docs/concepts/services-networking/dns-pod-service/). {{< /note >}} ### Almacenamiento estable diff --git a/content/id/docs/concepts/workloads/controllers/statefulset.md b/content/id/docs/concepts/workloads/controllers/statefulset.md index ad30b831e0..df85a59d39 100644 --- a/content/id/docs/concepts/workloads/controllers/statefulset.md +++ b/content/id/docs/concepts/workloads/controllers/statefulset.md @@ -147,7 +147,7 @@ Domain Klaster | Service (ns/nama) | StatefulSet (ns/nama) | Domain StatefulSet {{< note >}} Domain klaster akan diatur menjadi `cluster.local` kecuali -[nilainya dikonfigurasi](/docs/concepts/services-networking/dns-pod-service/#how-it-works). +[nilainya dikonfigurasi](/docs/concepts/services-networking/dns-pod-service/). {{< /note >}} ### Penyimpanan Stabil diff --git a/content/ja/docs/concepts/workloads/controllers/statefulset.md b/content/ja/docs/concepts/workloads/controllers/statefulset.md index f3a5dfd394..90de9d1a40 100644 --- a/content/ja/docs/concepts/workloads/controllers/statefulset.md +++ b/content/ja/docs/concepts/workloads/controllers/statefulset.md @@ -131,7 +131,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 >}} -クラスタードメインは[その他の設定](/docs/concepts/services-networking/dns-pod-service/#how-it-works)がされない限り、`cluster.local`にセットされます。 +クラスタードメインは[その他の設定](/docs/concepts/services-networking/dns-pod-service/)がされない限り、`cluster.local`にセットされます。 {{< /note >}} ### 安定したストレージ diff --git a/content/ko/docs/concepts/workloads/controllers/statefulset.md b/content/ko/docs/concepts/workloads/controllers/statefulset.md index e373984219..e83c02b50d 100644 --- a/content/ko/docs/concepts/workloads/controllers/statefulset.md +++ b/content/ko/docs/concepts/workloads/controllers/statefulset.md @@ -147,7 +147,7 @@ N개의 레플리카가 있는 스테이트풀셋은 스테이트풀셋에 있 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 >}} -클러스터 도메인이 달리 [구성된 경우](/ko/docs/concepts/services-networking/dns-pod-service/#how-it-works)가 +클러스터 도메인이 달리 [구성된 경우](/ko/docs/concepts/services-networking/dns-pod-service/)가 아니라면 `cluster.local`로 설정된다. {{< /note >}} diff --git a/content/zh/docs/concepts/workloads/controllers/statefulset.md b/content/zh/docs/concepts/workloads/controllers/statefulset.md index f901028f3c..9fc134f487 100644 --- a/content/zh/docs/concepts/workloads/controllers/statefulset.md +++ b/content/zh/docs/concepts/workloads/controllers/statefulset.md @@ -227,7 +227,7 @@ Cluster Domain will be set to `cluster.local` unless [otherwise configured](/docs/concepts/services-networking/dns-pod-service/#how-it-works). --> {{< note >}} -集群域会被设置为 `cluster.local`,除非有[其他配置](/docs/concepts/services-networking/dns-pod-service/#how-it-works)。 +集群域会被设置为 `cluster.local`,除非有[其他配置](/docs/concepts/services-networking/dns-pod-service/)。 {{< /note >}} +{{< feature-state for_k8s_version="v1.10" state="beta" >}} + +노드에는 로컬에 연결된 쓰기 가능 장치 또는, 때로는 RAM에 의해 +지원되는 로컬 임시 스토리지가 있다. +"임시"는 내구성에 대한 장기간의 보증이 없음을 의미한다. + +파드는 스크래치 공간, 캐싱 및 로그에 대해 임시 로컬 스토리지를 사용한다. +kubelet은 로컬 임시 스토리지를 사용하여 컨테이너에 +[`emptyDir`](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir) +{{< glossary_tooltip term_id="volume" text="볼륨" >}}을 마운트하기 위해 파드에 스크래치 공간을 제공할 수 있다. + +kubelet은 이러한 종류의 스토리지를 사용하여 +[노드-레벨 컨테이너 로그](/ko/docs/concepts/cluster-administration/logging/#노드-레벨에서의-로깅), +컨테이너 이미지 및 실행 중인 컨테이너의 쓰기 가능 계층을 보유한다. + +{{< caution >}} +노드가 실패하면, 임시 스토리지의 데이터가 손실될 수 있다. +애플리케이션은 로컬 임시 스토리지에서 성능에 대한 SLA(예: 디스크 IOPS)를 +기대할 수 없다. +{{< /caution >}} + +베타 기능에서, 쿠버네티스는 파드가 사용할 수 있는 임시 로컬 스토리지의 양을 +추적, 예약 및 제한할 수 있도록 해준다. + +### 로컬 임시 스토리지 구성 + +쿠버네티스는 노드에서 로컬 임시 스토리지를 구성하는 두 가지 방법을 지원한다. +{{< tabs name="local_storage_configurations" >}} +{{% tab name="단일 파일시스템" %}} +이 구성에서, 모든 종류의 임시 로컬 데이터(`emptyDir` 볼륨, +쓰기 가능 계층, 컨테이너 이미지, 로그)를 하나의 파일시스템에 배치한다. +kubelet을 구성하는 가장 효과적인 방법은 이 파일시스템을 쿠버네티스(kubelet) 데이터 전용으로 +하는 것이다. + +kubelet은 또한 +[노드-레벨 컨테이너 로그](/ko/docs/concepts/cluster-administration/logging/#노드-레벨에서의-로깅)를 +작성하고 임시 로컬 스토리지와 유사하게 처리한다. + +kubelet은 구성된 로그 디렉터리 내의 파일에 로그를 기록한다(기본적으로 +`/var/log`). 그리고 로컬에 저장된 다른 데이터에 대한 기본 디렉터리가 있다(기본적으로 +`/var/lib/kubelet`). + +일반적으로, `/var/lib/kubelet` 와 `/var/log` 모두 시스템 루트 파일시스템에 위치하고, +그리고 kubelet은 이런 레이아웃을 염두에 두고 설계되었다. + +노드는 쿠버네티스에서 사용하지 않는 다른 많은 파일시스템을 +가질 수 있다. +{{% /tab %}} +{{% tab name="두 개의 파일시스템" %}} +사용하고 있는 노드에 실행 중인 파드에서 발생하는 임시 데이터를 +위한 파일시스템을 가진다(로그와 `emptyDir` 볼륨). 이 파일시스템을 +다른 데이터(예를 들어, 쿠버네티스와 관련없는 시스템 로그)를 위해 사용할 수 있다. 이 파일시스템은 +루트 파일시스템일 수도 있다. + +kubelet은 또한 +[노드-레벨 컨테이너 로그](/ko/docs/concepts/cluster-administration/logging/#노드-레벨에서의-로깅)를 +첫 번째 파일시스템에 기록하고, 임시 로컬 스토리지와 유사하게 처리한다. + +또한 다른 논리 스토리지 장치가 지원하는 별도의 파일시스템을 사용한다. +이 구성에서, 컨테이너 이미지 계층과 쓰기 가능한 계층을 배치하도록 +kubelet에 지시하는 디렉터리는 이 두 번째 파일시스템에 있다. + +첫 번째 파일시스템에는 이미지 계층이나 쓰기 가능한 계층이 없다. + +노드는 쿠버네티스에서 사용하지 않는 다른 많은 파일시스템을 +가질 수 있다. +{{% /tab %}} +{{< /tabs >}} + +kubelet은 사용 중인 로컬 스토리지 양을 측정할 수 있다. 이것은 다음을 +제공한다. + +- `LocalStorageCapacityIsolation` + [기능 게이트](/docs/reference/command-line-tools-reference/feature-gates/)(이 + 기능이 기본적으로 설정되어 있음)를 활성화하고, +- 로컬 임시 스토리지에 대한 지원되는 구성 중 하나를 + 사용하여 노드를 설정한다. + +다른 구성을 사용하는 경우, kubelet은 임시 로컬 스토리지에 대한 리소스 +제한을 적용하지 않는다. + +{{< note >}} +kubelet은 로컬 임시 스토리지가 아닌 컨테이너 메모리 사용으로 +`tmpfs` emptyDir 볼륨을 추적한다. +{{< /note >}} + +### 로컬 임시 스토리지에 대한 요청 및 제한 설정 + +_임시-스토리지_ 를 사용하여 로컬 임시 저장소를 관리할 수 있다. 파드의 각 컨테이너는 다음 중 하나 이상을 지정할 수 있다. + +* `spec.containers[].resources.limits.ephemeral-storage` +* `spec.containers[].resources.requests.ephemeral-storage` + +`ephemeral-storage` 에 대한 제한 및 요청은 바이트 단위로 측정된다. E, P, T, G, M, K와 +같은 접미사 중 하나를 사용하여 스토리지를 일반 정수 또는 고정 소수점 정수로 표현할 수 있다. +Ei, Pi, Ti, Gi, Mi, Ki와 같은 2의 거듭제곱을 사용할 수도 있다. +예를 들어, 다음은 대략 동일한 값을 나타낸다. + +```shell +128974848, 129e6, 129M, 123Mi +``` + +다음 예에서, 파드에 두 개의 컨테이너가 있다. 각 컨테이너에는 2GiB의 로컬 임시 스토리지 요청이 있다. 각 컨테이너에는 4GiB의 로컬 임시 스토리지 제한이 있다. 따라서, 파드는 4GiB의 로컬 임시 스토리지 요청과 8GiB 스토리지 제한을 가진다. + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: frontend +spec: + containers: + - name: db + image: mysql + env: + - name: MYSQL_ROOT_PASSWORD + value: "password" + resources: + requests: + ephemeral-storage: "2Gi" + limits: + ephemeral-storage: "4Gi" + - name: wp + image: wordpress + resources: + requests: + ephemeral-storage: "2Gi" + limits: + ephemeral-storage: "4Gi" +``` + +### 임시-스토리지 요청이 있는 파드의 스케줄링 방법 + +파드를 생성할 때, 쿠버네티스 스케줄러는 파드를 실행할 노드를 +선택한다. 각 노드에는 파드에 제공할 수 있는 최대 임시 스토리지 공간이 있다. 자세한 정보는, [노드 할당 가능](/docs/tasks/administer-cluster/reserve-compute-resources/#node-allocatable)을 참조한다. + +스케줄러는 스케줄된 컨테이너의 리소스 요청 합계가 노드 용량보다 작도록 한다. + +### 임시 스토리지 소비 관리 {#resource-emphemeralstorage-consumption} + +kubelet이 로컬 임시 스토리지를 리소스로 관리하는 경우, +kubelet은 다음에서 스토리지 사용을 측정한다. + +- _tmpfs_ `emptyDir` 볼륨을 제외한 `emptyDir` 볼륨 +- 노드-레벨 로그가 있는 디렉터리 +- 쓰기 가능한 컨테이너 계층 + +허용하는 것보다 더 많은 임시 스토리지를 파드가 사용하는 경우, kubelet은 +파드 축출을 트리거하는 축출 신호를 설정한다. + +컨테이너-레벨 격리의 경우, 컨테이너의 쓰기 가능한 계층과 로그 +사용량이 스토리지 제한을 초과하면, kubelet은 파드를 축출하도록 표시한다. + +파드-레벨 격리에 대해 kubelet은 해당 파드의 컨테이너에 대한 제한을 합하여 +전체 파드 스토리지 제한을 해결한다. 이 경우, 모든 +컨테이너와 파드의 `emptyDir` 볼륨의 로컬 임시 스토리지 사용량 합계가 +전체 파드 스토리지 제한을 초과하면, kubelet은 파드를 축출 대상으로 +표시한다. + +{{< caution >}} +kubelet이 로컬 임시 스토리지를 측정하지 않는 경우, +로컬 스토리지 제한을 초과하는 파드는 로컬 스토리지 리소스 제한을 +위반해도 축출되지 않는다. + +그러나, 쓰기 가능한 컨테이너 계층, 노드-레벨 로그 +또는 `emptyDir` 볼륨의 파일 시스템 공간이 부족하면, 로컬 +스토리지가 부족하다고 노드 자체에 {{< glossary_tooltip text="테인트" term_id="taint" >}}되고 +이로인해 특별히 이 테인트를 허용하지 않는 모든 파드를 축출하도록 트리거한다. + +임시 로컬 스토리지에 대해 지원되는 [구성](#로컬-임시-스토리지-구성)을 +참조한다. +{{< /caution >}} + +kubelet은 파드 스토리지 사용을 측정하는 다양한 방법을 지원한다. + +{{< tabs name="resource-emphemeralstorage-measurement" >}} +{{% tab name="주기적 스캐닝" %}} +kubelet은 각 `emptyDir` 볼륨, 컨테이너 로그 디렉터리 및 쓰기 가능한 컨테이너 계층을 +스캔하는 정기적인 스케줄 검사를 수행한다. + +스캔은 사용된 공간의 양을 측정한다. + +{{< note >}} +이 모드에서, kubelet은 삭제된 파일의 열린 파일 디스크립터를 +추적하지 않는다. + +여러분(또는 컨테이너)이 `emptyDir` 볼륨 안에 파일을 생성하면, +그 파일이 열리고, 파일이 열려있는 동안 파일을 +삭제하면, 삭제된 파일의 inode는 해당 파일을 닫을 때까지 +유지되지만 kubelet은 사용 중인 공간으로 분류하지 않는다. +{{< /note >}} +{{% /tab %}} +{{% tab name="파일시스템 프로젝트 쿼터" %}} + +{{< feature-state for_k8s_version="v1.15" state="alpha" >}} + +프로젝트 쿼터는 파일시스템에서 스토리지 사용을 관리하기 위한 +운영체제 레벨의 기능이다. 쿠버네티스를 사용하면, 스토리지 사용을 +모니터링하기 위해 프로젝트 쿼터를 사용할 수 있다. 노드에서 'emptyDir' 볼륨을 +지원하는 파일시스템이 프로젝트 쿼터 지원을 제공하는지 확인한다. +예를 들어, XFS와 ext4fs는 프로젝트 쿼터를 지원한다. + +{{< note >}} +프로젝트 쿼터를 통해 스토리지 사용을 모니터링할 수 있다. 이는 제한을 강제하지 않는다. +{{< /note >}} + +쿠버네티스는 `1048576` 부터 프로젝트 ID를 사용한다. 사용 중인 ID는 +`/etc/projects` 와 `/etc/projid` 에 등록되어 있다. 이 범위의 프로젝트 ID가 +시스템에서 다른 목적으로 사용되는 경우, 쿠버네티스가 +이를 사용하지 않도록 해당 프로젝트 ID를 `/etc/projects` 와 `/etc/projid` 에 +등록해야 한다. + +쿼터는 디렉터리 검색보다 빠르고 정확하다. 디렉터리가 +프로젝트에 할당되면, 디렉터리 아래에 생성된 +모든 파일이 해당 프로젝트에 생성되며, 커널은 해당 프로젝트의 +파일에서 사용 중인 블록 수를 추적하기만 하면 된다. +파일이 생성되고 삭제되었지만, 열린 파일 디스크립터가 있으면, +계속 공간을 소비한다. 쿼터 추적은 공간을 정확하게 기록하는 반면 +디렉터리 스캔은 삭제된 파일이 사용한 스토리지를 간과한다. + +프로젝트 쿼터를 사용하려면, 다음을 수행해야 한다. + +* kubelet 구성에서 `LocalStorageCapacityIsolationFSQuotaMonitoring=true` + [기능 게이트](/docs/reference/command-line-tools-reference/feature-gates/)를 + 활성화한다. + +* 루트 파일시스템(또는 선택적인 런타임 파일시스템)에 + 프로젝트 쿼터가 활성화되어 있는지 확인한다. 모든 XFS 파일시스템은 프로젝트 쿼터를 지원한다. + ext4 파일시스템의 경우, 파일시스템이 마운트되지 않은 상태에서 프로젝트 쿼터 + 추적 기능을 활성화해야 한다. + ```bash + # ext4인 /dev/block-device가 마운트되지 않은 경우 + sudo tune2fs -O project -Q prjquota /dev/block-device + ``` + +* 루트 파일시스템(또는 선택적인 런타임 파일시스템)은 프로젝트 쿼터를 + 활성화한 상태에서 마운트해야 힌다. XFS와 ext4fs 모두에서, + 마운트 옵션의 이름은 `prjquota` 이다. + +{{% /tab %}} +{{< /tabs >}} + +## 확장된 리소스 + +확장된 리소스는 `kubernetes.io` 도메인 외부의 전체 주소(fully-qualified) +리소스 이름이다. 쿠버네티스에 내장되지 않은 리소스를 클러스터 운영자가 알리고 +사용자는 사용할 수 있다. + +확장된 리소스를 사용하려면 두 단계가 필요한다. 먼저, 클러스터 +운영자는 확장된 리소스를 알려야 한다. 둘째, 사용자는 파드의 +확장된 리소스를 요청해야 한다. + +### 확장된 리소스 관리 + +#### 노드-레벨의 확장된 리소스 + +노드-레벨의 확장된 리소스는 노드에 연결된다. + +##### 장치 플러그인 관리 리소스 +각 노드에서 +장치 플러그인 관리 리소스를 알리는 방법은 +[장치 플러그인](/ko/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/)을 참조한다. + +##### 기타 리소스 +새로운 노드-레벨의 확장된 리소스를 알리기 위해, 클러스터 운영자는 +API 서버에 `PATCH` HTTP 요청을 제출하여 클러스터의 +노드에 대해 `status.capacity` 에서 사용할 수 있는 수량을 지정할 수 있다. 이 작업 +후에는, 노드의 `status.capacity` 에 새로운 리소스가 포함된다. 이 +`status.allocatable` 필드는 kubelet에 의해 비동기적으로 새로운 +리소스로 자동 업데이트된다. 참고로 스케줄러가 파드 적합성을 평가할 때 노드 +`status.allocatable` 값을 사용하므로, 노드 용량을 +새 리소스로 패치하는 것과 해당 노드에서 리소스를 스케줄하도록 요청하는 첫 번째 파드 +사이에 약간의 지연이 있을 수 있다. + +**예제:** + +다음은 `curl` 을 사용하여 마스터가 `k8s-master` 인 노드 `k8s-node-1` 에 +5개의 "example.com/foo" 리소스를 알리는 HTTP 요청을 구성하는 방법을 +보여주는 예이다. + +```shell +curl --header "Content-Type: application/json-patch+json" \ +--request PATCH \ +--data '[{"op": "add", "path": "/status/capacity/example.com~1foo", "value": "5"}]' \ +http://k8s-master:8080/api/v1/nodes/k8s-node-1/status +``` + +{{< note >}} +앞의 요청에서, `~1` 은 패치 경로에서 문자 `/` 의 +인코딩이다. JSON-Patch의 작업 경로 값은 +JSON-Pointer로 해석된다. 더 자세한 내용은, +[IETF RFC 6901, 섹션 3](https://tools.ietf.org/html/rfc6901#section-3)을 참조한다. +{{< /note >}} + +#### 클러스터-레벨의 확장된 리소스 + +클러스터-레벨의 확장된 리소스는 노드에 연결되지 않는다. 이들은 일반적으로 +리소스 소비와 리소스 쿼터를 처리하는 스케줄러 익스텐더(extender)에 의해 관리된다. + +[스케줄러 정책 구성](https://github.com/kubernetes/kubernetes/blob/release-1.10/pkg/scheduler/api/v1/types.go#L31)에서 +스케줄러 익스텐더가 +처리하는 확장된 리소스를 지정할 수 있다. + +**예제:** + +스케줄러 정책에 대한 다음의 구성은 클러스터-레벨의 확장된 리소스 +"example.com/foo"가 스케줄러 익스텐더에 의해 처리됨을 +나타낸다. + +- 파드가 "example.com/foo"를 요청하는 경우에만 스케줄러가 파드를 스케줄러 + 익스텐더로 보낸다. +- 이 `ignoredByScheduler` 필드는 스케줄러가 `PodFitsResources` 속성에서 + "example.com/foo" 리소스를 확인하지 않도록 지정한다. + +```json +{ + "kind": "Policy", + "apiVersion": "v1", + "extenders": [ + { + "urlPrefix":"", + "bindVerb": "bind", + "managedResources": [ + { + "name": "example.com/foo", + "ignoredByScheduler": true + } + ] + } + ] +} +``` + +### 확장된 리소스 소비 + +사용자는 CPU와 메모리 같은 파드 스펙의 확장된 리소스를 사용할 수 있다. +스케줄러는 리소스 어카운팅(resource accounting)을 관리하여 사용 가능한 양보다 +많은 양의 리소스가 여러 파드에 동시에 할당되지 않도록 한다. + +API 서버는 확장된 리소스의 수량을 정수로 제한한다. +_유효한_ 수량의 예로는 `3`, `3000m` 그리고 `3Ki` 를 들 수 있다. _유효하지 않은_ +수량의 예는 `0.5` 와 `1500m` 이다. + +{{< note >}} +확장된 리소스는 불명확한 정수 리소스를 대체한다. +사용자는 예약된 `kubernetes.io` 이외의 모든 도메인 이름 접두사를 사용할 수 있다. +{{< /note >}} + +파드에서 확장된 리소스를 사용하려면, 컨테이너 사양에서 `spec.containers[].resources.limits` +맵에 리소스 이름을 키로 포함한다. + +{{< note >}} +확장된 리소스는 오버커밋할 수 없으므로, 컨테이너 사양에 +둘 다 있으면 요청과 제한이 동일해야 한다. +{{< /note >}} + +파드는 CPU, 메모리 및 확장된 리소스를 포함하여 모든 리소스 요청이 +충족되는 경우에만 예약된다. 리소스 요청을 충족할 수 없다면 +파드는 `PENDING` 상태를 유지한다. + +**예제:** + +아래의 파드는 2개의 CPU와 1개의 "example.com/foo"(확장된 리소스)를 요청한다. + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: my-pod +spec: + containers: + - name: my-container + image: myimage + resources: + requests: + cpu: 2 + example.com/foo: 1 + limits: + example.com/foo: 1 +``` + +## 문제 해결 + +### 내 파드가 failedScheduling 이벤트 메시지로 보류 중이다 + +파드가 배치될 수 있는 노드를 스케줄러가 찾을 수 없으면, 노드를 +찾을 수 있을 때까지 파드는 스케줄되지 않은 상태로 유지한다. 스케줄러가 다음과 같이 +파드의 위치를 ​​찾지 못하면 이벤트가 생성된다. + +```shell +kubectl describe pod frontend | grep -A 3 Events +``` +``` +Events: + FirstSeen LastSeen Count From Subobject PathReason Message + 36s 5s 6 {scheduler } FailedScheduling Failed for reason PodExceedsFreeCPU and possibly others +``` + +위의 예에서, 노드의 CPU 리소스가 충분하지 않아 이름이 +"frontend"인 파드를 스케줄하지 못했다. 비슷한 메시지로 +메모리 부족(PodExceedsFreeMemory)으로 인한 장애도 알릴 수 있다. 일반적으로, 파드가 +이 타입의 메시지로 보류 중인 경우, 몇 가지 시도해 볼 것들이 있다. + +- 클러스터에 더 많은 노드를 추가한다. +- 불필요한 파드를 종료하여 보류 중인 파드를 위한 공간을 확보한다. +- 파드가 모든 노드보다 크지 않은지 확인한다. 예를 들어, 모든 + 노드의 용량이 `cpu: 1` 인 경우, `cpu: 1.1` 요청이 있는 파드는 + 절대 스케줄되지 않는다. + +`kubectl describe nodes` 명령으로 노드 용량과 할당된 양을 +확인할 수 있다. 예를 들면, 다음과 같다. + +```shell +kubectl describe nodes e2e-test-node-pool-4lw4 +``` +``` +Name: e2e-test-node-pool-4lw4 +[ ... 명확하게 하기 위해 라인들을 제거함 ...] +Capacity: + cpu: 2 + memory: 7679792Ki + pods: 110 +Allocatable: + cpu: 1800m + memory: 7474992Ki + pods: 110 +[ ... 명확하게 하기 위해 라인들을 제거함 ...] +Non-terminated Pods: (5 in total) + Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits + --------- ---- ------------ ---------- --------------- ------------- + kube-system fluentd-gcp-v1.38-28bv1 100m (5%) 0 (0%) 200Mi (2%) 200Mi (2%) + kube-system kube-dns-3297075139-61lj3 260m (13%) 0 (0%) 100Mi (1%) 170Mi (2%) + kube-system kube-proxy-e2e-test-... 100m (5%) 0 (0%) 0 (0%) 0 (0%) + kube-system monitoring-influxdb-grafana-v4-z1m12 200m (10%) 200m (10%) 600Mi (8%) 600Mi (8%) + kube-system node-problem-detector-v0.1-fj7m3 20m (1%) 200m (10%) 20Mi (0%) 100Mi (1%) +Allocated resources: + (Total limits may be over 100 percent, i.e., overcommitted.) + CPU Requests CPU Limits Memory Requests Memory Limits + ------------ ---------- --------------- ------------- + 680m (34%) 400m (20%) 920Mi (12%) 1070Mi (14%) +``` + +위의 출력에서, ​파드가 1120m 이상의 CPU 또는 6.23Gi의 메모리를 +요청하는 것은 노드에 맞지 않음을 알 수 있다. + +`Pods` 섹션을 살펴보면, 파드가 노드에서 공간을 차지하는 것을 +볼 수 있다. + +시스템 데몬이 사용 가능한 리소스의 일부를 사용하기 때문에, 파드에 +사용 가능한 리소스의 양이 노드 용량보다 적다. `allocatable` 필드 +[NodeStatus](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#nodestatus-v1-core)는 +파드가 사용할 수 있는 리소스의 양을 제공한다. 자세한 정보는 +[노드 할당 가능 리소스](https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md)를 참조한다. + +[리소스 쿼터](/ko/docs/concepts/policy/resource-quotas/) 기능은 +소비될 수 있는 리소스의 총량을 제한하도록 구성할 수 있다. 네임스페이스와 +함께 사용하면, 한 팀이 모든 리소스를 사용하는 경우를 방지할 수 있다. + +### 내 컨테이너가 종료되었다 + +리소스가 부족하여 컨테이너가 종료될 수 있다. 리소스 +제한에 도달하여 컨테이너가 종료되고 있는지 확인하려면, +관심있는 파드에 대해 `kubectl describe pod` 를 호출한다. + +```shell +kubectl describe pod simmemleak-hra99 +``` +``` +Name: simmemleak-hra99 +Namespace: default +Image(s): saadali/simmemleak +Node: kubernetes-node-tf0f/10.240.216.66 +Labels: name=simmemleak +Status: Running +Reason: +Message: +IP: 10.244.2.75 +Replication Controllers: simmemleak (1/1 replicas created) +Containers: + simmemleak: + Image: saadali/simmemleak + Limits: + cpu: 100m + memory: 50Mi + State: Running + Started: Tue, 07 Jul 2015 12:54:41 -0700 + Last Termination State: Terminated + Exit Code: 1 + Started: Fri, 07 Jul 2015 12:54:30 -0700 + Finished: Fri, 07 Jul 2015 12:54:33 -0700 + Ready: False + Restart Count: 5 +Conditions: + Type Status + Ready False +Events: + FirstSeen LastSeen Count From SubobjectPath Reason Message + Tue, 07 Jul 2015 12:53:51 -0700 Tue, 07 Jul 2015 12:53:51 -0700 1 {scheduler } scheduled Successfully assigned simmemleak-hra99 to kubernetes-node-tf0f + Tue, 07 Jul 2015 12:53:51 -0700 Tue, 07 Jul 2015 12:53:51 -0700 1 {kubelet kubernetes-node-tf0f} implicitly required container POD pulled Pod container image "k8s.gcr.io/pause:0.8.0" already present on machine + Tue, 07 Jul 2015 12:53:51 -0700 Tue, 07 Jul 2015 12:53:51 -0700 1 {kubelet kubernetes-node-tf0f} implicitly required container POD created Created with docker id 6a41280f516d + Tue, 07 Jul 2015 12:53:51 -0700 Tue, 07 Jul 2015 12:53:51 -0700 1 {kubelet kubernetes-node-tf0f} implicitly required container POD started Started with docker id 6a41280f516d + Tue, 07 Jul 2015 12:53:51 -0700 Tue, 07 Jul 2015 12:53:51 -0700 1 {kubelet kubernetes-node-tf0f} spec.containers{simmemleak} created Created with docker id 87348f12526a +``` + +앞의 예제에서, `Restart Count: 5` 표시는 파드의 `simmemleak` +컨테이너가 종료되고 5번 다시 시작되었음을 나타낸다. + +이전에 종료된 컨테이너의 상태를 가져오기 위해 `-o go-template=...` 옵션을 사용해서 +`kubectl get pod` 를 호출할 수 있다. + +```shell +kubectl get pod -o go-template='{{range.status.containerStatuses}}{{"Container Name: "}}{{.name}}{{"\r\nLastState: "}}{{.lastState}}{{end}}' simmemleak-hra99 +``` +``` +Container Name: simmemleak +LastState: map[terminated:map[exitCode:137 reason:OOM Killed startedAt:2015-07-07T20:58:43Z finishedAt:2015-07-07T20:58:43Z containerID:docker://0e4095bba1feccdfe7ef9fb6ebffe972b4b14285d5acdec6f0d3ae8a22fad8b2]] +``` + +컨테이너가 `reason:OOM Killed`(`OOM` 은 메모리 부족(Out Of Memory)의 약자) 때문에 종료된 것을 알 수 있다. + + + +{{% /capture %}} + + +{{% capture whatsnext %}} + +* [컨테이너와 파드에 메모리 리소스를 할당](/ko/docs/tasks/configure-pod-container/assign-memory-resource/)하는 핸즈온 경험을 해보자. + +* [컨테이너와 파드에 CPU 리소스를 할당](/docs/tasks/configure-pod-container/assign-cpu-resource/)하는 핸즈온 경험을 해보자. + +* 요청과 제한의 차이점에 대한 자세한 내용은, + [리소스 QoS](https://git.k8s.io/community/contributors/design-proposals/node/resource-qos.md)를 참조한다. + +* [컨테이너](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#container-v1-core) API 레퍼런스 읽어보기 + +* [ResourceRequirements](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#resourcerequirements-v1-core) API 레퍼런스 읽어보기 + +* XFS의 [프로젝트 쿼터](http://xfs.org/docs/xfsdocs-xml-dev/XFS_User_Guide/tmp/en-US/html/xfs-quotas.html)에 대해 읽어보기 + +{{% /capture %}} diff --git a/content/ko/docs/concepts/configuration/pod-overhead.md b/content/ko/docs/concepts/configuration/pod-overhead.md new file mode 100644 index 0000000000..c5efc58c1e --- /dev/null +++ b/content/ko/docs/concepts/configuration/pod-overhead.md @@ -0,0 +1,193 @@ +--- +title: 파드 오버헤드 +content_template: templates/concept +weight: 20 +--- + +{{% capture overview %}} + +{{< feature-state for_k8s_version="v1.18" state="beta" >}} + +노드 위에서 파드를 구동할 때, 파드는 그 자체적으로 많은 시스템 리소스를 사용한다. +이러한 리소스는 파드 내의 컨테이너들을 구동하기 위한 리소스 이외에 추가적으로 필요한 것이다. +_파드 오버헤드_ 는 컨테이너 리소스 요청과 상한 위에서 파드의 인프라에 의해 +소비되는 리소스를 계산하는 기능이다. + + +{{% /capture %}} + + +{{% capture body %}} + +쿠버네티스에서 파드의 오버헤드는 파드의 +[런타임클래스](/ko/docs/concepts/containers/runtime-class/) 와 관련된 오버헤드에 따라 +[어드미션](/docs/reference/access-authn-authz/extensible-admission-controllers/#what-are-admission-webhooks) +이 수행될 때 지정된다. + +파드 오버헤드가 활성화 되면, 파드를 노드에 스케줄링 할 때 컨테이너 리소스 요청의 합에 +파드의 오버헤드를 추가해서 스케줄링을 고려한다. 마찬가지로, Kubelet은 파드의 cgroups 크기를 변경하거나 +파드의 축출 등급을 부여할 때에도 파드의 오버헤드를 포함하여 고려한다. + +## 파드 오버헤드 활성화하기 {#set-up} + +기능 활성화를 위해 클러스터에서 +`PodOverhead` [기능 게이트](/docs/reference/command-line-tools-reference/feature-gates/) 가 활성화 되어 있고 (1.18 버전에서는 기본적으로 활성화), +`overhead` 필드를 정의하는 `RuntimeClass` 가 사용되고 있는지 확인해야 한다. + +## 사용 예제 + +파드 오버헤드 기능을 사용하기 위하여, `overhead` 필드를 정의하는 런타임클래스가 필요하다. +예를 들어, 가상 머신 및 게스트 OS에 대하여 파드 당 120 MiB를 사용하는 +가상화 컨테이너 런타임의 런타임클래스의 경우 다음과 같이 정의 할 수 있다. + +```yaml +--- +kind: RuntimeClass +apiVersion: node.k8s.io/v1beta1 +metadata: + name: kata-fc +handler: kata-fc +overhead: + podFixed: + memory: "120Mi" + cpu: "250m" +``` + +`kata-fc` 런타임클래스 핸들러를 지정하는 워크로드는 리소스 쿼터 계산, +노드 스케줄링 및 파드 cgroup 크기 조정을 위하여 메모리와 CPU 오버헤드를 고려한다. + +주어진 예제 워크로드 test-pod의 구동을 고려해보자. + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: test-pod +spec: + runtimeClassName: kata-fc + containers: + - name: busybox-ctr + image: busybox + stdin: true + tty: true + resources: + limits: + cpu: 500m + memory: 100Mi + - name: nginx-ctr + image: nginx + resources: + limits: + cpu: 1500m + memory: 100Mi +``` + +어드미션 수행 시에, [어드미션 컨트롤러](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/)는 +런타임클래스에 기술된 `overhead` 를 포함하기 위하여 워크로드의 PodSpec 항목을 갱신한다. 만약 PodSpec이 이미 해당 필드에 정의되어 있으면, +파드는 거부된다. 주어진 예제에서, 오직 런타임클래스의 이름만이 정의되어 있기 때문에, 어드미션 컨트롤러는 파드가 +`overhead` 를 포함하도록 변경한다. + +런타임클래스의 어드미션 수행 후에, 파드의 스펙이 갱신된 것을 확인할 수 있다. + +```bash +kubectl get pod test-pod -o jsonpath='{.spec.overhead}' +``` + +명령 실행 결과는 다음과 같다. +``` +map[cpu:250m memory:120Mi] +``` + +만약 리소스쿼터 항목이 정의되어 있다면, 컨테이너의 리소스 요청의 합에는 +`overhead` 필드도 추가된다. + +kube-scheduler 는 어떤 노드에 파드가 기동 되어야 할지를 정할 때, 파드의 `overhead` 와 +해당 파드에 대한 컨테이너의 리소스 요청의 합을 고려한다. 이 예제에서, 스케줄러는 +리소스 요청과 파드의 오버헤드를 더하고, 2.25 CPU와 320 MiB 메모리가 사용 가능한 노드를 찾는다. + +일단 파드가 특정 노드에 스케줄링 되면, 해당 노드에 있는 kubelet 은 파드에 대한 새로운 {{< glossary_tooltip text="cgroup" term_id="cgroup" >}}을 생성한다. +기본 컨테이너 런타임이 만들어내는 컨테이너들은 이 파드 안에 존재한다. + +만약 각 컨테이너에 대하여 QoS가 보장되었거나 향상이 가능하도록 QoS 의 리소스 상한 제한이 걸려있으면, +kubelet 은 해당 리소스(CPU의 경우 cpu.cfs_quota_us, 메모리의 경우 memory.limit_in_bytes)와 연관된 파드의 +cgroup 의 상한선을 설정한다. 이 상한선은 컨테이너 리소스 상한과 PodSpec에 +정의된 `overhead` 의 합에 기반한다. + +CPU의 경우, 만약 파드가 보장형 또는 버스트형 QoS로 설정되었으면, kubelet은 PodSpec에 정의된 `overhead` 에 컨테이너의 +리소스 요청의 합을 더한 값을 `cpu.shares` 로 설정한다. + +다음의 예제를 참고하여, 워크로드에 대하여 컨테이너의 리소스 요청을 확인하자. +```bash +kubectl get pod test-pod -o jsonpath='{.spec.containers[*].resources.limits}' +``` + +컨테이너 리소스 요청의 합은 각각 CPU 2000m 와 메모리 200MiB 이다. +``` +map[cpu: 500m memory:100Mi] map[cpu:1500m memory:100Mi] +``` + +노드에서 측정된 내용과 비교하여 확인해보자. + +```bash +kubectl describe node | grep test-pod -B2 +``` + +CPU 2250m와 메모리 320MiB 가 리소스로 요청되었으며, 이 결과는 파드의 오버헤드를 포함한다. +``` + Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits AGE + --------- ---- ------------ ---------- --------------- ------------- --- + default test-pod 2250m (56%) 2250m (56%) 320Mi (1%) 320Mi (1%) 36m +``` + +## 파드 cgroup 상한 확인하기 + +워크로드가 실행 중인 노드에서 파드의 메모리 cgroup들을 확인 해보자. 다음의 예제에서, [`crictl`](https://github.com/kubernetes-sigs/cri-tools/blob/master/docs/crictl.md)은 노드에서 사용되며, +CRI-호환 컨테이너 런타임을 위해서 노드에서 사용할 수 있는 CLI 를 제공한다. +파드의 오버헤드 동작을 보여주는 좋은 예이며, +사용자가 노드에서 직접 cgroup들을 확인하지 않아도 된다. + +먼저 특정 노드에서 파드의 식별자를 확인해 보자. + +```bash +# 파드가 스케줄 된 노드에서 이것을 실행 +POD_ID="$(sudo crictl pods --name test-pod -q)" +``` + +여기에서, 파드의 cgroup 경로를 확인할 수 있다. +```bash +# 파드가 스케줄 된 노드에서 이것을 실행 +sudo crictl inspectp -o=json $POD_ID | grep cgroupsPath +``` + +명령의 결과로 나온 cgroup 경로는 파드의 `pause` 컨테이너를 포함한다. 파드 레벨의 cgroup은 하나의 디렉터리이다. +``` + "cgroupsPath": "/kubepods/podd7f4b509-cf94-4951-9417-d1087c92a5b2/7ccf55aee35dd16aca4189c952d83487297f3cd760f1bbf09620e206e7d0c27a" +``` + +아래의 특정한 경우에, 파드 cgroup 경로는 `kubepods/podd7f4b509-cf94-4951-9417-d1087c92a5b2` 이다. 메모리의 파드 레벨 cgroup 설정을 확인하자. +```bash +# 파드가 스케줄 된 노드에서 이것을 실행. +# 또한 사용자의 파드에 할당된 cgroup 이름에 맞춰 해당 이름을 수정. + cat /sys/fs/cgroup/memory/kubepods/podd7f4b509-cf94-4951-9417-d1087c92a5b2/memory.limit_in_bytes +``` + +예상대로 320 MiB 이다. +``` +335544320 +``` + +### 관찰성 +`kube_pod_overhead` 항목은 [kube-state-metrics](https://github.com/kubernetes/kube-state-metrics) +에서 사용할 수 있어, 파드 오버헤드가 사용되는 시기를 식별하고, +정의된 오버헤드로 실행되는 워크로드의 안정성을 관찰할 수 있다. +이 기능은 kube-state-metrics 의 1.9 릴리스에서는 사용할 수 없지만, 다음 릴리스에서는 가능할 예정이다. +그 전까지는 소스로부터 kube-state-metric 을 빌드해야 한다. + +{{% /capture %}} + +{{% capture whatsnext %}} + +* [런타임클래스](/ko/docs/concepts/containers/runtime-class/) +* [파드오버헤드 디자인](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/20190226-pod-overhead.md) + +{{% /capture %}} diff --git a/content/ko/docs/concepts/configuration/pod-priority-preemption.md b/content/ko/docs/concepts/configuration/pod-priority-preemption.md new file mode 100644 index 0000000000..a69013f5bd --- /dev/null +++ b/content/ko/docs/concepts/configuration/pod-priority-preemption.md @@ -0,0 +1,417 @@ +--- +title: 파드 우선순위(priority)와 선점(preemption) +content_template: templates/concept +weight: 70 +--- + +{{% capture overview %}} + +{{< feature-state for_k8s_version="v1.14" state="stable" >}} + +[파드](/ko/docs/concepts/workloads/pods/pod/)는 _우선순위_ 를 가질 수 있다. 우선순위는 +다른 파드에 대한 상대적인 파드의 중요성을 나타낸다. 파드를 스케줄링할 수 없는 경우, +스케줄러는 우선순위가 낮은 파드를 선점(축출)하여 보류 중인 파드를 +스케줄링할 수 있게 한다. + +{{% /capture %}} + +{{% capture body %}} + + +{{< warning >}} +모든 사용자를 신뢰할 수 없는 클러스터에서, 악의적인 사용자가 우선순위가 +가장 높은 파드를 생성하여 다른 파드가 축출되거나 스케줄링되지 +않을 수 있다. +관리자는 리소스쿼터를 사용하여 사용자가 우선순위가 높은 파드를 생성하지 +못하게 할 수 있다. + +자세한 내용은 [기본적으로 프라이어리티 클래스(Priority Class) 소비 제한](/ko/docs/concepts/policy/resource-quotas/#기본적으로-우선-순위-클래스-소비-제한)을 +참고한다. +{{< /warning >}} + +## 우선순위와 선점을 사용하는 방법 + +우선순위와 선점을 사용하려면 다음을 참고한다. + +1. 하나 이상의 [프라이어리티클래스](#프라이어리티클래스)를 추가한다. + +1. 추가된 프라이어리티클래스 중 하나에 [`priorityClassName`](#파드-우선순위)이 설정된 + 파드를 생성한다. 물론 파드를 직접 생성할 필요는 없다. + 일반적으로 디플로이먼트와 같은 컬렉션 오브젝트의 파드 템플릿에 `priorityClassName` + 을 추가한다. + +이 단계에 대한 자세한 내용은 계속 읽어보자. + +{{< note >}} +쿠버네티스는 이미 `system-cluster-critical` 과 `system-node-critical`, +두 개의 프라이어리티클래스를 제공한다. +이들은 일반적인 클래스이며 [중요한(critical) 컴포넌트가 항상 먼저 스케줄링이 되도록 하는 데](/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/) 사용된다. +{{< /note >}} + +기능을 사용해 본 후 사용하지 않기로 했다면, PodPriority +커맨드-라인 플래그를 제거하거나 `false` 로 설정한 후, API 서버와 +스케줄러를 다시 시작해야 한다. 기능이 비활성화된 후, 기존 파드는 +우선순위 필드를 유지하지만, 선점은 비활성화되며, 우선순위 필드는 +무시된다. 이 기능이 비활성화되면, 새로운 파드에서 `priorityClassName` 을 설정할 수 +없다. + +## 선점을 비활성화하는 방법 + +{{< caution >}} +중요 파드는 클러스터에 리소스 압박(resource pressure)이 가해지면 +스케줄러 선점에 따라 스케줄링된다. 이런 이유로, 선점을 비활성화하지 +않는 것을 권장한다. +{{< /caution >}} + +{{< note >}} +쿠버네티스 1.15 이상에서, `NonPreemptingPriority` 기능이 활성화된 경우, +프라이어리티클래스는 옵션을 `preemptionPolicy: Never` 로 설정할 수 있다. +이렇게 하면 해당 프라이어리티클래스의 파드가 다른 파드를 축출할 수 없다. +{{< /note >}} + +선점은 기본값이 `false`로 설정된 `disablePreemption` kube-scheduler +플래그에 의해 제어된다. +위의 주의에도 불구하고 선점을 비활성화하려는 경우, +`disablePreemption` 을 `true` 로 설정할 수 있다. + +이 옵션은 컴포넌트 구성에서만 사용할 수 있으며 +이전 스타일의 커맨드 라인 옵션에서는 사용할 수 없다. 다음은 선점을 비활성화하는 샘플 컴포넌트 +구성이다. + +```yaml +apiVersion: kubescheduler.config.k8s.io/v1alpha1 +kind: KubeSchedulerConfiguration +algorithmSource: + provider: DefaultProvider + +... + +disablePreemption: true +``` + +## 프라이어리티클래스 + +프라이어리티클래스는 프라이어리티 클래스 이름에서 우선순위의 정수 값으로의 매핑을 +정의하는 네임스페이스가 아닌(non-namespaced) 오브젝트이다. 이름은 +프라이어리티클래스 오브젝트의 메타데이터의 `name` 필드에 지정된다. 값은 +필수 `value` 필드에 지정되어 있다. 값이 클수록, 우선순위가 +높다. +프라이어리티클래스 오브젝트의 이름은 유효한 +[DNS 서브 도메인 이름](/ko/docs/concepts/overview/working-with-objects/names/#dns-서브도메인-이름)이어야 하며, +`system-` 접두사를 붙일 수 없다. + +프라이어리티클래스 오브젝트는 10억 이하의 32비트 정수 값을 가질 +수 있다. 일반적으로 선점하거나 축출해서는 안되는 중요한 시스템 파드에는 더 큰 숫자가 +예약되어 있다. 클러스터 관리자는 원하는 각 매핑에 대해 프라이어리티클래스 오브젝트를 +하나씩 생성해야 한다. + +프라이어리티클래스에는 `globalDefault` 와 `description` 두 개의 선택적인 필드도 있다. +`globalDefault` 필드는 이 프라이어리티클래스의 값을 `priorityClassName` 이 없는 +파드에 사용해야 함을 나타낸다. 시스템에서 `globalDefault` 가 `true` 로 설정된 +프라이어리티클래스는 하나만 존재할 수 있다. `globalDefault` 가 설정된 +프라이어리티클래스가 없을 경우, `priorityClassName` 이 없는 파드의 +우선순위는 0이다. + +`description` 필드는 임의의 문자열이다. 이 필드는 이 프라이어리티클래스를 언제 +사용해야 하는지를 클러스터 사용자에게 알려주기 위한 것이다. + +### PodPriority와 기존 클러스터에 대한 참고 사항 + +- 기존 클러스터를 업그레이드하고 이 기능을 활성화하면, 기존 파드의 + 우선순위는 사실상 0이다. + +- `globalDefault` 가 `true` 로 설정된 프라이어리티클래스를 추가해도 기존 파드의 + 우선순위는 변경되지 않는다. 이러한 프라이어리티클래스의 값은 + 프라이어리티클래스를 추가한 후 생성된 파드에만 사용된다. + +- 프라이어리티클래스를 삭제하면, 삭제된 프라이어리티클래스의 이름을 사용하는 + 기존 파드는 변경되지 않고 남아있지만, 삭제된 프라이어리티클래스의 이름을 + 사용하는 파드는 더 이상 생성할 수 없다. + +### 프라이어리티클래스 예제 + +```yaml +apiVersion: scheduling.k8s.io/v1 +kind: PriorityClass +metadata: + name: high-priority +value: 1000000 +globalDefault: false +description: "이 프라이어리티 클래스는 XYZ 서비스 파드에만 사용해야 한다." +``` + +## 비-선점 프라이어리티클래스 {#non-preempting-priority-class} + +{{< feature-state for_k8s_version="v1.15" state="alpha" >}} + +`PreemptionPolicy: Never` 를 가진 파드는 낮은 우선순위 파드의 스케줄링 대기열의 +앞쪽에 배치되지만, +그 파드는 다른 파드를 축출할 수 없다. +스케줄링 대기 중인 비-선점 파드는 충분한 리소스가 확보되고 +스케줄링될 수 있을 때까지 +스케줄링 대기열에 대기한다. +다른 파드와 마찬가지로, +비-선점 파드는 +스케줄러 백오프(back-off)에 종속된다. +이는 스케줄러가 이러한 파드를 스케줄링하려고 시도하고 스케줄링할 수 없는 경우, +더 적은 횟수로 재시도하여, +우선순위가 낮은 다른 파드를 미리 스케줄링할 수 있음을 의미한다. + +비-선점 파드는 다른 우선순위가 높은 파드에 의해 +축출될 수 있다. + +`PreemptionPolicy` 는 기본값으로 `PreemptLowerPriority` 로 설정되어, +해당 프라이어리티클래스의 파드가 우선순위가 낮은 파드를 축출할 수 +있다(기존의 기본 동작과 동일). +`PreemptionPolicy` 가 `Never` 로 설정된 경우, +해당 프라이어리티클래스의 파드는 비-선점될 것이다. + +`PreemptionPolicy` 필드를 사용하려면 `NonPreemptingPriority` +[기능 게이트](/docs/reference/command-line-tools-reference/feature-gates/)가 +활성화되어야 한다. + +예제 유스케이스는 데이터 과학 관련 워크로드이다. +사용자는 다른 워크로드보다 우선순위가 높은 잡(job)을 제출할 수 있지만, +실행 중인 파드를 축출하여 기존의 작업을 삭제하지는 않을 것이다. +클러스터 리소스가 "자연스럽게" 충분히 사용할 수 있게 되면, +`PreemptionPolicy: Never` 의 우선순위가 높은 잡이 +다른 대기 중인 파드보다 먼저 스케줄링된다. + +### 비-선점 프라이어리티클래스 예제 + +```yaml +apiVersion: scheduling.k8s.io/v1 +kind: PriorityClass +metadata: + name: high-priority-nonpreempting +value: 1000000 +preemptionPolicy: Never +globalDefault: false +description: "이 프라이어리티 클래스는 다른 파드를 축출하지 않는다." +``` + +## 파드 우선순위 + +프라이어리티클래스가 하나 이상 있으면, 그것의 명세에서 이들 프라이어리티클래스 이름 중 하나를 +지정하는 파드를 생성할 수 있다. 우선순위 어드미션 +컨트롤러는 `priorityClassName` 필드를 사용하고 우선순위의 정수 값을 +채운다. 프라이어리티 클래스를 찾을 수 없으면, 파드가 거부된다. + +다음의 YAML은 이전 예제에서 생성된 프라이어리티클래스를 +사용하는 파드 구성의 예이다. 우선순위 어드미션 컨트롤러는 +명세를 확인하고 파드의 우선순위를 1000000으로 +해석한다. + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: nginx + labels: + env: test +spec: + containers: + - name: nginx + image: nginx + imagePullPolicy: IfNotPresent + priorityClassName: high-priority +``` + +### 스케줄링 순서에 대한 파드 우선순위의 영향 + +파드 우선순위가 활성화되면, 스케줄러가 우선순위에 따라 보류 중인 +파드를 주문하고 보류 중인 파드는 스케줄링 대기열에서 +우선순위가 낮은 다른 보류 중인 파드보다 우선한다. 결과적으로, 스케줄링 +요구 사항이 충족되는 경우 우선순위가 더 낮은 파드보다 우선순위가 높은 파드가 +더 빨리 스케줄링될 수 있다. 이러한 파드를 스케줄링할 수 없는 경우, +스케줄러는 계속 진행하고 우선순위가 낮은 다른 파드를 스케줄링하려고 한다. + +## 선점 + +파드가 생성되면, 대기열로 이동하여 스케줄링을 기다린다. +스케줄러가 대기열에서 파드를 선택하여 노드에 스케줄링하려고 한다. +파드의 지정된 모든 요구 사항을 충족하는 노드가 없으면, +보류 중인 파드에 대해 선점 로직이 트리거된다. 보류 중인 파드를 P라 하자. +선점 로직은 P보다 우선순위가 낮은 하나 이상의 파드를 제거하면 +해당 노드에서 P를 스케줄링할 수 있는 노드를 찾는다. 이러한 +노드가 발견되면, 하나 이상의 우선순위가 낮은 파드가 노드에서 축출된다. +파드가 축출된 후, P는 노드에 스케줄링될 수 있다. + +### 사용자 노출 정보 + +파드 P가 노드 N에서 하나 이상의 파드를 축출할 경우, 파드 P의 상태 `nominatedNodeName` +필드는 노드 N의 이름으로 설정된다. 이 필드는 스케줄러가 파드 P에 +예약된 리소스를 추적하는 데 도움이 되고 사용자에게 클러스터의 선점에 대한 +정보를 제공한다. + +파드 P는 반드시 "지정된 노드"로 스케줄링되지는 않는다. +피해자 파드가 축출된 후, 그것은 정상적(graceful)으로 종료되는 기간을 갖는다. +스케줄러가 종료될 피해자 파드를 기다리는 동안 다른 노드를 사용할 수 +있게 되면, 스케줄러는 파드 P를 스케줄링하기 위해 다른 노드를 사용한다. 그 결과, +파드 스펙의 `nominatedNodeName` 과 `nodeName` 은 항상 동일하지 않다. 또한, +스케줄러가 노드 N에서 파드를 축출했지만, 파드 P보다 우선순위가 높은 파드가 +도착하면, 스케줄러가 노드 N에 새로운 우선순위가 높은 파드를 제공할 수 있다. 이러한 +경우, 스케줄러는 파드 P의 `nominatedNodeName` 을 지운다. 이렇게하면, 스케줄러는 +파드 P가 다른 노드에서 파드를 축출할 수 있도록 한다. + +### 선점의 한계 + +#### 선점 피해자의 정상적인 종료 + +파드가 축출되면, 축출된 피해자 파드는 +[정상적인 종료 기간](/ko/docs/concepts/workloads/pods/pod/#파드의-종료)을 가진다. +피해자 파드는 작업을 종료하고 빠져나가는 데(exit) 많은 시간을 가진다. 그렇지 않으면, +파드는 강제종료(kill) 된다. 이 정상적인 종료 기간은 스케줄러가 파드를 축출하는 +지점과 보류 중인 파드(P)를 노드(N)에서 스케줄링할 수 있는 시점 사이의 +시간 간격을 만든다. 그 동안, 스케줄러는 보류 중인 다른 파드를 +계속 스케줄링한다. 피해자 파드가 빠져나가거나 종료되면, 스케줄러는 보류 대기열에서 +파드를 스케줄하려고 한다. 따라서, 일반적으로 스케줄러가 피해자 파드를 축출하는 시점과 +파드 P가 스케줄링된 시점 사이에 시간 간격이 있다. +이러한 차이를 최소화하기 위해, 우선순위가 낮은 파드의 정상적인 종료 기간을 0 또는 +작은 수로 설정할 수 있다. + +#### PodDisruptionBudget을 지원하지만, 보장하지 않음 + +[Pod Disruption Budget(PDB)](/ko/docs/concepts/workloads/pods/disruptions/)은 +애플리케이션 소유자가 자발적 중단에서 동시에 다운된 복제된 +애플리케이션의 파드 수를 제한할 수 있다. 쿠버네티스는 파드를 +선점할 때 PDB를 지원하지만, PDB를 따르는 것이 최선의 노력이다. 스케줄러는 +선점에 의해 PDB를 위반하지 않은 피해자 파드를 찾으려고 하지만, 그러한 피해자 파드가 +발견되지 않으면, 선점은 여전히 발생하며, PDB를 위반하더라도 우선순위가 +낮은 파드는 제거된다. + +#### 우선순위가 낮은 파드에 대한 파드-간 어피니티 + +이 질문에 대한 답변이 '예'인 경우에만 노드가 선점 대상으로 간주된다. +"대기 중인 파드보다 우선순위가 낮은 모든 파드가 노드에서 +제거되면, 보류 중인 파드를 노드에 스케줄링할 수 있습니까?" + +{{< note >}} +선점으로 우선순위가 낮은 모든 파드를 반드시 제거할 필요는 +없다. 우선순위가 낮은 모든 파드보다 적은 수를 제거하여 보류 중인 파드를 +스케줄링할 수 있는 경우, 우선순위가 낮은 파드의 일부만 제거된다. +그럼에도 불구하고, 앞의 질문에 대한 대답은 '예'여야 한다. 답변이 '아니오'인 경우, +노드가 선점 대상으로 간주되지 않는다. +{{< /note >}} + +보류 중인 파드가 노드에 있는 하나 이상의 우선순위가 낮은 파드에 대한 파드-간 어피니티를 +가진 경우에, 우선순위가 낮은 파드가 없을 때 파드-간 어피니티 규칙을 +충족할 수 없다. 이 경우, 스케줄러는 노드의 파드를 축출하지 +않는다. 대신, 다른 노드를 찾는다. 스케줄러가 +적합한 노드를 찾거나 찾지 못할 수 있다. 보류 중인 파드를 스케줄링할 수 있다는 +보장은 없다. + +이 문제에 대한 권장 솔루션은 우선순위가 같거나 높은 파드에 대해서만 파드-간 어피니티를 +생성하는 것이다. + +#### 교차 노드 선점 + +보류 중인 파드 P가 노드 N에 스케줄링될 수 있도록 노드 N이 선점 대상으로 고려되고 +있다고 가정한다. 다른 노드의 파드가 축출된 경우에만 P가 N에서 실행 가능해질 수 +있다. 예를 들면 다음과 같다. + +* 파드 P는 노드 N에 대해 고려된다. +* 파드 Q는 노드 N과 동일한 영역의 다른 노드에서 실행 중이다. +* 파드 P는 파드 Q(`topologyKey: + failure-domain.beta.kubernetes.io/zone`)와 영역(zone) 전체의 안티-어피니티를 갖는다. +* 영역에서 파드 P와 다른 파드 간의 안티-어피니티에 대한 다른 경우는 + 없다. +* 노드 N에서 파드 P를 스케줄링하기 위해, 파드 Q를 축출할 수 있지만, 스케줄러는 + 교차-노드 선점을 수행하지 않는다. 따라서, 파드 P가 노드 N에서 + 스케줄링할 수 없는 것으로 간주된다. + +파드 Q가 노드에서 제거되면, 파드 안티-어피니티 위반이 +사라지고, 파드 P는 노드 N에서 스케줄링될 수 있다. + +수요가 충분하고 합리적인 성능의 알고리즘을 찾을 경우 +향후 버전에서 교차 노드 선점의 추가를 고려할 수 있다. + +## 문제 해결 + +파드 우선순위와 선점은 원하지 않는 부작용을 가질 수 있다. 다음은 +잠재적 문제의 예시와 이를 해결하는 방법이다. + +### 파드가 불필요하게 선점(축출)됨 + +선점은 우선순위가 높은 보류 중인 파드를 위한 공간을 만들기 위해 리소스 압박을 받고 있는 +클러스터에서 기존 파드를 제거한다. 실수로 특정 파드에 높은 우선순위를 +부여하면, 의도하지 않은 높은 우선순위 파드가 클러스터에서 +선점을 유발할 수 있다. 파드 우선순위는 파드 명세에서 +`priorityClassName` 필드를 설정하여 지정한다. 그런 다음 +우선순위의 정수 값이 분석되어 `podSpec` 의 `priority` 필드에 채워진다. + +문제를 해결하기 위해, 해당 파드가 우선순위가 낮은 클래스를 사용하도록 `priorityClassName` 을 +변경하거나, 해당 필드를 비워둘 수 있다. 빈 +`priorityClassName` 은 기본값이 0으로 해석된다. + +파드가 축출되면, 축출된 파드에 대한 이벤트가 기록된다. +선점은 클러스터가 파드에 대한 리소스를 충분히 가지지 못한 경우에만 +발생한다. 이러한 경우, 선점은 보류 중인 파드(선점자)의 우선순위가 +피해자 파드보다 높은 경우에만 발생한다. 보류 중인 파드가 없거나, +보류 중인 파드의 우선순위가 피해자 파드와 같거나 낮은 경우 +선점이 발생하지 않아야 한다. 그러한 시나리오에서 선점이 발생하면, 이슈를 올리기 바란다. + +### 파드가 축출되었지만, 선점자는 스케줄링되지 않음 + +파드가 축출되면, 요청된 정상적인 종료 +기간(기본적으로 30초)이 주어진다. 이 기간 내에 대상 파드가 +종료되지 않으면, 강제 종료된다. 모든 피해자 파드가 사라지면, +선점자 파드를 스케줄링할 수 있다. + +선점자 파드가 피해자 파드가 없어지기를 기다리는 동안, 동일한 노드에 +적합한 우선순위가 높은 파드가 생성될 수 있다. 이 경우, 스케줄러는 +선점자 대신 우선순위가 높은 파드를 스케줄링한다. + +이것은 예상된 동작이다. 우선순위가 높은 파드는 우선순위가 낮은 파드를 +대체해야 한다. [클러스터 오토스케일링](/ko/docs/tasks/administer-cluster/cluster-management/#클러스터-오토스케일링)과 +같은 다른 컨트롤러 작업은, +결국 보류 중인 파드를 스케줄링할 수 있는 용량을 제공할 수 있다. + +### 우선순위가 높은 파드는 우선순위가 낮은 파드보다 우선함 + +스케줄러가 보류 중인 파드를 실행할 수 있는 노드를 찾으려고 한다. 노드를 찾지 +못하면, 스케줄러는 임의의 노드에서 우선순위가 낮은 파드를 제거하여 +보류 중인 파드를 위한 공간을 만든다. +우선순위가 낮은 파드가 있는 노드가 보류 중인 파드를 실행할 수 없는 경우, 스케줄러는 +선점을 위해 우선순위가 높은 다른 노드(다른 노드의 파드와 비교)를 +선택할 수 있다. 피해자 파드는 여전히 선점자 파드보다 우선순위가 +낮아야 한다. + +선점할 수 있는 여러 노드가 있는 경우, 스케줄러는 +우선순위가 가장 낮은 파드 세트를 가진 노드를 선택하려고 한다. 그러나, +이러한 파드가 위반될 PodDisruptionBudget을 가지고 있고 축출된 경우 +스케줄러는 우선순위가 높은 파드를 가진 다른 노드를 선택할 수 있다. + +선점을 위해 여러 개의 노드가 존재하고 위의 시나리오 중 어느 것도 적용되지 않는 경우, +스케줄러는 우선순위가 가장 낮은 노드를 선택한다. + +## 파드 우선순위와 서비스 품질 간의 상호 작용 {#interactions-of-pod-priority-and-qos} + +파드 우선순위와 {{< glossary_tooltip text="QoS 클래스" term_id="qos-class" >}}는 +상호 작용이 거의 없고 QoS 클래스를 기반으로 파드 우선순위를 설정하는 데 대한 +기본 제한이 없는 두 개의 직교(orthogonal) 기능이다. 스케줄러의 +선점 로직은 선점 대상을 선택할 때 QoS를 고려하지 않는다. +선점은 파드 우선순위를 고려하고 우선순위가 가장 낮은 대상 세트를 +선택하려고 한다. 우선순위가 가장 높은 파드는 스케줄러가 +선점자 파드를 스케줄링할 수 없거나 우선순위가 가장 낮은 파드가 +`PodDisruptionBudget` 으로 보호되는 경우에만, 우선순위가 가장 낮은 파드를 +축출 대상으로 고려한다. + +QoS와 파드 우선순위를 모두 고려하는 유일한 컴포넌트는 +[kubelet 리소스 부족 축출](/docs/tasks/administer-cluster/out-of-resource/)이다. +kubelet은 부족한 리소스의 사용이 요청을 초과하는지 여부에 따라, 그런 다음 우선순위에 따라, +파드의 스케줄링 요청에 대한 부족한 컴퓨팅 리소스의 소비에 의해 +먼저 축출 대상 파드의 순위를 매긴다. +더 자세한 내용은 +[엔드유저 파드 축출](/docs/tasks/administer-cluster/out-of-resource/#evicting-end-user-pods)을 +참조한다. + +kubelet 리소스 부족 축출은 사용량이 요청을 초과하지 않는 경우 +파드를 축출하지 않는다. 우선순위가 낮은 파드가 요청을 +초과하지 않으면, 축출되지 않는다. 요청을 초과하는 우선순위가 +더 높은 다른 파드가 축출될 수 있다. + +{{% /capture %}} +{{% capture whatsnext %}} +* 프라이어리티클래스와 관련하여 리소스쿼터 사용에 대해 [기본적으로 프라이어리티 클래스 소비 제한](/ko/docs/concepts/policy/resource-quotas/#기본적으로-우선-순위-클래스-소비-제한)을 읽어보자. +{{% /capture %}} diff --git a/content/ko/docs/concepts/configuration/resource-bin-packing.md b/content/ko/docs/concepts/configuration/resource-bin-packing.md index 976e2ec837..5b6af1c661 100644 --- a/content/ko/docs/concepts/configuration/resource-bin-packing.md +++ b/content/ko/docs/concepts/configuration/resource-bin-packing.md @@ -1,7 +1,7 @@ --- title: 확장된 리소스를 위한 리소스 빈 패킹(bin packing) content_template: templates/concept -weight: 10 +weight: 50 --- {{% capture overview %}} diff --git a/content/ko/docs/concepts/configuration/taint-and-toleration.md b/content/ko/docs/concepts/configuration/taint-and-toleration.md index 012924c75d..ed59926d17 100644 --- a/content/ko/docs/concepts/configuration/taint-and-toleration.md +++ b/content/ko/docs/concepts/configuration/taint-and-toleration.md @@ -198,7 +198,7 @@ tolerations: ## 테인트 기반 축출 -{{< feature-state for_k8s_version="1.18" state="stable" >}} +{{< feature-state for_k8s_version="v1.18" state="stable" >}} 앞에서 우리는 노드에서 이미 실행 중인 파드에 영향을 주는 `NoExecute` 테인트 이펙트를 다음과 같이 언급했다. diff --git a/content/ko/docs/concepts/extend-kubernetes/api-extension/custom-resources.md b/content/ko/docs/concepts/extend-kubernetes/api-extension/custom-resources.md index e7e380d6ba..84481bdec7 100644 --- a/content/ko/docs/concepts/extend-kubernetes/api-extension/custom-resources.md +++ b/content/ko/docs/concepts/extend-kubernetes/api-extension/custom-resources.md @@ -78,7 +78,7 @@ _선언_ 하거나 지정할 수 있게 해주며 쿠버네티스 오브젝트 - 클라이언트는 "이 작업을 수행한다"라고 말하고 완료되면 동기(synchronous) 응답을 받는다. - 클라이언트는 "이 작업을 수행한다"라고 말한 다음 작업 ID를 다시 가져오고 별도의 오퍼레이션(operation) 오브젝트를 확인하여 요청의 완료 여부를 결정해야 한다. - RPC(원격 프로시저 호출)에 대해 얘기한다. - - 대량의 데이터를 직접 저장한다(예: > 오브젝트별 몇 kB 또는 >1000개의 오브젝트). + - 대량의 데이터를 직접 저장한다. 예: > 오브젝트별 몇 kB 또는 > 1000개의 오브젝트. - 높은 대역폭 접근(초당 10개의 지속적인 요청)이 필요하다. - 최종 사용자 데이터(예: 이미지, PII 등) 또는 애플리케이션에서 처리한 기타 대규모 데이터를 저장한다. - 오브젝트에 대한 자연스러운 조작은 CRUD-y가 아니다. @@ -102,7 +102,7 @@ _선언_ 하거나 지정할 수 있게 해주며 쿠버네티스 오브젝트 다음 중 대부분이 적용되는 경우 커스텀 리소스(CRD 또는 애그리게이트 API(aggregated API))를 사용하자. * 쿠버네티스 클라이언트 라이브러리 및 CLI를 사용하여 새 리소스를 만들고 업데이트하려고 한다. -* kubectl의 최상위 지원을 원한다(예: `kubectl get my-object object-name`). +* `kubectl` 의 최상위 지원을 원한다. 예: `kubectl get my-object object-name`. * 새 오브젝트에 대한 업데이트를 감시한 다음 다른 오브젝트를 CRUD하거나 그 반대로 하는 새로운 자동화를 구축하려고 한다. * 오브젝트의 업데이트를 처리하는 자동화를 작성하려고 한다. * `.spec`, `.status` 및 `.metadata`와 같은 쿠버네티스 API 규칙을 사용하려고 한다. @@ -214,7 +214,7 @@ CRD 또는 AA를 통해 커스텀 리소스를 생성하면 쿠버네티스 플 ### 써드파티 코드 및 새로운 장애 포인트 -CRD를 생성해도 새로운 장애 포인트(예를 들어, API 서버에서 장애를 유발하는 써드파티 코드가 실행됨)가 자동으로 추가되지는 않지만, 패키지(예: 차트(Charts)) 또는 기타 설치 번들에는 CRD 및 새로운 커스텀 리소스에 대한 비즈니스 로직을 구현하는 써드파티 코드의 디플로이먼트가 포함되는 경우가 종종 있다. +CRD를 생성해도 새로운 장애 포인트(예를 들어, API 서버에서 장애를 유발하는 써드파티 코드가 실행됨)가 자동으로 추가되지는 않지만, 패키지(예: 차트(Charts)) 또는 기타 설치 번들에는 CRD 및 새로운 커스텀 리소스에 대한 비즈니스 로직을 구현하는 써드파티 코드의 디플로이먼트가 포함되는 경우가 종종 있다. 애그리게이트 API 서버를 설치하려면 항상 새 디플로이먼트를 실행해야 한다. @@ -234,11 +234,11 @@ CRD는 항상 API 서버의 빌트인 리소스와 동일한 인증, 권한 부 ## 커스텀 리소스에 접근 -쿠버네티스 [클라이언트 라이브러리](/docs/reference/using-api/client-libraries/)를 사용하여 커스텀 리소스에 접근할 수 있다. 모든 클라이언트 라이브러리가 커스텀 리소스를 지원하는 것은 아니다. Go와 python 클라이언트 라이브러리가 지원한다. +쿠버네티스 [클라이언트 라이브러리](/docs/reference/using-api/client-libraries/)를 사용하여 커스텀 리소스에 접근할 수 있다. 모든 클라이언트 라이브러리가 커스텀 리소스를 지원하는 것은 아니다. _Go_ 와 _python_ 클라이언트 라이브러리가 지원한다. 커스텀 리소스를 추가하면 다음을 사용하여 접근할 수 있다. -- kubectl +- `kubectl` - 쿠버네티스 동적 클라이언트 - 작성한 REST 클라이언트 - [쿠버네티스 클라이언트 생성 도구](https://github.com/kubernetes/code-generator)를 사용하여 생성된 클라이언트(하나를 생성하는 것은 고급 기능이지만, 일부 프로젝트는 CRD 또는 AA와 함께 클라이언트를 제공할 수 있다). diff --git a/content/ko/docs/concepts/overview/components.md b/content/ko/docs/concepts/overview/components.md index 6fc04ab7bf..9db222e271 100644 --- a/content/ko/docs/concepts/overview/components.md +++ b/content/ko/docs/concepts/overview/components.md @@ -56,18 +56,19 @@ card: ### cloud-controller-manager -[cloud-controller-manager](/docs/tasks/administer-cluster/running-cloud-controller/)는 바탕을 이루는 클라우드 제공사업자와 상호작용하는 컨트롤러를 작동시킨다. cloud-controller-manager 바이너리는 쿠버네티스 릴리스 1.6에서 도입된 알파 기능이다. +cloud-controller-manager는 클라우드 제공자 전용 컨트롤러만 실행한다. +자신의 사내 또는 PC 내부의 학습 환경에서 쿠버네티스를 실행 중인 경우 +클러스터에는 클라우드 컨트롤러 매니저가 없다. -cloud-controller-manager는 클라우드-제공사업자-특유 컨트롤러 루프만을 동작시킨다. 이 컨트롤러 루프는 kube-controller-manager에서 비활성 시켜야만 한다. kube-controller-manager를 구동시킬 때 `--cloud-provider` 플래그를 `external`로 설정함으로써 이 컨트롤러 루프를 비활성 시킬 수 있다. +kube-controller-manager와 마찬가지로 cloud-controller-manager는 논리적으로 +독립적인 여러 컨트롤 루프를 단일 프로세스로 실행하는 단일 바이너리로 결합한다. +수평으로 확장(두 개 이상의 복제 실행)해서 성능을 향상시키거나 장애를 견딜 수 있다. -cloud-controller-manager는 클라우드 벤더 코드와 쿠버네티스 코드가 서로 독립적으로 발전시켜 나갈 수 있도록 해준다. 이전 릴리스에서는 코어 쿠버네티스 코드가 기능상으로 클라우드-제공사업자-특유 코드에 대해 의존적이었다. 향후 릴리스에서 클라우드 벤더만의 코드는 클라우드 벤더가 유지해야 하며, 쿠버네티스가 동작하는 동안 cloud-controller-manager에 연계되도록 해야 한다. +다음 컨트롤러들은 클라우드 제공 사업자의 의존성을 가질 수 있다. -다음 컨트롤러들은 클라우드 제공사업자의 의존성을 갖는다. - - * 노드 컨트롤러: 노드가 응답을 멈춘 후 클라우드 상에서 삭제되었는지 판별하기 위해 클라우드 제공사업자에게 확인하는 것 + * 노드 컨트롤러: 노드가 응답을 멈춘 후 클라우드 상에서 삭제되었는지 판별하기 위해 클라우드 제공 사업자에게 확인하는 것 * 라우트 컨트롤러: 기본 클라우드 인프라에 경로를 구성하는 것 - * 서비스 컨트롤러: 클라우드 제공사업자 로드밸런서를 생성, 업데이트 그리고 삭제하는 것 - * 볼륨 컨트롤러: 볼륨의 생성, 연결 그리고 마운트 하는 것과 오케스트레이션하기 위해 클라우드 제공사업자와 상호작용하는 것 + * 서비스 컨트롤러: 클라우드 제공 사업자 로드밸런서를 생성, 업데이트 그리고 삭제하는 것 ## 노드 컴포넌트 @@ -121,6 +122,6 @@ cloud-controller-manager는 클라우드 벤더 코드와 쿠버네티스 코드 {{% capture whatsnext %}} * [노드](/ko/docs/concepts/architecture/nodes/)에 대해 더 배우기 * [컨트롤러](/ko/docs/concepts/architecture/controller/)에 대해 더 배우기 -* [kube-scheduler](/ko/docs/concepts/scheduling/kube-scheduler/)에 대해 더 배우기 +* [kube-scheduler](/ko/docs/concepts/scheduling-eviction/kube-scheduler/)에 대해 더 배우기 * etcd의 공식 [문서](https://etcd.io/docs/) 읽기 {{% /capture %}} diff --git a/content/ko/docs/concepts/overview/working-with-objects/kubernetes-objects.md b/content/ko/docs/concepts/overview/working-with-objects/kubernetes-objects.md index c62ae41b87..4862629a69 100644 --- a/content/ko/docs/concepts/overview/working-with-objects/kubernetes-objects.md +++ b/content/ko/docs/concepts/overview/working-with-objects/kubernetes-objects.md @@ -32,8 +32,8 @@ card: 원하는 특징(_의도한 상태_)에 대한 설명을 제공해서 설정한다. -`status`는 오브젝트의 _현재 상태_ 를 기술하고, 쿠버네티스 -컴포넌트에 의해 제공되고 업데이트 된다. 쿠버네티스 +`status` 는 쿠버네티스 시스템과 컴포넌트에 의해 제공되고 +업데이트된 오브젝트의 _현재 상태_ 를 설명한다. 쿠버네티스 {{< glossary_tooltip text="컨트롤 플레인" term_id="control-plane" >}}은 모든 오브젝트의 실제 상태를 사용자가 의도한 상태와 일치시키기 위해 끊임없이 그리고 능동적으로 관리한다. @@ -93,4 +93,3 @@ deployment.apps/nginx-deployment created * [파드(Pod)](/ko/docs/concepts/workloads/pods/pod-overview/)와 같이, 가장 중요하고 기본적인 쿠버네티스 오브젝트에 대해 배운다. * 쿠버네티스의 [컨트롤러](/ko/docs/concepts/architecture/controller/)에 대해 배운다. {{% /capture %}} - diff --git a/content/ko/docs/concepts/policy/limit-range.md b/content/ko/docs/concepts/policy/limit-range.md index e2588b33af..11356ed3ee 100644 --- a/content/ko/docs/concepts/policy/limit-range.md +++ b/content/ko/docs/concepts/policy/limit-range.md @@ -7,7 +7,7 @@ weight: 10 {{% capture overview %}} 기본적으로 컨테이너는 쿠버네티스 클러스터에서 무제한 [컴퓨팅 리소스](/docs/user-guide/compute-resources)로 실행된다. -리소스 쿼터을 사용하면 클러스터 관리자는 네임스페이스별로 리소스 사용과 생성을 제한할 수 있다. +리소스 쿼터을 사용하면 클러스터 관리자는 {{< glossary_tooltip text="네임스페이스" term_id="namespace" >}}별로 리소스 사용과 생성을 제한할 수 있다. 네임스페이스 내에서 파드나 컨테이너는 네임스페이스의 리소스 쿼터에 정의된 만큼의 CPU와 메모리를 사용할 수 있다. 하나의 파드 또는 컨테이너가 사용 가능한 모든 리소스를 독점할 수 있다는 우려가 있다. 리밋레인지는 네임스페이스에서 리소스 할당(파드 또는 컨테이너)을 제한하는 정책이다. {{% /capture %}} @@ -30,16 +30,16 @@ _리밋레인지_ 는 다음과 같은 제약 조건을 제공한다. 리밋레인지 오브젝트의 이름은 유효한 [DNS 서브도메인 이름](/ko/docs/concepts/overview/working-with-objects/names/#dns-서브도메인-이름)이어야한다. -### 범위 제한의 개요 +### 리밋 레인지 개요 -- 관리자는 하나의 네임스페이스에 하나의 `LimitRange`를 만든다. +- 관리자는 하나의 네임스페이스에 하나의 리밋레인지를 만든다. - 사용자는 네임스페이스에서 파드, 컨테이너 및 퍼시스턴트볼륨클레임과 같은 리소스를 생성한다. - `LimitRanger` 어드미션 컨트롤러는 컴퓨팅 리소스 요청 사항을 설정하지 않은 모든 파드와 컨테이너에 대한 기본값과 제한을 지정하고 네임스페이스의 리밋레인지에 정의된 리소스의 최소, 최대 및 비율을 초과하지 않도록 사용량을 추적한다. - 리밋레인지 제약 조건을 위반하는 리소스(파드, 컨테이너, 퍼시스턴트볼륨클레임)를 생성하거나 업데이트하는 경우 HTTP 상태 코드 `403 FORBIDDEN` 및 위반된 제약 조건을 설명하는 메시지와 함께 API 서버에 대한 요청이 실패한다. - `cpu`, `memory`와 같은 컴퓨팅 리소스의 네임스페이스에서 리밋레인지가 활성화된 경우 사용자는 해당 값에 대한 요청 또는 제한을 지정해야 한다. 그렇지 않으면 시스템에서 파드 생성이 거부될 수 있다. - 리밋레인지 유효성 검사는 파드 실행 단계가 아닌 파드 어드미션 단계에서만 발생한다. -범위 제한을 사용하여 생성할 수 있는 정책의 예는 다음과 같다. +리밋 레인지를 사용하여 생성할 수 있는 정책의 예는 다음과 같다. - 용량이 8GiB RAM과 16 코어인 2 노드 클러스터에서 네임스페이스의 파드를 제한하여 CPU의 최대 제한이 500m인 CPU 100m를 요청하고 메모리의 최대 제한이 600M인 메모리 200Mi를 요청하라. - 스펙에 CPU 및 메모리 요청없이 시작된 컨테이너에 대해 기본 CPU 제한 및 요청을 150m로, 메모리 기본 요청을 300Mi로 정의하라. @@ -49,19 +49,20 @@ _리밋레인지_ 는 다음과 같은 제약 조건을 제공한다. 경합이나 리밋레인지 변경은 이미 생성된 리소스에 영향을 미치지 않는다. -## 예제 - -- [네임스페이스당 최소 및 최대 CPU 제약 조건을 설정하는 방법](/docs/tasks/administer-cluster/manage-resources/cpu-constraint-namespace/)을 본다. -- [네임스페이스당 최소 및 최대 메모리 제약 조건을 설정하는 방법](/docs/tasks/administer-cluster/manage-resources/memory-constraint-namespace/)을 본다. -- [네임스페이스당 기본 CPU 요청과 제한을 설정하는 방법](/docs/tasks/administer-cluster/manage-resources/cpu-default-namespace/)을 본다. -- [네임스페이스당 기본 메모리 요청과 제한을 설정하는 방법](/docs/tasks/administer-cluster/manage-resources/memory-default-namespace/)을 본다. -- [네임스페이스당 최소 및 최대 스토리지 사용량을 설정하는 방법](/docs/tasks/administer-cluster/limit-storage-consumption/#limitrange-to-limit-requests-for-storage)을 확인한다. -- [네임스페이스당 할당량을 설정하는 자세한 예시](/docs/tasks/administer-cluster/quota-memory-cpu-namespace/)를 본다. - {{% /capture %}} {{% capture whatsnext %}} -보다 자세한 내용은 [LimitRanger 설계 문서](https://git.k8s.io/community/contributors/design-proposals/resource-management/admission_control_limit_range.md)를 참고하길 바란다. +자세한 내용은 [LimitRanger 디자인 문서](https://git.k8s.io/community/contributors/design-proposals/resource-management/admission_control_limit_range.md)를 참조한다. + +제한의 사용에 대한 예시는 다음을 참조한다. + +- [네임스페이스당 최소 및 최대 CPU 제약 조건을 설정하는 방법](/docs/tasks/administer-cluster/manage-resources/cpu-constraint-namespace/). +- [네임스페이스당 최소 및 최대 메모리 제약 조건을 설정하는 방법](/docs/tasks/administer-cluster/manage-resources/memory-constraint-namespace/). +- [네임스페이스당 기본 CPU 요청과 제한을 설정하는 방법](/docs/tasks/administer-cluster/manage-resources/cpu-default-namespace/). +- [네임스페이스당 기본 메모리 요청과 제한을 설정하는 방법](/docs/tasks/administer-cluster/manage-resources/memory-default-namespace/). +- [네임스페이스당 최소 및 최대 스토리지 사용량을 설정하는 방법](/docs/tasks/administer-cluster/limit-storage-consumption/#limitrange-to-limit-requests-for-storage). +- [네임스페이스당 할당량을 설정하는 자세한 예시](/docs/tasks/administer-cluster/quota-memory-cpu-namespace/). + {{% /capture %}} diff --git a/content/ko/docs/concepts/policy/resource-quotas.md b/content/ko/docs/concepts/policy/resource-quotas.md index d86685d986..4eeb59b510 100644 --- a/content/ko/docs/concepts/policy/resource-quotas.md +++ b/content/ko/docs/concepts/policy/resource-quotas.md @@ -193,7 +193,7 @@ GPU 리소스를 다음과 같이 쿼터를 정의할 수 있다. ### PriorityClass별 리소스 쿼터 -{{< feature-state for_k8s_version="1.12" state="beta" >}} +{{< feature-state for_k8s_version="v1.12" state="beta" >}} 특정 [우선 순위](/docs/concepts/configuration/pod-priority-preemption/#pod-priority)로 파드를 생성할 수 있다. 쿼터 스펙의 `scopeSelector` 필드를 사용하여 파드의 우선 순위에 따라 파드의 시스템 리소스 사용을 diff --git a/content/ko/docs/concepts/scheduling-eviction/_index.md b/content/ko/docs/concepts/scheduling-eviction/_index.md new file mode 100644 index 0000000000..d368e230d7 --- /dev/null +++ b/content/ko/docs/concepts/scheduling-eviction/_index.md @@ -0,0 +1,4 @@ +--- +title: "스케줄링과 축출(eviction)" +weight: 90 +--- diff --git a/content/ko/docs/concepts/scheduling/kube-scheduler.md b/content/ko/docs/concepts/scheduling-eviction/kube-scheduler.md similarity index 100% rename from content/ko/docs/concepts/scheduling/kube-scheduler.md rename to content/ko/docs/concepts/scheduling-eviction/kube-scheduler.md diff --git a/content/ko/docs/concepts/scheduling/scheduler-perf-tuning.md b/content/ko/docs/concepts/scheduling-eviction/scheduler-perf-tuning.md similarity index 100% rename from content/ko/docs/concepts/scheduling/scheduler-perf-tuning.md rename to content/ko/docs/concepts/scheduling-eviction/scheduler-perf-tuning.md diff --git a/content/ko/docs/concepts/scheduling/_index.md b/content/ko/docs/concepts/scheduling/_index.md deleted file mode 100644 index 0ffab2ef77..0000000000 --- a/content/ko/docs/concepts/scheduling/_index.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "스케줄링" -weight: 90 ---- - diff --git a/content/ko/docs/concepts/security/overview.md b/content/ko/docs/concepts/security/overview.md index fda1f15984..6dcbe57d58 100644 --- a/content/ko/docs/concepts/security/overview.md +++ b/content/ko/docs/concepts/security/overview.md @@ -140,8 +140,8 @@ RBAC 인증(쿠버네티스 API에 대한 접근) | https://kubernetes.io/docs/r TLS를 통한 접근 | 코드가 TCP를 통해 통신해야 한다면, 클라이언트와 먼저 TLS 핸드 셰이크를 수행하는 것이 이상적이다. 몇 가지 경우를 제외하고, 기본 동작은 전송 중인 모든 것을 암호화하는 것이다. 한걸음 더 나아가, VPC의 "방화벽 뒤"에서도 서비스 간 네트워크 트래픽을 암호화하는 것이 좋다. 이것은 인증서를 가지고 있는 두 서비스의 양방향 검증을 [mTLS](https://en.wikipedia.org/wiki/Mutual_authentication)를 통해 수행할 수 있다. 이것을 수행하기 위해 쿠버네티스에는 [Linkerd](https://linkerd.io/) 및 [Istio](https://istio.io/)와 같은 수많은 도구가 있다. | 통신 포트 범위 제한 | 이 권장사항은 당연할 수도 있지만, 가능하면 통신이나 메트릭 수집에 꼭 필요한 서비스의 포트만 노출시켜야 한다. | 타사 종속성 보안 | 애플리케이션은 자체 코드베이스의 외부에 종속적인 경향이 있기 때문에, 코드의 종속성을 정기적으로 스캔하여 현재 알려진 취약점이 없는지 확인하는 것이 좋다. 각 언어에는 이런 검사를 자동으로 수행하는 도구를 가지고 있다. | -정적 코드 분석 | 대부분 언어에는 잠재적으로 안전하지 않은 코딩 방법에 대해 코드 스니펫을 분석할 수 있는 방법을 제공한다. 가능한 언제든지 일반적인 보안 오류에 대해 코드베이스를 스캔할 수 있는 자동화된 도구를 사용하여 검사를 한다. 도구는 다음에서 찾을 수 있다: https://www.owasp.org/index.php/Source_Code_Analysis_Tools | -동적 탐지 공격 | 일반적으로 서비스에서 발생할 수 있는 잘 알려진 공격 중 일부를 서비스에 테스트할 수 있는 자동화된 몇 가지 도구가 있다. 이런 잘 알려진 공격에는 SQL 인젝션, CSRF 및 XSS가 포함된다. 가장 널리 사용되는 동적 분석 도구는 OWASP Zed Attack 프록시다. https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project | +정적 코드 분석 | 대부분 언어에는 잠재적으로 안전하지 않은 코딩 방법에 대해 코드 스니펫을 분석할 수 있는 방법을 제공한다. 가능한 언제든지 일반적인 보안 오류에 대해 코드베이스를 스캔할 수 있는 자동화된 도구를 사용하여 검사를 한다. 도구는 다음에서 찾을 수 있다. https://owasp.org/www-community/Source_Code_Analysis_Tools | +동적 탐지 공격 | 일반적으로 서비스에서 발생할 수 있는 잘 알려진 공격 중 일부를 서비스에 테스트할 수 있는 자동화된 몇 가지 도구가 있다. 이런 잘 알려진 공격에는 SQL 인젝션, CSRF 및 XSS가 포함된다. 가장 널리 사용되는 동적 분석 도구는 OWASP Zed Attack 프록시다. https://owasp.org/www-project-zap/ | ## 강력한(robust) 자동화 diff --git a/content/ko/docs/concepts/services-networking/dns-pod-service.md b/content/ko/docs/concepts/services-networking/dns-pod-service.md index 91fbc782d7..db0abf1ede 100644 --- a/content/ko/docs/concepts/services-networking/dns-pod-service.md +++ b/content/ko/docs/concepts/services-networking/dns-pod-service.md @@ -164,7 +164,7 @@ DNS 정책은 파드별로 설정할 수 있다. 현재 쿠버네티스는 다 일치하지 않는 DNS 쿼리는 노드에서 상속된 업스트림 네임서버로 전달된다. 클러스터 관리자는 추가 스텁-도메인(stub-domain)과 업스트림 DNS 서버를 구축할 수 있다. 그러한 경우 DNS 쿼리를 어떻게 처리하는지에 대한 자세한 내용은 - [관련 논의](/docs/tasks/administer-cluster/dns-custom-nameservers/#impacts-on-pods) + [관련 논의](/docs/tasks/administer-cluster/dns-custom-nameservers/#effects-on-pods) 에서 확인할 수 있다. - "`ClusterFirstWithHostNet`": hostNetwork에서 running 상태인 파드의 경우 DNS 정책인 "`ClusterFirstWithHostNet`"을 명시적으로 설정해야 한다. diff --git a/content/ko/docs/concepts/services-networking/service.md b/content/ko/docs/concepts/services-networking/service.md index 85b6742b5f..5f6fbac267 100644 --- a/content/ko/docs/concepts/services-networking/service.md +++ b/content/ko/docs/concepts/services-networking/service.md @@ -652,6 +652,16 @@ metadata: [...] ``` {{% /tab %}} +{{% tab name="IBM Cloud" %}} +```yaml +[...] +metadata: + name: my-service + annotations: + service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "private" +[...] +``` +{{% /tab %}} {{% tab name="OpenStack" %}} ```yaml [...] diff --git a/content/ko/docs/concepts/storage/storage-classes.md b/content/ko/docs/concepts/storage/storage-classes.md index 66dd33d941..9f38f9f46c 100644 --- a/content/ko/docs/concepts/storage/storage-classes.md +++ b/content/ko/docs/concepts/storage/storage-classes.md @@ -296,12 +296,13 @@ parameters: `replication-type` 이 `regional-pd` 로 설정되면, [지역 퍼시스턴트 디스크](https://cloud.google.com/compute/docs/disks/#repds) -가 프로비전된다. 이 경우, 사용자는 `zone` 대신 `zones` 를 사용해서 원하는 -복제 영역을 지정해야 한다. 정확히 두 개의 영역이 지정된 경우, 해당 -영역에서 지역 PD가 프로비전된다. 둘 이상의 영역이 지정되면 -쿠버네티스는 지정된 영역 중에서 임의로 선택한다. `zones` 파라미터가 생략되면, -쿠버네티스는 클러스터가 관리하는 영역 중에서 -임의로 선택한다. +가 프로비전된다. 이는 퍼시스턴트볼륨클레임과 스토리지클래스를 소모하는 파드를 +생성할 때 지역 퍼시스턴트 디스크는 두개의 영역으로 +프로비전되기에 `volumeBindingMode: WaitForFirstConsumer` 를 +설정하는 것을 강력히 권장한다. 하나의 영역은 파드가 스케줄된 +영역과 동일하다. 다른 영역은 클러스터에서 사용할 수 +있는 영역에서 임의로 선택된다. 디스크 영역은 `allowedTopologies` 를 +사용하면 더 제한할 수 있다. {{< note >}} `zone` 과 `zones` 파라미터는 사용 중단 되었으며, diff --git a/content/ko/docs/concepts/storage/volume-snapshots.md b/content/ko/docs/concepts/storage/volume-snapshots.md index 534f3cf88b..60ad22c7cc 100644 --- a/content/ko/docs/concepts/storage/volume-snapshots.md +++ b/content/ko/docs/concepts/storage/volume-snapshots.md @@ -6,7 +6,7 @@ weight: 20 {{% capture overview %}} -{{< feature-state for_k8s_version="1.17" state="beta" >}} +{{< feature-state for_k8s_version="v1.17" state="beta" >}} 쿠버네티스에서 스토리지 시스템 볼륨 스냅샷은 _VolumeSnapshot_ 을 나타낸다. 이 문서는 이미 쿠버네티스 [퍼시스턴트 볼륨](/docs/concepts/storage/persistent-volumes/)에 대해 잘 알고 있다고 가정한다. {{% /capture %}} @@ -55,7 +55,9 @@ API 리소스 `PersistentVolume` 및 `PersistentVolumeClaim` 가 사용자 및 ### 스냅샷 소스 보호로서의 퍼시스턴트 볼륨 클레임 -이 보호의 목적은 스냅샷이 생성되는 동안 사용 중인 퍼시스턴트볼륨클레임 API 오브젝트가 시스템에서 지워지지 않게 하는 것이다(데이터 손실이 발생할 수 있기 때문에). +이 보호의 목적은 스냅샷이 생성되는 동안 사용 중인 +{{< glossary_tooltip text="퍼시스턴트볼륨클레임" term_id="persistent-volume-claim" >}} +API 오브젝트가 시스템에서 지워지지 않게 하는 것이다(데이터 손실이 발생할 수 있기 때문에). 퍼시스턴트볼륨클레임이 스냅샷을 생성할 동안에는 해당 퍼시스턴트볼륨클레임은 사용중인 상태이다. 스냅샷 소스로 사용 중인 퍼시스턴트볼륨클레임 API 객체를 삭제한다면, 퍼시스턴트볼륨클레임 객체는 즉시 삭제되지 않는다. 대신, 퍼시스턴트볼륨클레임 객체 삭제는 스냅샷이 준비(readyTouse) 혹은 중단(aborted) 상태가 될 때까지 연기된다. diff --git a/content/ko/docs/concepts/storage/volumes.md b/content/ko/docs/concepts/storage/volumes.md index 0ad7755031..035b7bade7 100644 --- a/content/ko/docs/concepts/storage/volumes.md +++ b/content/ko/docs/concepts/storage/volumes.md @@ -9,7 +9,7 @@ weight: 10 컨테이너 내의 디스크에 있는 파일은 임시적이며, 컨테이너에서 실행될 때 애플리케이션에 적지 않은 몇 가지 문제가 발생한다. 첫째, 컨테이너가 충돌되면, kubelet은 컨테이너를 재시작시키지만, 컨테이너는 깨끗한 상태로 -시작되기 때문에 기존 파일이 유실된다. 둘째, `파드` 에서 컨테이너를 함께 실행할 때 +시작되기 때문에 기존 파일이 유실된다. 둘째, `파드` 에서 컨테이너를 함께 실행할 때 컨테이너 사이에 파일을 공유해야 하는 경우가 자주 발생한다. 쿠버네티스의 `볼륨` 추상화는 이 두 가지 문제를 모두 해결한다. @@ -22,7 +22,7 @@ kubelet은 컨테이너를 재시작시키지만, 컨테이너는 깨끗한 상 ## 배경 -도커는 다소 느슨하고, 덜 관리되지만 +도커는 다소 느슨하고, 덜 관리되지만 [볼륨](https://docs.docker.com/engine/admin/volumes/)이라는 개념을 가지고 있다. 도커에서 볼륨은 단순한 디스크 내 디렉터리 또는 다른 컨테이너에 있는 디렉터리다. 수명은 관리되지 않으며 최근까지는 @@ -70,7 +70,7 @@ kubelet은 컨테이너를 재시작시키지만, 컨테이너는 깨끗한 상 * [csi](#csi) * [downwardAPI](#downwardapi) * [emptyDir](#emptydir) - * [fc (파이버 채널))](#fc) + * [fc (파이버 채널)](#fc) * [flexVolume](#flexVolume) * [flocker](#flocker) * [gcePersistentDisk](#gcepersistentdisk) @@ -496,7 +496,7 @@ gitRepo 볼륨 유형은 사용 중단(deprecated)되었다. git repo가 있는 `gitRepo` 볼륨은 볼륨 플러그인으로 할 수 있는 예시이다. 빈 디렉터리를 마운트하고 파드가 사용할 수 있도록 해당 디렉터리에 git 리포지트리를 -복제한다. 미래에는 모든 이용 사례에 대해 쿠버네티스 API를 확장하는 대신에 +복제한다. 미래에는 모든 이용 사례에 대해 쿠버네티스 API를 확장하는 대신에 이런 볼륨은 훨씬 더 분리된 모델로 이동될 수 있다. 여기 gitRepo 볼륨의 예시가 있다. @@ -1031,7 +1031,7 @@ tmpfs(RAM 기반 파일시스템)로 지원되기 때문에 비 휘발성 스토 ### storageOS {#storageos} -`storageos` 볼륨을 사용하면 기존 [StorageOS](https://www.storageos.com) +`storageos` 볼륨을 사용하면 기존 [StorageOS](https://www.storageos.com) 볼륨을 파드에 마운트할 수 있다. StorageOS 는 쿠버네티스 환경에서 컨테이너로 실행되므로 diff --git a/content/ko/docs/concepts/workloads/controllers/cron-jobs.md b/content/ko/docs/concepts/workloads/controllers/cron-jobs.md index b72607d41a..b06881c53f 100644 --- a/content/ko/docs/concepts/workloads/controllers/cron-jobs.md +++ b/content/ko/docs/concepts/workloads/controllers/cron-jobs.md @@ -8,13 +8,17 @@ weight: 80 {{< feature-state for_k8s_version="v1.8" state="beta" >}} -_크론 잡은_ 시간 기반의 일정에 따라 [잡](/ko/docs/concepts/workloads/controllers/jobs-run-to-completion/)을 만든다. +_크론잡은_ 반복 일정에 따라 {{< glossary_tooltip term_id="job" text="잡" >}}을 만든다. 하나의 크론잡 객체는 _크론탭_ (크론 테이블) 파일의 한 줄과 같다. 크론잡은 잡을 [크론](https://en.wikipedia.org/wiki/Cron)형식으로 쓰여진 주어진 일정에 따라 주기적으로 동작시킨다. {{< caution >}} -모든 **크론잡** `일정:` 시간은 UTC로 표시된다. +모든 **크론잡** `일정:` 시간은 +{{< glossary_tooltip term_id="kube-controller-manager" text="kube-controller-manager" >}}의 시간대를 기준으로 한다. + +컨트롤 플레인이 파드 또는 베어 컨테이너에서 kube-controller-manager를 실행하는 경우, +kube-controller-manager 컨테이너에 설정된 시간대는 크론잡 컨트롤러가 사용하는 시간대로 결정한다. {{< /caution >}} 크론잡 리소스에 대한 매니페스트를 생성할때에는 제공하는 이름이 @@ -23,14 +27,26 @@ _크론 잡은_ 시간 기반의 일정에 따라 [잡](/ko/docs/concepts/worklo 11자를 자동으로 추가하고, 작업 이름의 최대 길이는 63자라는 제약 조건이 있기 때문이다. -크론 잡을 생성하고 작동하는 방법은 크론 잡의 스펙 파일을 확안한다. 내용은 [크론 잡으로 자동 작업 실행하기](/docs/tasks/job/automated-tasks-with-cron-jobs)를 참조한다. {{% /capture %}} - - {{% capture body %}} -## 크론 잡의 한계 +## 크론잡 + +크론잡은 백업 실행 또는 이메일 전송과 같은 정기적이고 반복적인 +작업을 만드는데 유용하다. 또한 크론잡은 클러스터가 유휴 상태일 때 잡을 +스케줄링하는 것과 같이 특정 시간 동안의 개별 작업을 스케줄할 수 있다. + +### 예제 + +이 크론잡 매니페스트 예제는 현재 시간과 hello 메시지를 1분마다 출력한다. + +{{< codenew file="application/job/cronjob.yaml" >}} + +([크론잡으로 자동화된 작업 실행하기](/docs/tasks/job/automated-tasks-with-cron-jobs/)는 +이 예시를 더 자세히 설명한다.) + +## 크론 잡의 한계 {#cron-job-limitations} 크론 잡은 일정의 실행시간 마다 _약_ 한 번의 잡을 생성한다. "약" 이라고 하는 이유는 특정 환경에서는 두 개의 잡이 만들어지거나, 잡이 생성되지 않기도 하기 때문이다. 보통 이렇게 하지 @@ -62,3 +78,11 @@ Cannot determine if job needs to be started. Too many missed start time (> 100). 잡은 그 잡이 대표하는 파드 관리에 책임이 있다. {{% /capture %}} +{{% capture whatsnext %}} +[크론 표현 포맷](https://pkg.go.dev/github.com/robfig/cron?tab=doc#hdr-CRON_Expression_Format)은 +크론잡 `schedule` 필드의 포맷을 문서화 한다. + +크론 잡 생성과 작업에 대한 지침과 크론잡 매니페스트의 +예는 [크론 잡으로 자동화된 작업 실행하기](/docs/tasks/job/automated-tasks-with-cron-jobs/)를 참조한다. + +{{% /capture %}} diff --git a/content/ko/docs/concepts/workloads/controllers/deployment.md b/content/ko/docs/concepts/workloads/controllers/deployment.md index 5afb68b9bc..268175c200 100644 --- a/content/ko/docs/concepts/workloads/controllers/deployment.md +++ b/content/ko/docs/concepts/workloads/controllers/deployment.md @@ -46,24 +46,24 @@ _디플로이먼트_ 는 [파드](/ko/docs/concepts/workloads/pods/pod/)와 이 예시에 대한 설명은 다음과 같다. * `.metadata.name` 필드에 따라 `nginx-deployment` 이름으로 디플로이먼트가 생성된다. -* `replicas` 필드에 따라 디플로이먼트는 3개의 레플리카 파드를 생성한다. -* `selector` 필드는 디플로이먼트가 관리할 파드를 찾는 방법을 정의한다. +* `.spec.replicas` 필드에 따라 디플로이먼트는 3개의 레플리카 파드를 생성한다. +* `.spec.selector` 필드는 디플로이먼트가 관리할 파드를 찾는 방법을 정의한다. 이 사례에서는 간단하게 파드 템플릿에 정의된 레이블(`app: nginx`)을 선택한다. 그러나 파드 템플릿 자체의 규칙이 만족되는 한, 보다 정교한 선택 규칙의 적용이 가능하다. {{< note >}} - `matchLabels` 필드는 {key,value}의 쌍으로 매핑되어있다. `matchLabels` 에 매핑된 + `.spec.selector.matchLabels` 필드는 {key,value}의 쌍으로 매핑되어있다. `matchLabels` 에 매핑된 단일 {key,value}은 `matchExpressions` 의 요소에 해당하며, 키 필드는 "key"에 그리고 연산자는 "In"에 대응되며 값 배열은 "value"만 포함한다. 매칭을 위해서는 `matchLabels` 와 `matchExpressions` 의 모든 요건이 충족되어야 한다. {{< /note >}} * `template` 필드에는 다음 하위 필드가 포함되어있다. - * 파드는 `labels` 필드를 사용해서 `app: nginx` 이라는 레이블을 붙인다. + * 파드는 `.metadata.labels` 필드를 사용해서 `app: nginx` 라는 레이블을 붙인다. * 파드 템플릿의 사양 또는 `.template.spec` 필드는 파드가 [도커 허브](https://hub.docker.com/)의 `nginx` 1.14.2 버전 이미지를 실행하는 `nginx` 컨테이너 1개를 실행하는 것을 나타낸다. - * 컨테이너 1개를 생성하고, `name` 필드를 사용해서 `nginx` 이름을 붙인다. + * 컨테이너 1개를 생성하고, `.spec.template.spec.containers[0].name` 필드를 사용해서 `nginx` 이름을 붙인다. 위의 디플로이먼트를 생성하려면 다음 단계를 따른다. @@ -87,9 +87,8 @@ _디플로이먼트_ 는 [파드](/ko/docs/concepts/workloads/pods/pod/)와 ``` 클러스터에서 디플로이먼트를 점검할 때 다음 필드가 표시된다. - * `NAME` 은 클러스터에 있는 디플로이먼트 이름의 목록이다. - * `DESIRED` 는 디플로이먼트의 생성시 정의된 의도한 애플리케이션 _레플리카_ 의 수를 표시한다. 이것이 _의도한 상태_ 이다. - * `CURRENT` 는 현재 실행 중인 레플리카의 수를 표시한다. + * `NAME` 은 네임스페이스에 있는 디플로이먼트 이름의 목록이다. + * `READY` 는 사용자가 사용할 수 있는 애플리케이션의 레플리카의 수를 표시한다. ready/desired 패턴을 따른다. * `UP-TO-DATE` 는 의도한 상태를 얻기위해 업데이트 된 레플리카의 수를 표시한다. * `AVAILABLE` 은 사용자가 사용 가능한 애플리케이션 레플리카의 수를 표시한다. * `AGE` 는 애플리케이션의 실행 된 시간을 표시한다. @@ -114,8 +113,16 @@ _디플로이먼트_ 는 [파드](/ko/docs/concepts/workloads/pods/pod/)와 NAME DESIRED CURRENT READY AGE nginx-deployment-75675f5897 3 3 3 18s ``` + 레플리카셋의 출력에는 다음 필드가 표시된다. + + * `NAME` 은 네임스페이스에 있는 레플리카셋 이름의 목록이다. + * `DESIRED` 는 디플로이먼트의 생성 시 정의된 의도한 애플리케이션 _레플리카_ 의 수를 표시한다. 이것이 _의도한 상태_ 이다. + * `CURRENT` 는 현재 실행 중인 레플리카의 수를 표시한다. + * `READY` 는 사용자가 사용할 수 있는 애플리케이션의 레플리카의 수를 표시한다. + * `AGE` 는 애플리케이션의 실행된 시간을 표시한다. + 레플리카셋의 이름은 항상 `[DEPLOYMENT-NAME]-[RANDOM-STRING]` 형식으로 된 것을 알 수 있다. 무작위 문자열은 - 무작위로 생성되며, Pod-template-hash를 시드(seed)로 사용한다. + 무작위로 생성되며, `pod-template-hash` 를 시드(seed)로 사용한다. 6. 각 파드에 자동으로 생성된 레이블을 보려면 `kubectl get pods --show-labels` 를 실행한다. 다음과 유사하게 출력된다. ```shell @@ -508,7 +515,7 @@ API 버전 `apps/v1` 에서 디플로이먼트의 레이블 셀렉터는 생성 이와 유사하게 출력된다. ``` - deployment.apps/nginx-deployment + deployment.apps/nginx-deployment rolled back ``` Alternatively, you can rollback to a specific revision by specifying it with `--to-revision`: @@ -518,7 +525,7 @@ API 버전 `apps/v1` 에서 디플로이먼트의 레이블 셀렉터는 생성 이와 유사하게 출력된다. ``` - deployment.apps/nginx-deployment + deployment.apps/nginx-deployment rolled back ``` 롤아웃 관련 명령에 대한 자세한 내용은 [`kubectl rollout`](/docs/reference/generated/kubectl/kubectl-commands#rollout)을 참조한다. @@ -1015,7 +1022,7 @@ $ echo $? ## 디플로이먼트 사양 작성 -다른 모든 쿠버네티스 설정과 마찬가지로 디플로이먼트에는 `apiVersion`, `kind` 그리고 `metadata` 필드가 필요하다. +다른 모든 쿠버네티스 설정과 마찬가지로 디플로이먼트에는 `.apiVersion`, `.kind` 그리고 `.metadata` 필드가 필요하다. 설정 파일 작업에 대한 일반적인 내용은 [애플리케이션 배포하기](/docs/tutorials/stateless-application/run-stateless-application-deployment/), 컨테이너 구성하기 그리고 [kubectl을 사용해서 리소스 관리하기](/ko/docs/concepts/overview/working-with-objects/object-management/) 문서를 참조한다. 디플로이먼트 오브젝트의 이름은 유효한 diff --git a/content/ko/docs/concepts/workloads/pods/pod-lifecycle.md b/content/ko/docs/concepts/workloads/pods/pod-lifecycle.md index 42f86781c5..e29e358d97 100644 --- a/content/ko/docs/concepts/workloads/pods/pod-lifecycle.md +++ b/content/ko/docs/concepts/workloads/pods/pod-lifecycle.md @@ -181,7 +181,7 @@ kubelet은 실행 중인 컨테이너들에 대해서 선택적으로 세 가지 ... State: Waiting Reason: ErrImagePull - ... + ... ``` * `Running`: 컨테이너가 이슈 없이 구동된다는 뜻이다. `postStart` 훅(있는 경우)은 컨테이너가 Running 상태가 되기 전에 실행된다. 이 상태는 컨테이너가 언제 Running 상태에 돌입한 시간도 함께 출력된다. @@ -206,31 +206,34 @@ kubelet은 실행 중인 컨테이너들에 대해서 선택적으로 세 가지 ... ``` -## 파드의 준비성 게이트(readiness gate) +## 파드의 준비성(readiness) {#pod-readiness-gate} {{< feature-state for_k8s_version="v1.14" state="stable" >}} -파드의 준비성에 대한 확장성을 추가하기 위해서 -추가적인 피드백이나 신호를 `PodStatus`에 주입하는 방법인, -[파드 준비++](https://github.com/kubernetes/enhancements/blob/master/keps/sig-network/0007-pod-ready%2B%2B.md)라는 특징이 쿠버네티스 1.11에서 소개되었다. -파드의 준비성을 평가하기 위한 추가적인 조건들을 `PodSpec` 내의 새로운 `ReadinessGate` 필드를 -통해서 지정할 수 있다. 만약 쿠버네티스가 `status.conditions` 필드에서 해당하는 +애플리케이션은 추가 피드백 또는 신호를 PodStatus: _Pod readiness_ +와 같이 주입할 수 있다. 이를 사용하기 위해, 파드의 준비성을 평가하기 +위한 추가적인 조건들을 `PodSpec` 내의 `ReadinessGate` 필드를 통해서 지정할 수 있다. + +준비성 게이트는 파드에 대한 `status.condition` 필드의 현재 +상태에 따라 결정된다. 만약 쿠버네티스가 `status.conditions` 필드에서 해당하는 조건을 찾지 못한다면, 그 조건의 상태는 기본 값인 "`False`"가 된다. 아래는 한 예제를 보여준다. +여기 예제가 있다. + ```yaml -Kind: Pod +kind: Pod ... spec: readinessGates: - conditionType: "www.example.com/feature-1" status: conditions: - - type: Ready # 이것은 내장된 PodCondition이다 + - type: Ready # 내장된 PodCondition이다 status: "False" lastProbeTime: null lastTransitionTime: 2018-01-01T00:00:00Z - - type: "www.example.com/feature-1" # 추가적인 PodCondition + - type: "www.example.com/feature-1" # 추가적인 PodCondition status: "False" lastProbeTime: null lastTransitionTime: 2018-01-01T00:00:00Z @@ -240,19 +243,23 @@ status: ... ``` -파드의 새로운 조건들은 -쿠버네티스의 [레이블 키 포멧](/ko/docs/concepts/overview/working-with-objects/labels/#구문과-캐릭터-셋)을 준수해야 한다. -`kubectl patch` 명령어가 오브젝트 상태 패치(patching)를 아직 제공하지 않기 때문에, -새로운 파드 조건들은 [KubeClient 라이브러리](/ko/docs/reference/using-api/client-libraries/)를 통한 `PATCH` 액션을 통해서 주입되어야 한다. +추가하는 파드 상태에는 쿠버네티스 [레이블 키 포맷](/ko/docs/concepts/overview/working-with-objects/labels/#구문과-캐릭터-셋)을 충족하는 이름이 있어야 한다. -새로운 파드 조건들이 적용된 경우, 파드는 **오직** -다음 두 문장이 모두 참일 때만 준비 상태로 평가된다. + +### 파드 준비성 상태 {#pod-readiness-status} + +`kubectl patch` 명령어는 아직 오브젝트 상태 패치(patching)를 지원하지 않는다. +이러한 `status.conditions` 을 파드에 설정하려면 애플리케이션과 +{{< glossary_tooltip term_id="operator-pattern" text="오퍼레이터">}}의 +`PATCH` 액션을 필요로 한다. +[쿠버네티스 클라이언트 라이브러리](/ko/docs/reference/using-api/client-libraries/)를 +사용해서 파드 준비성에 대한 사용자 지정 파드 조건을 설정하는 코드를 작성할 수 있다. + +사용자 지정 조건을 사용하는 파드의 경우, 다음 두 조건이 모두 적용되는 +경우에 **만** 해당 파드가 준비된 것으로 평가된다. * 파드 내의 모든 컨테이너들이 준비 상태이다. -* `ReadinessGates`에 지정된 모든 조건들이 "`True`"이다. - -파드 준비성 평가에 대한 변경을 촉진하기 위해서, -이전 파드 조건인 `Ready`를 포착하기 위한 새로운 파드 조건 `ContainersReady`가 소개되었다. +* `ReadinessGates`에 지정된 모든 조건들이 `True` 이다. ## 재시작 정책 @@ -269,32 +276,31 @@ kubelet에 의해서 재시작되는 종료된 컨테이너는 ## 파드의 일생(lifetime) -일반적으로, 파드는 사람 혹은 컨트롤러의 프로세스가 명시적으로 파드를 삭제할 때까지 남아 있다. +일반적으로, 파드는 사람 혹은 +{{< glossary_tooltip term_id="controller" text="컨트롤러" >}}의 +프로세스가 명시적으로 파드를 삭제할 때까지 남아 있다. 컨트롤 플레인은 파드의 수가 설정된 임계치(kube-controller-manager에서 `terminated-pod-gc-threshold`에 의해 결정)를 초과할 때, 종료된 파드들(`Succeeded` 또는 `Failed` 단계)을 정리한다. 이로써 시간이 지남에 따라 파드들이 생성 및 종료되며 발생하는 리소스 누수를 피할 수 있다. -세 가지 유형의 컨트롤러를 사용할 수 있다. +파드에는 다음과 같은 다양한 종류의 리소스가 있다. -- 배치 연산과 같이, 종료가 예상되는 파드를 위해서는 [잡](/docs/concepts/jobs/run-to-completion-finite-workloads/)을 +- 예를 들어 웹 서버와 같이 종료되지 않을 것으로 예상되는 파드용 + {{< glossary_tooltip term_id="deployment" >}}, {{< glossary_tooltip term_id="replica-set" >}} 또는 + {{< glossary_tooltip term_id="statefulset" >}}을 사용한다. + +- 배치 연산과 같이, 종료가 예상되는 파드를 위해서는 + {{< glossary_tooltip term_id="job" >}}을 사용하길 바란다. 잡은 `restartPolicy`가 실패 시(OnFailure) 또는 절대 안 함(Never)으로 지정된 경우에 적합하다. -- 웹 서버와 같이, 종료가 예상되지 않는 파드에 대해서는 - [레플리케이션 컨트롤러](/ko/docs/concepts/workloads/controllers/replicationcontroller/), - [레플리카 셋](/ko/docs/concepts/workloads/controllers/replicaset/), 또는 - [디플로이먼트](/ko/docs/concepts/workloads/controllers/deployment/)를 사용하길 바란다. - 레플리케이션 컨트롤러는 `restartPolicy`가 항상(Always)으로 지정된 - 경우에만 적합하다. +- 적합한 노드 당 하나씩 실행해야 하는 파드에는 + {{< glossary_tooltip term_id="daemonset" >}}을 사용한다. -- 머신 당 하나씩 실행해야하는 파드를 위해서는 [데몬 셋](/ko/docs/concepts/workloads/controllers/daemonset/)을 사용하길 - 바란다. 왜냐하면 데몬 셋은 특정 머신 전용 시스템 서비스(machine-specific system service)를 제공하기 때문이다. - -세 가지 모든 컨트롤러 유형은 PodTemplate을 가지고 있다. 파드를 -직접적으로 생성하는 것 보다는, 적절한 컨트롤러를 생성하고 컨트롤러가 파드를 -생성하도록 하는 것이 추천된다. 그 이유는 파드 -혼자서는 머신의 실패에 탄력적(resilient)이지 않지만, 컨트롤러는 탄력적이기 때문이다. +모든 워크로드 리소스에는 파드명세가 포함된다. 사용자가 직접적으로 파드를 생성하는 +것보다 적절한 워크로드 리소스를 생성하고 리소스 컨트롤러가 +사용자를 위한 파드를 생성하도록 하는 것을 권장한다. 만약 노드가 죽거나 다른 클러스터의 다른 노드들로부터 연결이 끊기면, 쿠버네티스는 잃어버린 노드에 있는 모든 파드의 `phase`를 실패된(Failed)으로 설정하는 정책을 적용한다. @@ -398,4 +404,3 @@ spec: {{% /capture %}} - diff --git a/content/ko/docs/concepts/workloads/pods/pod-overview.md b/content/ko/docs/concepts/workloads/pods/pod-overview.md index 1902594c33..e1239a817e 100644 --- a/content/ko/docs/concepts/workloads/pods/pod-overview.md +++ b/content/ko/docs/concepts/workloads/pods/pod-overview.md @@ -15,9 +15,9 @@ card: {{% capture body %}} ## 파드에 대해 이해하기 -*파드* 는 쿠버네티스 애플리케이션의 기본 실행 단위이다. 쿠버네티스 객체 모델 중 만들고 배포할 수 있는 가장 작고 간단한 단위이다. 파드는 {{< glossary_tooltip term_id="cluster" >}} 에서의 Running 프로세스를 나타낸다. +*파드* 는 쿠버네티스 애플리케이션의 기본 실행 단위이다. 쿠버네티스 객체 모델 중 만들고 배포할 수 있는 가장 작고 간단한 단위이다. 파드는 {{< glossary_tooltip term_id="cluster" text="클러스터" >}} 에서의 Running 프로세스를 나타낸다. -파드는 애플리케이션 컨테이너(또는, 몇몇의 경우, 다중 컨테이너), 저장소 리소스, 특정 네트워크 IP 그리고, {{< glossary_tooltip text="container" term_id="container" >}} 가 동작하기 위해 만들어진 옵션들을 캡슐화 한다. 파드는 배포의 단위를 말한다. 아마 단일 컨테이너로 구성되어 있거나, 강하게 결합되어 리소스를 공유하는 소수의 컨테이너로 구성되어 있는 *쿠버네티스에서의 애플리케이션 단일 인스턴스* 를 의미함. +파드는 애플리케이션 컨테이너(또는, 몇몇의 경우, 다중 컨테이너), 저장소 리소스, 특정 네트워크 정체성(IP 주소) 및 컨테이너가 동작하기 위해 만들어진 옵션들을 캡슐화 한다. 파드는 배포의 단위를 말한다. 아마 단일 {{< glossary_tooltip text="컨테이너" term_id="container" >}}로 구성되어 있거나, 강하게 결합되어 리소스를 공유하는 소수의 컨테이너로 구성되어 있는 *쿠버네티스에서의 애플리케이션 단일 인스턴스* 를 의미한다. [도커](https://www.docker.com)는 쿠버네티스 파드에서 사용되는 가장 대표적인 컨테이너 런타임이지만, 파드는 다른 [컨테이너 런타임](/ko/docs/setup/production-environment/container-runtimes/) 역시 지원한다. @@ -26,12 +26,9 @@ card: * **단일 컨테이너만 동작하는 파드**. "단일 컨테이너 당 한 개의 파드" 모델은 쿠버네티스 사용 사례 중 가장 흔하다. 이 경우, 한 개의 파드가 단일 컨테이너를 감싸고 있다고 생각할 수 있으며, 쿠버네티스는 컨테이너가 아닌 파드를 직접 관리한다고 볼 수 있다. * **함께 동작하는 작업이 필요한 다중 컨테이너가 동작하는 파드**. 아마 파드는 강하게 결합되어 있고 리소스 공유가 필요한 다중으로 함께 배치된 컨테이너로 구성되어 있을 것이다. 이렇게 함께 배치되어 설치된 컨테이너는 단일 결합 서비스 단위일 것이다. 한 컨테이너는 공유 볼륨에서 퍼블릭으로 파일들을 옮기고, 동시에 분리되어 있는 "사이드카" 컨테이너는 그 파일들을 업데이트 하거나 복구한다. 파드는 이 컨테이너와 저장소 리소스들을 한 개의 관리 가능한 요소로 묶는다. -[쿠버네티스 블로그](https://kubernetes.io/blog)에는 파드 사용 사례의 몇 가지 추가적인 정보가 있다. 더 많은 정보를 위해서 아래 내용을 참조하길 바란다. - - * [분산 시스템 툴킷: 복합 컨테이너를 위한 패턴](https://kubernetes.io/blog/2015/06/the-distributed-system-toolkit-patterns) - * [컨테이너 디자인 패턴](https://kubernetes.io/blog/2016/06/container-design-patterns) - -각각의 파드는 주어진 애플리케이션에서 단일 인스턴스로 동작을 하는 것을 말한다. 만약 애플리케이션을 수평적으로 스케일하기를 원하면(예를 들면, 다중 인스턴스 동작하는 것), 각 인스턴스 당 한 개씩 다중 파드를 사용해야 한다. 쿠버네티스에서는, 일반적으로 이것을 _복제_ 라고 한다. 복제된 파드는 주로 컨트롤러라고 하는 추상화 개념의 그룹에 의해 만들어지고 관리된다. 더 많은 정보는 [파드와 컨트롤러](#파드와-컨트롤러)를 참고하길 바란다. +각각의 파드는 주어진 애플리케이션에서 단일 인스턴스로 동작하는 것을 말한다. 만약 애플리케이션을 수평적으로 스케일하기를 원하면(더 많은 인스턴스를 실행해서 더 많은 전체 리소스를 제공하는 것), 각 인스턴스 당 한 개씩 다중 파드를 사용해야 한다. 쿠버네티스에서는, 일반적으로 이것을 _복제_ 라고 한다. +복제된 파드는 일반적으로 워크로드 리소스와 해당 {{< glossary_tooltip text="_컨트롤러_" term_id="controller" >}}에 의해 그룹으로 생성과 관리된다. +쿠버네티스가 컨트롤러를 사용해서 워크로드의 확장과 복구를 구현하는 방법에 대한 자세한 내용은 [파드와 컨트롤러](#파드와-컨트롤러)를 참고한다. ## 어떻게 파드가 다중 컨테이너를 관리하는가 @@ -47,7 +44,7 @@ card: #### 네트워킹 -각각의 파드는 유일한 IP주소를 할당 받는다. 한 파드 내부의 모든 컨테이너는 네트워크 네임스페이스와 IP주소 및 네트워크 포트를 공유한다. *파드 안에 있는* 컨테이너는 다른 컨테이너와 `localhost`를 통해서 통신할 수 있다. 특정 파드 안에 있는 컨테이너가 *파드 밖의* 요소들과 통신하기 위해서는, 네트워크 리소스를 어떻게 쓰고 있는지 공유 해야 한다(예를 들어 포트 등). +각각의 파드는 각 주소 패밀리의 고유한 IP 주소를 할당 받는다. 한 파드 내부의 모든 컨테이너는 네트워크 네임스페이스와 IP주소 및 네트워크 포트를 공유한다. *파드 안에 있는* 컨테이너는 다른 컨테이너와 `localhost` 를 통해서 통신할 수 있다. 특정 파드 안에 있는 컨테이너가 *파드 밖의* 요소들과 통신하기 위해서는, 네트워크 리소스를 어떻게 쓰고 있는지 공유해야 한다(예를 들어 포트 등). #### 저장소 @@ -55,54 +52,63 @@ card: ## 파드 작업 -직접 쿠버네티스에서 싱글톤 파드이더라도 개별 파드를 만들일이 거의 없을 것이다. 그 이유는 파드가 상대적으로 수명이 짧고 일시적이기 때문이다. 파드가 만들어지면(직접 만들거나, 컨트롤러에 의해서 간접적으로 만들어지거나), 그것은 클러스터의 {{< glossary_tooltip term_id="node" >}} 에서 동작할 것이다. 파드는 프로세스가 종료되거나, 파드 객체가 삭제되거나, 파드가 리소스의 부족으로 인해 *제거되거나*, 노드에 장애가 생기지 않는 한 노드에 남아있는다. +직접 쿠버네티스에서 싱글톤 파드이더라도 개별 파드를 만들 일이 거의 없을 것이다. 그 이유는 파드가 상대적으로 수명이 짧고 일시적이기 때문이다. 파드가 만들어지면(직접 만들거나, {{< glossary_tooltip text="_컨트롤러_" term_id="controller" >}}에 의해서 간접적으로 만들어지거나), 그것은 클러스터의 {{< glossary_tooltip term_id="node" >}}에서 동작할 것이다. 파드는 프로세스가 종료되거나, 파드 오브젝트가 삭제되거나, 파드가 리소스의 부족으로 인해 *축출되거나*, 노드에 장애가 생기지 않는 한 노드에 남아있다. {{< note >}} -파드 내부에서 재시작되는 컨테이너를 파드와 함께 재시작되는 컨테이너로 혼동해서는 안된다. 파드는 자기 스스로 동작하지 않는다. 하지만 컨테이너 환경은 그것이 삭제될 때까지 계속 동작한다. +파드 내부에서 재시작되는 컨테이너를 파드와 함께 재시작되는 컨테이너로 혼동해서는 안된다. 파드는 프로세스가 아니라, 컨테이너를 실행하는 환경이다. 파드는 삭제될 때까지 유지된다. {{< /note >}} -파드는 스스로 자신을 치료하지 않는다. 만약 파드가 스케줄링된 노드에 장애가 생기거나, 스케쥴링 동작이 스스로 실패할 경우 파드는 삭제된다. 그와 비슷하게, 파드는 리소스나 노드의 유지 부족으로 인해 제거되는 상황에서 살아남지 못할 것이다. 쿠버네티스는 상대적으로 일시적인 파드 인스턴스를 관리하는 작업을 처리하는 *컨트롤러* 라고 하는 고수준의 추상적 개념을 사용한다. 즉, 파드를 직접적으로 사용가능 하지만, 컨트롤러를 사용하여 파드를 관리하는 것이 쿠버네티스에서 훨씬 더 보편적이다. 쿠버네티스가 어떻게 파드 스케일링과 치료하는지 보려면 [파드와 컨트롤러](#파드와-컨트롤러)를 참고하길 바란다. +파드는 스스로 자신을 치료하지 않는다. 만약 파드가 스케줄링된 노드에 장애가 생기거나, 스케쥴링 동작이 스스로 실패할 경우 파드는 삭제된다. 그와 비슷하게, 파드는 리소스나 노드의 유지 부족으로 인해 축출되는 상황에서 살아남지 못할 것이다. 쿠버네티스는 상대적으로 일시적인 파드 인스턴스를 관리하는 작업을 처리하는 *컨트롤러* 라고 하는 고수준의 추상적 개념을 사용한다. 즉, 파드를 직접적으로 사용할 수 있지만, 컨트롤러를 사용하여 파드를 관리하는 것이 쿠버네티스에서는 훨씬 더 보편적이다. ### 파드와 컨트롤러 -컨트롤러는 다중 파드를 생성하고 관리해 주는데, 클러스터 범위 내에서의 레플리케이션 핸들링, 롤아웃 그리고 셀프힐링 기능 제공을 한다. 예를 들어, 만약 노드가 고장났을 때, 컨트롤러는 다른 노드에 파드를 스케줄링 함으로써 자동으로 교체할 것이다. +워크로드 리소스를 사용해서 여러 파드를 생성하고 관리할 수 있다. 리소스 컨트롤러는 파드 장애 발생 시 복제, 롤아웃, 자동 복구를 처리한다. 예를 들어, 노드에 장애가 발생하면, 컨트롤러는 해당 노드의 파드는 작동을 멈추고 교체용 파드를 생성한다는 것을 알게 된다. 스케줄러는 교체용 파드를 정상적인 노드에 배치하게 된다. -한 가지 또는 그 이상의 파드를 보유한 컨트롤러의 몇 가지 예시. - -* [디플로이먼트](/ko/docs/concepts/workloads/controllers/deployment/) -* [스테이트풀 셋](/ko/docs/concepts/workloads/controllers/statefulset/) -* [데몬 셋](/ko/docs/concepts/workloads/controllers/daemonset/) - -일반적으로, 컨트롤러는 책임을 지고 제공한 파드 템플릿을 사용한다. +* {{< glossary_tooltip text="디플로이먼트" term_id="deployment" >}} +* {{< glossary_tooltip text="스테이트풀셋" term_id="statefulset" >}} +* {{< glossary_tooltip text="데몬셋" term_id="daemonset" >}} ## 파드 템플릿 -파드 템플릿은 [레플리케이션 컨트롤러](/ko/docs/concepts/workloads/controllers/replicationcontroller/), -[잡](/docs/concepts/jobs/run-to-completion-finite-workloads/), -[데몬 셋](/ko/docs/concepts/workloads/controllers/daemonset/)과 같은 다른 객체를 포함하는 파드 명세서이다. -컨트롤러는 파드 템플릿을 사용하여 실제 파드를 만든다. -아래 예시는 메시지를 출력하는 컨테이너를 포함하는 파드에 대한 간단한 매니페스트이다. +워크로드 리소스에 대한 컨트롤러는 파드 템플릿으로 파드를 생성하고 +사용자를 대신해서 이러한 파드를 관리한다. + +파드템플릿은 파드를 생성하기 위한 명세이며 +[디플로이먼트](/ko/docs/concepts/workloads/controllers/deployment/), +[잡](/ko/docs/concepts/jobs/run-to-completion-finite-workloads/) 그리고 +[데몬셋](/ko/docs/concepts/workloads/controllers/daemonset/)과 같은 워크로드 리소스에 포함되어 있다. + +워크로드 리소스의 각 컨트롤러는 워크로드 오브젝트 내부의 파드템플릿을 사용해서 실제 파드를 만든다. 파드템플릿은 앱을 실행하는 데 사용되는 모든 워크로드 리소스의 의도하는 상태의 일부이다. + +아래 샘플은 하나의 컨테이너를 시작하는 `template` 이 있는 간단한 잡에 대한 매니페스트이다. 파드의 컨테이너가 메시지를 출력한 후 일시 중지하게 된다. ```yaml -apiVersion: v1 -kind: Pod +apiVersion: batch/v1 +kind: Job metadata: - name: myapp-pod - labels: - app: myapp -spec: - containers: - - name: myapp-container - image: busybox - command: ['sh', '-c', 'echo 안녕하세요 쿠버네티스! && sleep 3600'] + name: hello + template: + # 이것이 파드 템플릿이다. + spec: + containers: + - name: hello + image: busybox + command: ['sh', '-c', 'echo "Hello, Kubernetes!" && sleep 3600'] + restartPolicy: OnFailure + # 여기가 파드 템플릿의 끝이다. ``` -모든 레플리카의 현재 원하는 상태를 지정하는 대신, 파드 템플릿은 쿠키 틀과 같다. 쿠키가 한 번 잘리면, 그 쿠키는 쿠키 틀과 더이상 관련이 없다. 양자 얽힘이 없는 것이다. 그 이후 템플릿을 변경하거나 새로운 템플릿으로 바꿔도 이미 만들어진 파드에는 직접적인 영향이 없다. 마찬가지로, 레플리케이션 컨트롤러에 의해 만들어진 파드는 아마 그 이후 직접 업데이트될 수 있다. 이것은 모든 컨테이너가 속해있는 파드에서 현재 원하는 상태를 명시하는 것과 의도적으로 대비가 된다. 이러한 접근은 시스템의 의미를 철저히 단순화하고 유연성을 증가시킨다. +파드 템플릿을 수정하거나 새 파드 템플릿으로 전환해도 이미 존재하는 파드에는 영향을 미치지 않는다. 파드는 템플릿 업데이트를 직접 수신하지 않지만, 대신에 수정된 파드 템플릿과 일치하는 새 파드가 생성된다. + +예를 들어, 디플로이먼트 컨트롤러는 실행 중인 파드가 현재 파드 템플릿과 일치하는지 확인한다. 템플릿이 업데이트되면, 컨트롤러는 업데이트된 템플릿을 기반으로 기존 파드를 제거하고 새 파드를 생성한다. 각 워크로드 컨트롤러는 파드 템플릿의 변경사항을 처리하기 위해 자체 규칙을 구현한다. + +노드에서 "kubelet"이 파드 템플릿과 업데이트에 관련된 세부 정보를 직접 관찰하거나 관리하지 않으며, 이러한 세부 정보는 추상화되지 않는다. 이러한 추상화와 분리는 시스템 시맨틱을 단순화하며, 기존 코드를 변경하지 않고 클러스터의 동작을 확장할 수 있도록 한다. {{% /capture %}} {{% capture whatsnext %}} * [파드](/ko/docs/concepts/workloads/pods/pod/)에 대해 더 배워보자. +* [분산 시스템 툴킷: 복합 컨테이너의 패턴](https://kubernetes.io/blog/2015/06/the-distributed-system-toolkit-patterns)은 둘 이상의 컨테이너가 있는 파드의 공통 레이아웃에 대해 설명한다. * 파드의 동작에 대해 더 알아보자. * [파드 종료](/ko/docs/concepts/workloads/pods/pod/#파드의-종료) * [파드 라이프사이클](/ko/docs/concepts/workloads/pods/pod-lifecycle/) diff --git a/content/ko/docs/concepts/workloads/pods/pod-topology-spread-constraints.md b/content/ko/docs/concepts/workloads/pods/pod-topology-spread-constraints.md index 7bde7139a9..4bb95789d3 100644 --- a/content/ko/docs/concepts/workloads/pods/pod-topology-spread-constraints.md +++ b/content/ko/docs/concepts/workloads/pods/pod-topology-spread-constraints.md @@ -62,10 +62,10 @@ metadata: name: mypod spec: topologySpreadConstraints: - - maxSkew: - topologyKey: - whenUnsatisfiable: - labelSelector: + - maxSkew: + topologyKey: + whenUnsatisfiable: + labelSelector: ``` 사용자는 하나 또는 다중 `topologySpreadConstraint` 를 정의해서 kube-scheduler 에게 클러스터에 걸쳐 있는 기존 파드와 시작하는 각각의 파드와 연관하여 배치하는 방법을 명령할 수 있다. 필드는 다음과 같다. @@ -73,8 +73,8 @@ spec: - **maxSkew** 는 파드가 균등하지 않게 분산될 수 있는 정도를 나타낸다. 이것은 주어진 토폴로지 유형의 임의의 두 토폴로지 도메인에 일치하는 파드의 수 사이에서 허용되는 차이의 최댓값이다. 이것은 0보다는 커야 한다. - **topologyKey** 는 노드 레이블의 키다. 만약 두 노드가 이 키로 레이블이 지정되고, 레이블이 동일한 값을 가진다면 스케줄러는 두 노드를 같은 토폴로지에 있는것으로 여기게 된다. 스케줄러는 각 토폴로지 도메인에 균형잡힌 수의 파드를 배치하려고 시도한다. - **whenUnsatisfiable** 는 분산 제약 조건을 만족하지 않을 경우에 처리하는 방법을 나타낸다. - - `DoNotSchedule` (기본값)은 스케줄러에 스케줄을 하지 말라고 알려준다. - - `ScheduleAnyway` 는 스케줄러에게 차이(skew)를 최소화하는 노드에 높은 우선순위를 부여하면서, 스케줄을 계속하도록 지시한다. + - `DoNotSchedule` (기본값)은 스케줄러에 스케줄링을 하지 말라고 알려준다. + - `ScheduleAnyway` 는 스케줄러에게 차이(skew)를 최소화하는 노드에 높은 우선 순위를 부여하면서, 스케줄링을 계속하도록 지시한다. - **labelSelector** 는 일치하는 파드를 찾는데 사용된다. 이 레이블 셀렉터와 일치하는 파드의 수를 계산하여 해당 토폴로지 도메인에 속할 파드의 수를 결정한다. 자세한 내용은 [레이블 셀렉터](/ko/docs/concepts/overview/working-with-objects/labels/#레이블-셀렉터)를 참조한다. 사용자는 `kubectl explain Pod.spec.topologySpreadConstraints` 를 실행해서 이 필드에 대한 자세한 내용을 알 수 있다. @@ -160,8 +160,8 @@ spec: - 신규 파드와 같은 네임스페이스를 갖는 파드만이 매칭의 후보가 된다. - `topologySpreadConstraints[*].topologyKey` 가 없는 노드는 무시된다. 이것은 다음을 의미한다. - 1. 이러한 노드에 위치한 파드는 "maxSkew" 계산에 영향을 미치지 않는다. - 위의 예시에서, "node1"은 "zone"레이블을 가지고 있지 않다고 가정하면, 파드 2개는 무시될 것이고, 이런 이유로 신규 파드는 "zoneA"로 스케줄된다. - 2. 신규 파드는 이런 종류의 노드에 스케줄 될 기회가 없다. - 위의 예시에서, 레이블로 `{zone-typo: zoneC}` 를 가지는 "node5"가 클러스터에 편입한다고 가정하면, 레이블 키에 "zone"이 없기 때문에 무시하게 된다. + 1. 이러한 노드에 위치한 파드는 "maxSkew" 계산에 영향을 미치지 않는다. - 위의 예시에서, "node1"은 "zone" 레이블을 가지고 있지 않다고 가정하면, 파드 2개는 무시될 것이고, 이런 이유로 신규 파드는 "zoneA"로 스케줄된다. + 2. 신규 파드는 이런 종류의 노드에 스케줄 될 기회가 없다. - 위의 예시에서, 레이블로 `{zone-typo: zoneC}` 를 가지는 "node5"가 클러스터에 편입한다고 가정하면, 레이블 키에 "zone"이 없기 때문에 무시하게 된다. - 들어오는 파드의 `topologySpreadConstraints[*].labelSelector` 와 자체 레이블과 일치하지 않을 경우 어떻게 되는지 알고 있어야 한다. 위의 예시에서, 만약 들어오는 파드의 레이블을 제거하더라도 여전히 제약 조건이 충족하기 때문에 "zoneB"에 배치할 수 있다. 그러나, 배치 이후에도 클러스터의 불균형 정도는 변경되지 않는다. - 여전히 zoneA는 {foo:bar} 레이블을 가지고 있는 2개의 파드를 가지고 있고, zoneB 도 {foo:bar}를 레이블로 가지는 파드 1개를 가지고 있다. 따라서 만약 예상과 다르면, 워크로드의 `topologySpreadConstraints[*].labelSelector` 가 자체 레이블과 일치하도록 하는 것을 권장한다. @@ -207,12 +207,12 @@ kind: KubeSchedulerConfiguration profiles: pluginConfig: - - name: PodTopologySpread - args: - defaultConstraints: - - maxSkew: 1 - topologyKey: failure-domain.beta.kubernetes.io/zone - whenUnsatisfiable: ScheduleAnyway + - name: PodTopologySpread + args: + defaultConstraints: + - maxSkew: 1 + topologyKey: failure-domain.beta.kubernetes.io/zone + whenUnsatisfiable: ScheduleAnyway ``` {{< note >}} @@ -229,14 +229,14 @@ profiles: 더 많이 채워지거나 더 많이 분산되는 방식으로 스케줄 되는 방법을 제어한다. - `PodAffinity` 는, 사용자가 자격이 충족되는 토폴로지 도메인에 -원하는 수의 파드를 얼마든지 채울 수 있다. + 원하는 수의 파드를 얼마든지 채울 수 있다. - `PodAntiAffinity` 로는, 단일 토폴로지 도메인에 -단 하나의 파드만 스케줄 될 수 있다. + 단 하나의 파드만 스케줄 될 수 있다. "EvenPodsSpread" 기능은 다양한 토폴로지 도메인에 파드를 균등하게 분배해서 고 가용성 또는 비용 절감을 달성할 수 있는 유연한 옵션을 제공한다. 또한 워크로드의 롤링 업데이트와 레플리카의 원활한 스케일링 아웃에 도움이 될 수 있다. -더 자세한 내용은 [모티베이션(Motivation)](https://github.com/kubernetes/enhancements/blob/master/keps/sig-scheduling/20190221-even-pods-spreading.md#motivation)를 참조한다. +더 자세한 내용은 [모티베이션(Motivation)](https://github.com/kubernetes/enhancements/blob/master/keps/sig-scheduling/20190221-pod-topology-spread.md#motivation)를 참조한다. ## 알려진 제한사항 diff --git a/content/ko/docs/contribute/_index.md b/content/ko/docs/contribute/_index.md index 18958c7531..f059747769 100644 --- a/content/ko/docs/contribute/_index.md +++ b/content/ko/docs/contribute/_index.md @@ -35,7 +35,7 @@ card: 1. CNCF [Contributor License Agreement](https://github.com/kubernetes/community/blob/master/CLA.md)에 서명합니다. 2. [문서 리포지터리](https://github.com/kubernetes/website) 와 웹사이트의 [정적 사이트 생성기](https://gohugo.io)를 숙지합니다. -3. [풀 리퀘스트 열기](/docs/contribute/new-content/open-a-pr/)와 [변경 검토](/docs/contribute/review/reviewing-prs/)의 기본 프로세스를 이해하도록 합니다. +3. [풀 리퀘스트 열기](/docs/contribute/new-content/new-content/)와 [변경 검토](/docs/contribute/review/reviewing-prs/)의 기본 프로세스를 이해하도록 합니다. 일부 작업에는 쿠버네티스 조직에서 더 많은 신뢰와 더 많은 접근이 필요할 수 있습니다. 역할과 권한에 대한 자세한 내용은 @@ -44,6 +44,7 @@ card: ## 첫 번째 기여 - [기여 개요](/docs/contribute/new-content/overview/)를 읽고 기여할 수 있는 다양한 방법에 대해 알아봅니다. +- [kubernetes/website에 기여하기](https://github.com/kubernetes/website/contribute)를 참조하여 좋은 진입점이 되는 이슈를 찾을 수 있습니다. - 기존 문서에 대해 [GitHub을 사용해서 풀 리퀘스트 열거나](/docs/contribute/new-content/new-content/#changes-using-github) GitHub에서의 이슈 제기에 대해 자세히 알아봅니다. - 정확성과 언어에 대해 다른 쿠버네티스 커뮤니티 맴버의 [풀 리퀘스트 검토](/docs/contribute/review/reviewing-prs/)를 합니다. - 쿠버네티스 [컨텐츠](/docs/contribute/style/content-guide/)와 [스타일 가이드](/docs/contribute/style/style-guide/)를 읽고 정보에 대한 코멘트를 남길 수 있습니다. diff --git a/content/ko/docs/contribute/localization_ko.md b/content/ko/docs/contribute/localization_ko.md index 2ff7e51cdb..68d48ec448 100644 --- a/content/ko/docs/contribute/localization_ko.md +++ b/content/ko/docs/contribute/localization_ko.md @@ -206,6 +206,8 @@ egress | 이그레스, 송신(egress) | Endpoint | 엔드포인트 | entry point | 진입점 | Event | 이벤트 | +evict | 축출하다 | +eviction | 축출 | Exec | Exec | expose | 노출시키다 | extension | 익스텐션(extension) | @@ -273,7 +275,7 @@ Persistent Volume | 퍼시스턴트 볼륨 | Persistent Volume Claim | 퍼시스턴트 볼륨 클레임 | pipeline | 파이프라인 | placeholder pod | 플레이스홀더(placeholder) 파드 | -Pod(파드) | 파드 | +Pod | 파드 | Pod Preset | 파드 프리셋 | PodAntiAffinity | 파드안티어피니티(PodAntiAffinity) | PodDisruptionBudget | PodDisruptionBudget | @@ -325,6 +327,7 @@ Shell | 셸 | Sign In | 로그인 | Sign Out | 로그아웃 | skew | 차이(skew) | +snippet | 스니펫(snippet) | spec | 명세, 스펙, 사양 | specification | 명세 | Stateful Set | 스테이트풀 셋 | diff --git a/content/ko/docs/contribute/new-content/_index.md b/content/ko/docs/contribute/new-content/_index.md new file mode 100644 index 0000000000..2a97dcca2c --- /dev/null +++ b/content/ko/docs/contribute/new-content/_index.md @@ -0,0 +1,4 @@ +--- +title: 새로운 콘텐츠 기여하기 +weight: 20 +--- diff --git a/content/ko/docs/contribute/new-content/open-a-pr.md b/content/ko/docs/contribute/new-content/open-a-pr.md new file mode 100644 index 0000000000..17ea3342c1 --- /dev/null +++ b/content/ko/docs/contribute/new-content/open-a-pr.md @@ -0,0 +1,484 @@ +--- +title: 풀 리퀘스트 열기 +slug: new-content +content_template: templates/concept +weight: 10 +card: + name: contribute + weight: 40 +--- + +{{% capture overview %}} + +{{< note >}} +**코드 개발자**: 향후 쿠버네티스 릴리스의 +새로운 기능을 문서화하는 경우, +[새 기능 문서화](/docs/contribute/new-content/new-features/)를 참고한다. +{{< /note >}} + +새 콘텐츠 페이지를 기여하거나 기존 콘텐츠 페이지를 개선하려면, 풀 리퀘스트(PR)를 연다. [시작하기 전에](/ko/docs/contribute/new-content/overview/#before-you-begin) 섹션의 모든 요구 사항을 준수해야 한다. + +변경 사항이 작거나, git에 익숙하지 않은 경우, [GitHub을 사용하여 변경하기](#github을-사용하여-변경하기)를 읽고 페이지를 편집하는 방법을 알아보자. + +변경 사항이 많으면, [로컬 포크에서 작업하기](#fork-the-repo)를 읽고 컴퓨터에서 로컬로 변경하는 방법을 배운다. + +{{% /capture %}} + +{{% capture body %}} + +## GitHub을 사용하여 변경하기 + +git 워크플로에 익숙하지 않은 경우, 풀 리퀘스트를 +여는 쉬운 방법이 있다. + +1. 이슈가 있는 페이지에서, 오른쪽 상단에 있는 연필 아이콘을 선택한다. + 페이지 하단으로 스크롤 하여 **페이지 편집하기** 를 선택할 수도 있다. + +2. GitHub 마크다운 편집기에서 수정한다. + +3. 편집기 아래에서, **Propose file change** 양식을 + 작성한다. 첫 번째 필드에서, 커밋 메시지 제목을 지정한다. + 두 번째 필드에는, 설명을 제공한다. + + {{< note >}} + 커밋 메시지에 [GitHub 키워드](https://help.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword)를 사용하지 않는다. 나중에 풀 리퀘스트 설명에 + 추가할 수 있다. + {{< /note >}} + +4. **Propose file change** 를 선택한다. + +5. **Create pull requests** 를 선택한다. + +6. **Open a pull request** 화면이 나타난다. 양식을 작성한다. + + - 풀 리퀘스트의 **Subject** 필드는 기본적으로 커밋의 요약으로 설정한다. + 필요한 경우 변경할 수 있다. + - **Body** 는 만약 내용이 있다면, 확장된 커밋 메시지를 포함한다. + 그리고 일부 템플릿 텍스트를 포함한다. + 템플릿 텍스트에 필요한 세부 정보를 추가한 다음, 추가 템플릿 텍스트를 삭제한다. + - **Allow edits from maintainers** 체크박스는 선택된 상태로 둔다. + + {{< note >}} + PR 설명은 리뷰어가 변경 사항을 이해하는 데 유용한 방법이다. 자세한 내용은 [PR 열기](#open-a-pr)를 참고한다. + {{}} + +7. **Create pull request** 를 선택한다. + +### GitHub에서 피드백 해결 + +풀 리퀘스트를 병합하기 전에, 쿠버네티스 커뮤니티 회원은 이를 리뷰하고 +승인한다. `k8s-ci-robot` 은 이 페이지에 나와있는 가까운 +멤버에게 리뷰를 제안한다. 특정한 사람을 염두에 두고 있다면, +GitHub 사용자 이름을 코멘트로 남긴다. + +리뷰어가 변경을 요청하는 경우, 다음과 같이 한다. + +1. **Files changed** 탭으로 이동 한다. +2. 풀 리퀘스트에 의해 변경된 파일에서 연필(편집) 아이콘을 +선택한다. +3. 요청된 변경에 대한 수정을 한다. +4. 변경 사항을 커밋한다. + +리뷰어를 기다리고 있는 경우, 7일마다 한 번씩 연락한다. 슬랙 채널 `#sig-docs` 에 메시지를 게시할 수도 있다. + +리뷰가 완료되면, 리뷰어가 PR을 병합하고 몇 분 후에 변경 사항이 적용된다. + +## 로컬 포크에서 작업하기 {#fork-the-repo} + +git에 익숙하거나, 변경 사항이 몇 줄보다 클 경우, +로컬 포크로 작업한다. + +컴퓨터에 [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)이 설치되어 있는지 확인한다. git UI 애플리케이션을 사용할 수도 있다. + +### kubernetes/website 리포지터리 포크하기 + +1. [`kubernetes/website`](https://github.com/kubernetes/website/) 리포지터리로 이동한다. +2. **Fork** 를 선택한다. + +### 로컬 클론 생성 및 업스트림 설정 + +3. 터미널 창에서, 포크를 클론한다. + + ```bash + git clone git@github.com//website + ``` + +4. 새 `website` 디렉터리로 이동한다. `kubernetes/website` 리포지터리를 `upstream` 원격으로 설정한다. + + ```bash + cd website + + git remote add upstream https://github.com/kubernetes/website.git + ``` + +5. `origin` 과 `upstream` 리포지터리를 확인한다. + + ```bash + git remote -v + ``` + + 출력은 다음과 비슷하다. + + ```bash + origin git@github.com:/website.git (fetch) + origin git@github.com:/website.git (push) + upstream https://github.com/kubernetes/website (fetch) + upstream https://github.com/kubernetes/website (push) + ``` + +6. 포크의 `origin/master` 와 `kubernetes/website` 의 `upstream/master` 에서 커밋을 가져온다. + + ```bash + git fetch origin + git fetch upstream + ``` + + 이를 통해 변경을 시작하기 전에 로컬 리포지터리가 최신 상태인지 확인한다. + + {{< note >}} + 이 워크플로는 [쿠버네티스 커뮤니티 GitHub 워크플로](https://github.com/kubernetes/community/blob/master/contributors/guide/github-workflow.md)와 다르다. 포크에 업데이트를 푸시하기 전에 로컬의 `master` 복사본을 `upstream/master` 와 병합할 필요가 없다. + {{< /note >}} + +### 브랜치 만들기 + +1. 작업할 브랜치 기반을 결정한다. + + - 기존 콘텐츠를 개선하려면, `upstream/master` 를 사용한다. + - 기존 기능에 대한 새로운 콘텐츠를 작성하려면, `upstream/master` 를 사용한다. + - 현지화된 콘텐츠의 경우, 현지화 규칙을 사용한다. 자세한 내용은 [쿠버네티스 문서 현지화](/ko/docs/contribute/localization_ko/)를 참고한다. + - 다가오는 쿠버네티스 릴리스의 새로운 기능에 대해서는 기능 브랜치(feature branch)를 사용한다. 자세한 정보는 [릴리스 문서화](/docs/contribute/new-content/new-features/)를 참고한다. + - 콘텐츠 재구성과 같이 여러 SIG Docs 기여자들이 협업하는 장기적인 작업에는, + 해당 작업을 위해 작성된 특정 기능 브랜치를 + 사용한다. + + 브랜치 선택에 도움이 필요하면, 슬랙 채널 `#sig-docs` 에 문의한다. + +2. 1단계에서 식별된 브랜치를 기반으로 새 브랜치를 작성한다. 이 예에서는 기본 브랜치가 `upstream/master` 라고 가정한다. + + ```bash + git checkout -b upstream/master + ``` + +3. 텍스트 편집기를 사용하여 변경한다. + +언제든지, `git status` 명령을 사용하여 변경한 파일을 본다. + +### 변경 사항 커밋 + +풀 리퀘스트를 제출할 준비가 되면, 변경 사항을 커밋한다. + +1. 로컬 리포지터리에서 커밋해야 할 파일을 확인한다. + + ```bash + git status + ``` + + 출력은 다음과 비슷하다. + + ```bash + On branch + Your branch is up to date with 'origin/'. + + Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) + + modified: content/en/docs/contribute/new-content/contributing-content.md + + no changes added to commit (use "git add" and/or "git commit -a") + ``` + +2. **Changes not staged for commit** 에 나열된 파일을 커밋에 추가한다. + + ```bash + git add + ``` + + 각 파일에 대해 이 작업을 반복한다. + +3. 모든 파일을 추가한 후, 커밋을 생성한다. + + ```bash + git commit -m "Your commit message" + ``` + + {{< note >}} + 커밋 메시지에 [GitHub 키워드](https://help.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword)를 사용하지 말자. 나중에 풀 리퀘스트 설명에 추가할 + 수 있다. + {{< /note >}} + +4. 로컬 브랜치와 새로운 커밋을 원격 포크로 푸시한다. + + ```bash + git push origin + ``` + +### 로컬에서 변경 사항 미리보기 {#preview-locally} + +변경 사항을 푸시하거나 풀 리퀘스트를 열기 전에 변경 사항을 로컬에서 미리 보는 것이 좋다. 미리보기를 사용하면 빌드 오류나 마크다운 형식 문제를 알아낼 수 있다. + +website의 도커 이미지를 만들거나 Hugo를 로컬에서 실행할 수 있다. 도커 이미지 빌드는 느리지만 [Hugo 단축코드](/docs/contribute/style/hugo-shortcodes/)를 표시하므로, 디버깅에 유용할 수 있다. + +{{< tabs name="tab_with_hugo" >}} +{{% tab name="Hugo 컨테이너" %}} + +1. 로컬에서 이미지를 빌드한다. + + ```bash + make docker-image + ``` + +2. 로컬에서 `kubernetes-hugo` 이미지를 빌드한 후, 사이트를 빌드하고 서비스한다. + + ```bash + make docker-serve + ``` + +3. 웹 브라우저에서 `https://localhost:1313` 로 이동한다. Hugo는 + 변경 사항을 보고 필요에 따라 사이트를 다시 구축한다. + +4. 로컬의 Hugo 인스턴스를 중지하려면, 터미널로 돌아가서 `Ctrl+C` 를 입력하거나, + 터미널 창을 닫는다. + +{{% /tab %}} +{{% tab name="Hugo 커맨드 라인" %}} + +또는, 컴퓨터에 `hugo` 명령을 설치하여 사용한다. + +5. [`website/netlify.toml`](https://raw.githubusercontent.com/kubernetes/website/master/netlify.toml)에 지정된 [Hugo](https://gohugo.io/getting-started/installing/) 버전을 설치한다. + +6. 터미널에서, 쿠버네티스 website 리포지터리로 이동하여 Hugo 서버를 시작한다. + + ```bash + cd /website + hugo server + ``` + +7. 브라우저의 주소 표시줄에 `https://localhost:1313` 을 입력한다. + +8. 로컬의 Hugo 인스턴스를 중지하려면, 터미널로 돌아가서 `Ctrl+C` 를 입력하거나, +    터미널 창을 닫는다. + +{{% /tab %}} +{{< /tabs >}} + +### 포크에서 kubernetes/website로 풀 리퀘스트 열기 {#open-a-pr} + +1. 웹 브라우저에서 [`kubernetes/website`](https://github.com/kubernetes/website/) 리포지터리로 이동한다. +2. **New Pull Request** 를 선택한다. +3. **compare across forks** 를 선택한다. +4. **head repository** 드롭다운 메뉴에서, 포크를 선택한다. +5. **compare** 드롭다운 메뉴에서, 브랜치를 선택한다. +6. **Create Pull Request** 를 선택한다. +7. 풀 리퀘스트에 대한 설명을 추가한다. + - **Title**(50자 이하): 변경 사항에 대한 의도를 요약한다. + - **Description**: 변경 사항을 자세히 설명한다. + - 관련된 GitHub 이슈가 있는 경우, `Fixes #12345` 또는 `Closes #12345` 를 설명에 포함한다. 이렇게 하면 GitHub의 자동화 기능이 PR을 병합한 후 언급된 이슈를 닫는다. 다른 관련된 PR이 있는 경우, 이들 PR도 연결한다. + - 구체적인 내용에 대한 조언이 필요한 경우, 원하는 질문을 리뷰어가 생각해볼 수 있도록 설명에 포함한다. + +8. **Create pull request** 버튼을 선택한다. + + 축하한다! 여러분의 풀 리퀘스트가 [풀 리퀘스트](https://github.com/kubernetes/website/pulls)에 열렸다. + + +PR을 연 후, GitHub는 자동 테스트를 실행하고 [Netlify](https://www.netlify.com/)를 사용하여 미리보기를 배포하려고 시도한다. + + - Netlify 빌드가 실패하면, 자세한 정보를 위해 **Details** 를 선택한다. + - Netlify 빌드가 성공하면, **Details** 를 선택하면 변경 사항이 적용된 쿠버네티스 website의 커밋하기 직전의 버전(staged version)이 열린다. 리뷰어가 변경 사항을 확인하는 방법이다. + +또한 GitHub는 리뷰어에게 도움을 주기 위해 PR에 레이블을 자동으로 할당한다. 필요한 경우 직접 추가할 수도 있다. 자세한 내용은 [이슈 레이블 추가와 제거](/docs/contribute/review/for-approvers/#adding-and-removing-issue-labels)를 참고한다. + +### 로컬에서 피드백 해결 + +1. 변경한 후, 이전 커밋을 수정한다. + + ```bash + git commit -a --amend + ``` + + - `-a`: 모든 변경 사항을 커밋 + - `--amend`: 새로운 커밋을 만들지 않고, 이전 커밋을 수정한다. + +2. 필요한 경우 커밋 메시지를 업데이트한다. + +3. `git push origin ` 를 사용해서 변경 사항을 푸시하고 Netlify 테스트를 다시 실행한다. + + {{< note >}} + 수정하는 대신 `git commit -m` 을 사용하는 경우, 병합하기 전에 [커밋을 스쿼시](#커밋-스쿼시하기)해야 한다. + {{< /note >}} + +#### 리뷰어의 변경 + +때때로 리뷰어가 여러분의 풀 리퀘스트를 커밋한다. 다른 변경을 하기 전에, 커밋을 가져온다. + +1. 원격 포크에서 커밋을 가져오고 작업 브랜치를 리베이스한다. + + ```bash + git fetch origin + git rebase origin/ + ``` + +2. 리베이스한 후, 포크에 새로운 변경 사항을 강제로 푸시한다. + + ```bash + git push --force-with-lease origin + ``` + +#### 충돌 병합 및 리베이스 + +{{< note >}} +자세한 내용은 [Git 브랜치 - 기본 브랜치와 병합](https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging#_basic_merge_conflicts), [고급 병합](https://git-scm.com/book/en/v2/Git-Tools-Advanced-Merging)을 참조하거나, 슬랙 채널 `#sig-docs` 에서 도움을 요청한다. +{{< /note >}} + +다른 기여자가 다른 PR에서 동일한 파일에 대한 변경 사항을 커밋하면, 병합 충돌이 발생할 수 있다. PR의 모든 병합 충돌을 해결해야 한다. + +1. 포크를 업데이트하고 로컬 브랜치를 리베이스한다. + + ```bash + git fetch origin + git rebase origin/ + ``` + + 그런 다음 포크에 변경 사항을 강제로 푸시한다. + + ```bash + git push --force-with-lease origin + ``` + +2. `kubernetes/website` 의 `upstream/master` 에 대한 변경 사항을 가져오고 브랜치를 리베이스한다. + + ```bash + git fetch upstream + git rebase upstream/master + ``` + +3. 리베이스의 결과를 검사한다. + + ```bash + git status + ``` + + 이 명령의 결과에 여러 파일이 충돌된 것으로 표시된다. + +4. 충돌하는 각 파일을 열고 충돌 마커(`>>>`,`<<<` 그리고 `===`)를 찾는다. 충돌을 해결하고 충돌 마커를 삭제한다. + + {{< note >}} + 자세한 내용은 [충돌이 표시되는 방법](https://git-scm.com/docs/git-merge#_how_conflicts_are_presented)을 참고한다. + {{< /note >}} + +5. 변경 세트에 파일을 추가한다. + + ```bash + git add + ``` +6. 리베이스를 계속한다. + + ```bash + git rebase --continue + ``` + +7. 필요에 따라 2단계에서 5단계를 반복한다. + + 모든 커밋을 적용한 후, `git status` 명령은 리베이스가 완료되었음을 나타낸다. + +8. 브랜치를 포크에 강제로 푸시한다. + + ```bash + git push --force-with-lease origin + ``` + + 풀 리퀘스트에 더 이상 충돌이 표시되지 않는다. + + +### 커밋 스쿼시하기 + +{{< note >}} +자세한 내용은 [Git 도구 - 히스토리 다시 쓰기](https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History)를 참고하거나, 슬랙 채널 `#sig-docs` 에서 도움을 요청한다. +{{< /note >}} + +PR에 여러 커밋이 있는 경우, PR을 병합하기 전에 해당 커밋을 단일 커밋으로 스쿼시해야 한다. PR의 **Commits** 탭에서 또는 `git log` 명령을 로컬에서 실행하여 커밋 수를 확인할 수 있다. + +{{< note >}} +여기서는 `vim` 을 커맨드 라인 텍스트 편집기로 사용하는 것을 가정한다. +{{< /note >}} + +1. 대화식 리베이스를 시작한다. + + ```bash + git rebase -i HEAD~ + ``` + + 커밋을 스쿼시하는 것은 일종의 리베이스이다. git의 `-i` 스위치는 리베이스를 대화형으로 할 수 있게 한다. `HEAD~}} + 자세한 내용은 [대화식 모드](https://git-scm.com/docs/git-rebase#_interactive_mode)를 참고한다. + {{< /note >}} + +2. 파일 편집을 시작한다. + + 다음의 원본 텍스트를 변경한다. + + ```bash + pick d875112ca Original commit + pick 4fa167b80 Address feedback 1 + pick 7d54e15ee Address feedback 2 + ``` + + 아래와 같이 변경한다. + + ```bash + pick d875112ca Original commit + squash 4fa167b80 Address feedback 1 + squash 7d54e15ee Address feedback 2 + ``` + + 이것은 커밋 `4fa167b80 Address feedback 1` 과 `7d54e15ee Address feedback 2` 를 `d875112ca Original commit` 으로 스쿼시한다. 타임라인의 일부로 `d875112ca Original commit` 만 남긴다. + +3. 파일을 저장하고 종료한다. + +4. 스쿼시된 커밋을 푸시한다. + + ```bash + git push --force-with-lease origin + ``` + +## 다른 리포지터리에 기여하기 + +[쿠버네티스 프로젝트](https://github.com/kubernetes)에는 50개 이상의 리포지터리가 포함되어 있다. 이러한 리포지터리에는 사용자용 도움말 텍스트, 오류 메시지, API 레퍼런스 또는 코드 주석과 같은 문서가 포함되어 있다. + +개선하려는 텍스트가 보이면, GitHub을 사용하여 쿠버네티스 조직의 모든 리포지터리를 검색한다. +이를 통해 어디에 이슈나 PR을 제출할지를 파악할 수 있다. + +각 리포지터리에는 고유한 프로세스와 절차가 있다. 여러분이 이슈를 +제기하거나 PR을 제출하기 전에, 그 리포지터리의 `README.md`, `CONTRIBUTING.md` 그리고 +`code-of-conduct.md`(만약 이들 문서가 있다면)를 읽어본다. + +대부분의 리포지터리에는 이슈와 PR 템플릿이 사용된다. 팀의 프로세스에 대한 +느낌을 얻으려면 열린 이슈와 PR을 살펴보자. 이슈나 PR을 제출할 때 +가능한 한 상세하게 템플릿의 내용을 작성한다. + +{{% /capture %}} + +{{% capture whatsnext %}} + +- 리뷰 프로세스에 대한 자세한 내용은 [리뷰하기](/ko/docs/contribute/reviewing/revewing-prs)를 읽어본다. + +{{% /capture %}} diff --git a/content/ko/docs/contribute/new-content/overview.md b/content/ko/docs/contribute/new-content/overview.md new file mode 100644 index 0000000000..ca1bc10737 --- /dev/null +++ b/content/ko/docs/contribute/new-content/overview.md @@ -0,0 +1,58 @@ +--- +title: 새로운 콘텐츠 기여하기에 대한 개요 +linktitle: 개요 +content_template: templates/concept +main_menu: true +weight: 5 +--- + +{{% capture overview %}} + +이 섹션에는 새로운 콘텐츠를 기여하기 전에 알아야 할 정보가 있다. + + +{{% /capture %}} + +{{% capture body %}} + +## 기여하기에 대한 기본 + +- 마크다운(Markdown)으로 쿠버네티스 문서를 작성하고 [Hugo](https://gohugo.io/)를 사용하여 쿠버네티스 사이트를 구축한다. +- 소스는 [GitHub](https://github.com/kubernetes/website)에 있다. 쿠버네티스 문서는 `/content/ko/docs/` 에서 찾을 수 있다. 일부 참조 문서는 `update-imported-docs/` 디렉터리의 스크립트에서 자동으로 생성된다. +- [페이지 템플릿](/docs/contribute/style/page-templates/)은 Hugo에서 문서 콘텐츠의 프리젠테이션을 제어한다. +- 표준 Hugo 단축코드(shortcode) 이외에도 설명서에서 여러 [사용자 정의 Hugo 단축코드](/docs/contribute/style/hugo-shortcodes/)를 사용하여 콘텐츠 표시를 제어한다. +- 문서 소스는 `/content/` 에서 여러 언어로 제공된다. 각 언어는 [ISO 639-1 표준](https://www.loc.gov/standards/iso639-2/php/code_list.php)에 의해 결정된 2문자 코드가 있는 자체 폴더가 있다. 예를 들어, 한글 문서의 소스는 `/content/ko/docs/` 에 저장된다. +- 여러 언어로 문서화에 기여하거나 새로운 번역을 시작하는 방법에 대한 자세한 내용은 [현지화](/ko/docs/contribute/localization_ko/)를 참고한다. + +## 시작하기 전에 {#before-you-begin} + +### CNCF CLA 서명 {#sign-the-cla} + +모든 쿠버네티스 기여자는 **반드시** [기여자 가이드](https://github.com/kubernetes/community/blob/master/contributors/guide/README.md)를 읽고 [기여자 라이선스 계약(CLA)에 서명](https://github.com/kubernetes/community/blob/master/CLA.md)해야 한다. + +CLA에 서명하지 않은 기여자의 풀 리퀘스트(pull request)는 자동 테스트에 실패한다. 제공한 이름과 이메일은 `git config` 에 있는 것과 일치해야 하며, git 이름과 이메일은 CNCF CLA에 사용된 것과 일치해야 한다. + +### 사용할 Git 브랜치를 선택한다 + +풀 리퀘스트를 열 때는, 작업의 기반이 되는 브랜치를 미리 알아야 한다. + +시나리오 | 브랜치 +:---------|:------------ +현재 릴리스의 기존 또는 새로운 영어 콘텐츠 | `master` +기능 변경 릴리스의 콘텐츠 | `dev-release-` 패턴을 사용하여 기능 변경이 있는 주 버전과 부 버전에 해당하는 브랜치. 예를 들어, `{{< latest-version >}}` 에서 기능이 변경된 경우, ``dev-{{< release-branch >}}`` 에 문서 변경을 추가한다. +다른 언어로된 콘텐츠(현지화) | 현지화 규칙을 사용. 자세한 내용은 [현지화 브랜치 전략](/docs/contribute/localization/#branching-strategy)을 참고한다. + + +어떤 브랜치를 선택해야 할지 잘 모르는 경우 슬랙의 `#sig-docs` 에 문의한다. + +{{< note >}} +풀 리퀘스트를 이미 제출했는데 기본 브랜치가 잘못되었다는 것을 알게 되면, +제출자(제출자인 여러분만)가 이를 변경할 수 있다. +{{< /note >}} + +### PR 당 언어 + +PR 당 하나의 언어로 풀 리퀘스트를 제한한다. 여러 언어로 동일한 코드 샘플을 동일하게 변경해야 하는 경우 각 언어마다 별도의 PR을 연다. + + +{{% /capture %}} diff --git a/content/ko/docs/contribute/review/_index.md b/content/ko/docs/contribute/review/_index.md new file mode 100644 index 0000000000..a79fb6129f --- /dev/null +++ b/content/ko/docs/contribute/review/_index.md @@ -0,0 +1,14 @@ +--- +title: 변경 사항 리뷰하기 +weight: 30 +--- + +{{% capture overview %}} + +이 섹션은 콘텐츠를 리뷰하는 방법에 대해 설명한다. + +{{% /capture %}} + +{{% capture body %}} + +{{% /capture %}} diff --git a/content/ko/docs/contribute/review/for-approvers.md b/content/ko/docs/contribute/review/for-approvers.md new file mode 100644 index 0000000000..c6ebb465ac --- /dev/null +++ b/content/ko/docs/contribute/review/for-approvers.md @@ -0,0 +1,228 @@ +--- +title: 승인자와 리뷰어의 리뷰 +linktitle: 승인자와 리뷰어용 +slug: for-approvers +content_template: templates/concept +weight: 20 +--- + +{{% capture overview %}} + +SIG Docs [리뷰어](/ko/docs/contribute/participating/#리뷰어)와 [승인자](/ko/docs/contribute/participating/#승인자)는 변경 사항을 리뷰할 때 몇 가지 추가 작업을 수행한다. + +매주 특정 문서 승인자 역할의 지원자가 +풀 리퀘스트를 심사하고 리뷰한다. 이 +사람은 일주일 동안 "PR 랭글러(Wrangler)"이다. 자세한 +정보는 [PR 랭글러 스케줄러](https://github.com/kubernetes/website/wiki/PR-Wranglers)를 참고한다. PR 랭글러가 되려면, 매주 SIG Docs 회의에 참석하고 자원한다. 이번 주에 해당 일정이 없는 경우에도, 아직 리뷰 중이 아닌 +풀 리퀘스트(PR)를 여전히 리뷰할 수 있다. + +로테이션 외에도, 봇은 영향을 받는 파일의 소유자를 기반으로 +PR에 대한 리뷰어와 승인자를 할당한다. + +{{% /capture %}} + + +{{% capture body %}} + +## PR 리뷰 + +쿠버네티스의 문서는 [쿠버네티스의 코드 리뷰 프로세스](https://github.com/kubernetes/community/blob/master/contributors/guide/owners.md#the-code-review-process)를 따른다. + +[풀 리퀘스트 리뷰](/ko/docs/contribute/review/reviewing-prs)에 설명된 모든 내용이 적용되지만, 리뷰어와 승인자도 다음을 수행해야 한다. + +- `/assign` Prow 명령을 사용하여 필요에 따라 특정 리뷰어를 PR에 할당한다. 이는 코드 기여자에게 +기술 리뷰를 요청할 때 특히 중요하다. + + {{< note >}} + 마크다운 파일 맨 위에 있는 헤더의 `reviewers` 필드를 보고 기술 리뷰를 + 제공할 수 있는 사람을 확인한다. + {{< /note >}} + +- PR이 [콘텐츠](/docs/contribute/style/content-guide/)와 [스타일](/docs/contribute/style/style-guide/) 가이드를 따르는 지 확인한다. 그렇지 않은 경우 가이드의 관련 부분에 작성자를 연결한다. +- 적용이 가능한 경우 GitHub **Request Changes** 옵션을 사용하여 PR 작성자에게 변경을 제안한다. +- 제안한 사항이 구현된 경우, `/approve` 또는 `/lgtm` Prow 명령을 사용하여 GitHub에서 리뷰 상태를 변경한다. + +## 다른 사람의 PR에 커밋 + +PR 코멘트를 남기는 것이 도움이 되지만, 대신 다른 사람의 PR에 커밋을 +해야 하는 경우가 있다. + +다른 사람이 명시적으로 요청하거나, 오랫동안 +중단된 PR을 재개하려는 경우가 아니라면 다른 사람에게서 "가져오지" 마라. 단기적으로는 +작업이 빠를 수 있지만, 그 사람이 기여할 기회를 박탈하게 된다. + +사용할 프로세스는 이미 PR의 범위에 있는 파일을 편집해야 +하는지, 또는 PR이 아직 다루지 않은 파일을 편집해야 하는지에 따라 다르다. + +다음 중 하나에 해당하면 다른 사람의 PR에 커밋할 수 +없다. + +- PR 작성자가 브랜치를 + [https://github.com/kubernetes/website/](https://github.com/kubernetes/website/) + 리포지터리로 직접 푸시한 경우, 푸시 접근 권한이 있는 리뷰어만 다른 사용자의 PR에 커밋할 수 있다. + + {{< note >}} + 다음 번부터는 PR을 열기 전에 작성자가 브랜치를 자신의 포크로 + 푸시하도록 권장한다. + {{< /note >}} + +- PR 작성자가 승인자의 수정을 명시적으로 허용하지 않는다. + +## 리뷰를 위한 Prow 명령 + +[Prow](https://github.com/kubernetes/test-infra/blob/master/prow/README.md)는 +풀 리퀘스트 (PR)에 대한 작업을 실행하는 쿠버네티스 기반 CI/CD 시스템이다. Prow는 +챗봇 스타일 명령으로 쿠버네티스 +조직 전체에서 [레이블 추가와 +제거](#이슈-레이블-추가와-제거), 이슈 종료 및 승인자 할당과 같은 GitHub 작업을 처리할 수 ​​있다. `/` 형식을 사용하여 Prow 명령을 GitHub 코멘트로 입력한다. + +리뷰어와 승인자가 사용하는 가장 일반적인 Prow 명령은 다음과 같다. + +{{< table caption="리뷰를 위한 Prow 명령" >}} +Prow 명령 | 역할 제한 | 설명 +:------------|:------------------|:----------- +`/lgtm` | 누구나, 리뷰어나 승인자가 사용한다면 자동화를 트리거한다. | PR 리뷰를 마치고 변경 사항에 만족했음을 나타낸다. +`/approve` | 승인자 | PR을 병합(merge)하기 위해 승인한다. +`/assign` | 리뷰어 또는 승인자 | PR을 리뷰하거나 승인할 사람을 지정한다. +`/close` | 리뷰어 또는 승인자 | 이슈 또는 PR을 닫는다. +`/hold` | 누구나 | 자동으로 병합할 수 없음을 나타내는 `do-not-merge/hold` 레이블을 추가한다. +`/hold cancel` | 누구나 | `do-not-merge/hold` 레이블을 제거한다. +{{< /table >}} + +PR에서 사용할 수 있는 명령의 전체 목록을 보려면 +[Prow 명령 레퍼런스](https://prow.k8s.io/command-help)를 참고한다. + +## 이슈 심사와 분류 + + +일반적으로, SIG Docs는 [쿠버네티스 이슈 심사](https://github.com/kubernetes/community/blob/master/contributors/guide/issue-triage.md) 프로세스를 따르며 동일한 레이블을 사용한다. + + +이 GitHub 이슈 [필터](https://github.com/kubernetes/website/issues?q=is%3Aissue+is%3Aopen+-label%3Apriority%2Fbacklog+-label%3Apriority%2Fimportant-longterm+-label%3Apriority%2Fimportant-soon+-label%3Atriage%2Fneeds-information+-label%3Atriage%2Fsupport+sort%3Acreated-asc)는 +심사가 필요한 이슈를 찾는다. + +### 이슈 심사 + +1. 이슈 확인 + - 이슈가 website 문서에 관한 것인지 확인한다. 질문에 답하거나 + 리소스에 리포터를 지정하면 일부 이슈를 신속하게 종결할 수 있다. 자세한 내용은 + [지원 요청 또는 코드 버그 리포트](#지원-요청-또는-코드-버그-리포트) 섹션을 참고한다. + - 이슈가 가치가 있는지 평가한다. + - 이슈의 내용에 실행할 수 있는 세부 사항이 충분하지 않거나 템플릿의 내용이 + 제대로 작성되지 않은 경우 `triage/needs-information` 레이블을 추가한다. + - `lifecycle/stale` 과 `triage/needs-information` 레이블이 모두 있으면 이슈를 닫는다. + +2. 우선순위 레이블을 + 추가한다([이슈 심사 가이드라인](https://github.com/kubernetes/community/blob/master/contributors/guide/issue-triage.md#define-priority)은 우선순위 레이블을 자세히 정의함). + + {{< table caption="이슈 레이블" >}} + 레이블 | 설명 + :------------|:------------------ + `priority/critical-urgent` | 이 작업을 지금 즉시 수행한다. + `priority/important-soon` | 3개월 이내에 이 작업을 수행한다. + `priority/important-longterm` | 6개월 이내에 이 작업을 수행한다. + `priority/backlog` | 무기한 연기할 수 있다. 자원이 있을 때 수행한다. + `priority/awaiting-more-evidence` | 잠재적으로 좋은 이슈에 대해 잊지 않도록 표시한다. + `help` 또는 `good first issue` | 쿠버네티스나 SIG Docs 경험이 거의 없는 사람에게 적합하다. 자세한 내용은 [도움이 필요함 및 좋은 첫 번째 이슈 레이블](https://github.com/kubernetes/community/blob/master/contributors/guide/help-wanted.md)을 참고한다. + + {{< /table >}} + + 재량에 따라, 이슈의 소유권을 가져와서 PR을 + 제출한다(특히, 이미 수행 중인 작업과 관련이 있거나 빠르다면). + +이슈 심사에 대해 질문이 있다면, 슬랙의 `#sig-docs` 채널이나 +[kubernetes-sig-docs 메일링리스트](https://groups.google.com/forum/#!forum/kubernetes-sig-docs)에 문의한다. + +## 이슈 레이블 추가와 제거 + +레이블을 추가하려면, 다음의 형식 중 하나로 코멘트를 남긴다. + +- `/` (예: `/good-first-issue`) +- `/ ` (예: `/triage needs-information` 또는 `/language ko`) + +레이블을 제거하려면, 다음의 형식 중 하나로 코멘트를 남긴다. + +- `/remove-` (예: `/remove-help`) +- `/remove- ` (예: `/remove-triage needs-information`) + +두 경우 모두, 사용하려는 레이블은 이미 존재하는 레이블이어야 한다. 존재하지 않는 레이블을 추가하려고 하면, 명령이 +자동으로 무시된다. + +모든 레이블 목록에 대해서는 [website 리포지터리의 레이블 섹션](https://github.com/kubernetes/website/labels)을 참고한다. SIG Docs에서 모든 레이블을 사용하는 것은 아니다. + +### 이슈의 lifecycle 레이블 + +이슈는 일반적으로 신속하게 열리고 닫힌다. +그러나, 가끔씩은 이슈가 열린 후 비활성 상태로 있다. +어떤 경우에는 이슈가 90일 이상 열려 있을 수도 있다. + +{{< table caption="이슈의 lifecycle 레이블" >}} +레이블 | 설명 +:------------|:------------------ +`lifecycle/stale` | 90일이 지나도 아무런 활동이 없는 이슈는 자동으로 오래된 것(stale)으로 표시된다. `/remove-lifecycle stale` 명령을 사용하여 라이프사이클을 수동으로 되돌리지 않으면 이슈가 자동으로 닫힌다. +`lifecycle/frozen` | 90일 동안 활동이 없어도 이 레이블의 이슈는 오래된 것(stale)으로 바뀌지 않는다. 사용자는 `priority/important-longterm` 레이블이 있는 이슈처럼 90일보다 훨씬 오래 열려 있어야 하는 이슈에 이 레이블을 수동으로 추가한다. +{{< /table >}} + +## 특별한 이슈 유형의 처리 + +SIG Docs가 처리 방법을 문서화할 정도로 다음과 같은 유형의 이슈를 +자주 경험하게 된다. + +### 중복된 이슈 + +단일 문제에 대해 하나 이상의 이슈가 열려 있으면, 이를 단일 이슈로 합친다. +열린 상태를 유지할 이슈를 결정한 다음(또는 +새로운 이슈를 열어야 함), 모든 관련 정보로 이동하여 관련 이슈를 연결해야 한다. +마지막으로, 동일한 문제를 설명하는 다른 모든 이슈에 +`triage/duplicate` 레이블을 지정하고 닫는다. 하나의 이슈만 해결하는 것으로 혼동을 줄이고 +같은 문제에 대한 중복 작업을 피할 수 있다. + +### 깨진 링크 이슈 + +깨진 링크 이슈가 API 문서나 `kubectl` 문서에 있는 경우, 문제가 완전히 이해될 때까지 `/priority critical-urgent` 레이블을 할당한다. 다른 모든 깨진 링크 이슈는 수동으로 수정해야하므로, `/priority important-longterm` 를 할당한다. + +### 블로그 이슈 + +[쿠버네티스 블로그](https://kubernetes.io/blog/) 항목은 시간이 지남에 따라 +구식이 될 것으로 예상한다. 따라서, 1년 미만의 블로그 항목만 유지 관리한다. +1년이 지난 블로그 항목과 관련된 이슈일 경우, +수정하지 않고 이슈를 닫는다. + +### 지원 요청 또는 코드 버그 리포트 + +문서에 대한 일부 이슈는 실제로 기본 코드와 관련된 이슈이거나, 튜토리얼과 +같은 무언가가 작동하지 않을 때 도움을 요청하는 것이다. +문서와 관련이 없는 이슈의 경우, `triage/support` 레이블과 함께 요청자에게 지원받을 수 있는 곳(슬랙, Stack Overflow)을 +알려주며 이슈를 닫고, 기능 관련 버그에 대한 이슈인 경우, +관련 리포지터리를 코멘트로 남긴다(`kubernetes/kubernetes` 는 +시작하기 좋은 곳이다). + +지원 요청에 대한 샘플 응답은 다음과 같다. + +```none +이 이슈는 지원 요청과 비슷하지만 +문서 관련 이슈와는 관련이 없는 것 같습니다. +[쿠버네티스 슬랙](http://slack.k8s.io/)의 +`#kubernetes-users` 채널에서 질문을 하시기 바랍니다. 또한, +[Stack Overflow](http://stackoverflow.com/questions/tagged/kubernetes)와 +같은 리소스를 검색하여 유사한 질문에 대한 답변을 +얻을 수도 있습니다. + +https://github.com/kubernetes/kubernetes 에서 +쿠버네티스 기능 관련 이슈를 열 수도 있습니다. + +문서에 대한 이슈인 경우 이 이슈를 다시 여십시오. +``` + +샘플 코드 버그 리포트 응답은 다음과 같다. + +```none +이 이슈는 문서에 대한 이슈보다 코드에 대한 이슈와 +비슷합니다. https://github.com/kubernetes/kubernetes/issues 에서 +이슈를 여십시오. + +문서에 대한 이슈인 경우 이 이슈를 다시 여십시오. +``` + + +{{% /capture %}} diff --git a/content/ko/docs/contribute/review/reviewing-prs.md b/content/ko/docs/contribute/review/reviewing-prs.md new file mode 100644 index 0000000000..c220e9599c --- /dev/null +++ b/content/ko/docs/contribute/review/reviewing-prs.md @@ -0,0 +1,98 @@ +--- +title: 풀 리퀘스트 리뷰 +content_template: templates/concept +main_menu: true +weight: 10 +--- + +{{% capture overview %}} + +누구나 문서화에 대한 풀 리퀘스트를 리뷰할 수 있다. 쿠버네티스 website 리포지터리의 [풀 리퀘스트](https://github.com/kubernetes/website/pulls) 섹션을 방문하여 열린(open) 풀 리퀘스트를 확인한다. + +문서화에 대한 풀 리퀘스트를 리뷰하는 것은 +쿠버네티스 커뮤니티에 자신을 소개하는 훌륭한 방법이다. +아울러, 코드 베이스(code base)를 배우고 다른 기여자와 신뢰를 구축하는 데 도움이 된다. + +리뷰하기 전에, 다음을 수행하는 것이 좋다. + +- 적합한 코멘트를 남길 수 있도록 [콘텐츠 가이드](/docs/contribute/style/content-guide/)와 +[스타일 가이드](/docs/contribute/style/style-guide/)를 읽는다. +- 쿠버네티스 문서화 커뮤니티의 다양한 [역할과 책임](/docs/contribute/participating/#roles-and-responsibilities)을 이해한다. + +{{% /capture %}} + +{{% capture body %}} + +## 시작하기 전에 + +리뷰를 시작하기 전에 다음을 명심하자. + +- [CNCF 행동 강령](https://github.com/cncf/foundation/blob/master/code-of-conduct-languages/ko.md)을 읽고 항상 준수한다. +- 정중하고, 사려 깊고, 도움이 되자. +- PR의 긍정적인 측면과 변화에 대한 의견을 남긴다. +- 당신의 리뷰를 어떻게 받아들일지에 대해 공감하고 주의한다. +- 좋은 의도를 가지고 명확한 질문을 한다. +- 숙련된 기여자인 경우, 작업에 광범위한 변경이 필요한 새 기여자와 쌍을 이루어 리뷰해 본다. + +## 리뷰 과정 + +일반적으로, 영어로 콘텐츠와 스타일에 대한 풀 리퀘스트를 리뷰한다. + +1. [https://github.com/kubernetes/website/pulls](https://github.com/kubernetes/website/pulls)로 + 이동한다. + 쿠버네티스 website와 문서에 대한 모든 열린 풀 리퀘스트 목록이 + 표시된다. + +2. 다음 레이블 중 하나 또는 모두를 사용하여 열린 PR을 필터링한다. + - `cncf-cla: yes`(권장): CLA에 서명하지 않은 기여자가 제출한 PR은 병합할 수 없다. 자세한 내용은 [CLA 서명](/docs/contribute/new-content/overview/#sign-the-cla)을 참고한다. + - `language/en`(권장): 영어 문서에 대한 PR 전용 필터이다. + - `size/`: 특정 크기의 PR을 필터링한다. 새로 시작하는 사람이라면, 더 작은 PR로 시작한다. + + 또한, PR이 진행 중인 작업으로 표시되지 않았는지 확인한다. `work in progress` 레이블을 사용하는 PR은 아직 리뷰할 준비가 되지 않은 PR이다. + +3. 리뷰할 PR을 선택한 후, 다음을 통해 변경 사항을 이해한다. + - PR 설명을 통해 변경 사항을 이해하고, 연결된 이슈 읽기 + - 다른 리뷰어의 의견 읽기 + - **Files changed** 탭을 클릭하여 변경된 파일과 행 보기 + - **Conversation** 탭의 맨 아래에 있는 PR의 빌드 확인 섹션으로 스크롤하여 **deploy/netlify** 행의 **Details** 링크를 클릭하고 Netlify 미리보기 빌드의 변경 사항을 확인 + +4. **Files changed** 탭으로 이동하여 리뷰를 시작한다. + 1. 코멘트을 달려는 줄 옆에 있는 `+` 기호를 클릭한다. + 2. 행에 대한 의견을 작성하고 **Add single comments**(작성할 의견이 하나만 있는 경우) 또는 **Start a review**(작성할 의견이 여러 개인 경우)를 클릭한다. + 3. 완료되면, 페이지 상단에서 **Review changes** 를 클릭한다. 여기에서 + 리뷰에 대한 요약을 추가하고(기여자에게 긍정적인 의견을 남겨주기 바란다!), + PR을 승인하거나, 의견을 보내거나 필요에 따라 변경을 요청할 수 있다. 새로운 기여자는 + 항상 **Comment** 를 선택해야 한다. + +## 리뷰 체크리스트 + +리뷰할 때, 다음을 시작점으로 사용한다. + +### 언어와 문법 + +- 언어나 문법에 명백한 오류가 있는가? 무언가를 표현하는 더 좋은 방법이 있는가? +- 더 간단한 단어로 대체될 수 있는 복잡하거나 오래된 단어가 있는가? +- 비 차별적 대안으로 대체될 수 있는 단어, 용어 또는 문구가 있는가? +- 단어 선택과 대소문자는 [스타일 가이드](/docs/contribute/style/style-guide/)를 따르는가? +- 더 짧고 간결하게 만들 수 있는 긴 문장이 있는가? +- 목록이나 표로 더 잘 표현할 수 있는 긴 단락이 있는가? + +### 콘텐츠 + +- 쿠버네티스 사이트의 다른 곳에도 비슷한 콘텐츠가 있는가? +- 콘텐츠가 오프-사이트, 개별 업체, 또는 공개되지 않은 소스 문서에 과도하게 링크되는가? + +### 웹 사이트 + +- 이 PR이 페이지 제목, slug/alias 또는 앵커(anchor) 링크를 변경 또는 제거하는가? 그렇다면, 이 PR의 결과로 끊어진 링크가 있는가? slug를 변경 없이 페이지 제목을 변경하는 등의 다른 옵션이 있는가? +- PR이 새로운 페이지를 소개하는가? 그렇다면, + - 페이지가 올바른 [페이지 템플릿](/docs/contribute/style/page-templates/)과 연관된 Hugo 단축 코드를 사용하는가? + - 섹션의 측면 탐색에 페이지가 올바르게 나타나는가? + - 페이지가 [문서 홈](/ko/docs/home/) 목록에 나타나야 하는가? +- 변경 사항이 Netlify 미리보기에 표시되는가? 목록, 코드 블록, 표, 메모 및 이미지에 특히 주의한다. + +### 기타 + +오타나 공백과 같은 작은 이슈의 PR인 경우, 코멘트 앞에 `nit:` 를 추가한다. 이를 통해 문서의 저자는 이슈가 긴급하지 않다는 것을 알 수 있다. + +{{% /capture %}} diff --git a/content/ko/docs/contribute/style/_index.md b/content/ko/docs/contribute/style/_index.md new file mode 100644 index 0000000000..69ece73a9a --- /dev/null +++ b/content/ko/docs/contribute/style/_index.md @@ -0,0 +1,9 @@ +--- +title: 문서 스타일 개요 +main_menu: true +weight: 80 +--- + +이 섹션의 주제는 문서 작성 스타일, 컨텐츠 형식과 +구성, 쿠버네티스 문서화에 적합하게 사용자 정의된 Hugo 사용 방법에 대한 +가이드를 제공한다. diff --git a/content/ko/docs/reference/glossary/cloud-controller-manager.md b/content/ko/docs/reference/glossary/cloud-controller-manager.md new file mode 100644 index 0000000000..20121a9371 --- /dev/null +++ b/content/ko/docs/reference/glossary/cloud-controller-manager.md @@ -0,0 +1,23 @@ +--- +title: 클라우드 컨트롤 매니저 +id: cloud-controller-manager +date: 2018-04-12 +full_link: /ko/docs/concepts/architecture/cloud-controller/ +short_description: > + 쿠버네티스를 타사 클라우드 공급자와 통합하는 컨트롤 플레인 컴포넌트. +aka: +tags: +- core-object +- architecture +- operation +--- + 클라우드별 컨트롤 로직을 포함하는 쿠버네티스 +{{< glossary_tooltip text="컨트롤 플레인" term_id="control-plane" >}} 컴포넌트이다. +클라우트 컨트롤러 매니저를 통해 클러스터를 클라우드 공급자의 API에 연결하고, +해당 클라우드 플랫폼과 상호 작용하는 컴포넌트와 클러스터와 상호 작용하는 컴포넌트를 분리할 수 있다. + + + +쿠버네티스와 기본 클라우드 인프라스터럭처 간의 상호 운용성 로직을 +분리함으로써, cloud-controller-manager 컴포넌트는 클라우드 공급자가 +주요 쿠버네티스 프로젝트와 다른 속도로 기능들을 릴리스할 수 있도록 한다. diff --git a/content/ko/docs/reference/glossary/configmap.md b/content/ko/docs/reference/glossary/configmap.md new file mode 100755 index 0000000000..06cd2c9c46 --- /dev/null +++ b/content/ko/docs/reference/glossary/configmap.md @@ -0,0 +1,20 @@ +--- +title: 컨피그맵(ConfigMap) +id: configmap +date: 2018-04-12 +full_link: /docs/concepts/configuration/configmap/ +short_description: > + 키-값 쌍으로 기밀이 아닌 데이터를 저장하는 데 사용하는 API 오브젝트이다. 볼륨에서 환경 변수, 커맨드-라인 인수 또는 구성 파일로 사용될 수 있다. + +aka: +tags: +- core-object +--- + 키-값 쌍으로 기밀이 아닌 데이터를 저장하는 데 사용하는 API 오브젝트이다. +{{< glossary_tooltip text="파드" term_id="pod" >}}는 +{{< glossary_tooltip text="볼륨" term_id="volume" >}}에서 +환경 변수, 커맨드-라인 인수 또는 구성 파일로 컨피그맵을 사용할 수 있다. + + + +컨피그맵을 사용하면 {{< glossary_tooltip text="컨테이너 이미지" term_id="image" >}}에서 환경별 구성을 분리하여, 애플리케이션을 쉽게 이식할 수 있다. diff --git a/content/ko/docs/reference/glossary/control-plane.md b/content/ko/docs/reference/glossary/control-plane.md index 4cf2abbf5a..96b344ef76 100644 --- a/content/ko/docs/reference/glossary/control-plane.md +++ b/content/ko/docs/reference/glossary/control-plane.md @@ -11,3 +11,15 @@ tags: - fundamental --- 컨테이너의 라이프사이클을 정의, 배포, 관리하기 위한 API와 인터페이스들을 노출하는 컨테이너 오케스트레이션 레이어. + + + +이 계층은 다음과 같은 다양한 컴포넌트로 구성된다(그러나 제한되지는 않는다). + + * {{< glossary_tooltip text="etcd" term_id="etcd" >}} + * {{< glossary_tooltip text="API 서버" term_id="kube-apiserver" >}} + * {{< glossary_tooltip text="스케줄러" term_id="kube-scheduler" >}} + * {{< glossary_tooltip text="컨트롤러 매니저" term_id="kube-controller-manager" >}} + * {{< glossary_tooltip text="클라우드 컨트롤러 매니저" term_id="cloud-controller-manager" >}} + + 이러한 컴포넌트는 기존 운영체제 서비스(데몬) 또는 컨테이너로 실행할 수 있다. 이러한 컴포넌트를 실행하는 호스트를 {{< glossary_tooltip text="마스터" term_id="master" >}}라 한다. \ No newline at end of file diff --git a/content/ko/docs/reference/glossary/cronjob.md b/content/ko/docs/reference/glossary/cronjob.md index 452f95a4af..b0f8342b66 100755 --- a/content/ko/docs/reference/glossary/cronjob.md +++ b/content/ko/docs/reference/glossary/cronjob.md @@ -4,7 +4,7 @@ id: cronjob date: 2018-04-12 full_link: /ko/docs/concepts/workloads/controllers/cron-jobs/ short_description: > - 주기적인 일정에 따라 실행되는 [잡](/ko/docs/concepts/workloads/controllers/jobs-run-to-completion/)을 관리. + 정기적인 일정으로 실행되는 반복 작업(잡). aka: tags: diff --git a/content/ko/docs/reference/glossary/deployment.md b/content/ko/docs/reference/glossary/deployment.md index e21c413d70..00bd0d12fb 100755 --- a/content/ko/docs/reference/glossary/deployment.md +++ b/content/ko/docs/reference/glossary/deployment.md @@ -4,7 +4,7 @@ id: deployment date: 2018-04-12 full_link: /ko/docs/concepts/workloads/controllers/deployment/ short_description: > - 복제된(replicated) 애플리케이션을 관리하는 API 오브젝트. + 클러스터에서 복제된 애플리케이션을 관리한다. aka: tags: @@ -12,9 +12,10 @@ tags: - core-object - workload --- - 복제된 애플리케이션을 관리하는 API 오브젝트. + 일반적으로 로컬 상태가 없는 파드를 실행하여 복제된 애플리케이션을 관리하는 API 오브젝트. -각 레플리카는 {{< glossary_tooltip text="파드" term_id="pod" >}}로 표현되며, 파드는 클러스터의 {{< glossary_tooltip text="노드" term_id="node" >}}에 분산된다. - +각 레플리카는 {{< glossary_tooltip text="파드" term_id="pod" >}}로 표현되며, +파드는 클러스터의 {{< glossary_tooltip text="노드" term_id="node" >}}에 분산된다. +로컬 상태가 필요한 워크로드의 경우 {{< glossary_tooltip term_id="StatefulSet" >}}의 사용을 고려한다. \ No newline at end of file diff --git a/content/ko/docs/reference/glossary/pod.md b/content/ko/docs/reference/glossary/pod.md index c7a4d4debc..565361ea7b 100755 --- a/content/ko/docs/reference/glossary/pod.md +++ b/content/ko/docs/reference/glossary/pod.md @@ -4,7 +4,7 @@ id: pod date: 2018-04-12 full_link: /ko/docs/concepts/workloads/pods/pod-overview/ short_description: > - 가장 작고 단순한 쿠버네티스 오브젝트. 파드는 사용자 클러스터에서 동작하는 컨테이너의 집합을 나타낸다. + 파드는 클러스터에서 실행 중인 컨테이너의 집합을 나타낸다. aka: tags: diff --git a/content/ko/docs/reference/glossary/service-account.md b/content/ko/docs/reference/glossary/service-account.md index 1de65927ba..d70aabf794 100755 --- a/content/ko/docs/reference/glossary/service-account.md +++ b/content/ko/docs/reference/glossary/service-account.md @@ -1,5 +1,5 @@ --- -title: 서비스 어카운트(ServiceAccount) +title: 서비스어카운트(ServiceAccount) id: service-account date: 2018-04-12 full_link: /docs/tasks/configure-pod-container/configure-service-account/ diff --git a/content/ko/docs/reference/glossary/statefulset.md b/content/ko/docs/reference/glossary/statefulset.md index 71fde2fc06..afb2dd3ba9 100755 --- a/content/ko/docs/reference/glossary/statefulset.md +++ b/content/ko/docs/reference/glossary/statefulset.md @@ -4,7 +4,7 @@ id: statefulset date: 2018-04-12 full_link: /ko/docs/concepts/workloads/controllers/statefulset/ short_description: > - 파드 집합의 디플로이먼트와 스케일링을 관리하며, 파드들의 *순서 및 고유성을 보장한다* . + 내구성이 있는 스토리지와 파드별로 지속성 식별자를 사용해서 파드 집합의 디플로이먼트와 스케일링을 관리한다. aka: tags: @@ -17,4 +17,6 @@ tags: -{{< glossary_tooltip text="디플로이먼트" term_id="deployment" >}}와 유사하게, 스테이트풀 셋은 동일한 컨테이너 스펙을 기반으로 둔 파드들을 관리한다. 디플로이먼트와는 다르게, 스테이트풀 셋은 각 파드의 독자성을 유지한다. 이 파드들은 동일한 스팩으로 생성되었지만, 서로 교체는 불가능하다. 다시 말해, 각각은 재스케줄링 간에도 지속적으로 유지되는 식별자를 가진다. +{{< glossary_tooltip text="디플로이먼트" term_id="deployment" >}}와 유사하게, 스테이트풀셋은 동일한 컨테이너 스펙을 기반으로 둔 파드들을 관리한다. 디플로이먼트와는 다르게, 스테이트풀셋은 각 파드의 독자성을 유지한다. 이 파드들은 동일한 스팩으로 생성되었지만, 서로 교체는 불가능하다. 다시 말해, 각각은 재스케줄링 간에도 지속적으로 유지되는 식별자를 가진다. + +스토리지 볼륨을 사용해서 워크로드에 지속성을 제공하려는 경우, 솔루션의 일부로 스테이트풀셋을 사용할 수 있다. 스테이트풀셋의 개별 파드는 장애에 취약하지만, 퍼시스턴트 파드 식별자는 기존 볼륨을 실패한 볼륨을 대체하는 새 파드에 더 쉽게 일치시킬 수 있다. diff --git a/content/ko/docs/reference/kubectl/cheatsheet.md b/content/ko/docs/reference/kubectl/cheatsheet.md index 94fd790fb9..8956d72474 100644 --- a/content/ko/docs/reference/kubectl/cheatsheet.md +++ b/content/ko/docs/reference/kubectl/cheatsheet.md @@ -64,7 +64,7 @@ kubectl config get-contexts # 컨텍스트 리스트 kubectl config current-context # 현재 컨텍스트 출력 kubectl config use-context my-cluster-name # my-cluster-name를 기본 컨텍스트로 설정 -# 기본 인증을 지원하는 새로운 클러스터를 kubeconf에 추가한다 +# 기본 인증을 지원하는 새로운 사용자를 kubeconf에 추가한다 kubectl config set-credentials kubeuser/foo.kubernetes.com --username=kubeuser --password=kubepassword # 해당 컨텍스트에서 모든 후속 kubectl 커맨드에 대한 네임스페이스를 영구적으로 저장한다 @@ -342,6 +342,21 @@ kubectl api-resources --api-group=extensions # "extensions" API 그룹의 모든 `-o=wide` | 추가 정보가 포함된 일반-텍스트 형식으로 출력하고, 파드의 경우 노드 명이 포함 `-o=yaml` | YAML 형식의 API 오브젝트 출력 +`-o=custom-columns` 의 사용 예시: + +```bash +# 클러스터에서 실행 중인 모든 이미지 +kubectl get pods -A -o=custom-columns='DATA:spec.containers[*].image' + + # "k8s.gcr.io/coredns:1.6.2" 를 제외한 모든 이미지 +kubectl get pods -A -o=custom-columns='DATA:spec.containers[?(@.image!="k8s.gcr.io/coredns:1.6.2")].image' + +# 이름에 관계없이 메타데이터 아래의 모든 필드 +kubectl get pods -A -o=custom-columns='DATA:metadata.*' +``` + +More examples in the kubectl [reference documentation](/docs/reference/kubectl/overview/#custom-columns). + ### Kubectl 출력 로그 상세 레벨(verbosity)과 디버깅 Kubectl 로그 상세 레벨(verbosity)은 `-v` 또는`--v` 플래그와 로그 레벨을 나타내는 정수로 제어된다. 일반적인 쿠버네티스 로깅 규칙과 관련 로그 레벨이 [여기](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-instrumentation/logging.md)에 설명되어 있다. diff --git a/content/ko/docs/reference/using-api/client-libraries.md b/content/ko/docs/reference/using-api/client-libraries.md index 82ebdccb29..1ea418fd5e 100644 --- a/content/ko/docs/reference/using-api/client-libraries.md +++ b/content/ko/docs/reference/using-api/client-libraries.md @@ -50,28 +50,28 @@ Machinery](https://github.com/kubernetes/community/tree/master/sig-api-machinery | Lisp | [github.com/brendandburns/cl-k8s](https://github.com/brendandburns/cl-k8s) | | Lisp | [github.com/xh4/cube](https://github.com/xh4/cube) | | Node.js (TypeScript) | [github.com/Goyoo/node-k8s-client](https://github.com/Goyoo/node-k8s-client) | -| Node.js | [github.com/tenxcloud/node-kubernetes-client](https://github.com/tenxcloud/node-kubernetes-client) | -| Node.js | [github.com/godaddy/kubernetes-client](https://github.com/godaddy/kubernetes-client) | | Node.js | [github.com/ajpauwels/easy-k8s](https://github.com/ajpauwels/easy-k8s) +| Node.js | [github.com/godaddy/kubernetes-client](https://github.com/godaddy/kubernetes-client) | +| Node.js | [github.com/tenxcloud/node-kubernetes-client](https://github.com/tenxcloud/node-kubernetes-client) | | Perl | [metacpan.org/pod/Net::Kubernetes](https://metacpan.org/pod/Net::Kubernetes) | -| PHP | [github.com/maclof/kubernetes-client](https://github.com/maclof/kubernetes-client) | | PHP | [github.com/allansun/kubernetes-php-client](https://github.com/allansun/kubernetes-php-client) | +| PHP | [github.com/maclof/kubernetes-client](https://github.com/maclof/kubernetes-client) | | PHP | [github.com/travisghansen/kubernetes-client-php](https://github.com/travisghansen/kubernetes-client-php) | | Python | [github.com/eldarion-gondor/pykube](https://github.com/eldarion-gondor/pykube) | | Python | [github.com/fiaas/k8s](https://github.com/fiaas/k8s) | | Python | [github.com/mnubo/kubernetes-py](https://github.com/mnubo/kubernetes-py) | | Python | [github.com/tomplus/kubernetes_asyncio](https://github.com/tomplus/kubernetes_asyncio) | -| Ruby | [github.com/Ch00k/kuber](https://github.com/Ch00k/kuber) | | Ruby | [github.com/abonas/kubeclient](https://github.com/abonas/kubeclient) | +| Ruby | [github.com/Ch00k/kuber](https://github.com/Ch00k/kuber) | | Ruby | [github.com/kontena/k8s-client](https://github.com/kontena/k8s-client) | | Rust | [github.com/clux/kube-rs](https://github.com/clux/kube-rs) | | Rust | [github.com/ynqa/kubernetes-rust](https://github.com/ynqa/kubernetes-rust) | | Scala | [github.com/doriordan/skuber](https://github.com/doriordan/skuber) | -| dotNet | [github.com/tonnyeremin/kubernetes_gen](https://github.com/tonnyeremin/kubernetes_gen) | +| Scala | [github.com/joan38/kubernetes-client](https://github.com/joan38/kubernetes-client) | +| DotNet | [github.com/tonnyeremin/kubernetes_gen](https://github.com/tonnyeremin/kubernetes_gen) | | DotNet (RestSharp) | [github.com/masroorhasan/Kubernetes.DotNet](https://github.com/masroorhasan/Kubernetes.DotNet) | | Elixir | [github.com/obmarg/kazan](https://github.com/obmarg/kazan/) | | Elixir | [github.com/coryodaniel/k8s](https://github.com/coryodaniel/k8s) | -| Haskell | [github.com/kubernetes-client/haskell](https://github.com/kubernetes-client/haskell) | {{% /capture %}} diff --git a/content/ko/docs/setup/learning-environment/minikube.md b/content/ko/docs/setup/learning-environment/minikube.md index 3aed39f400..3efc951e1b 100644 --- a/content/ko/docs/setup/learning-environment/minikube.md +++ b/content/ko/docs/setup/learning-environment/minikube.md @@ -195,7 +195,7 @@ minikube start --driver= * virtualbox * vmwarefusion -* docker (EXPERIMENTAL) +* docker ([드라이버 설치](https://minikube.sigs.k8s.io/docs/drivers/docker/) * kvm2 ([드라이버 설치](https://minikube.sigs.k8s.io/docs/reference/drivers/kvm2/)) * hyperkit ([드라이버 설치](https://minikube.sigs.k8s.io/docs/reference/drivers/hyperkit/)) * hyperv ([드라이버 설치](https://minikube.sigs.k8s.io/docs/reference/drivers/hyperv/)) @@ -457,11 +457,11 @@ Minikube에 대한 더 자세한 정보는, [제안](https://git.k8s.io/communit ## 추가적인 링크: -* **목표와 비목표**: Minikube 프로젝트의 목표와 비목표에 대해서는 [로드맵](https://git.k8s.io/minikube/docs/contributors/roadmap.md)을 살펴보자. -* **개발 가이드**: 풀 리퀘스트를 보내는 방법에 대한 개요는 [참여 가이드](https://git.k8s.io/minikube/CONTRIBUTING.md)를 살펴보자. -* **Minikube 빌드**: Minikube를 소스에서 빌드/테스트하는 방법은 [빌드 가이드](https://git.k8s.io/minikube/docs/contributors/build_guide.md)를 살펴보자. -* **새 의존성 추가하기**: Minikube에 새 의존성을 추가하는 방법에 대해서는, [의존성 추가 가이드](https://git.k8s.io/minikube/docs/contributors/adding_a_dependency.md)를 보자. -* **새 애드온 추가하기**: Minikube에 새 애드온을 추가하는 방법에 대해서는, [애드온 추가 가이드](https://git.k8s.io/minikube/docs/contributors/adding_an_addon.md)를 보자. +* **목표와 비목표**: Minikube 프로젝트의 목표와 비목표에 대해서는 [로드맵](https://minikube.sigs.k8s.io/docs/contrib/roadmap/)을 살펴보자. +* **개발 가이드**: 풀 리퀘스트를 보내는 방법에 대한 개요는 [기여하기](https://minikube.sigs.k8s.io/docs/contrib/)를 살펴보자. +* **Minikube 빌드**: Minikube를 소스에서 빌드/테스트하는 방법은 [빌드 가이드](https://minikube.sigs.k8s.io/docs/contrib/building/)를 살펴보자. +* **새 의존성 추가하기**: Minikube에 새 의존성을 추가하는 방법에 대해서는, [의존성 추가 가이드](https://minikube.sigs.k8s.io/docs/contrib/drivers/)를 보자. +* **새 애드온 추가하기**: Minikube에 새 애드온을 추가하는 방법에 대해서는, [애드온 추가 가이드](https://minikube.sigs.k8s.io/docs/contrib/addons/)를 보자. * **MicroK8s**: 가상 머신을 사용하지 않으려는 Linux 사용자는 대안으로 [MicroK8s](https://microk8s.io/)를 고려할 수 있다. ## 커뮤니티 diff --git a/content/ko/docs/setup/production-environment/tools/kubeadm/control-plane-flags.md b/content/ko/docs/setup/production-environment/tools/kubeadm/control-plane-flags.md index 2520f1ed2d..7651fcc172 100644 --- a/content/ko/docs/setup/production-environment/tools/kubeadm/control-plane-flags.md +++ b/content/ko/docs/setup/production-environment/tools/kubeadm/control-plane-flags.md @@ -7,7 +7,7 @@ weight: 40 {{% capture overview %}} -{{< feature-state for_k8s_version="1.12" state="stable" >}} +{{< feature-state for_k8s_version="v1.12" state="stable" >}} kubeadm의 `ClusterConfiguration` 오브젝트는 API 서버, 컨트롤러매니저, 스케줄러와 같은 컨트롤 플레인 구성요소에 전달되는 기본 플래그 `extraArgs` 필드를 노출한다. 이 구성요소는 다음 필드를 사용하도록 정의되어 있다. diff --git a/content/ko/docs/tasks/administer-cluster/highly-available-master.md b/content/ko/docs/tasks/administer-cluster/highly-available-master.md index cd9be9736c..880f4a4992 100644 --- a/content/ko/docs/tasks/administer-cluster/highly-available-master.md +++ b/content/ko/docs/tasks/administer-cluster/highly-available-master.md @@ -6,7 +6,7 @@ content_template: templates/task {{% capture overview %}} -{{< feature-state for_k8s_version="1.5" state="alpha" >}} +{{< feature-state for_k8s_version="v1.5" state="alpha" >}} 구글 컴퓨트 엔진(Google Compute Engine, 이하 GCE)의 `kube-up`이나 `kube-down` 스크립트에 쿠버네티스 마스터를 복제할 수 있다. 이 문서는 kube-up/down 스크립트를 사용하여 고가용(HA) 마스터를 관리하는 방법과 GCE와 함께 사용하기 위해 HA 마스터를 구현하는 방법에 관해 설명한다. diff --git a/content/ko/docs/tasks/administer-cluster/kubeadm/_index.md b/content/ko/docs/tasks/administer-cluster/kubeadm/_index.md new file mode 100755 index 0000000000..6f01fc069a --- /dev/null +++ b/content/ko/docs/tasks/administer-cluster/kubeadm/_index.md @@ -0,0 +1,4 @@ +--- +title: "kubeadm으로 관리하기" +weight: 10 +--- diff --git a/content/ko/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade.md b/content/ko/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade.md new file mode 100644 index 0000000000..f24ae129ec --- /dev/null +++ b/content/ko/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade.md @@ -0,0 +1,443 @@ +--- +title: kubeadm 클러스터 업그레이드 +content_template: templates/task +weight: 20 +min-kubernetes-server-version: 1.18 +--- + +{{% capture overview %}} + +이 페이지는 kubeadm으로 생성된 쿠버네티스 클러스터를 +1.17.x 버전에서 1.18.x 버전으로, 1.18.x 버전에서 1.18.y(여기서 `y > x`) 버전으로 업그레이드하는 방법을 설명한다. + +이전 버전의 kubeadm을 사용하여 생성된 클러스터 업그레이드에 대한 정보를 보려면, +이 페이지 대신 다음의 페이지들을 참고한다. + +- [kubeadm 클러스터를 1.16에서 1.17로 업그레이드](https://v1-17.docs.kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/) +- [kubeadm 클러스터를 1.15에서 1.16으로 업그레이드](https://v1-16.docs.kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/) +- [kubeadm 클러스터를 1.14에서 1.15로 업그레이드](https://v1-15.docs.kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-15/) +- [kubeadm 클러스터를 1.13에서 1.14로 업그레이드](https://v1-15.docs.kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-14/) + +추상적인 업그레이드 작업 절차는 다음과 같다. + +1. 기본 컨트롤 플레인 노드를 업그레이드한다. +1. 추가 컨트롤 플레인 노드를 업그레이드한다. +1. 워커(worker) 노드를 업그레이드한다. + +{{% /capture %}} + +{{% capture prerequisites %}} + +- 1.17.0 버전 이상을 실행하는 kubeadm 쿠버네티스 클러스터가 있어야 한다. +- [스왑을 비활성화해야 한다](https://serverfault.com/questions/684771/best-way-to-disable-swap-in-linux). +- 클러스터는 정적 컨트롤 플레인 및 etcd 파드 또는 외부 etcd를 사용해야 한다. +- [릴리스 노트]({{< latest-release-notes >}})를 주의 깊게 읽어야 한다. +- 데이터베이스에 저장된 앱-레벨 상태와 같은 중요한 컴포넌트를 반드시 백업한다. + `kubeadm upgrade` 는 워크로드에 영향을 미치지 않고, 쿠버네티스 내부의 컴포넌트만 다루지만, 백업은 항상 모범 사례일 정도로 중요하다. + +### 추가 정보 + +- 컨테이너 사양 해시 값이 변경되므로, 업그레이드 후 모든 컨테이너가 다시 시작된다. +- 하나의 MINOR 버전에서 다음 MINOR 버전으로, + 또는 동일한 MINOR의 PATCH 버전 사이에서만 업그레이드할 수 있다. 즉, 업그레이드할 때 MINOR 버전을 건너 뛸 수 없다. + 예를 들어, 1.y에서 1.y+1로 업그레이드할 수 있지만, 1.y에서 1.y+2로 업그레이드할 수는 없다. + +{{% /capture %}} + +{{% capture steps %}} + +## 업그레이드할 버전 결정 + +1. 최신의 안정 버전인 1.18을 찾는다. + + {{< tabs name="k8s_install_versions" >}} + {{% tab name="Ubuntu, Debian 또는 HypriotOS" %}} + apt update + apt-cache madison kubeadm + # 목록에서 최신 버전 1.18을 찾는다 + # 1.18.x-00과 같아야 한다. 여기서 x는 최신 패치이다. + {{% /tab %}} + {{% tab name="CentOS, RHEL 또는 Fedora" %}} + yum list --showduplicates kubeadm --disableexcludes=kubernetes + # 목록에서 최신 버전 1.18을 찾는다 + # 1.18.x-0과 같아야 한다. 여기서 x는 최신 패치이다. + {{% /tab %}} + {{< /tabs >}} + +## 컨트롤 플레인 노드 업그레이드 + +### 첫 번째 컨트롤 플레인 노드 업그레이드 + +1. 첫 번째 컨트롤 플레인 노드에서 kubeadm을 업그레이드한다. + + {{< tabs name="k8s_install_kubeadm_first_cp" >}} + {{% tab name="Ubuntu, Debian 또는 HypriotOS" %}} + # 1.18.x-00에서 x를 최신 패치 버전으로 바꾼다. + apt-mark unhold kubeadm && \ + apt-get update && apt-get install -y kubeadm=1.18.x-00 && \ + apt-mark hold kubeadm + + # apt-get 버전 1.1부터 다음 방법을 사용할 수도 있다 + apt-get update && \ + apt-get install -y --allow-change-held-packages kubeadm=1.18.x-00 + {{% /tab %}} + {{% tab name="CentOS, RHEL 또는 Fedora" %}} + # 1.18.x-0에서 x를 최신 패치 버전으로 바꾼다. + yum install -y kubeadm-1.18.x-0 --disableexcludes=kubernetes + {{% /tab %}} + {{< /tabs >}} + +1. 다운로드하려는 버전이 잘 받아졌는지 확인한다. + + ```shell + kubeadm version + ``` + +1. 컨트롤 플레인 노드를 드레인(drain)한다. + + ```shell + # 을 컨트롤 플레인 노드 이름으로 바꾼다. + kubectl drain --ignore-daemonsets + ``` + +1. 컨트롤 플레인 노드에서 다음을 실행한다. + + ```shell + sudo kubeadm upgrade plan + ``` + + 다음과 비슷한 출력이 표시되어야 한다. + + ``` + [upgrade/config] Making sure the configuration is correct: + [upgrade/config] Reading configuration from the cluster... + [upgrade/config] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml' + [preflight] Running pre-flight checks. + [upgrade] Running cluster health checks + [upgrade] Fetching available versions to upgrade to + [upgrade/versions] Cluster version: v1.17.3 + [upgrade/versions] kubeadm version: v1.18.0 + [upgrade/versions] Latest stable version: v1.18.0 + [upgrade/versions] Latest version in the v1.17 series: v1.18.0 + + Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply': + COMPONENT CURRENT AVAILABLE + Kubelet 1 x v1.17.3 v1.18.0 + + Upgrade to the latest version in the v1.17 series: + + COMPONENT CURRENT AVAILABLE + API Server v1.17.3 v1.18.0 + Controller Manager v1.17.3 v1.18.0 + Scheduler v1.17.3 v1.18.0 + Kube Proxy v1.17.3 v1.18.0 + CoreDNS 1.6.5 1.6.7 + Etcd 3.4.3 3.4.3-0 + + You can now apply the upgrade by executing the following command: + + kubeadm upgrade apply v1.18.0 + + _____________________________________________________________________ + ``` + + 이 명령은 클러스터를 업그레이드할 수 있는지를 확인하고, 업그레이드할 수 있는 버전을 가져온다. + + {{< note >}} + 또한 `kubeadm upgrade` 는 이 노드에서 관리하는 인증서를 자동으로 갱신한다. + 인증서 갱신을 하지 않으려면 `--certificate-renewal=false` 플래그를 사용할 수 있다. + 자세한 내용은 [인증서 관리 가이드](/docs/tasks/administer-cluster/kubeadm/kubeadm-certs)를 참고한다. + {{}} + +1. 업그레이드할 버전을 선택하고, 적절한 명령을 실행한다. 예를 들면 다음과 같다. + + ```shell + # 이 업그레이드를 위해 선택한 패치 버전으로 x를 바꾼다. + sudo kubeadm upgrade apply v1.18.x + ``` + + + 다음과 비슷한 출력이 표시되어야 한다. + + ``` + [upgrade/config] Making sure the configuration is correct: + [upgrade/config] Reading configuration from the cluster... + [upgrade/config] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml' + [preflight] Running pre-flight checks. + [upgrade] Running cluster health checks + [upgrade/version] You have chosen to change the cluster version to "v1.18.0" + [upgrade/versions] Cluster version: v1.17.3 + [upgrade/versions] kubeadm version: v1.18.0 + [upgrade/confirm] Are you sure you want to proceed with the upgrade? [y/N]: y + [upgrade/prepull] Will prepull images for components [kube-apiserver kube-controller-manager kube-scheduler etcd] + [upgrade/prepull] Prepulling image for component etcd. + [upgrade/prepull] Prepulling image for component kube-apiserver. + [upgrade/prepull] Prepulling image for component kube-controller-manager. + [upgrade/prepull] Prepulling image for component kube-scheduler. + [apiclient] Found 1 Pods for label selector k8s-app=upgrade-prepull-kube-controller-manager + [apiclient] Found 0 Pods for label selector k8s-app=upgrade-prepull-etcd + [apiclient] Found 0 Pods for label selector k8s-app=upgrade-prepull-kube-scheduler + [apiclient] Found 1 Pods for label selector k8s-app=upgrade-prepull-kube-apiserver + [apiclient] Found 1 Pods for label selector k8s-app=upgrade-prepull-etcd + [apiclient] Found 1 Pods for label selector k8s-app=upgrade-prepull-kube-scheduler + [upgrade/prepull] Prepulled image for component etcd. + [upgrade/prepull] Prepulled image for component kube-apiserver. + [upgrade/prepull] Prepulled image for component kube-controller-manager. + [upgrade/prepull] Prepulled image for component kube-scheduler. + [upgrade/prepull] Successfully prepulled the images for all the control plane components + [upgrade/apply] Upgrading your Static Pod-hosted control plane to version "v1.18.0"... + Static pod: kube-apiserver-myhost hash: 2cc222e1a577b40a8c2832320db54b46 + Static pod: kube-controller-manager-myhost hash: f7ce4bc35cb6e646161578ac69910f18 + Static pod: kube-scheduler-myhost hash: e3025acd90e7465e66fa19c71b916366 + [upgrade/etcd] Upgrading to TLS for etcd + [upgrade/etcd] Non fatal issue encountered during upgrade: the desired etcd version for this Kubernetes version "v1.18.0" is "3.4.3-0", but the current etcd version is "3.4.3". Won't downgrade etcd, instead just continue + [upgrade/staticpods] Writing new Static Pod manifests to "/etc/kubernetes/tmp/kubeadm-upgraded-manifests308527012" + W0308 18:48:14.535122 3082 manifests.go:225] the default kube-apiserver authorization-mode is "Node,RBAC"; using "Node,RBAC" + [upgrade/staticpods] Preparing for "kube-apiserver" upgrade + [upgrade/staticpods] Renewing apiserver certificate + [upgrade/staticpods] Renewing apiserver-kubelet-client certificate + [upgrade/staticpods] Renewing front-proxy-client certificate + [upgrade/staticpods] Renewing apiserver-etcd-client certificate + [upgrade/staticpods] Moved new manifest to "/etc/kubernetes/manifests/kube-apiserver.yaml" and backed up old manifest to "/etc/kubernetes/tmp/kubeadm-backup-manifests-2020-03-08-18-48-14/kube-apiserver.yaml" + [upgrade/staticpods] Waiting for the kubelet to restart the component + [upgrade/staticpods] This might take a minute or longer depending on the component/version gap (timeout 5m0s) + Static pod: kube-apiserver-myhost hash: 2cc222e1a577b40a8c2832320db54b46 + Static pod: kube-apiserver-myhost hash: 609429acb0d71dce6725836dd97d8bf4 + [apiclient] Found 1 Pods for label selector component=kube-apiserver + [upgrade/staticpods] Component "kube-apiserver" upgraded successfully! + [upgrade/staticpods] Preparing for "kube-controller-manager" upgrade + [upgrade/staticpods] Renewing controller-manager.conf certificate + [upgrade/staticpods] Moved new manifest to "/etc/kubernetes/manifests/kube-controller-manager.yaml" and backed up old manifest to "/etc/kubernetes/tmp/kubeadm-backup-manifests-2020-03-08-18-48-14/kube-controller-manager.yaml" + [upgrade/staticpods] Waiting for the kubelet to restart the component + [upgrade/staticpods] This might take a minute or longer depending on the component/version gap (timeout 5m0s) + Static pod: kube-controller-manager-myhost hash: f7ce4bc35cb6e646161578ac69910f18 + Static pod: kube-controller-manager-myhost hash: c7a1232ba2c5dc15641c392662fe5156 + [apiclient] Found 1 Pods for label selector component=kube-controller-manager + [upgrade/staticpods] Component "kube-controller-manager" upgraded successfully! + [upgrade/staticpods] Preparing for "kube-scheduler" upgrade + [upgrade/staticpods] Renewing scheduler.conf certificate + [upgrade/staticpods] Moved new manifest to "/etc/kubernetes/manifests/kube-scheduler.yaml" and backed up old manifest to "/etc/kubernetes/tmp/kubeadm-backup-manifests-2020-03-08-18-48-14/kube-scheduler.yaml" + [upgrade/staticpods] Waiting for the kubelet to restart the component + [upgrade/staticpods] This might take a minute or longer depending on the component/version gap (timeout 5m0s) + Static pod: kube-scheduler-myhost hash: e3025acd90e7465e66fa19c71b916366 + Static pod: kube-scheduler-myhost hash: b1b721486ae0ac504c160dcdc457ab0d + [apiclient] Found 1 Pods for label selector component=kube-scheduler + [upgrade/staticpods] Component "kube-scheduler" upgraded successfully! + [upload-config] Storing the configuration used in ConfigMap "kubeadm-config" in the "kube-system" Namespace + [kubelet] Creating a ConfigMap "kubelet-config-1.18" in namespace kube-system with the configuration for the kubelets in the cluster + [kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.18" ConfigMap in the kube-system namespace + [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml" + [bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials + [bootstrap-token] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token + [bootstrap-token] configured RBAC rules to allow certificate rotation for all node client certificates in the cluster + [addons] Applied essential addon: CoreDNS + [addons] Applied essential addon: kube-proxy + + [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.18.0". Enjoy! + + [upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven't already done so. + ``` + +1. CNI 제공자 플러그인을 수동으로 업그레이드한다. + + CNI(컨테이너 네트워크 인터페이스) 제공자는 자체 업그레이드 지침을 따를 수 있다. + [애드온](/docs/concepts/cluster-administration/addons/) 페이지에서 + 사용하는 CNI 제공자를 찾고 추가 업그레이드 단계가 필요한지 여부를 확인한다. + + CNI 제공자가 데몬셋(DaemonSet)으로 실행되는 경우 추가 컨트롤 플레인 노드에는 이 단계가 필요하지 않다. + +1. 컨트롤 플레인 노드에 적용된 cordon을 해제한다. + + ```shell + # 을 컨트롤 플레인 노드 이름으로 바꾼다. + kubectl uncordon + ``` + +### 추가 컨트롤 플레인 노드 업그레이드 + +1. 첫 번째 컨트롤 플레인 노드와 동일하지만 다음을 사용한다. + + ``` + sudo kubeadm upgrade node + ``` + + 아래 명령 대신 위의 명령을 사용한다. + + ``` + sudo kubeadm upgrade apply + ``` + + 또한 `sudo kubeadm upgrade plan` 은 필요하지 않다. + +### kubelet과 kubectl 업그레이드 + +1. 모든 컨트롤 플레인 노드에서 kubelet 및 kubectl을 업그레이드한다. + + {{< tabs name="k8s_install_kubelet" >}} + {{% tab name="Ubuntu, Debian 또는 HypriotOS" %}} + # 1.18.x-00의 x를 최신 패치 버전으로 바꾼다 + apt-mark unhold kubelet kubectl && \ + apt-get update && apt-get install -y kubelet=1.18.x-00 kubectl=1.18.x-00 && \ + apt-mark hold kubelet kubectl + + # apt-get 버전 1.1부터 다음 방법을 사용할 수도 있다 + apt-get update && \ + apt-get install -y --allow-change-held-packages kubelet=1.18.x-00 kubectl=1.18.x-00 + {{% /tab %}} + {{% tab name="CentOS, RHEL 또는 Fedora" %}} + # 1.18.x-0에서 x를 최신 패치 버전으로 바꾼다 + yum install -y kubelet-1.18.x-0 kubectl-1.18.x-0 --disableexcludes=kubernetes + {{% /tab %}} + {{< /tabs >}} + +1. kubelet을 다시 시작한다. + + ```shell + sudo systemctl restart kubelet + ``` + +## 워커 노드 업그레이드 + +워커 노드의 업그레이드 절차는 워크로드를 실행하는 데 필요한 최소 용량을 보장하면서, +한 번에 하나의 노드 또는 한 번에 몇 개의 노드로 실행해야 한다. + +### kubeadm 업그레이드 + +1. 모든 워커 노드에서 kubeadm을 업그레이드한다. + + {{< tabs name="k8s_install_kubeadm_worker_nodes" >}} + {{% tab name="Ubuntu, Debian 또는 HypriotOS" %}} + # 1.18.x-00의 x를 최신 패치 버전으로 바꾼다 + apt-mark unhold kubeadm && \ + apt-get update && apt-get install -y kubeadm=1.18.x-00 && \ + apt-mark hold kubeadm + + # apt-get 버전 1.1부터 다음 방법을 사용할 수도 있다 + apt-get update && \ + apt-get install -y --allow-change-held-packages kubeadm=1.18.x-00 + {{% /tab %}} + {{% tab name="CentOS, RHEL 또는 Fedora" %}} + # 1.18.x-0에서 x를 최신 패치 버전으로 바꾼다 + yum install -y kubeadm-1.18.x-0 --disableexcludes=kubernetes + {{% /tab %}} + {{< /tabs >}} + +### 노드 드레인 + +1. 스케줄 불가능(unschedulable)으로 표시하고 워크로드를 축출하여 유지 보수할 노드를 준비한다. + + ```shell + # 을 드레이닝하려는 노드 이름으로 바꾼다. + kubectl drain --ignore-daemonsets + ``` + + 다음과 비슷한 출력이 표시되어야 한다. + + ``` + node/ip-172-31-85-18 cordoned + WARNING: ignoring DaemonSet-managed Pods: kube-system/kube-proxy-dj7d7, kube-system/weave-net-z65qx + node/ip-172-31-85-18 drained + ``` + +### kubelet 구성 업그레이드 + +1. 다음의 명령을 호출한다. + + ```shell + sudo kubeadm upgrade node + ``` + +### kubelet과 kubectl 업그레이드 + +1. 모든 워커 노드에서 kubelet 및 kubectl을 업그레이드한다. + + {{< tabs name="k8s_kubelet_and_kubectl" >}} + {{% tab name="Ubuntu, Debian 또는 HypriotOS" %}} + # 1.18.x-00의 x를 최신 패치 버전으로 바꾼다 + apt-mark unhold kubelet kubectl && \ + apt-get update && apt-get install -y kubelet=1.18.x-00 kubectl=1.18.x-00 && \ + apt-mark hold kubelet kubectl + + # apt-get 버전 1.1부터 다음 방법을 사용할 수도 있다 + apt-get update && \ + apt-get install -y --allow-change-held-packages kubelet=1.18.x-00 kubectl=1.18.x-00 + {{% /tab %}} + {{% tab name="CentOS, RHEL 또는 Fedora" %}} + # 1.18.x-0에서 x를 최신 패치 버전으로 바꾼다 + yum install -y kubelet-1.18.x-0 kubectl-1.18.x-0 --disableexcludes=kubernetes + {{% /tab %}} + {{< /tabs >}} + +1. kubelet을 다시 시작한다. + + ```shell + sudo systemctl restart kubelet + ``` + +### 노드에 적용된 cordon 해제 + +1. 스케줄 가능(schedulable)으로 표시하여 노드를 다시 온라인 상태로 만든다. + + ```shell + # 을 노드의 이름으로 바꾼다. + kubectl uncordon + ``` + +## 클러스터 상태 확인 + +모든 노드에서 kubelet을 업그레이드 한 후 kubectl이 클러스터에 접근할 수 있는 곳에서 다음의 명령을 실행하여 모든 노드를 다시 사용할 수 있는지 확인한다. + +```shell +kubectl get nodes +``` + +모든 노드에 대해 `STATUS` 열에 `Ready` 가 표시되어야 하고, 버전 번호가 업데이트되어 있어야 한다. + +{{% /capture %}} + +## 장애 상태에서의 복구 + +예를 들어 `kubeadm upgrade` 를 실행하는 중에 예기치 못한 종료로 인해 업그레이드가 실패하고 롤백하지 않는다면, `kubeadm upgrade` 를 다시 실행할 수 있다. +이 명령은 멱등성을 보장하며 결국 실제 상태가 선언한 의도한 상태인지 확인한다. + +잘못된 상태에서 복구하기 위해, 클러스터가 실행 중인 버전을 변경하지 않고 `kubeadm upgrade apply --force` 를 실행할 수도 있다. + +업그레이드하는 동안 kubeadm은 `/etc/kubernetes/tmp` 아래에 다음과 같은 백업 폴더를 작성한다. + +- `kubeadm-backup-etcd--