From 6c2983578c65ef16acdaefaaefd46b50953f2613 Mon Sep 17 00:00:00 2001 From: Rodrigo Porcionato Date: Thu, 27 Aug 2020 11:31:29 -0300 Subject: [PATCH 001/788] Update _index.html --- content/pt/_index.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/pt/_index.html b/content/pt/_index.html index 8f1fbd9658..de5a33edb7 100644 --- a/content/pt/_index.html +++ b/content/pt/_index.html @@ -43,12 +43,12 @@ O Kubernetes é Open Source, o que te oferece a liberdade de utilizá-lo em seu


- KubeCon em Barcelona on Maio 20-23, 2019 + KubeCon em Barcelona em Maio 20-23, 2019



- KubeCon em Shanghai em June 24-26, 2019 + KubeCon em Shanghai em Junho, 24-26 de 2019
@@ -58,4 +58,4 @@ O Kubernetes é Open Source, o que te oferece a liberdade de utilizá-lo em seu {{< blocks/kubernetes-features >}} -{{< blocks/case-studies >}} \ No newline at end of file +{{< blocks/case-studies >}} From 9ee52f94c480c2d978e8dc332d39dc45d792ee8a Mon Sep 17 00:00:00 2001 From: TAKAHASHI Shuuji Date: Thu, 17 Sep 2020 18:37:24 +0900 Subject: [PATCH 002/788] Copy en/docs/contribute/review/reviewing-prs.md. --- .../docs/contribute/review/reviewing-prs.md | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 content/ja/docs/contribute/review/reviewing-prs.md diff --git a/content/ja/docs/contribute/review/reviewing-prs.md b/content/ja/docs/contribute/review/reviewing-prs.md new file mode 100644 index 0000000000..ff6ef9d709 --- /dev/null +++ b/content/ja/docs/contribute/review/reviewing-prs.md @@ -0,0 +1,97 @@ +--- +title: Reviewing pull requests +content_type: concept +main_menu: true +weight: 10 +--- + + + +Anyone can review a documentation pull request. Visit the [pull requests](https://github.com/kubernetes/website/pulls) section in the Kubernetes website repository to see open pull requests. + +Reviewing documentation pull requests is a +great way to introduce yourself to the Kubernetes community. +It helps you learn the code base and build trust with other contributors. + +Before reviewing, it's a good idea to: + +- Read the [content guide](/docs/contribute/style/content-guide/) and + [style guide](/docs/contribute/style/style-guide/) so you can leave informed comments. +- Understand the different + [roles and responsibilities](/docs/contribute/participate/roles-and-responsibilities/) + in the Kubernetes documentation community. + + + +## Before you begin + +Before you start a review: + +- Read the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md) and ensure that you abide by it at all times. +- Be polite, considerate, and helpful. +- Comment on positive aspects of PRs as well as changes. +- Be empathetic and mindful of how your review may be received. +- Assume good intent and ask clarifying questions. +- Experienced contributors, consider pairing with new contributors whose work requires extensive changes. + +## Review process + +In general, review pull requests for content and style in English. + +1. Go to + [https://github.com/kubernetes/website/pulls](https://github.com/kubernetes/website/pulls). + You see a list of every open pull request against the Kubernetes website and + docs. + +2. Filter the open PRs using one or all of the following labels: + - `cncf-cla: yes` (Recommended): PRs submitted by contributors who have not signed the CLA cannot be merged. See [Sign the CLA](/docs/contribute/new-content/overview/#sign-the-cla) for more information. + - `language/en` (Recommended): Filters for english language PRs only. + - `size/`: filters for PRs of a certain size. If you're new, start with smaller PRs. + + Additionally, ensure the PR isn't marked as a work in progress. PRs using the `work in progress` label are not ready for review yet. + +3. Once you've selected a PR to review, understand the change by: + - Reading the PR description to understand the changes made, and read any linked issues + - Reading any comments by other reviewers + - Clicking the **Files changed** tab to see the files and lines changed + - Previewing the changes in the Netlify preview build by scrolling to the PR's build check section at the bottom of the **Conversation** tab and clicking the **deploy/netlify** line's **Details** link. + +4. Go to the **Files changed** tab to start your review. + 1. Click on the `+` symbol beside the line you want to comment on. + 2. Fill in any comments you have about the line and click either **Add single comment** (if you have only one comment to make) or **Start a review** (if you have multiple comments to make). + 3. When finished, click **Review changes** at the top of the page. Here, you can add + add a summary of your review (and leave some positive comments for the contributor!), + approve the PR, comment or request changes as needed. New contributors should always + choose **Comment**. + +## Reviewing checklist + +When reviewing, use the following as a starting point. + +### Language and grammar + +- Are there any obvious errors in language or grammar? Is there a better way to phrase something? +- Are there any complicated or archaic words which could be replaced with a simpler word? +- Are there any words, terms or phrases in use which could be replaced with a non-discriminatory alternative? +- Does the word choice and its capitalization follow the [style guide](/docs/contribute/style/style-guide/)? +- Are there long sentences which could be shorter or less complex? +- Are there any long paragraphs which might work better as a list or table? + +### Content + +- Does similar content exist elsewhere on the Kubernetes site? +- Does the content excessively link to off-site, individual vendor or non-open source documentation? + +### Website + +- Did this PR change or remove a page title, slug/alias or anchor link? If so, are there broken links as a result of this PR? Is there another option, like changing the page title without changing the slug? +- Does the PR introduce a new page? If so: + - Is the page using the right [page content type](/docs/contribute/style/page-content-types/) and associated Hugo shortcodes? + - Does the page appear correctly in the section's side navigation (or at all)? + - Should the page appear on the [Docs Home](/docs/home/) listing? +- Do the changes show up in the Netlify preview? Be particularly vigilant about lists, code blocks, tables, notes and images. + +### Other + +For small issues with a PR, like typos or whitespace, prefix your comments with `nit:`. This lets the author know the issue is non-critical. + From 45b4e5a39af1ec17cb70674c18e2f92c05ccab9c Mon Sep 17 00:00:00 2001 From: Felipe Date: Wed, 25 Nov 2020 09:07:35 +0000 Subject: [PATCH 003/788] Update content/pt/_index.html Co-authored-by: bl-ue <54780737+bl-ue@users.noreply.github.com> --- content/pt/_index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/pt/_index.html b/content/pt/_index.html index de5a33edb7..c2374521be 100644 --- a/content/pt/_index.html +++ b/content/pt/_index.html @@ -43,7 +43,7 @@ O Kubernetes é Open Source, o que te oferece a liberdade de utilizá-lo em seu


- KubeCon em Barcelona em Maio 20-23, 2019 + KubeCon em Barcelona em Maio 20-23 de 2019


From 613cb9d4f3d03d15574412ad4013d99aee5c20df Mon Sep 17 00:00:00 2001 From: prankul88 Date: Tue, 8 Dec 2020 14:54:49 +0530 Subject: [PATCH 004/788] Update expose service intro --- .../docs/tutorials/kubernetes-basics/expose/expose-intro.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/tutorials/kubernetes-basics/expose/expose-intro.html b/content/en/docs/tutorials/kubernetes-basics/expose/expose-intro.html index c610b6e9f4..cad917a4dc 100644 --- a/content/en/docs/tutorials/kubernetes-basics/expose/expose-intro.html +++ b/content/en/docs/tutorials/kubernetes-basics/expose/expose-intro.html @@ -37,7 +37,7 @@ weight: 10
  • ClusterIP (default) - Exposes the Service on an internal IP in the cluster. This type makes the Service only reachable from within the cluster.
  • NodePort - Exposes the Service on the same port of each selected Node in the cluster using NAT. Makes a Service accessible from outside the cluster using <NodeIP>:<NodePort>. Superset of ClusterIP.
  • LoadBalancer - Creates an external load balancer in the current cloud (if supported) and assigns a fixed, external IP to the Service. Superset of NodePort.
  • -
  • ExternalName - Exposes the Service using an arbitrary name (specified by externalName in the spec) by returning a CNAME record with the name. No proxy is used. This type requires v1.7 or higher of kube-dns.
  • +
  • ExternalName - Maps the Service to the contents of the externalName field (e.g. `foo.bar.example.com`), by returning a CNAME record with its value. No proxying of any kind is set up. This type requires v1.7 or higher of kube-dns, or CoreDNS version 0.0.8 or higher.
  • More information about the different types of Services can be found in the Using Source IP tutorial. Also see Connecting Applications with Services.

    Additionally, note that there are some use cases with Services that involve not defining selector in the spec. A Service created without selector will also not create the corresponding Endpoints object. This allows users to manually map a Service to specific endpoints. Another possibility why there may be no selector is you are strictly using type: ExternalName.

    From 968512ada1eae813ab20ffdce76b1e5508c198b1 Mon Sep 17 00:00:00 2001 From: "Anna Jung (VMware)" Date: Wed, 9 Dec 2020 10:06:23 -0600 Subject: [PATCH 005/788] Tracking commit for v1.21 docs From dbcd6627cb2597f271938f300ee3b68dfd0b76d9 Mon Sep 17 00:00:00 2001 From: Levent Ogut Date: Sun, 20 Dec 2020 17:49:00 +0300 Subject: [PATCH 006/788] update container-lifecycle-hooks.md for third hook handler i,.e. TCP unless I am missing something TCP handler is missing --- .../en/docs/concepts/containers/container-lifecycle-hooks.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/content/en/docs/concepts/containers/container-lifecycle-hooks.md b/content/en/docs/concepts/containers/container-lifecycle-hooks.md index fa74d94221..ae1c902336 100644 --- a/content/en/docs/concepts/containers/container-lifecycle-hooks.md +++ b/content/en/docs/concepts/containers/container-lifecycle-hooks.md @@ -47,10 +47,11 @@ A more detailed description of the termination behavior can be found in ### Hook handler implementations Containers can access a hook by implementing and registering a handler for that hook. -There are two types of hook handlers that can be implemented for Containers: +There are three types of hook handlers that can be implemented for Containers: * Exec - Executes a specific command, such as `pre-stop.sh`, inside the cgroups and namespaces of the Container. Resources consumed by the command are counted against the Container. +* TCP - Opens a TCP connecton against a specific port on the Container. * HTTP - Executes an HTTP request against a specific endpoint on the Container. ### Hook handler execution From ad85bdb054f45b373e178cd93ae87afdb55809f7 Mon Sep 17 00:00:00 2001 From: Mike Patterson Date: Sun, 20 Dec 2020 11:36:20 -0800 Subject: [PATCH 007/788] Include missing cert export step Updating the instructions to include missing step of getting issued cert exported from kubernetes, decoded, and ready for kubeconfig setup. --- .../access-authn-authz/certificate-signing-requests.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/content/en/docs/reference/access-authn-authz/certificate-signing-requests.md b/content/en/docs/reference/access-authn-authz/certificate-signing-requests.md index 6d05d0436a..045b1661aa 100644 --- a/content/en/docs/reference/access-authn-authz/certificate-signing-requests.md +++ b/content/en/docs/reference/access-authn-authz/certificate-signing-requests.md @@ -252,6 +252,12 @@ kubectl get csr/john -o yaml The certificate value is in Base64-encoded format under `status.certificate`. +Export the issued certificate from the CertificateSigningRequest. + +``` +kubectl get csr john -o jsonpath='{.status.certificate}'| base64 -d > /home/vagrant/work/john.crt +``` + ### Create Role and RoleBinding With the certificate created. it is time to define the Role and RoleBinding for From 48d3dbe0d3e95f3b3040b92d86cff291480019a3 Mon Sep 17 00:00:00 2001 From: Giridharaprasad <32255588+gprasath@users.noreply.github.com> Date: Thu, 24 Dec 2020 23:01:36 +0530 Subject: [PATCH 008/788] Update change-default-storage-class.md --- .../tasks/administer-cluster/change-default-storage-class.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/tasks/administer-cluster/change-default-storage-class.md b/content/en/docs/tasks/administer-cluster/change-default-storage-class.md index 9c08a2a4ad..bb9d9a6e87 100644 --- a/content/en/docs/tasks/administer-cluster/change-default-storage-class.md +++ b/content/en/docs/tasks/administer-cluster/change-default-storage-class.md @@ -70,7 +70,7 @@ for details about addon manager and how to disable individual addons. 1. Mark a StorageClass as default: - Similarly to the previous step, you need to add/set the annotation + Similar to the previous step, you need to add/set the annotation `storageclass.kubernetes.io/is-default-class=true`. ```bash From e72ec8fbd0463cc4dc885025b02e6348d9e983e3 Mon Sep 17 00:00:00 2001 From: Charly Rippenkroeger <36778983+CharlyRipp@users.noreply.github.com> Date: Fri, 8 Jan 2021 13:40:07 -0600 Subject: [PATCH 009/788] Update misleading documentation Update misleading information that HTTPS is required and link to self-documented code to find more edge-case configuration options --- .../en/docs/reference/access-authn-authz/authentication.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/content/en/docs/reference/access-authn-authz/authentication.md b/content/en/docs/reference/access-authn-authz/authentication.md index c385a15fda..da1dcfd6f0 100644 --- a/content/en/docs/reference/access-authn-authz/authentication.md +++ b/content/en/docs/reference/access-authn-authz/authentication.md @@ -457,7 +457,7 @@ clusters: - name: name-of-remote-authn-service cluster: certificate-authority: /path/to/ca.pem # CA for verifying the remote service. - server: https://authn.example.com/authenticate # URL of remote service to query. Must use 'https'. + server: https://authn.example.com/authenticate # URL of remote service to query. 'https' recommended for production. # users refers to the API server's webhook configuration. users: @@ -475,6 +475,8 @@ contexts: name: webhook ``` +Refer to [Cluster Struct](https://github.com/kubernetes/kubernetes/blob/2b8cac754c88900ea3ad91d6c3f0997b602a3051/staging/src/k8s.io/client-go/tools/clientcmd/api/v1/types.go#L63) for more configuration options. + When a client attempts to authenticate with the API server using a bearer token as discussed [above](#putting-a-bearer-token-in-a-request), the authentication webhook POSTs a JSON-serialized `TokenReview` object containing the token to the remote service. From e4ac283321c9eedbd24dfa42a81f18eab717a0b8 Mon Sep 17 00:00:00 2001 From: carlory Date: Mon, 4 Jan 2021 15:39:01 +0800 Subject: [PATCH 010/788] deprecate kubeadm alpha kubeconfig in 1.21 --- .../reference/setup-tools/kubeadm/_index.md | 2 + .../generated/kubeadm_alpha_kubelet.md | 48 --------- .../generated/kubeadm_alpha_kubelet_config.md | 48 --------- ...adm_alpha_kubelet_config_enable-dynamic.md | 87 ---------------- .../generated/kubeadm_alpha_selfhosting.md | 48 --------- .../kubeadm_alpha_selfhosting_pivot.md | 99 ------------------- ...ha_kubeconfig.md => kubeadm_kubeconfig.md} | 2 - ...fig_user.md => kubeadm_kubeconfig_user.md} | 5 +- .../setup-tools/kubeadm/kubeadm-alpha.md | 29 +----- .../setup-tools/kubeadm/kubeadm-kubeconfig.md | 21 ++++ 10 files changed, 26 insertions(+), 363 deletions(-) delete mode 100644 content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet.md delete mode 100644 content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config.md delete mode 100644 content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config_enable-dynamic.md delete mode 100644 content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting.md delete mode 100644 content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting_pivot.md rename content/en/docs/reference/setup-tools/kubeadm/generated/{kubeadm_alpha_kubeconfig.md => kubeadm_kubeconfig.md} (93%) rename content/en/docs/reference/setup-tools/kubeadm/generated/{kubeadm_alpha_kubeconfig_user.md => kubeadm_kubeconfig_user.md} (92%) create mode 100644 content/en/docs/reference/setup-tools/kubeadm/kubeadm-kubeconfig.md diff --git a/content/en/docs/reference/setup-tools/kubeadm/_index.md b/content/en/docs/reference/setup-tools/kubeadm/_index.md index d747c05124..ad84378d1d 100755 --- a/content/en/docs/reference/setup-tools/kubeadm/_index.md +++ b/content/en/docs/reference/setup-tools/kubeadm/_index.md @@ -26,5 +26,7 @@ To install kubeadm, see the [installation guide](/docs/setup/production-environm * [kubeadm config](/docs/reference/setup-tools/kubeadm/kubeadm-config) if you initialized your cluster using kubeadm v1.7.x or lower, to configure your cluster for `kubeadm upgrade` * [kubeadm token](/docs/reference/setup-tools/kubeadm/kubeadm-token) to manage tokens for `kubeadm join` * [kubeadm reset](/docs/reference/setup-tools/kubeadm/kubeadm-reset) to revert any changes made to this host by `kubeadm init` or `kubeadm join` +* [kubeadm certs](/docs/reference/setup-tools/kubeadm/kubeadm-certs) to manage Kubernetes certificates +* [kubeadm kubeconfig](/docs/reference/setup-tools/kubeadm/kubeadm-kubeconfig) to manage kubeconfig files * [kubeadm version](/docs/reference/setup-tools/kubeadm/kubeadm-version) to print the kubeadm version * [kubeadm alpha](/docs/reference/setup-tools/kubeadm/kubeadm-alpha) to preview a set of features made available for gathering feedback from the community diff --git a/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet.md b/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet.md deleted file mode 100644 index 055c8ecac5..0000000000 --- a/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet.md +++ /dev/null @@ -1,48 +0,0 @@ - -### Synopsis - - -This command is not meant to be run on its own. See list of available subcommands. - -### Options - - ---- - - - - - - - - - - -
    -h, --help
    help for kubelet
    - - - -### Options inherited from parent commands - - ---- - - - - - - - - - - -
    --rootfs string
    [EXPERIMENTAL] The path to the 'real' host root filesystem.
    - - - diff --git a/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config.md b/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config.md deleted file mode 100644 index 563d9fe227..0000000000 --- a/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config.md +++ /dev/null @@ -1,48 +0,0 @@ - -### Synopsis - - -This command is not meant to be run on its own. See list of available subcommands. - -### Options - - ---- - - - - - - - - - - -
    -h, --help
    help for config
    - - - -### Options inherited from parent commands - - ---- - - - - - - - - - - -
    --rootfs string
    [EXPERIMENTAL] The path to the 'real' host root filesystem.
    - - - diff --git a/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config_enable-dynamic.md b/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config_enable-dynamic.md deleted file mode 100644 index 278def1dd3..0000000000 --- a/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubelet_config_enable-dynamic.md +++ /dev/null @@ -1,87 +0,0 @@ - -### Synopsis - - -Enable or update dynamic kubelet configuration for a Node, against the kubelet-config-1.X ConfigMap in the cluster, where X is the minor version of the desired kubelet version. - -WARNING: This feature is still experimental, and disabled by default. Enable only if you know what you are doing, as it may have surprising side-effects at this stage. - -Alpha Disclaimer: this command is currently alpha. - -``` -kubeadm alpha kubelet config enable-dynamic [flags] -``` - -### Examples - -``` - # Enable dynamic kubelet configuration for a Node. - kubeadm alpha phase kubelet enable-dynamic-config --node-name node-1 --kubelet-version 1.18.0 - - WARNING: This feature is still experimental, and disabled by default. Enable only if you know what you are doing, as it - may have surprising side-effects at this stage. -``` - -### Options - - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -h, --help
    help for enable-dynamic
    --kubeconfig string     Default: "/etc/kubernetes/admin.conf"
    The kubeconfig file to use when talking to the cluster. If the flag is not set, a set of standard locations can be searched for an existing kubeconfig file.
    --kubelet-version string
    The desired version for the kubelet
    --node-name string
    Name of the node that should enable the dynamic kubelet configuration
    - - - -### Options inherited from parent commands - - ---- - - - - - - - - - - -
    --rootfs string
    [EXPERIMENTAL] The path to the 'real' host root filesystem.
    - - - diff --git a/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting.md b/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting.md deleted file mode 100644 index 77646b064b..0000000000 --- a/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting.md +++ /dev/null @@ -1,48 +0,0 @@ - -### Synopsis - - -This command is not meant to be run on its own. See list of available subcommands. - -### Options - - ---- - - - - - - - - - - -
    -h, --help
    help for selfhosting
    - - - -### Options inherited from parent commands - - ---- - - - - - - - - - - -
    --rootfs string
    [EXPERIMENTAL] The path to the 'real' host root filesystem.
    - - - diff --git a/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting_pivot.md b/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting_pivot.md deleted file mode 100644 index 554b8fe4c6..0000000000 --- a/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_selfhosting_pivot.md +++ /dev/null @@ -1,99 +0,0 @@ - -### Synopsis - - -Convert static Pod files for control plane components into self-hosted DaemonSets configured via the Kubernetes API. - -See the documentation for self-hosting limitations. - -Alpha Disclaimer: this command is currently alpha. - -``` -kubeadm alpha selfhosting pivot [flags] -``` - -### Examples - -``` - # Convert a static Pod-hosted control plane into a self-hosted one. - - kubeadm alpha phase self-hosting convert-from-staticpods -``` - -### Options - - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    --cert-dir string     Default: "/etc/kubernetes/pki"
    The path where certificates are stored
    --config string
    Path to a kubeadm configuration file.
    -f, --force
    Pivot the cluster without prompting for confirmation
    -h, --help
    help for pivot
    --kubeconfig string     Default: "/etc/kubernetes/admin.conf"
    The kubeconfig file to use when talking to the cluster. If the flag is not set, a set of standard locations can be searched for an existing kubeconfig file.
    -s, --store-certs-in-secrets
    Enable storing certs in secrets
    - - - -### Options inherited from parent commands - - ---- - - - - - - - - - - -
    --rootfs string
    [EXPERIMENTAL] The path to the 'real' host root filesystem.
    - - - diff --git a/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubeconfig.md b/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_kubeconfig.md similarity index 93% rename from content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubeconfig.md rename to content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_kubeconfig.md index 67f30bc3f8..67ee58fdd7 100644 --- a/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubeconfig.md +++ b/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_kubeconfig.md @@ -4,8 +4,6 @@ Kubeconfig file utilities. -Alpha Disclaimer: this command is currently alpha. - ### Options diff --git a/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubeconfig_user.md b/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_kubeconfig_user.md similarity index 92% rename from content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubeconfig_user.md rename to content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_kubeconfig_user.md index bdb246232f..8ff987503c 100644 --- a/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_alpha_kubeconfig_user.md +++ b/content/en/docs/reference/setup-tools/kubeadm/generated/kubeadm_kubeconfig_user.md @@ -4,17 +4,16 @@ Output a kubeconfig file for an additional user. -Alpha Disclaimer: this command is currently alpha. ``` -kubeadm alpha kubeconfig user [flags] +kubeadm kubeconfig user [flags] ``` ### Examples ``` # Output a kubeconfig file for an additional user named foo using a kubeadm config file bar - kubeadm alpha kubeconfig user --client-name=foo --config=bar + kubeadm kubeconfig user --client-name=foo --config=bar ``` ### Options diff --git a/content/en/docs/reference/setup-tools/kubeadm/kubeadm-alpha.md b/content/en/docs/reference/setup-tools/kubeadm/kubeadm-alpha.md index eaef0f5140..dd946c9737 100644 --- a/content/en/docs/reference/setup-tools/kubeadm/kubeadm-alpha.md +++ b/content/en/docs/reference/setup-tools/kubeadm/kubeadm-alpha.md @@ -9,34 +9,7 @@ weight: 90 from the community. Please try it out and give us feedback! {{< /caution >}} -## kubeadm alpha kubeconfig user {#cmd-phase-kubeconfig} - -The `user` subcommand can be used for the creation of kubeconfig files for additional users. - -{{< tabs name="tab-kubeconfig" >}} -{{< tab name="kubeconfig" include="generated/kubeadm_alpha_kubeconfig.md" />}} -{{< tab name="user" include="generated/kubeadm_alpha_kubeconfig_user.md" />}} -{{< /tabs >}} - -## kubeadm alpha kubelet config {#cmd-phase-kubelet} - -Use the following command to enable the DynamicKubeletConfiguration feature. - -{{< tabs name="tab-kubelet" >}} -{{< tab name="kubelet" include="generated/kubeadm_alpha_kubelet.md" />}} -{{< tab name="enable-dynamic" include="generated/kubeadm_alpha_kubelet_config_enable-dynamic.md" />}} -{{< /tabs >}} - -## kubeadm alpha selfhosting pivot {#cmd-selfhosting} - -The subcommand `pivot` can be used to convert a static Pod-hosted control plane into a self-hosted one. - -[Documentation](/docs/setup/production-environment/tools/kubeadm/self-hosting/) - -{{< tabs name="selfhosting" >}} -{{< tab name="selfhosting" include="generated/kubeadm_alpha_selfhosting.md" />}} -{{< tab name="pivot" include="generated/kubeadm_alpha_selfhosting_pivot.md" />}} -{{< /tabs >}} +Currently there are no experimental commands under `kubeadm alpha`. ## {{% heading "whatsnext" %}} diff --git a/content/en/docs/reference/setup-tools/kubeadm/kubeadm-kubeconfig.md b/content/en/docs/reference/setup-tools/kubeadm/kubeadm-kubeconfig.md new file mode 100644 index 0000000000..f912285f7d --- /dev/null +++ b/content/en/docs/reference/setup-tools/kubeadm/kubeadm-kubeconfig.md @@ -0,0 +1,21 @@ +--- +title: kubeadm kubeconfig +content_type: concept +weight: 90 +--- + +`kubeadm kubeconfig` provides utilities for managing kubeconfig files. + +## kubeadm kubeconfig {#cmd-kubeconfig} + +{{< tabs name="tab-kubeconfig" >}} +{{< tab name="overview" include="generated/kubeadm_kubeconfig.md" />}} +{{< /tabs >}} + +## kubeadm kubeconfig user {#cmd-kubeconfig-user} + +This command can be used to output a kubeconfig file for an additional user. + +{{< tabs name="tab-kubeconfig-user" >}} +{{< tab name="user" include="generated/kubeadm_kubeconfig_user.md" />}} +{{< /tabs >}} \ No newline at end of file From 7347a9d008d593b9b04b2ff251d6e7c4e99f89f2 Mon Sep 17 00:00:00 2001 From: Charly Rippenkroeger <36778983+CharlyRipp@users.noreply.github.com> Date: Mon, 11 Jan 2021 11:57:32 -0600 Subject: [PATCH 011/788] Remove code reference Remove reference in favor of https://github.com/kubernetes/website/issues/23889 --- content/en/docs/reference/access-authn-authz/authentication.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/content/en/docs/reference/access-authn-authz/authentication.md b/content/en/docs/reference/access-authn-authz/authentication.md index da1dcfd6f0..41a4054783 100644 --- a/content/en/docs/reference/access-authn-authz/authentication.md +++ b/content/en/docs/reference/access-authn-authz/authentication.md @@ -475,8 +475,6 @@ contexts: name: webhook ``` -Refer to [Cluster Struct](https://github.com/kubernetes/kubernetes/blob/2b8cac754c88900ea3ad91d6c3f0997b602a3051/staging/src/k8s.io/client-go/tools/clientcmd/api/v1/types.go#L63) for more configuration options. - When a client attempts to authenticate with the API server using a bearer token as discussed [above](#putting-a-bearer-token-in-a-request), the authentication webhook POSTs a JSON-serialized `TokenReview` object containing the token to the remote service. From dc75539de039b769e97add6144a56493cda20f62 Mon Sep 17 00:00:00 2001 From: flo-oss Date: Thu, 21 Jan 2021 19:42:24 -0800 Subject: [PATCH 012/788] added German translation for pod overview --- .../de/docs/concepts/workloads/pods/_index.md | 372 ++++++++++++++++++ 1 file changed, 372 insertions(+) create mode 100644 content/de/docs/concepts/workloads/pods/_index.md diff --git a/content/de/docs/concepts/workloads/pods/_index.md b/content/de/docs/concepts/workloads/pods/_index.md new file mode 100644 index 0000000000..d2a2009f8c --- /dev/null +++ b/content/de/docs/concepts/workloads/pods/_index.md @@ -0,0 +1,372 @@ +--- +reviewers: +- erictune +title: Pods +content_type: concept +weight: 10 +no_list: true +card: + name: concepts + weight: 60 +--- + + + +_Pods_ sind die kleinsten installierbaren Softwareeinheiten, die in Kubernetes +erstellt und verwaltet werden können. + +Ein _Pod_ (übersetzt Gruppe/Schote, wie z. B. eine Gruppe von Walen oder eine +Erbsenschote) ist eine Gruppe von einem oder mehreren +{{< glossary_tooltip text="Containern" term_id="container" >}} mit gemeinsam +genutzten Speicher- und Netzwerkressourcen und einer Spezifikation für die +Ausführung der Container. Die Ressourcen eines Pods befinden sich immer auf dem +gleichen (virtuellen) Server, werden gemeinsam geplant und in einem +gemeinsamen Kontext ausgeführt. Ein Pod modelliert einen anwendungsspezifischen +"logischen Server": Er enthält eine oder mehrere containerisierte Anwendungen +, die + relativ stark +voneinander abhängen. In Nicht-Cloud-Kontexten sind Anwendungen, die auf +demselben physischen oder virtuellen Server ausgeführt werden, vergleichbar zu +Cloud-Anwendungen, die auf demselben logischen Server ausgeführt werden. + +Ein Pod kann neben Anwendungs-Containern auch sogenannte +[Initialisierungs-Container](/docs/concepts/workloads/pods/init-containers/) +enthalten, die beim Starten des Pods ausgeführt werden. +Es können auch +kurzlebige/[ephemere Container](/docs/concepts/workloads/pods/ephemeral-containers/) +zum Debuggen gestartet werden, wenn dies der Cluster anbietet. + + + +## Was ist ein Pod? + +{{< note >}} +Obwohl Kubernetes abgesehen von [Docker](https://www.docker.com/) auch andere +{{}} unterstützt, ist Docker am bekanntesten und + es ist hilfreich, Pods mit der Terminologie von Docker zu beschreiben. +{{}} + +Der gemeinsame Kontext eines Pods besteht aus einer Reihe von Linux-Namespaces, +Cgroups und möglicherweise andere Aspekten der Isolation, also die gleichen +Dinge, die einen Dockercontainer isolieren. Innerhalb des Kontexts eines Pods +können die einzelnen Anwendungen weitere Unterisolierungen haben. + +Im Sinne von Docker-Konzepten ähnelt ein Pod einer Gruppe von Docker-Containern, +die gemeinsame Namespaces und Dateisystem-Volumes nutzen. + +## Pods verwenden + +Normalerweise müssen keine Pods erzeugt werden, auch keine Singleton-Pods. +Stattdessen werden sie mit Workload-Ressourcen wie {{}} oder {{}} erzeugt. Für Pods, die von einem Systemzustand +abhängen, erwägen Sie die Nutzung von {{}}-Ressourcen. + +Pods in einem Kubernetes-Cluster werden hauptsächlich auf zwei Arten verwendet: + +* **Pods, die einen einzelnen Container ausführen**. Das +"Ein-Container-per-Pod"-Modell ist der häufigste Kubernetes-Anwendungsfall. In +diesem Fall können Sie sich einen Pod als einen Behälter vorstellen, der einen +einzelnen Container enthält; Kubernetes verwaltet die Pods anstatt die +Container direkt zu verwalten. +* **Pods, in denen mehrere Container ausgeführt werden, die zusammenarbeiten +müssen**. Wenn eine Softwareanwendung aus co-lokaliserten Containern besteht, +die sich gemeinsame Ressourcen teilen und stark voneinander abhängen, kann ein +Pod die Container verkapseln. +Diese Container bilden eine einzelne zusammenhängende +Serviceeinheit, z. B. ein Container, der Daten in einem gemeinsam genutzten +Volume öffentlich verfügbar macht, während ein separater _Sidecar_-Container +die Daten aktualisiert. Der Pod fasst die Container, die Speicherressourcen +und eine kurzlebiges Netzwerk-Identität als eine Einheit zusammen. + +{{}} +Das Gruppieren mehrerer gemeinsam lokalisierter und gemeinsam verwalteter +Container in einem einzigen Pod ist ein relativ fortgeschrittener +Anwendungsfall. Sie sollten diese Architektur nur in bestimmten Fällen +verwenden, wenn Ihre Container stark voneinander abhängen. +{{}} + +Jeder Pod sollte eine einzelne Instanz einer gegebenen Anwendung ausführen. Wenn +Sie Ihre Anwendung horizontal skalieren wollen (also mehr Instanzen auszuführen +und dadurch mehr Gesamtressourcen bereitstellen), sollten Sie mehrere Pods +verwenden, +einen für jede Instanz. In Kubernetes wird dies typischerweise als Replikation +bezeichnet. +Replizierte Pods werden normalerweise als eine Gruppe von Workload-Ressource +und {{}} erstellt +und verwaltet. + +Die Seite [Pods und Controller](#pods-and-controllers) beschreibt, wie Kubernetes +Workload-Ressourcen und deren Controller verwendet, um Anwendungen zu skalieren +und zu heilen. + +### Wie Pods mehrere Container verwalten + +Pods unterstützen mehrere kooperierende Prozesse (als Container), die eine +zusammenhängende Serviceeinheit bilden. Kubernetes plant und stellt automatisch +sicher, dass sich die Container in einem Pod auf demselben physischen oder +virtuellen Server im Cluster befinden. Die Container können Ressourcen und +Abhängigkeiten gemeinsam nutzen, miteinander kommunizieren und +ferner koordinieren wann und wie sie beendet werden. + +Zum Beispiel könnten Sie einen Container haben, der als Webserver für Dateien in +einem gemeinsamen Volume arbeitet. Und ein separater "Sidecar" -Container +aktualisiert die Daten von einer externen Datenquelle, siehe folgenden +Abbildung: + +{{< figure src="/images/docs/pod.svg" alt="example pod diagram" width="50%" >}} + +Einige Pods haben sowohl {{}} als auch {{}}. +Initialisierungs-Container werden gestartet und angehalten bevor die +Anwendungs-Container gestartet werden. + +Pods stellen standardmäßig zwei Arten von gemeinsam Ressourcen für die +enthaltenen Container bereit: +[Netzwerk](#pod-networking) und [Speicher](#pod-storage).. + + +## Mit Pods arbeiten + +Sie werden selten einzelne Pods direkt in Kubernetes erstellen, selbst +Singleton-Pods. Das liegt daran, dass Pods als relativ kurzlebige +Einweg-Einheiten konzipiert sind. Wann Ein Pod erstellt wird (entweder direkt +von Ihnen oder indirekt von einem +{{}}), wird die +Ausführung auf einem {{}} in Ihrem Cluster +geplant. Der Pod bleibt auf diesem (virtuellen) Server, bis entweder der Pod die +Ausführung beendet hat, das Pod-Objekt gelöscht wird, der Pod aufgrund +mangelnder Ressourcen *evakuiert* wird oder oder der Node ausfällt. + +{{}} +Das Neustarten eines Containers in einem Pod sollte nicht mit dem Neustarten +eines Pods verwechselt werden. Ein Pod ist kein Prozess, sondern eine Umgebung +zur Ausführung von Containern. Ein Pod bleibt bestehen bis er gelöscht wird. +{{}} + +Stellen Sie beim Erstellen des Manifests für ein Pod-Objekt sicher, dass der +angegebene Name ein gültiger +[DNS-Subdomain-Name](/docs/concepts/overview/working-with-objects/names#dns-subdomain-names) +ist. + +### Pods und Controller + +Mit Workload-Ressourcen können Sie mehrere Pods erstellen und verwalten. Ein +Controller für die Ressource kümmert sich um Replikation, Roll-Out sowie +automatische Heilung im Fall von Podfehlern. Wenn beispielsweise ein Node +ausfällt, bemerkt ein Controller, dass die Pods auf dem Node nicht mehr laufen +und plant die Ausführung eines Ersatzpods auf einem funktionierenden Node. +Hier sind einige Beispiele für Workload-Ressourcen, die einen oder mehrere Pods +verwalten: + +* {{< glossary_tooltip text="Deployment" term_id="deployment" >}} +* {{< glossary_tooltip text="StatefulSet" term_id="statefulset" >}} +* {{< glossary_tooltip text="DaemonSet" term_id="daemonset" >}} + +### Podvorlagen + +Controller für +{{}}-Ressourcen +erstellen Pods von einer _Podvorlage_ und verwalten diese Pods für sie. + +Podvorlagen sind Spezifikationen zum Erstellen von Pods und sind in +Workload-Ressourcen enthalten wie z. B. +[Deployments](/docs/concepts/workloads/controllers/deployment/), +[Jobs](/docs/concepts/workloads/controllers/job/), and +[DaemonSets](/docs/concepts/workloads/controllers/daemonset/). + +Jeder Controller für eine Workload-Ressource verwendet die Podvorlage innerhalb +des Workload-Objektes, um Pods zu erzeugen. Die Podvorlage ist Bestandteil des +gewünschten Zustands der Workload-Ressource, mit der Sie Ihre Anwendung +ausgeführt haben. + +Das folgende Beispiel ist ein Manifest für einen einfachen Job mit einer +`Vorlage`, die einen Container startet. Der Container in diesem Pod druckt +eine Nachricht und pausiert dann. + +```yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: hello +spec: + template: + # This is the pod template + spec: + containers: + - name: hello + image: busybox + command: ['sh', '-c', 'echo "Hello, Kubernetes!" && sleep 3600'] + restartPolicy: OnFailure + # The pod template ends here +``` +Das Ändern der Podvorlage oder der Wechsel zu einer neuen Podvorlage hat keine +direkten Auswirkungen auf bereits existierende Pods. Wenn Sie die Podvorlage für +eine Workload-Ressource ändern, dann muss diese Ressource die Ersatz-Pods +erstellen, welche die aktualisierte Vorlage verwenden. + +Beispielsweise stellt der StatefulSet-Controller sicher, dass für jedes +StatefulSet-Objekt die ausgeführten Pods mit der aktueller Podvorlage +übereinstimmen. Wenn Sie das StatefulSet bearbeiten und die Vorlage ändern, +beginnt das StatefulSet mit der Erstellung neuer Pods basierend auf der +aktualisierten Vorlage. Schließlich werden alle alten Pods durch neue Pods +ersetzt, und das Update ist abgeschlossen. + +Jede Workload-Ressource implementiert eigenen Regeln für die Umsetzung von +Änderungen der Podvorlage. Wenn Sie mehr über StatefulSet erfahren möchten, +lesen Sie +[Update strategy](/docs/tutorials/stateful-application/basic-stateful-set/#updating-statefulsets) +im Tutorial StatefulSet Basics. + + +Auf Nodes beobachtet oder verwaltet das +{{< glossary_tooltip term_id="kubelet" text="Kubelet" >}} +nicht direkt die Details zu Podvorlagen und Updates. Diese Details sind +abstrahiert. Die Abstraktion und Trennung von Aufgaben vereinfacht die +Systemsemantik und ermöglicht so das Verhalten des Clusters zu ändern ohne +vorhandenen Code zu ändern. + +## Pod Update und Austausch + +Wie im vorherigen Abschnitt erwähnt, erstellt der Controller neue Pods basierend +auf der aktualisierten Vorlage, wenn die Podvorlage für eine Workload-Ressource +geändert wird anstatt die vorhandenen Pods zu aktualisieren oder zu patchen. + +Kubernetes hindert Sie nicht daran, Pods direkt zu verwalten. Es ist möglich, +einige Felder eines laufenden Pods zu aktualisieren. Allerdings haben +Pod-Aktualisierungsvorgänge wie zum Beispiel +[`patch`](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#patch-pod-v1-core), +und +[`replace`](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#replace-pod-v1-core) +einige Einschränkungen: + +- Die meisten Metadaten zu einem Pod sind unveränderlich. Zum Beispiel können + Sie nicht die Felder `namespace`, `name`, `uid`, oder `creationTimestamp` + ändern. Das `generation`-Feld ist eindeutig. Es werden nur Aktualisierungen + akzeptiert, die den Wert des Feldes inkrementieren. +- Wenn das Feld `metadata.deletionTimestamp` gesetzt ist, kann kein neuer + Eintrag zur Liste `metadata.finalizers` hinzugefügt werden. +- Pod-Updates dürfen keine Felder ändern, die Ausnahmen sind + `spec.containers [*].image`, + `spec.initContainers [*].image`,` spec.activeDeadlineSeconds` oder + `spec.tolerations`. Für `spec.tolerations` können Sie nur neue Einträge + hinzufügen. +- Für `spec.activeDeadlineSeconds` sind nur zwei Änderungen erlaubt: + + 1. ungesetztes Feld in eine positive Zahl + 1. positive Zahl in eine kleinere positive Zahl, die nicht negativ ist + +## Gemeinsame Nutzung von Ressourcen und Kommunikation + +Pods ermöglichen den Datenaustausch und die Kommunikation zwischen den +Containern, die im Pod enthalten sind. + +### Datenspeicherung in Pods {#pod-storage} + +Ein Pod kann eine Reihe von gemeinsam genutzten Speicher- +{{}} spezifizieren. Alle +Container im Pod können auf die gemeinsamen Volumes zugreifen und dadurch Daten +austauschen. Volumes ermöglichen auch, dass Daten ohne Verlust gespeichert +werden, falls einer der Container neu gestartet werden muss. +Im Kapitel [Datenspeicherung](/docs/concepts/storage/) finden Sie weitere +Informationen, wie Kubernetes gemeinsam genutzten Speicher implementiert und Pods +zur Verfügung stellt. + +### Pod-Netzwerk + +Jedem Pod wird für jede Adressenfamilie eine eindeutige IP-Adresse zugewiesen. +Jeder Container in einem Pod nutzt den gemeinsamen Netzwerk-Namespace, +einschließlich der IP-Adresse und der Ports. In einem Pod (und **nur** dann) +können die Container, die zum Pod gehören, über `localhost` miteinander +kommunizieren. Wenn Container in einem Pod mit Entitäten *außerhalb des Pods* +kommunizieren, müssen sie koordinieren, wie die gemeinsam genutzten +Netzwerkressourcen (z. B. Ports) verwenden werden. Innerhalb eines Pods teilen +sich Container eine IP-Adresse und einen Reihe von Ports und können sich +gegenseitig über `localhost` finden. Die Container in einem Pod können auch die +üblichen Kommunikationsverfahren zwischen Prozessen nutzen, wie z. B. +SystemV-Semaphoren oder POSIX Shared Memory. Container in verschiedenen Pods +haben unterschiedliche IP-Adressen und können nicht per IPC ohne +[spezielle Konfiguration](/docs/concepts/policy/pod-security-policy/) +kommunizieren. Container, die mit einem Container in einem anderen Pod +interagieren möchten, müssen IP Netzwerke verwenden. + +Für die Container innerhalb eines Pods stimmt der "hostname" mit dem +konfigurierten `Namen` des Pods überein. Mehr dazu im Kapitel +[Netzwerke](/docs/concepts/cluster-administration/networking/). + +## Privilegierter Modus für Container + +Jeder Container in einem Pod kann den privilegierten Modus aktivieren, indem +das Flag `privileged` im +[Sicherheitskontext](/docs/tasks/configure-pod-container/security-context/) +der Container-Spezifikation verwendet wird. +Dies ist nützlich für Container, die Verwaltungsfunktionen des Betriebssystems +verwenden möchten, z. B. das Manipulieren des Netzwerk-Stacks oder den Zugriff +auf Hardware. Prozesse innerhalb eines privilegierten Containers erhalten fast +die gleichen Rechte wie sie Prozesse außerhalb eines Containers zur Verfügung +stehen. + +{{}} +Ihre +{{}} +muss das Konzept eines privilegierten Containers unterstützen, damit diese +Einstellung relevant ist. +{{}} + + +## Statische Pods + +_Statische Pods_ werden direkt vom Kubelet-Daemon auf einem bestimmten Node +verwaltet ohne dass sie vom +{{}} überwacht +werden. +. +Die meisten Pods werden von der Control Plane verwaltet (z. B. +{{< glossary_tooltip text="Deployment" term_id="deployment" >}}). Aber für +statische Pods überwacht das Kubelet jeden statischen Pod direkt (und startet +ihn neu, wenn er ausfällt). + +Statische Pods sind immer an ein {{}} auf +einem bestimmten Node gebunden. Der Hauptanwendungsfall für statische Pods +besteht darin, eine selbst gehostete Steuerebene auszuführen. Mit anderen +Worten: Das Kubelet dient zur Überwachung der einzelnen +[control plane components](/docs/concepts/overview/components/#control-plane-components). + +Das Kubelet versucht automatisch auf dem Kubernetes API-Server für jeden +statischen Pod einen spiegelbildlichen Pod +(im Englischen {{}}) +zu erstellen. +Das bedeutet, dass die auf einem Node ausgeführten Pods auf dem API-Server +sichtbar sind jedoch von dort nicht gesteuert werden können. + +## {{% heading "whatsnext" %}} + +* Erfahren Sie mehr über den + [Lebenszyklus eines Pods](/docs/concepts/workloads/pods/pod-lifecycle/). +* Erfahren Sie mehr über [RuntimeClass](/docs/concepts/containers/runtime-class/) + und wie Sie damit verschiedene Pods mit unterschiedlichen + Container-Laufzeitumgebung konfigurieren können. +* Lesen sie mehr über + [Restriktionen für die Verteilung von Pods](/docs/concepts/workloads/pods/pod-topology-spread-constraints/). +* Lesen sie mehr über sogenannte + [Pod-Disruption-Budgets](/docs/concepts/workloads/pods/disruptions/) + und wie Sie diese verwenden können, um die Verfügbarkeit von Anwendungen bei + Störungen zu verwalten. Die + [Pod](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#pod-v1-core) + -Objektdefinition beschreibt das Objekt im Detail. +* [The Distributed System Toolkit: Patterns for Composite Containers](https://kubernetes.io/blog/2015/06/the-distributed-system-toolkit-patterns) + erläutert allgemeine Layouts für Pods mit mehr als einem Container. + +Um den Hintergrund zu verstehen, warum Kubernetes eine gemeinsame Pod-API in +andere Ressourcen, wie z. B. +{{< glossary_tooltip text="StatefulSets" term_id="statefulset" >}} +oder {{< glossary_tooltip text="Deployments" term_id="deployment" >}} einbindet, +können sie Artikel zu früheren Technologien lesen, unter anderem: + * [Aurora](https://aurora.apache.org/documentation/latest/reference/configuration/#job-schema) + * [Borg](https://research.google.com/pubs/pub43438.html) + * [Marathon](https://mesosphere.github.io/marathon/docs/rest-api.html) + * [Omega](https://research.google/pubs/pub41684/) + * [Tupperware](https://engineering.fb.com/data-center-engineering/tupperware/). \ No newline at end of file From f213353b3028d6fc8099b7232346321a5f63ed66 Mon Sep 17 00:00:00 2001 From: flo-oss Date: Thu, 21 Jan 2021 20:45:13 -0800 Subject: [PATCH 013/788] added German translation for pod overview page --- .../de/docs/concepts/workloads/pods/_index.md | 49 ++++++++++--------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/content/de/docs/concepts/workloads/pods/_index.md b/content/de/docs/concepts/workloads/pods/_index.md index d2a2009f8c..b1aec877c9 100644 --- a/content/de/docs/concepts/workloads/pods/_index.md +++ b/content/de/docs/concepts/workloads/pods/_index.md @@ -12,7 +12,7 @@ card: -_Pods_ sind die kleinsten installierbaren Softwareeinheiten, die in Kubernetes +_Pods_ sind die kleinsten einsetzbaren Einheiten, die in Kubernetes erstellt und verwaltet werden können. Ein _Pod_ (übersetzt Gruppe/Schote, wie z. B. eine Gruppe von Walen oder eine @@ -42,13 +42,13 @@ zum Debuggen gestartet werden, wenn dies der Cluster anbietet. {{< note >}} Obwohl Kubernetes abgesehen von [Docker](https://www.docker.com/) auch andere -{{}} unterstützt, ist Docker am bekanntesten und es ist hilfreich, Pods mit der Terminologie von Docker zu beschreiben. {{}} Der gemeinsame Kontext eines Pods besteht aus einer Reihe von Linux-Namespaces, -Cgroups und möglicherweise andere Aspekten der Isolation, also die gleichen +Cgroups und möglicherweise anderen Aspekten der Isolation, also die gleichen Dinge, die einen Dockercontainer isolieren. Innerhalb des Kontexts eines Pods können die einzelnen Anwendungen weitere Unterisolierungen haben. @@ -89,18 +89,19 @@ verwenden, wenn Ihre Container stark voneinander abhängen. {{}} Jeder Pod sollte eine einzelne Instanz einer gegebenen Anwendung ausführen. Wenn -Sie Ihre Anwendung horizontal skalieren wollen (also mehr Instanzen auszuführen +Sie Ihre Anwendung horizontal skalieren wollen (um mehr Instanzen auszuführen und dadurch mehr Gesamtressourcen bereitstellen), sollten Sie mehrere Pods verwenden, einen für jede Instanz. In Kubernetes wird dies typischerweise als Replikation bezeichnet. -Replizierte Pods werden normalerweise als eine Gruppe von Workload-Ressource -und {{}} erstellt +Replizierte Pods werden normalerweise als eine Gruppe durch eine +Workload-Ressource und deren +{{}} erstellt und verwaltet. -Die Seite [Pods und Controller](#pods-and-controllers) beschreibt, wie Kubernetes -Workload-Ressourcen und deren Controller verwendet, um Anwendungen zu skalieren -und zu heilen. +Die Seite [Pods und Controller](#pods-and-controllers) beschreibt, wie +Kubernetes Workload-Ressourcen und deren Controller verwendet, um Anwendungen +zu skalieren und zu heilen. ### Wie Pods mehrere Container verwalten @@ -121,12 +122,12 @@ Abbildung: Einige Pods haben sowohl {{}} als auch {{}}. -Initialisierungs-Container werden gestartet und angehalten bevor die +Initialisierungs-Container werden gestartet und beendet bevor die Anwendungs-Container gestartet werden. Pods stellen standardmäßig zwei Arten von gemeinsam Ressourcen für die enthaltenen Container bereit: -[Netzwerk](#pod-networking) und [Speicher](#pod-storage).. +[Netzwerk](#pod-networking) und [Speicher](#pod-storage). ## Mit Pods arbeiten @@ -179,7 +180,7 @@ Workload-Ressourcen enthalten wie z. B. [DaemonSets](/docs/concepts/workloads/controllers/daemonset/). Jeder Controller für eine Workload-Ressource verwendet die Podvorlage innerhalb -des Workload-Objektes, um Pods zu erzeugen. Die Podvorlage ist Bestandteil des +des Workload-Objektes, um Pods zu erzeugen. Die Podvorlage ist Teil des gewünschten Zustands der Workload-Ressource, mit der Sie Ihre Anwendung ausgeführt haben. @@ -217,8 +218,8 @@ ersetzt, und das Update ist abgeschlossen. Jede Workload-Ressource implementiert eigenen Regeln für die Umsetzung von Änderungen der Podvorlage. Wenn Sie mehr über StatefulSet erfahren möchten, -lesen Sie -[Update strategy](/docs/tutorials/stateful-application/basic-stateful-set/#updating-statefulsets) +lesen Sie die Seite +[Update-Strategien](/docs/tutorials/stateful-application/basic-stateful-set/#updating-statefulsets) im Tutorial StatefulSet Basics. @@ -243,9 +244,9 @@ und [`replace`](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#replace-pod-v1-core) einige Einschränkungen: -- Die meisten Metadaten zu einem Pod sind unveränderlich. Zum Beispiel können +- Die meisten Metadaten zu einem Pod können nicht verändert werden. Zum Beispiel können Sie nicht die Felder `namespace`, `name`, `uid`, oder `creationTimestamp` - ändern. Das `generation`-Feld ist eindeutig. Es werden nur Aktualisierungen + ändern. Das `generation`-Feld muss eindeutig sein. Es werden nur Aktualisierungen akzeptiert, die den Wert des Feldes inkrementieren. - Wenn das Feld `metadata.deletionTimestamp` gesetzt ist, kann kein neuer Eintrag zur Liste `metadata.finalizers` hinzugefügt werden. @@ -272,8 +273,8 @@ Container im Pod können auf die gemeinsamen Volumes zugreifen und dadurch Daten austauschen. Volumes ermöglichen auch, dass Daten ohne Verlust gespeichert werden, falls einer der Container neu gestartet werden muss. Im Kapitel [Datenspeicherung](/docs/concepts/storage/) finden Sie weitere -Informationen, wie Kubernetes gemeinsam genutzten Speicher implementiert und Pods -zur Verfügung stellt. +Informationen, wie Kubernetes gemeinsam genutzten Speicher implementiert und +Pods zur Verfügung stellt. ### Pod-Netzwerk @@ -284,10 +285,10 @@ können die Container, die zum Pod gehören, über `localhost` miteinander kommunizieren. Wenn Container in einem Pod mit Entitäten *außerhalb des Pods* kommunizieren, müssen sie koordinieren, wie die gemeinsam genutzten Netzwerkressourcen (z. B. Ports) verwenden werden. Innerhalb eines Pods teilen -sich Container eine IP-Adresse und einen Reihe von Ports und können sich +sich Container eine IP-Adresse und eine Reihe von Ports und können sich gegenseitig über `localhost` finden. Die Container in einem Pod können auch die üblichen Kommunikationsverfahren zwischen Prozessen nutzen, wie z. B. -SystemV-Semaphoren oder POSIX Shared Memory. Container in verschiedenen Pods +SystemV-Semaphoren oder "POSIX Shared Memory". Container in verschiedenen Pods haben unterschiedliche IP-Adressen und können nicht per IPC ohne [spezielle Konfiguration](/docs/concepts/policy/pod-security-policy/) kommunizieren. Container, die mit einem Container in einem anderen Pod @@ -306,7 +307,7 @@ der Container-Spezifikation verwendet wird. Dies ist nützlich für Container, die Verwaltungsfunktionen des Betriebssystems verwenden möchten, z. B. das Manipulieren des Netzwerk-Stacks oder den Zugriff auf Hardware. Prozesse innerhalb eines privilegierten Containers erhalten fast -die gleichen Rechte wie sie Prozesse außerhalb eines Containers zur Verfügung +die gleichen Rechte wie sie Prozessen außerhalb eines Containers zur Verfügung stehen. {{}} @@ -324,7 +325,7 @@ verwaltet ohne dass sie vom {{}} überwacht werden. . -Die meisten Pods werden von der Control Plane verwaltet (z. B. +Die meisten Pods werden von der Kontrollebene verwaltet (z. B. {{< glossary_tooltip text="Deployment" term_id="deployment" >}}). Aber für statische Pods überwacht das Kubelet jeden statischen Pod direkt (und startet ihn neu, wenn er ausfällt). @@ -333,7 +334,7 @@ Statische Pods sind immer an ein {{}} auf einem bestimmten Node gebunden. Der Hauptanwendungsfall für statische Pods besteht darin, eine selbst gehostete Steuerebene auszuführen. Mit anderen Worten: Das Kubelet dient zur Überwachung der einzelnen -[control plane components](/docs/concepts/overview/components/#control-plane-components). +[Komponenten der Kontrollebene](/docs/concepts/overview/components/#control-plane-components). Das Kubelet versucht automatisch auf dem Kubernetes API-Server für jeden statischen Pod einen spiegelbildlichen Pod @@ -348,7 +349,7 @@ sichtbar sind jedoch von dort nicht gesteuert werden können. [Lebenszyklus eines Pods](/docs/concepts/workloads/pods/pod-lifecycle/). * Erfahren Sie mehr über [RuntimeClass](/docs/concepts/containers/runtime-class/) und wie Sie damit verschiedene Pods mit unterschiedlichen - Container-Laufzeitumgebung konfigurieren können. + Container-Laufzeitumgebungen konfigurieren können. * Lesen sie mehr über [Restriktionen für die Verteilung von Pods](/docs/concepts/workloads/pods/pod-topology-spread-constraints/). * Lesen sie mehr über sogenannte From 90cc7f10d4413ebbb1a33f0624138fb862e9d864 Mon Sep 17 00:00:00 2001 From: flo-oss Date: Tue, 2 Feb 2021 22:20:15 -0800 Subject: [PATCH 014/788] changes suggested by code reviewer --- .../de/docs/concepts/workloads/pods/_index.md | 67 +++++++++---------- 1 file changed, 32 insertions(+), 35 deletions(-) diff --git a/content/de/docs/concepts/workloads/pods/_index.md b/content/de/docs/concepts/workloads/pods/_index.md index b1aec877c9..4080f460f9 100644 --- a/content/de/docs/concepts/workloads/pods/_index.md +++ b/content/de/docs/concepts/workloads/pods/_index.md @@ -1,6 +1,4 @@ --- -reviewers: -- erictune title: Pods content_type: concept weight: 10 @@ -22,10 +20,9 @@ genutzten Speicher- und Netzwerkressourcen und einer Spezifikation für die Ausführung der Container. Die Ressourcen eines Pods befinden sich immer auf dem gleichen (virtuellen) Server, werden gemeinsam geplant und in einem gemeinsamen Kontext ausgeführt. Ein Pod modelliert einen anwendungsspezifischen -"logischen Server": Er enthält eine oder mehrere containerisierte Anwendungen -, die - relativ stark -voneinander abhängen. In Nicht-Cloud-Kontexten sind Anwendungen, die auf +"logischen Server": Er enthält eine oder mehrere containerisierte Anwendungen, +die relativ stark voneinander abhängen. +In Nicht-Cloud-Kontexten sind Anwendungen, die auf demselben physischen oder virtuellen Server ausgeführt werden, vergleichbar zu Cloud-Anwendungen, die auf demselben logischen Server ausgeführt werden. @@ -42,10 +39,10 @@ zum Debuggen gestartet werden, wenn dies der Cluster anbietet. {{< note >}} Obwohl Kubernetes abgesehen von [Docker](https://www.docker.com/) auch andere -{{}} unterstützt, ist Docker am bekanntesten und +{{}} unterstützt, ist Docker am bekanntesten und es ist hilfreich, Pods mit der Terminologie von Docker zu beschreiben. -{{}} +{{< /note >}} Der gemeinsame Kontext eines Pods besteht aus einer Reihe von Linux-Namespaces, Cgroups und möglicherweise anderen Aspekten der Isolation, also die gleichen @@ -59,10 +56,10 @@ die gemeinsame Namespaces und Dateisystem-Volumes nutzen. Normalerweise müssen keine Pods erzeugt werden, auch keine Singleton-Pods. Stattdessen werden sie mit Workload-Ressourcen wie {{}} oder {{}} erzeugt. Für Pods, die von einem Systemzustand -abhängen, erwägen Sie die Nutzung von {{}}-Ressourcen. +text="Deployment" term_id="deployment">}} oder {{}} erzeugt. Für Pods, die von einem Systemzustand +abhängen, erwägen Sie die Nutzung von {{}}-Ressourcen. Pods in einem Kubernetes-Cluster werden hauptsächlich auf zwei Arten verwendet: @@ -81,12 +78,12 @@ Volume öffentlich verfügbar macht, während ein separater _Sidecar_-Container die Daten aktualisiert. Der Pod fasst die Container, die Speicherressourcen und eine kurzlebiges Netzwerk-Identität als eine Einheit zusammen. -{{}} +{{< note >}} Das Gruppieren mehrerer gemeinsam lokalisierter und gemeinsam verwalteter Container in einem einzigen Pod ist ein relativ fortgeschrittener Anwendungsfall. Sie sollten diese Architektur nur in bestimmten Fällen verwenden, wenn Ihre Container stark voneinander abhängen. -{{}} +{{< /note >}} Jeder Pod sollte eine einzelne Instanz einer gegebenen Anwendung ausführen. Wenn Sie Ihre Anwendung horizontal skalieren wollen (um mehr Instanzen auszuführen @@ -96,10 +93,10 @@ einen für jede Instanz. In Kubernetes wird dies typischerweise als Replikation bezeichnet. Replizierte Pods werden normalerweise als eine Gruppe durch eine Workload-Ressource und deren -{{}} erstellt +{{}} erstellt und verwaltet. -Die Seite [Pods und Controller](#pods-and-controllers) beschreibt, wie +Der Abschnitt [Pods und Controller](#pods-und-controller) beschreibt, wie Kubernetes Workload-Ressourcen und deren Controller verwendet, um Anwendungen zu skalieren und zu heilen. @@ -117,17 +114,17 @@ einem gemeinsamen Volume arbeitet. Und ein separater "Sidecar" -Container aktualisiert die Daten von einer externen Datenquelle, siehe folgenden Abbildung: -{{< figure src="/images/docs/pod.svg" alt="example pod diagram" width="50%" >}} +{{< figure src="/images/docs/pod.svg" alt="Pod-Beispieldiagramm" width="50%" >}} -Einige Pods haben sowohl {{}} als auch {{}}. +Einige Pods haben sowohl {{}} als auch {{}}. Initialisierungs-Container werden gestartet und beendet bevor die Anwendungs-Container gestartet werden. Pods stellen standardmäßig zwei Arten von gemeinsam Ressourcen für die enthaltenen Container bereit: -[Netzwerk](#pod-networking) und [Speicher](#pod-storage). +[Netzwerk](#pod-netzwerk) und [Speicher](#datenspeicherung-in-pods). ## Mit Pods arbeiten @@ -136,17 +133,17 @@ Sie werden selten einzelne Pods direkt in Kubernetes erstellen, selbst Singleton-Pods. Das liegt daran, dass Pods als relativ kurzlebige Einweg-Einheiten konzipiert sind. Wann Ein Pod erstellt wird (entweder direkt von Ihnen oder indirekt von einem -{{}}), wird die -Ausführung auf einem {{}} in Ihrem Cluster +{{}}), wird die +Ausführung auf einem {{}} in Ihrem Cluster geplant. Der Pod bleibt auf diesem (virtuellen) Server, bis entweder der Pod die Ausführung beendet hat, das Pod-Objekt gelöscht wird, der Pod aufgrund mangelnder Ressourcen *evakuiert* wird oder oder der Node ausfällt. -{{}} +{{< note >}} Das Neustarten eines Containers in einem Pod sollte nicht mit dem Neustarten eines Pods verwechselt werden. Ein Pod ist kein Prozess, sondern eine Umgebung zur Ausführung von Containern. Ein Pod bleibt bestehen bis er gelöscht wird. -{{}} +{{< /note >}} Stellen Sie beim Erstellen des Manifests für ein Pod-Objekt sicher, dass der angegebene Name ein gültiger @@ -170,7 +167,7 @@ verwalten: ### Podvorlagen Controller für -{{}}-Ressourcen +{{}}-Ressourcen erstellen Pods von einer _Podvorlage_ und verwalten diese Pods für sie. Podvorlagen sind Spezifikationen zum Erstellen von Pods und sind in @@ -265,10 +262,10 @@ einige Einschränkungen: Pods ermöglichen den Datenaustausch und die Kommunikation zwischen den Containern, die im Pod enthalten sind. -### Datenspeicherung in Pods {#pod-storage} +### Datenspeicherung in Pods Ein Pod kann eine Reihe von gemeinsam genutzten Speicher- -{{}} spezifizieren. Alle +{{}} spezifizieren. Alle Container im Pod können auf die gemeinsamen Volumes zugreifen und dadurch Daten austauschen. Volumes ermöglichen auch, dass Daten ohne Verlust gespeichert werden, falls einer der Container neu gestartet werden muss. @@ -310,19 +307,19 @@ auf Hardware. Prozesse innerhalb eines privilegierten Containers erhalten fast die gleichen Rechte wie sie Prozessen außerhalb eines Containers zur Verfügung stehen. -{{}} +{{< note >}} Ihre -{{}} +{{}} muss das Konzept eines privilegierten Containers unterstützen, damit diese Einstellung relevant ist. -{{}} +{{< /note >}} ## Statische Pods _Statische Pods_ werden direkt vom Kubelet-Daemon auf einem bestimmten Node verwaltet ohne dass sie vom -{{}} überwacht +{{}} überwacht werden. . Die meisten Pods werden von der Kontrollebene verwaltet (z. B. @@ -330,7 +327,7 @@ Die meisten Pods werden von der Kontrollebene verwaltet (z. B. statische Pods überwacht das Kubelet jeden statischen Pod direkt (und startet ihn neu, wenn er ausfällt). -Statische Pods sind immer an ein {{}} auf +Statische Pods sind immer an ein {{}} auf einem bestimmten Node gebunden. Der Hauptanwendungsfall für statische Pods besteht darin, eine selbst gehostete Steuerebene auszuführen. Mit anderen Worten: Das Kubelet dient zur Überwachung der einzelnen @@ -338,7 +335,7 @@ Worten: Das Kubelet dient zur Überwachung der einzelnen Das Kubelet versucht automatisch auf dem Kubernetes API-Server für jeden statischen Pod einen spiegelbildlichen Pod -(im Englischen {{}}) +(im Englischen: {{}}) zu erstellen. Das bedeutet, dass die auf einem Node ausgeführten Pods auf dem API-Server sichtbar sind jedoch von dort nicht gesteuert werden können. From 99aa654d8be21ab928177a05a70514d586abd030 Mon Sep 17 00:00:00 2001 From: flo-oss Date: Tue, 2 Feb 2021 22:53:55 -0800 Subject: [PATCH 015/788] changes suggested by code reviewer, part 2 --- content/de/docs/concepts/workloads/pods/_index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/de/docs/concepts/workloads/pods/_index.md b/content/de/docs/concepts/workloads/pods/_index.md index 4080f460f9..837a1f1571 100644 --- a/content/de/docs/concepts/workloads/pods/_index.md +++ b/content/de/docs/concepts/workloads/pods/_index.md @@ -192,14 +192,14 @@ metadata: name: hello spec: template: - # This is the pod template + # Dies is the Podvorlage spec: containers: - name: hello image: busybox command: ['sh', '-c', 'echo "Hello, Kubernetes!" && sleep 3600'] restartPolicy: OnFailure - # The pod template ends here + # Die Podvorlage endet hier ``` Das Ändern der Podvorlage oder der Wechsel zu einer neuen Podvorlage hat keine direkten Auswirkungen auf bereits existierende Pods. Wenn Sie die Podvorlage für @@ -248,8 +248,8 @@ einige Einschränkungen: - Wenn das Feld `metadata.deletionTimestamp` gesetzt ist, kann kein neuer Eintrag zur Liste `metadata.finalizers` hinzugefügt werden. - Pod-Updates dürfen keine Felder ändern, die Ausnahmen sind - `spec.containers [*].image`, - `spec.initContainers [*].image`,` spec.activeDeadlineSeconds` oder + `spec.containers[*].image`, + `spec.initContainers[*].image`,` spec.activeDeadlineSeconds` oder `spec.tolerations`. Für `spec.tolerations` können Sie nur neue Einträge hinzufügen. - Für `spec.activeDeadlineSeconds` sind nur zwei Änderungen erlaubt: From 0aae93d2952e1a66bca4d5607c0637a9b07cdc2c Mon Sep 17 00:00:00 2001 From: Leonardo Murillo Date: Sat, 6 Feb 2021 23:33:26 +0000 Subject: [PATCH 016/788] [es] Add content/es/docs/tasks/manage-kubernetes-objects/declarative-config.md Signed-off-by: Leonardo Murillo --- .../tasks/manage-kubernetes-objects/_index.md | 5 + .../declarative-config.md | 1017 +++++++++++++++++ .../application/simple_deployment.yaml | 19 + .../application/update_deployment.yaml | 18 + 4 files changed, 1059 insertions(+) create mode 100644 content/es/docs/tasks/manage-kubernetes-objects/_index.md create mode 100644 content/es/docs/tasks/manage-kubernetes-objects/declarative-config.md create mode 100644 content/es/examples/application/simple_deployment.yaml create mode 100644 content/es/examples/application/update_deployment.yaml diff --git a/content/es/docs/tasks/manage-kubernetes-objects/_index.md b/content/es/docs/tasks/manage-kubernetes-objects/_index.md new file mode 100644 index 0000000000..5815f0c69e --- /dev/null +++ b/content/es/docs/tasks/manage-kubernetes-objects/_index.md @@ -0,0 +1,5 @@ +--- +title: "Administrar Objetos en Kubernetes" +description: Interactuando con el API de Kubernetes aplicando paradigmas declarativo e imperativo. +weight: 25 +--- diff --git a/content/es/docs/tasks/manage-kubernetes-objects/declarative-config.md b/content/es/docs/tasks/manage-kubernetes-objects/declarative-config.md new file mode 100644 index 0000000000..0b2a0987d5 --- /dev/null +++ b/content/es/docs/tasks/manage-kubernetes-objects/declarative-config.md @@ -0,0 +1,1017 @@ +--- +title: Administración declarativa de Objetos en Kubernetes usando Ficheros de Configuración +content_type: task +weight: 10 +--- + + +Objetos en Kubernetes pueden ser creados, actualizados y eliminados utilizando +ficheros de configuración almacenados en un directorio. Usando el comando +`kubectl apply` podrá crearlos o actualizarlos de manera recursiva según sea necesario. +Este método retiene cualquier escritura realizada contra objetos activos en el +sistema sin unirlos de regreso a los ficheros de configuración. `kubectl diff` le +permite visualizar de manera previa los cambios que `apply` realizará. + +## {{% heading "prerequisites" %}} + + +Instale [`kubectl`](/es/docs/tasks/tools/install-kubectl/). + +{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} + + + + +## Modos de administración + +La herramienta `kubectl` soporta tres modos distintos para la administración de objetos: + +* Comandos imperativos +* Configuración de objetos imperativa +* Configuración de objetos declarativa + +Acceda [Kubernetes Object Management](/docs/concepts/overview/working-with-objects/object-management/) +para una discusión de las ventajas y desventajas de cada distinto modo de administración. + +## Visión general + +La configuración de objetos declarativa requiere una comprensión firme de la +definición y configuración de objetos de Kubernetes. Lea y complete los siguientes +documentos si aún no lo ha hecho: + +* [Managing Kubernetes Objects Using Imperative Commands](/docs/tasks/manage-kubernetes-objects/imperative-command/) +* [Imperative Management of Kubernetes Objects Using Configuration Files](/docs/tasks/manage-kubernetes-objects/imperative-config/) + +{{< comment >}} +TODO(lmurillo): Update the links above to the spanish versions of these documents once the +localizations become available +{{< /comment >}} + +A continuación la definición de términos usados en este documento: + +- *fichero de configuración de objeto / fichero de configuración*: Un fichero en el + que se define la configuración de un objeto de Kubernetes. Este tema demuestra como + utilizar ficheros de configuración con `kubectl apply`. Los ficheros de configuración + usualmente se almacenan en un sistema de control de versiones, como Git. +- *configuración activa de objeto / configuración activa*: Los valores de configuración + activos de un objeto, según estan siendo observados por el Cluster. Esta configuración + se almacena en el sistema de almacenamiento de Kubernetes, usualmente etcd. +- *escritor de configuración declarativo / escritor declarativo*: Una persona o + componente de software que actualiza a un objeto activo. Los escritores activos a + los que se refiere este tema aplican cambios a los ficheros de configuración de objetos + y ejecutan `kubectl apply` para aplicarlos. + +## Como crear objetos + +Utilice `kubectl apply` para crear todos los objetos definidos en los ficheros +de configuración existentes en un directorio específico, con excepción de aquellos que +ya existen: + +```shell +kubectl apply -f / +``` + +Esto definirá la anotación `kubectl.kubernetes.io/last-applied-configuration: '{...}'` +en cada objeto. Esta anotación contiene el contenido del fichero de configuración +utilizado para la creación del objeto. + +{{< note >}} +Agregue la opción `-R` para procesar un directorio de manera recursiva. +{{< /note >}} + +El siguiente es un ejemplo de fichero de configuración para un objeto: + +{{< codenew file="application/simple_deployment.yaml" >}} + +Ejecute `kubectl diff` para visualizar el objeto que será creado: + +```shell +kubectl diff -f https://k8s.io/examples/application/simple_deployment.yaml +``` + +{{< note >}} +`diff` utiliza [server-side dry-run](/docs/reference/using-api/api-concepts/#dry-run), +que debe estar habilitado en el `kube-apiserver`. + +Dado que `diff` ejecuta una solicitud de `apply` en el servidor en modo de simulacro (dry-run), +requiere obtener permisos de `PATCH`, `CREATE`, y `UPDATE`. +Vea [Dry-Run Authorization](/docs/reference/using-api/api-concepts#dry-run-authorization) +para más detalles. + +{{< /note >}} + +Cree el objeto usando `kubectl apply`: + +```shell +kubectl apply -f https://k8s.io/examples/application/simple_deployment.yaml +``` + +Despliegue la configuración activa usando `kubectl get`: + +```shell +kubectl get -f https://k8s.io/examples/application/simple_deployment.yaml -o yaml +``` + +La salida le demostrará que la anotación `kubectl.kubernetes.io/last-applied-configuration` +fue escrita a la configuración activa, y es consistente con los contenidos del fichero +de configuración: + +```yaml +kind: Deployment +metadata: + annotations: + # ... + # Esta es la representación JSON de simple_deployment.yaml + # Fue escrita por kubectl apply cuando el objeto fue creado + kubectl.kubernetes.io/last-applied-configuration: | + {"apiVersion":"apps/v1","kind":"Deployment", + "metadata":{"annotations":{},"name":"nginx-deployment","namespace":"default"}, + "spec":{"minReadySeconds":5,"selector":{"matchLabels":{"app":nginx}},"template":{"metadata":{"labels":{"app":"nginx"}}, + "spec":{"containers":[{"image":"nginx:1.14.2","name":"nginx", + "ports":[{"containerPort":80}]}]}}}} + # ... +spec: + # ... + minReadySeconds: 5 + selector: + matchLabels: + # ... + app: nginx + template: + metadata: + # ... + labels: + app: nginx + spec: + containers: + - image: nginx:1.14.2 + # ... + name: nginx + ports: + - containerPort: 80 + # ... + # ... + # ... + # ... +``` + +## Como actualizar objetos + +También puede usar `kubectl apply` para actualizar los objetos definidos en un directorio, +aún cuando esos objetos ya existan en la configuración activa. Con este enfoque logrará +lo siguiente: + +1. Definir los campos que aparecerán en la configuración activa. +2. Eliminar aquellos campos eliminados en el fichero de configuración, de la configuración activa. + +```shell +kubectl diff -f / +kubectl apply -f / +``` + +{{< note >}} +Agregue la opción `-R` para procesar directorios de manera recursiva. +{{< /note >}} + +Este es un ejemplo de fichero de configuración: + +{{< codenew file="application/simple_deployment.yaml" >}} + +Cree el objeto usando `kubectl apply`: + +```shell +kubectl apply -f https://k8s.io/examples/application/simple_deployment.yaml +``` + +{{< note >}} +Con el propósito de ilustrar, el comando anterior se refiere a un único fichero +de configuración en vez de un directorio. +{{< /note >}} + +Despliegue la configuración activa usando `kubectl get`: + +```shell +kubectl get -f https://k8s.io/examples/application/simple_deployment.yaml -o yaml +``` + +La salida le demostrará que la anotación `kubectl.kubernetes.io/last-applied-configuration` +fue escrita a la configuración activa, y es consistente con los contenidos del fichero +de configuración: + +```yaml +kind: Deployment +metadata: + annotations: + # ... + # Esta es la representación JSON de simple_deployment.yaml + # Fue escrita por kubectl apply cuando el objeto fue creado + kubectl.kubernetes.io/last-applied-configuration: | + {"apiVersion":"apps/v1","kind":"Deployment", + "metadata":{"annotations":{},"name":"nginx-deployment","namespace":"default"}, + "spec":{"minReadySeconds":5,"selector":{"matchLabels":{"app":nginx}},"template":{"metadata":{"labels":{"app":"nginx"}}, + "spec":{"containers":[{"image":"nginx:1.14.2","name":"nginx", + "ports":[{"containerPort":80}]}]}}}} + # ... +spec: + # ... + minReadySeconds: 5 + selector: + matchLabels: + # ... + app: nginx + template: + metadata: + # ... + labels: + app: nginx + spec: + containers: + - image: nginx:1.14.2 + # ... + name: nginx + ports: + - containerPort: 80 + # ... + # ... + # ... + # ... +``` + +De manera directa, actualice el campo `replicas` en la configuración activa usando `kubectl scale`. +En este caso no se usa `kubectl apply`: + +```shell +kubectl scale deployment/nginx-deployment --replicas=2 +``` + +Despliegue la configuración activa usando `kubectl get`: + +```shell +kubectl get deployment nginx-deployment -o yaml +``` + +La salida le demuestra que el campo `replicas` ha sido definido en 2, y que la +anotación `last-applied-configuration` no contiene el campo `replicas`: + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + # ... + # note que la anotación no contiene replicas + # debido a que el objeto no fue actualizado usando apply + kubectl.kubernetes.io/last-applied-configuration: | + {"apiVersion":"apps/v1","kind":"Deployment", + "metadata":{"annotations":{},"name":"nginx-deployment","namespace":"default"}, + "spec":{"minReadySeconds":5,"selector":{"matchLabels":{"app":nginx}},"template":{"metadata":{"labels":{"app":"nginx"}}, + "spec":{"containers":[{"image":"nginx:1.14.2","name":"nginx", + "ports":[{"containerPort":80}]}]}}}} + # ... +spec: + replicas: 2 # definido por scale + # ... + minReadySeconds: 5 + selector: + matchLabels: + # ... + app: nginx + template: + metadata: + # ... + labels: + app: nginx + spec: + containers: + - image: nginx:1.14.2 + # ... + name: nginx + ports: + - containerPort: 80 + # ... +``` + +Actualice el fichero de configuración `simple_deployment.yaml` para cambiar el campo `image` +de `nginx:1.14.2` a `nginx:1.16.1`, y elimine el campo `minReadySeconds`: + +{{< codenew file="application/update_deployment.yaml" >}} + +Aplique los cambios realizados al fichero de configuración: + +```shell +kubectl diff -f https://k8s.io/examples/application/update_deployment.yaml +kubectl apply -f https://k8s.io/examples/application/update_deployment.yaml +``` + +Despliegue la configuración activa usando `kubectl get`: + +```shell +kubectl get -f https://k8s.io/examples/application/update_deployment.yaml -o yaml +``` + +La salida le mostrará los siguienes cambios hechos a la configuración activa: + +* El campo `replicas` retiene el valor de 2 definido por `kubectl scale`. + Esto es posible ya que el campo fue omitido en el fichero de configuración. +* El campo `image` ha sido actualizado de `nginx:1.16.1` a `nginx:1.14.2`. +* La anotación `last-applied-configuration` ha sido actualizada con la nueva imagen. +* El campo `minReadySeconds` ha sido despejado. +* La anotación `last-applied-configuration` ya no contiene el campo `minReadySeconds` + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + # ... + # La anotación contiene la imagen acutalizada a nginx 1.11.9, + # pero no contiene la actualización de las replicas a 2 + kubectl.kubernetes.io/last-applied-configuration: | + {"apiVersion":"apps/v1","kind":"Deployment", + "metadata":{"annotations":{},"name":"nginx-deployment","namespace":"default"}, + "spec":{"selector":{"matchLabels":{"app":nginx}},"template":{"metadata":{"labels":{"app":"nginx"}}, + "spec":{"containers":[{"image":"nginx:1.16.1","name":"nginx", + "ports":[{"containerPort":80}]}]}}}} + # ... +spec: + replicas: 2 # Definido por `kubectl scale`. Ignorado por `kubectl apply`. + # minReadySeconds fue despejado por `kubectl apply` + # ... + selector: + matchLabels: + # ... + app: nginx + template: + metadata: + # ... + labels: + app: nginx + spec: + containers: + - image: nginx:1.16.1 # Definido `kubectl apply` + # ... + name: nginx + ports: + - containerPort: 80 + # ... + # ... + # ... + # ... +``` + +{{< warning >}} +Combinar `kubectl apply` con los comandos de configuración imperativa de objetos +`create` y `replace` no es soportado. Esto debido a que `create` +y `replace` no retienen la anotación `kubectl.kubernetes.io/last-applied-configuration` +que `kubectl apply` utiliza para computar los cambios por realizar. +{{< /warning >}} + +## Como eliminar objetos + +Hay dos diferentes opciones para eliminar objetos gestionados por `kubectl apply`. + +### Manera recomendada: `kubectl delete -f ` + +Eliminar objetos de manera manual utilizando el comando imperativo es la opción +recomendada, ya que es más explícito en relación a lo que será eliminado, y es +menos probable que resulte en algo siendo eliminado sin la intención del usuario. + +```shell +kubectl delete -f +``` + +### Manera alternativa: `kubectl apply -f --prune -l etiqueta=deseada` + +Únicamente utilice esta opción si está seguro de saber lo que está haciendo.. + +{{< warning >}} +`kubectl apply --prune` se encuenta aún en alpha, y cambios incompatibles con versiones previas +podrían ser introducidos en futuros lanzamientos. +{{< /warning >}} + +{{< warning >}} +Sea cuidadoso o cuidadosa al usar este comando, para evitar eliminar objetos +no intencionalmente. +{{< /warning >}} + +Como una alternativa a `kubectl delete`, usted puede usar `kubectl apply`para identificar objetos por ser +eliminados, luego de que sus archivos de configuración han sido eliminados del directorio. El commando `apply` con `--prune` +consulta al servidor de API por todos los objetos que coincidan con un grupo de etiquetas, e intenta parear +la configuración retornada para los objetos activos contra los objetos según sus ficheros de configuración. +Si un objeto coincide con la consulta, y no tiene un fichero de configuración en el directorio, pero si +tiene una anotación `last-applied-configuration`, entonces será eliminado. + +{{< comment >}} +TODO(pwittrock): We need to change the behavior to prevent the user from running apply on subdirectories unintentionally. +{{< /comment >}} + +```shell +kubectl apply -f --prune -l +``` + +{{< warning >}} +`apply` con `--prune` debería de ser ejecutado únicamente en contra del directorio +raíz que contiene los ficheros de configuración. Ejecutarlo en contra de sub-directorios +podría causar que objetos sean eliminados no intencionalmente, si son retornados en la +consulta por selección de etiqueta usando `-l ` y no existen en el subdirectorio. +{{< /warning >}} + +## Como visualizar un objeto + +Puede usar `kubectl get` con `-o yaml` para ver la configuración de objetos activos: + +```shell +kubectl get -f -o yaml +``` + +## Como son las diferencias calculadas y unidas por apply + +{{< caution >}} +Un *patch* (parche) es una operación de actualización con alcance a campos específicos +de un objeto, y no al objeto completo. Esto permite actualizar únicamente grupos de campos +específicos en un objeto sin tener que leer el objeto primero. +{{< /caution >}} + +Cuando `kubectl apply` actualiza la configuración activa para un objeto, lo hace enviando +una solicitud de patch al servidor de API. El patch define actualizaciones para campos +específicos en la configuración del objeto activo. El comando `kubectl apply` calcula esta solicitud +de patch usando el fichero de configuración, la configuración activa, y la anotación `last-applied-configuration` +almacenada en la configuración activa. + +### Calculando la unión de un patch + +El comando `kubectl apply` escribe los contenidos de la configuración a la anotación +`kubectl.kubernetes.io/last-applied-configuration`. Esto es usado para identificar aquellos campos +que han sido eliminados de la configuración y deben ser limpiados. Los siguientes pasos +son usados para calcular que campos deben ser eliminados o definidos: + +1. Calculo de campos por eliminar. Estos son los campos presentes en `last-applied-configuration` pero ausentes en el fichero de configuración. +2. Calculo de campos por agregar o definir. Estos son los campos presentes en el fichero de configuración, con valores inconsistentes con la configuración activa. + +A continuación un ejemplo. Suponga que este es el fichero de configuración para un objeto de tipo Deployment: + +{{< codenew file="application/update_deployment.yaml" >}} + +También, supognga que esta es la configuración activa para ese mismo objeto de tipo Deployment: + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + # ... + # tome nota de que la anotación no contiene un valor para replicas + # dado que no fue actualizado usando el comando apply + kubectl.kubernetes.io/last-applied-configuration: | + {"apiVersion":"apps/v1","kind":"Deployment", + "metadata":{"annotations":{},"name":"nginx-deployment","namespace":"default"}, + "spec":{"minReadySeconds":5,"selector":{"matchLabels":{"app":nginx}},"template":{"metadata":{"labels":{"app":"nginx"}}, + "spec":{"containers":[{"image":"nginx:1.14.2","name":"nginx", + "ports":[{"containerPort":80}]}]}}}} + # ... +spec: + replicas: 2 # definidas por scale + # ... + minReadySeconds: 5 + selector: + matchLabels: + # ... + app: nginx + template: + metadata: + # ... + labels: + app: nginx + spec: + containers: + - image: nginx:1.14.2 + # ... + name: nginx + ports: + - containerPort: 80 + # ... +``` + +Estos son los cálculos de unión que serían realizados por `kubectl apply`: + +1. Calcular los campos por eliminar, leyendo los valores de `last-applied-configuration` + y comparándolos con los valores en el fichero de configuración. + Limpiar los campos definidos en null de manera explícita en el fichero de configuración + sin tomar en cuenta si se encuentran presentes en la anotación `last-applied-configuration`. + En este ejemplo, `minReadySeconds` aparece en la anotación + `last-applied-configuration` pero no aparece en el fichero de configuración. + **Acción:** Limpiar `minReadySeconds` de la configuración activa. +2. Calcular los campos por ser definidos, al leer los valores del firecho de configuración + y compararlos con los valores en la configuración activa. En este ejemplo, el valor `image` + en el fichero de configuración, no coincide con el valor en la configuración activa. + **Acción:** Definir el campo `image` en la configuración activa. +3. Definir el valor de la anotación `last-applied-configuration` para que sea consistente + con el fichero de configuración. +4. Unir los resultados de 1, 2 y 3, en una única solicitud de patch para enviar al API server. + +Esta es la configuración activa como resultado de esta unión: + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + # ... + # La anotación contiene la imágen actualizada a nginx 1.11.9, + # pero no contiene la actualización a 2 replicas + kubectl.kubernetes.io/last-applied-configuration: | + {"apiVersion":"apps/v1","kind":"Deployment", + "metadata":{"annotations":{},"name":"nginx-deployment","namespace":"default"}, + "spec":{"selector":{"matchLabels":{"app":nginx}},"template":{"metadata":{"labels":{"app":"nginx"}}, + "spec":{"containers":[{"image":"nginx:1.16.1","name":"nginx", + "ports":[{"containerPort":80}]}]}}}} + # ... +spec: + selector: + matchLabels: + # ... + app: nginx + replicas: 2 # Definido por `kubectl scale`. Ignorado por `kubectl apply`. + # minReadySeconds eliminado por `kubectl apply` + # ... + template: + metadata: + # ... + labels: + app: nginx + spec: + containers: + - image: nginx:1.16.1 # Definido por `kubectl apply` + # ... + name: nginx + ports: + - containerPort: 80 + # ... + # ... + # ... + # ... +``` + +### Como se unen los diferentes tipos de campos + +La manera en la que los campos en un fichero de configuración son unidos con la +configuración activa depende del tipo de campo. Existen varios tipos de campos: + +- *primitivo*: Campos de cadena de texto (string), enteros (integer), o lógicos (boolean). + Por ejemplo, `image` y `replicas` son campos de tipo primitivo. **Acción:** Reemplazarlos. + +- *mapa*, también llamados *objeto*: Campo de tipo mapa o un tipo + complejo que contiene sub-campos. Por ejemplo, `labels`, + `annotations`,`spec` y `metadata` son todos mapas. **Acción:** Unir los elementos o sub-campos. + +- *lista*: Campos que contienen una lista de elementos que pueden ser de tipo primitivo o mapa. + Como ejemplos, `containers`, `ports`, y `args` son listas. **Acción:** Varía. + +Cuando `kubectl apply` actualiza un campo de tipo mapa o lista, típicamente no reemplaza +el campo completo, sino actualiza los sub-elementos individuales. +Por ejemplo, cuando se hace una unión del campo `spec` en un Deployment, el `spec` +completo no es reemplazado, por el contrario, únicamente los sub-campos de `spec` como +`replica` son comparados y unidos. + +### Uniendo cambios en campos primitivos + +Campos primitivos son limpiados o reemplazados. + +{{< note >}} +`-` determina que "no aplica" debido a que el valor no es utilizado. +{{< /note >}} + +| Campo en el fichero de configuración | Campo en la configuración activa | Campo en last-applied-configuration | Acción | +|---------------------------------------|------------------------------------|-------------------------------------|--------------------------------------------------------------| +| Si | Si | - | Define el valor en el fichero de configuración como activo. | +| Si | No | - | Define el valor a la configuración local. | +| No | - | Si | Elimina de la configuración activa. | +| No | - | No | No hacer nada. Mantiene el valor activo. | + +### Uniendo cambios en campos de un mapa + +Los campos que conjúntamente representan un mapa, son unidos al comparar cada uno de los subcampos o elementos del mapa: + +{{< note >}} +`-` determina que "no aplica" debido a que el valor no es utilizado. +{{< /note >}} + +| Propiedad en fichero de configuración | Propiedad en configuración activa | Campo en last-applied-configuration | Acción | +|---------------------------------------|-----------------------------------|-------------------------------------|------------------------------------------| +| Si | Si | - | Comparar valores de sub-propiedades. | +| Si | No | - | Usar configuracón local. | +| No | - | Si | Eliminar de la configuración activa. | +| No | - | No | No hacer nada. Mantener el valor activo. | + +### Uniendo cambios en campos de tipo lista + +El unir cambios en una lista utiliza una de tres posibles estrategias: + +* Reemplazar la lista si todos sus elementos son primitivos. +* Unir elementos individuales en líneas de elementos complejos. +* Unir una lista de elementos primitivos. + +Se define la estrategia elegida con base en cada campo. + +#### Reemplazar una lista si todos sus elementos son primitivos + +Trata la lista como si fuese un campo primitivo. Reemplaza o elimina la lista completa. +Esto preserva el orden de los elementos. + + +**Ejemplo:** Usndo `kubectl apply` para actualizar el campo `args` de un Contenedor en un Pod. +Esto define el valor de `args` en la configuración activa, al valor en el fichero de configuración. +Cualquier elemento de `args` que haya sido previamente agregado a la configuración activa se perderá. +El orden de los elementos definidos en `args` en el fichero de configuración, serán conservados +en la configuración activa. + +```yaml +# valor en last-applied-configuration + args: ["a", "b"] + +# valores en fichero de configuración + args: ["a", "c"] + +# configuración activa + args: ["a", "b", "d"] + +# resultado posterior a la unión + args: ["a", "c"] +``` + +**Explicación:** La unión utilizó los valores del fichero de configuración para definir los nuevos valores de la lista. + +#### Unir elementos individuales en una lista de elementos complejos + +Trata la lista como un mapa, y trata cada campo específico de cada elemento como una llave. +Agrega, elimina o actualiza elementos individuales. Esta operación no conserva orden. + +Esta estrategia de unión utiliza una etiqueta especial en cada campo llamada `patchMergeKey`. La etiqueta +`patchMergeKey` es definida para cada campo en el código fuente de Kubernetes: +[types.go](https://github.com/kubernetes/api/blob/d04500c8c3dda9c980b668c57abc2ca61efcf5c4/core/v1/types.go#L2747) +Al unir una lista de mapas, el campo específicado en `patchMergeKey` para el elemento dado +se utiliza como un mapa de llaves para ese elemento. + +**Ejemplo:** Utilice `kubectl apply` para actualizar el campo `containers` de un PodSpec. +Esto une la lista como si fuese un mapa donde cada elemento utiliza `name` por llave. + +```yaml +# valor en last-applied-configuration + containers: + - name: nginx + image: nginx:1.16 + - name: nginx-helper-a # llave: nginx-helper-a; será eliminado en resultado + image: helper:1.3 + - name: nginx-helper-b # llave: nginx-helper-b; será conservado + image: helper:1.3 + +# valor en fichero de configuración + containers: + - name: nginx + image: nginx:1.16 + - name: nginx-helper-b + image: helper:1.3 + - name: nginx-helper-c # llavel: nginx-helper-c; será agregado en el resultado + image: helper:1.3 + +# configuración activa + containers: + - name: nginx + image: nginx:1.16 + - name: nginx-helper-a + image: helper:1.3 + - name: nginx-helper-b + image: helper:1.3 + args: ["run"] # Campo será conservado + - name: nginx-helper-d # llave: nginx-helper-d; será conservado + image: helper:1.3 + +# resultado posterior a la unión + containers: + - name: nginx + image: nginx:1.16 + # Elemento nginx-helper-a fue eliminado + - name: nginx-helper-b + image: helper:1.3 + args: ["run"] # Campo fue conservado + - name: nginx-helper-c # Elemento fue agregado + image: helper:1.3 + - name: nginx-helper-d # Elemento fue ignorado + image: helper:1.3 +``` + +**Explicación:** + +- El contenedor llamado "nginx-helper-a" fué eliminado al no aparecer ningún + contenedor llamado "nginx-helper-a" en el fichero de configuración. +- El contenedor llamado "nginx-helper-b" mantiene los cambios a `args` + existentes en la configuración activa. `kubectl apply` pudo identificar que + el contenedor "nginx-helper-b" en la configuración activa es el mismo + "nginx-helper-b" que aparece en el fichero de configuración, aún teniendo diferentes + valores en los campos (no existe `args` en el fichero de configuración). Esto sucede + debido a que el valor del campo `patchMergeKey` (name) es idéntico en ambos. +- El contenedor llamado "nginx-helper-c" fue agregado ya que no existe ningún contenedor + con ese nombre en la configuración activa, pero si existe uno con ese nombre + en el fichero de configuración. +- El contendor llamado "nginx-helper-d" fue conservado debido a que no aparece + ningún elemento con ese nombre en last-applied-configuration. + +#### Unir una lista de elementos primitivos + +A partir de Kubernetes 1.5, el unir listas de elementos primitivos no es soportado. + +{{< note >}} +La escogencia de estrategia por selecciones para un campo en particular, es controlada +por la etiqueta `patchStrategy` en [types.go](https://github.com/kubernetes/api/blob/d04500c8c3dda9c980b668c57abc2ca61efcf5c4/core/v1/types.go#L2748) +Si no se especifica `patchStrategy` para un campo de tipo lista, entonces el campo +es reemplazado. +{{< /note >}} + +{{< comment >}} +TODO(pwittrock): Uncomment this for 1.6 + +- Treat the list as a set of primitives. Replace or delete individual + elements. Does not preserve ordering. Does not preserve duplicates. + +**Example:** Using apply to update the `finalizers` field of ObjectMeta +keeps elements added to the live configuration. Ordering of finalizers +is lost. +{{< /comment >}} + +## Valores de campo por defecto + +El Servidor de API define algunos campos a sus valores por defecto si no son especificados +al momento de crear un objeto. + +Aquí puede ver un fichero de configuración para un Deployment. Este fichero no especifica +el campo `strategy`: + +{{< codenew file="application/simple_deployment.yaml" >}} + +Cree un nuevo objeto `kubectl apply`: + +```shell +kubectl apply -f https://k8s.io/examples/application/simple_deployment.yaml +``` + +Despliegue la configuración activa usando `kubectl get`: + +```shell +kubectl get -f https://k8s.io/examples/application/simple_deployment.yaml -o yaml +``` + +La salida demuestra que el API Server definió varios campos con los valores por defecto +en la configuración activa. Estos campos no fueron especificados en el fichero de +configuración. + +```yaml +apiVersion: apps/v1 +kind: Deployment +# ... +spec: + selector: + matchLabels: + app: nginx + minReadySeconds: 5 + replicas: 1 # valor por defecto definido por apiserver + strategy: + rollingUpdate: # valor por defecto definido por apiserver - derivado de strategy.type + maxSurge: 1 + maxUnavailable: 1 + type: RollingUpdate # valor por defecto definido por apiserver + template: + metadata: + creationTimestamp: null + labels: + app: nginx + spec: + containers: + - image: nginx:1.14.2 + imagePullPolicy: IfNotPresent # valor por defecto definido por apiserver + name: nginx + ports: + - containerPort: 80 + protocol: TCP # valor por defecto definido por apiserver + resources: {} # valor por defecto definido por apiserver + terminationMessagePath: /dev/termination-log # valor por defecto definido por apiserver + dnsPolicy: ClusterFirst # valor por defecto definido por apiserver + restartPolicy: Always # valor por defecto definido por apiserver + securityContext: {} # valor por defecto definido por apiserver + terminationGracePeriodSeconds: 30 # valor por defecto definido por apiserver +# ... +``` + +En una solicitud de patch, los campos definidos a valores por defecto no son re-definidos exceptuando +cuando hayan sido limpiados de manera explícita como parte de la solicitud de patch. Esto puede +causar comportamientos no esperados para campos cuyo valor por defecto es basado en los valores +de otros campos. Cuando el otro campo ha cambiado, el valor por defecto de ellos no será actualizado +de no ser que sean limpiados de manera explícita. + +Por esta razón, se recomienda que algunos campos que reciben un valor por defecto del +servidor sean definidos de manera explícita en los ficheros de configuración, aun cuando +el valor definido sea idéntico al valor por defecto. Esto facilita la identificación +de valores conflictivos que podrían no ser revertidos a valores por defecto por parte +del servidor. + +**Ejemplo:** + +```yaml +# last-applied-configuration +spec: + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx:1.14.2 + ports: + - containerPort: 80 + +# fichero de configuración +spec: + strategy: + type: Recreate # valor actualizado + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx:1.14.2 + ports: + - containerPort: 80 + +# configuración activa +spec: + strategy: + type: RollingUpdate # valor por defecto + rollingUpdate: # valor por defecto derivado del campo type + maxSurge : 1 + maxUnavailable: 1 + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx:1.14.2 + ports: + - containerPort: 80 + +# resultado posterior a la unión - ERROR! +spec: + strategy: + type: Recreate # valor actualizado: incompatible con RollingUpdate + rollingUpdate: # valor por defecto: incompatible con "type: Recreate" + maxSurge : 1 + maxUnavailable: 1 + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx:1.14.2 + ports: + - containerPort: 80 +``` + +**Explicación:** + +1. El usuario crea un Deployment sin definir `strategy.type`. +2. El servidor define `strategy.type` a su valor por defecto de `RollingUpdate` y + agrega los valores por defecto a `strategy.rollingUpdate`. +3. El usuario cambia `strategy.type` a `Recreate`. Los valores de `strategy.rollingUpdate` + se mantienen en su configuración por defecto, sin embargo el servidor espera que se limpien. + Si los valores de `strategy.rollingUpdate` hubiesen sido definidos inicialmente en el fichero + de configuración, hubiese sido más claro que requerían ser eliminados. +4. Apply fallará debido a que `strategy.rollingUpdate` no fue eliminado. El campo `strategy.rollingupdate` + no puede estar definido, si el valor de `strategy.type` es `Recreate`. + +Recomendación: Estos campos deberían de ser definidos de manera explícita en el fichero de configuración: + +- Etiquetas de Selectors y PodTemplate en cargas de trabajo como Deployment, StatefulSet, Job, DaemonSet, + ReplicaSet, y ReplicationController +- Estrategia de rollout para un Deployment + +### Como limpiar campos definidos a valores por defecto por el servidor, o definidos por otros escritores + +Campos que no aparecen en el fichero de configuración pueden ser limpiados si se define su valor +a `null` y luego se aplica el fichero de configuración. +Para los campos definidos a valores por defecto por el servidor, esto provoca el re establecimiento +a sus valores por defecto. + +## Como cambiar al propietario de un campo entre un fichero de configuración y un escritor imperativo + +Estos son los únicos métodos que debe usar para cambiar un campo individual de un objeto: + +- Usando `kubectl apply`. +- Escribiendo de manera directa a la configuración activa sin modificar el fichero de configuración: +por ejemplo, usando `kubectl scale`. + +### Cambiando al propietario de un campo de un escritor imperativo a un fichero de configuración + +Añada el campo al fichero de configuración, y no realice nuevas actualizaciones a la configuración +activa que no sucedan por medio de `kubectl apply`. + +### Cambiando al propietario de un fichero de configuración a un escritor imperativo + +A partir de Kubernetes 1.5, el cambiar un campo que ha sido definido por medio de un +fichero de configuración para que sea modificado por un escritor imperativo requiere +pasos manuales: + +- Eliminar el campo del fichero de configuración. +- Eliminar el campo de la anotación `kubectl.kubernetes.io/last-applied-configuration` en el objeto activo. + +## Cambiando los métodos de gestión + +Los objetos en Kubernetes deberían de ser gestionados utilizando únicamente un método +a la vez. El alternar de un método a otro es posible, pero es un proceso manual. + +{{< note >}} +Esta bien el usar eliminación imperativa junto a gestión declarativa. +{{< /note >}} + +{{< comment >}} +TODO(pwittrock): We need to make using imperative commands with +declarative object configuration work so that it doesn't write the +fields to the annotation, and instead. Then add this bullet point. + +- using imperative commands with declarative configuration to manage where each manages different fields. +{{< /comment >}} + +### Migrando de gestión imperativa con comandos a configuración declarativa de objetos + +El migrar de gestión imperativa utilizando comandos a la gestión declarativa de objetos +requiere varios pasos manuales: + +1. Exporte el objeto activo a un fichero local de configuración: + + ```shell + kubectl get / -o yaml > _.yaml + ``` + +1. Elimine de manera manual el campo `status` del fichero de configuración. + + {{< note >}} + Este paso es opcional, ya que `kubectl apply` no actualiza el campo `status` + aunque este presente en el fichero de configuración. + {{< /note >}} + +1. Defina la anotación `kubectl.kubernetes.io/last-applied-configuration` en el objeto: + + ```shell + kubectl replace --save-config -f _.yaml + ``` + +1. Modifique el proceso para usar `kubectl apply` para gestionar el objeto de manera exclusiva. + +{{< comment >}} +TODO(pwittrock): Why doesn't export remove the status field? Seems like it should. +{{< /comment >}} + +### Migrando de gestión imperativa de la configuración de objetos a gestión declarativa + +1. Defina la anotación `kubectl.kubernetes.io/last-applied-configuration` en el objeto: + + ```shell + kubectl replace --save-config -f _.yaml + ``` + +1. Modifique el proceso para usar `kubectl apply` para gestionar el objeto de manera exclusiva. + +## Definiendo los selectores para el controlador y las etiquetas de PodTemplate + +{{< warning >}} +Actualizar selectores en controladores se desaconseja encarecidamente. +{{< /warning >}} + +La forma recomendada es definir una etiqueta única e inmutable para PodTemplate usada +únicamente por el selector del controlador sin tener ningún otro significado semántico. + +**Ejemplo:** + +```yaml +selector: + matchLabels: + controller-selector: "apps/v1/deployment/nginx" +template: + metadata: + labels: + controller-selector: "apps/v1/deployment/nginx" +``` + +## {{% heading "whatsnext" %}} + + +* [Managing Kubernetes Objects Using Imperative Commands](/docs/tasks/manage-kubernetes-objects/imperative-command/) +* [Imperative Management of Kubernetes Objects Using Configuration Files](/docs/tasks/manage-kubernetes-objects/imperative-config/) +* [Kubectl Command Reference](/docs/reference/generated/kubectl/kubectl-commands/) +* [Kubernetes API Reference](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/) + + diff --git a/content/es/examples/application/simple_deployment.yaml b/content/es/examples/application/simple_deployment.yaml new file mode 100644 index 0000000000..d9c74af8c5 --- /dev/null +++ b/content/es/examples/application/simple_deployment.yaml @@ -0,0 +1,19 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx-deployment +spec: + selector: + matchLabels: + app: nginx + minReadySeconds: 5 + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx:1.14.2 + ports: + - containerPort: 80 diff --git a/content/es/examples/application/update_deployment.yaml b/content/es/examples/application/update_deployment.yaml new file mode 100644 index 0000000000..7230cc4323 --- /dev/null +++ b/content/es/examples/application/update_deployment.yaml @@ -0,0 +1,18 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx-deployment +spec: + selector: + matchLabels: + app: nginx + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx:1.16.1 # actualice el valor de image + ports: + - containerPort: 80 From c111b4ac6221ae8674e9b7c2303701a1c30c75f0 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Fri, 29 Jan 2021 15:12:40 -0800 Subject: [PATCH 017/788] Docs for KEP 2200 * Document DenyServiceExternalIPs admission controller * Re-order other admission controller blocks to be alphabetical * Document DefaultIngressClass (missing) --- .../admission-controllers.md | 133 +++++++++++------- .../kube-apiserver.md | 2 +- 2 files changed, 82 insertions(+), 53 deletions(-) diff --git a/content/en/docs/reference/access-authn-authz/admission-controllers.md b/content/en/docs/reference/access-authn-authz/admission-controllers.md index 0cdcbf2f36..edb1f5403e 100644 --- a/content/en/docs/reference/access-authn-authz/admission-controllers.md +++ b/content/en/docs/reference/access-authn-authz/admission-controllers.md @@ -94,7 +94,7 @@ kube-apiserver -h | grep enable-admission-plugins In the current version, the default ones are: ```shell -NamespaceLifecycle, LimitRanger, ServiceAccount, TaintNodesByCondition, Priority, DefaultTolerationSeconds, DefaultStorageClass, StorageObjectInUseProtection, PersistentVolumeClaimResize, RuntimeClass, CertificateApproval, CertificateSigning, CertificateSubjectRestriction, DefaultIngressClass, MutatingAdmissionWebhook, ValidatingAdmissionWebhook, ResourceQuota +CertificateApproval, CertificateSigning, CertificateSubjectRestriction, DefaultIngressClass, DefaultStorageClass, DefaultTolerationSeconds, LimitRanger, MutatingAdmissionWebhook, NamespaceLifecycle, PersistentVolumeClaimResize, Priority, ResourceQuota, RuntimeClass, ServiceAccount, StorageObjectInUseProtection, TaintNodesByCondition, ValidatingAdmissionWebhook ``` ## What does each admission controller do? @@ -105,6 +105,12 @@ NamespaceLifecycle, LimitRanger, ServiceAccount, TaintNodesByCondition, Priority This admission controller allows all pods into the cluster. It is deprecated because its behavior is the same as if there were no admission controller at all. +### AlwaysDeny {#alwaysdeny} + +{{< feature-state for_k8s_version="v1.13" state="deprecated" >}} + +Rejects all requests. AlwaysDeny is DEPRECATED as it has no real meaning. + ### AlwaysPullImages {#alwayspullimages} This admission controller modifies every new Pod to force the image pull policy to Always. This is useful in a @@ -115,12 +121,6 @@ scheduled onto the right node), without any authorization check against the imag is enabled, images are always pulled prior to starting containers, which means valid credentials are required. -### AlwaysDeny {#alwaysdeny} - -{{< feature-state for_k8s_version="v1.13" state="deprecated" >}} - -Rejects all requests. AlwaysDeny is DEPRECATED as no real meaning. - ### CertificateApproval {#certificateapproval} This admission controller observes requests to 'approve' CertificateSigningRequest resources and performs additional @@ -145,6 +145,22 @@ This admission controller observes creation of CertificateSigningRequest resourc of `kubernetes.io/kube-apiserver-client`. It rejects any request that specifies a 'group' (or 'organization attribute') of `system:masters`. +### DefaultIngressClass {#defaultingressclass} + +This admission controller observes creation of `Ingress` objects that do not request any specific +ingress class and automatically adds a default ingress class to them. This way, users that do not +request any special ingress class do not need to care about them at all and they will get the +default one. + +This admission controller does not do anything when no default ingress class is configured. When more than one ingress +class is marked as default, it rejects any creation of `Ingress` with an error and an administrator +must revisit their `IngressClass` objects and mark only one as default (with the annotation +"ingressclass.kubernetes.io/is-default-class"). This admission controller ignores any `Ingress` +updates; it acts only on creation. + +See the [ingress](/docs/concepts/services-networking/ingress/) documentation for more about ingress +classes and how to mark one as default. + ### DefaultStorageClass {#defaultstorageclass} This admission controller observes creation of `PersistentVolumeClaim` objects that do not request any specific storage class @@ -169,19 +185,6 @@ have toleration for taints `node.kubernetes.io/not-ready:NoExecute` or `node.kubernetes.io/unreachable:NoExecute`. The default value for `default-not-ready-toleration-seconds` and `default-unreachable-toleration-seconds` is 5 minutes. -### DenyExecOnPrivileged {#denyexeconprivileged} - -{{< feature-state for_k8s_version="v1.13" state="deprecated" >}} - -This admission controller will intercept all requests to exec a command in a pod if that pod has a privileged container. - -This functionality has been merged into [DenyEscalatingExec](#denyescalatingexec). -The DenyExecOnPrivileged admission plugin is deprecated and will be removed in v1.18. - -Use of a policy-based admission plugin (like [PodSecurityPolicy](#podsecuritypolicy) or a custom admission plugin) -which can be targeted at specific users or Namespaces and also protects against creation of overly privileged Pods -is recommended instead. - ### DenyEscalatingExec {#denyescalatingexec} {{< feature-state for_k8s_version="v1.13" state="deprecated" >}} @@ -190,12 +193,38 @@ This admission controller will deny exec and attach commands to pods that run wi allow host access. This includes pods that run as privileged, have access to the host IPC namespace, and have access to the host PID namespace. -The DenyEscalatingExec admission plugin is deprecated and will be removed in v1.18. +The DenyEscalatingExec admission plugin is deprecated and will be removed in v1.21. Use of a policy-based admission plugin (like [PodSecurityPolicy](#podsecuritypolicy) or a custom admission plugin) which can be targeted at specific users or Namespaces and also protects against creation of overly privileged Pods is recommended instead. +### DenyExecOnPrivileged {#denyexeconprivileged} + +{{< feature-state for_k8s_version="v1.13" state="deprecated" >}} + +This admission controller will intercept all requests to exec a command in a pod if that pod has a privileged container. + +This functionality has been merged into [DenyEscalatingExec](#denyescalatingexec). +The DenyExecOnPrivileged admission plugin is deprecated and will be removed in v1.21. + +Use of a policy-based admission plugin (like [PodSecurityPolicy](#podsecuritypolicy) or a custom admission plugin) +which can be targeted at specific users or Namespaces and also protects against creation of overly privileged Pods +is recommended instead. + +### DenyServiceExternalIPs + +This admission controller rejects all net-new usage of the `Service` field `externalIPs`. This +feature is very powerful (allows network traffic interception) and not well +controlled by policy. When enabled, users of the cluster may not create new +Services which use `externalIPs` and may not add new values to `externalIPs` on +existing `Service` objects. Existing uses of `externalIPs` are not affected, +and users may remove values from `externalIPs` on existing `Service` objects. + +Most users do not need this feature at all, and cluster admins should consider disabling it. +Clusters that do need to use this feature should consider using some custom policy to manage usage +of it. + ### EventRateLimit {#eventratelimit} {{< feature-state for_k8s_version="v1.13" state="alpha" >}} @@ -553,6 +582,37 @@ This admission controller also protects the access to `metadata.ownerReferences[ of an object, so that only users with "update" permission to the `finalizers` subresource of the referenced *owner* can change it. +### PersistentVolumeClaimResize {#persistentvolumeclaimresize} + +This admission controller implements additional validations for checking incoming `PersistentVolumeClaim` resize requests. + +{{< note >}} +Support for volume resizing is available as an alpha feature. Admins must set the feature gate `ExpandPersistentVolumes` +to `true` to enable resizing. +{{< /note >}} + +After enabling the `ExpandPersistentVolumes` feature gate, enabling the `PersistentVolumeClaimResize` admission +controller is recommended, too. This admission controller prevents resizing of all claims by default unless a claim's `StorageClass` + explicitly enables resizing by setting `allowVolumeExpansion` to `true`. + +For example: all `PersistentVolumeClaim`s created from the following `StorageClass` support volume expansion: + +```yaml +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: gluster-vol-default +provisioner: kubernetes.io/glusterfs +parameters: + resturl: "http://192.168.10.100:8080" + restuser: "" + secretNamespace: "" + secretName: "" +allowVolumeExpansion: true +``` + +For more information about persistent volume claims, see [PersistentVolumeClaims](/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims). + ### PersistentVolumeLabel {#persistentvolumelabel} {{< feature-state for_k8s_version="v1.13" state="deprecated" >}} @@ -638,37 +698,6 @@ PodNodeSelector allows forcing pods to run on specifically labeled nodes. Also s admission plugin, which allows preventing pods from running on specifically tainted nodes. {{< /note >}} -### PersistentVolumeClaimResize {#persistentvolumeclaimresize} - -This admission controller implements additional validations for checking incoming `PersistentVolumeClaim` resize requests. - -{{< note >}} -Support for volume resizing is available as an alpha feature. Admins must set the feature gate `ExpandPersistentVolumes` -to `true` to enable resizing. -{{< /note >}} - -After enabling the `ExpandPersistentVolumes` feature gate, enabling the `PersistentVolumeClaimResize` admission -controller is recommended, too. This admission controller prevents resizing of all claims by default unless a claim's `StorageClass` - explicitly enables resizing by setting `allowVolumeExpansion` to `true`. - -For example: all `PersistentVolumeClaim`s created from the following `StorageClass` support volume expansion: - -```yaml -apiVersion: storage.k8s.io/v1 -kind: StorageClass -metadata: - name: gluster-vol-default -provisioner: kubernetes.io/glusterfs -parameters: - resturl: "http://192.168.10.100:8080" - restuser: "" - secretNamespace: "" - secretName: "" -allowVolumeExpansion: true -``` - -For more information about persistent volume claims, see [PersistentVolumeClaims](/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims). - ### PodSecurityPolicy {#podsecuritypolicy} This admission controller acts on creation and modification of the pod and determines if it should be admitted diff --git a/content/en/docs/reference/command-line-tools-reference/kube-apiserver.md b/content/en/docs/reference/command-line-tools-reference/kube-apiserver.md index 6e87bff44c..73ef70c81b 100644 --- a/content/en/docs/reference/command-line-tools-reference/kube-apiserver.md +++ b/content/en/docs/reference/command-line-tools-reference/kube-apiserver.md @@ -470,7 +470,7 @@ kube-apiserver [flags] - + From c1cc1e6b0643c3cb62a3fc1693303860bced1ad7 Mon Sep 17 00:00:00 2001 From: Zhang Yong Date: Tue, 9 Feb 2021 10:38:40 +0800 Subject: [PATCH 018/788] fix an invalid url --- content/ja/docs/concepts/workloads/pods/ephemeral-containers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/ja/docs/concepts/workloads/pods/ephemeral-containers.md b/content/ja/docs/concepts/workloads/pods/ephemeral-containers.md index 0fa45de94b..db69d83fcd 100644 --- a/content/ja/docs/concepts/workloads/pods/ephemeral-containers.md +++ b/content/ja/docs/concepts/workloads/pods/ephemeral-containers.md @@ -42,7 +42,7 @@ weight: 80 エフェメラルコンテナを利用する場合には、他のコンテナ内のプロセスにアクセスできるように、[プロセス名前空間の共有](/ja/docs/tasks/configure-pod-container/share-process-namespace/)を有効にすると便利です。 -エフェメラルコンテナを利用してトラブルシューティングを行う例については、[デバッグ用のエフェメラルコンテナを使用してデバッグする](/docs/tasks/debug-application-cluster/debug-running-pod/#debugging-with-ephemeral-debug-container)を参照してください。 +エフェメラルコンテナを利用してトラブルシューティングを行う例については、[デバッグ用のエフェメラルコンテナを使用してデバッグする](/docs/tasks/debug-application-cluster/debug-running-pod/#ephemeral-container)を参照してください。 ## Ephemeral containers API From 72d6fb8cd1733cfdc7631564f284a87af51fee5c Mon Sep 17 00:00:00 2001 From: kakarotbyte <70238071+kakarotbyte@users.noreply.github.com> Date: Thu, 11 Feb 2021 16:03:49 -0600 Subject: [PATCH 019/788] Update service.md The VPC CIDR was switched to Subnet CIDR. Reason why This was changed is because exposing entire VPC CIDR in the SG might have been consider as security threat. So updating the Document. Code referenece https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/legacy-cloud-providers/aws/aws.go#L4008 --- content/en/docs/concepts/services-networking/service.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/content/en/docs/concepts/services-networking/service.md b/content/en/docs/concepts/services-networking/service.md index bcbf7d7f75..5fd2703c52 100644 --- a/content/en/docs/concepts/services-networking/service.md +++ b/content/en/docs/concepts/services-networking/service.md @@ -958,7 +958,8 @@ groups are modified with the following IP rules: | Rule | Protocol | Port(s) | IpRange(s) | IpRange Description | |------|----------|---------|------------|---------------------| -| Health Check | TCP | NodePort(s) (`.spec.healthCheckNodePort` for `.spec.externalTrafficPolicy = Local`) | VPC CIDR | kubernetes.io/rule/nlb/health=\ | +| Health Check | TCP | NodePort(s) (`.spec.healthCheckNodePort` for `.spec.externalTrafficPolicy = Local`) | Subnet CIDR | kubernetes.io/rule/nlb/health=\ | + | Client Traffic | TCP | NodePort(s) | `.spec.loadBalancerSourceRanges` (defaults to `0.0.0.0/0`) | kubernetes.io/rule/nlb/client=\ | | MTU Discovery | ICMP | 3,4 | `.spec.loadBalancerSourceRanges` (defaults to `0.0.0.0/0`) | kubernetes.io/rule/nlb/mtu=\ | From 507dc0aa20ca08307880a00e2a8322e80ba9bd9c Mon Sep 17 00:00:00 2001 From: wojtekt Date: Fri, 12 Feb 2021 11:41:55 +0100 Subject: [PATCH 020/788] Promote immutable secrets and configmaps to GA --- content/en/docs/concepts/configuration/configmap.md | 4 ++-- content/en/docs/concepts/configuration/secret.md | 4 ++-- .../reference/command-line-tools-reference/feature-gates.md | 5 +++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/content/en/docs/concepts/configuration/configmap.md b/content/en/docs/concepts/configuration/configmap.md index 9a134dfc99..d0195e6bd9 100644 --- a/content/en/docs/concepts/configuration/configmap.md +++ b/content/en/docs/concepts/configuration/configmap.md @@ -235,9 +235,9 @@ propagation delay, where the cache propagation delay depends on the chosen cache ConfigMaps consumed as environment variables are not updated automatically and require a pod restart. ## Immutable ConfigMaps {#configmap-immutable} -{{< feature-state for_k8s_version="v1.19" state="beta" >}} +{{< feature-state for_k8s_version="v1.21" state="stable" >}} -The Kubernetes beta feature _Immutable Secrets and ConfigMaps_ provides an option to set +The Kubernetes feature _Immutable Secrets and ConfigMaps_ provides an option to set individual Secrets and ConfigMaps as immutable. For clusters that extensively use ConfigMaps (at least tens of thousands of unique ConfigMap to Pod mounts), preventing changes to their data has the following advantages: diff --git a/content/en/docs/concepts/configuration/secret.md b/content/en/docs/concepts/configuration/secret.md index 5a6a0dd092..ab627ce056 100644 --- a/content/en/docs/concepts/configuration/secret.md +++ b/content/en/docs/concepts/configuration/secret.md @@ -749,9 +749,9 @@ There are third party solutions for triggering restarts when secrets change. ## Immutable Secrets {#secret-immutable} -{{< feature-state for_k8s_version="v1.19" state="beta" >}} +{{< feature-state for_k8s_version="v1.21" state="stable" >}} -The Kubernetes beta feature _Immutable Secrets and ConfigMaps_ provides an option to set +The Kubernetes feature _Immutable Secrets and ConfigMaps_ provides an option to set individual Secrets and ConfigMaps as immutable. For clusters that extensively use Secrets (at least tens of thousands of unique Secret to Pod mounts), preventing changes to their data has the following advantages: diff --git a/content/en/docs/reference/command-line-tools-reference/feature-gates.md b/content/en/docs/reference/command-line-tools-reference/feature-gates.md index d9754afb56..bc5f066d73 100644 --- a/content/en/docs/reference/command-line-tools-reference/feature-gates.md +++ b/content/en/docs/reference/command-line-tools-reference/feature-gates.md @@ -124,8 +124,6 @@ different Kubernetes components. | `HugePageStorageMediumSize` | `false` | Alpha | 1.18 | 1.18 | | `HugePageStorageMediumSize` | `true` | Beta | 1.19 | | | `IPv6DualStack` | `false` | Alpha | 1.15 | | -| `ImmutableEphemeralVolumes` | `false` | Alpha | 1.18 | 1.18 | -| `ImmutableEphemeralVolumes` | `true` | Beta | 1.19 | | | `KubeletCredentialProviders` | `false` | Alpha | 1.20 | | | `KubeletPodResources` | `true` | Alpha | 1.13 | 1.14 | | `KubeletPodResources` | `true` | Beta | 1.15 | | @@ -257,6 +255,9 @@ different Kubernetes components. | `HugePages` | `true` | GA | 1.14 | - | | `HyperVContainer` | `false` | Alpha | 1.10 | 1.19 | | `HyperVContainer` | `false` | Deprecated | 1.20 | - | +| `ImmutableEphemeralVolumes` | `false` | Alpha | 1.18 | 1.18 | +| `ImmutableEphemeralVolumes` | `true` | Beta | 1.19 | 1.20 | +| `ImmutableEphemeralVolumes` | `true` | GA | 1.21 | | | `Initializers` | `false` | Alpha | 1.7 | 1.13 | | `Initializers` | - | Deprecated | 1.14 | - | | `KubeletConfigFile` | `false` | Alpha | 1.8 | 1.9 | From ce8395deda2e328b3f3bf595899ce1de8429129e Mon Sep 17 00:00:00 2001 From: Max <78564304+max-cx@users.noreply.github.com> Date: Fri, 12 Feb 2021 21:22:20 +0100 Subject: [PATCH 021/788] Update nodes.md minor punctuation changes to improve readability --- .../en/docs/concepts/architecture/nodes.md | 75 ++++++++++--------- 1 file changed, 39 insertions(+), 36 deletions(-) diff --git a/content/en/docs/concepts/architecture/nodes.md b/content/en/docs/concepts/architecture/nodes.md index de08e48d8c..823dddf710 100644 --- a/content/en/docs/concepts/architecture/nodes.md +++ b/content/en/docs/concepts/architecture/nodes.md @@ -31,7 +31,7 @@ The [components](/docs/concepts/overview/components/#node-components) on a node There are two main ways to have Nodes added to the {{< glossary_tooltip text="API server" term_id="kube-apiserver" >}}: 1. The kubelet on a node self-registers to the control plane -2. You, or another human user, manually add a Node object +2. You (or another human user) manually add a Node object After you create a Node object, or the kubelet on a node self-registers, the control plane checks whether the new Node object is valid. For example, if you @@ -52,8 +52,8 @@ try to create a Node from the following JSON manifest: Kubernetes creates a Node object internally (the representation). Kubernetes checks that a kubelet has registered to the API server that matches the `metadata.name` -field of the Node. If the node is healthy (if all necessary services are running), -it is eligible to run a Pod. Otherwise, that node is ignored for any cluster activity +field of the Node. If the node is healthy (i.e. all necessary services are running), +then it is eligible to run a Pod. Otherwise, that node is ignored for any cluster activity until it becomes healthy. {{< note >}} @@ -96,14 +96,14 @@ You can create and modify Node objects using When you want to create Node objects manually, set the kubelet flag `--register-node=false`. You can modify Node objects regardless of the setting of `--register-node`. -For example, you can set labels on an existing Node, or mark it unschedulable. +For example, you can set labels on an existing Node or mark it unschedulable. You can use labels on Nodes in conjunction with node selectors on Pods to control scheduling. For example, you can constrain a Pod to only be eligible to run on a subset of the available nodes. Marking a node as unschedulable prevents the scheduler from placing new pods onto -that Node, but does not affect existing Pods on the Node. This is useful as a +that Node but does not affect existing Pods on the Node. This is useful as a preparatory step before a node reboot or other maintenance. To mark a Node unschedulable, run: @@ -179,14 +179,14 @@ The node condition is represented as a JSON object. For example, the following s ] ``` -If the Status of the Ready condition remains `Unknown` or `False` for longer than the `pod-eviction-timeout` (an argument passed to the {{< glossary_tooltip text="kube-controller-manager" term_id="kube-controller-manager" >}}), all the Pods on the node are scheduled for deletion by the node controller. The default eviction timeout duration is **five minutes**. In some cases when the node is unreachable, the API server is unable to communicate with the kubelet on the node. The decision to delete the pods cannot be communicated to the kubelet until communication with the API server is re-established. In the meantime, the pods that are scheduled for deletion may continue to run on the partitioned node. +If the Status of the Ready condition remains `Unknown` or `False` for longer than the `pod-eviction-timeout` (an argument passed to the {{< glossary_tooltip text="kube-controller-manager" term_id="kube-controller-manager" >}}), then all the Pods on the node are scheduled for deletion by the node controller. The default eviction timeout duration is **five minutes**. In some cases when the node is unreachable, the API server is unable to communicate with the kubelet on the node. The decision to delete the pods cannot be communicated to the kubelet until communication with the API server is re-established. In the meantime, the pods that are scheduled for deletion may continue to run on the partitioned node. The node controller does not force delete pods until it is confirmed that they have stopped running in the cluster. You can see the pods that might be running on an unreachable node as being in the `Terminating` or `Unknown` state. In cases where Kubernetes cannot deduce from the underlying infrastructure if a node has permanently left a cluster, the cluster administrator -may need to delete the node object by hand. Deleting the node object from Kubernetes causes -all the Pod objects running on the node to be deleted from the API server, and frees up their +may need to delete the node object by hand. Deleting the node object from Kubernetes causes +all the Pod objects running on the node to be deleted from the API server and frees up their names. The node lifecycle controller automatically creates @@ -199,7 +199,7 @@ for more details. ### Capacity and Allocatable {#capacity} -Describes the resources available on the node: CPU, memory and the maximum +Describes the resources available on the node: CPU, memory, and the maximum number of pods that can be scheduled onto the node. The fields in the capacity block indicate the total amount of resources that a @@ -225,18 +225,19 @@ CIDR block to the node when it is registered (if CIDR assignment is turned on). The second is keeping the node controller's internal list of nodes up to date with the cloud provider's list of available machines. When running in a cloud -environment, whenever a node is unhealthy, the node controller asks the cloud +environment and whenever a node is unhealthy, the node controller asks the cloud provider if the VM for that node is still available. If not, the node controller deletes the node from its list of nodes. The third is monitoring the nodes' health. The node controller is -responsible for updating the NodeReady condition of NodeStatus to -ConditionUnknown when a node becomes unreachable (i.e. the node controller stops -receiving heartbeats for some reason, for example due to the node being down), and then later evicting -all the pods from the node (using graceful termination) if the node continues -to be unreachable. (The default timeouts are 40s to start reporting -ConditionUnknown and 5m after that to start evicting pods.) The node controller -checks the state of each node every `--node-monitor-period` seconds. +responsible for: +- Updating the NodeReady condition of NodeStatus to ConditionUnknown when a node + becomes unreachable, as the node controller stops receiving heartbeats for some + reason such as the node being down. +- Evicting all the pods from the node using graceful termination if + the node continues to be unreachable. The default timeouts are 40s to start + reporting ConditionUnknown and 5m after that to start evicting pods. +The node controller checks the state of each node every `--node-monitor-period` seconds. #### Heartbeats @@ -252,13 +253,14 @@ of the node heartbeats as the cluster scales. The kubelet is responsible for creating and updating the `NodeStatus` and a Lease object. -- The kubelet updates the `NodeStatus` either when there is change in status, +- The kubelet updates the `NodeStatus` either when there is change in status or if there has been no update for a configured interval. The default interval - for `NodeStatus` updates is 5 minutes (much longer than the 40 second default - timeout for unreachable nodes). + for `NodeStatus` updates is 5 minutes, which is much longer than the 40 second default + timeout for unreachable nodes. - The kubelet creates and then updates its Lease object every 10 seconds (the default update interval). Lease updates occur independently from the - `NodeStatus` updates. If the Lease update fails, the kubelet retries with exponential backoff starting at 200 milliseconds and capped at 7 seconds. + `NodeStatus` updates. If the Lease update fails, the kubelet retries with + exponential backoff starting at 200 milliseconds and capped at 7 seconds. #### Reliability @@ -269,23 +271,24 @@ from more than 1 node per 10 seconds. The node eviction behavior changes when a node in a given availability zone becomes unhealthy. The node controller checks what percentage of nodes in the zone are unhealthy (NodeReady condition is ConditionUnknown or ConditionFalse) at -the same time. If the fraction of unhealthy nodes is at least -`--unhealthy-zone-threshold` (default 0.55) then the eviction rate is reduced: -if the cluster is small (i.e. has less than or equal to -`--large-cluster-size-threshold` nodes - default 50) then evictions are -stopped, otherwise the eviction rate is reduced to -`--secondary-node-eviction-rate` (default 0.01) per second. The reason these -policies are implemented per availability zone is because one availability zone -might become partitioned from the master while the others remain connected. If -your cluster does not span multiple cloud provider availability zones, then -there is only one availability zone (the whole cluster). +the same time: +- If the fraction of unhealthy nodes is at least `--unhealthy-zone-threshold` + (default 0.55), then the eviction rate is reduced. +- If the cluster is small (i.e. has less than or equal to + `--large-cluster-size-threshold` nodes - default 50), then evictions are stopped. +- Otherwise, the eviction rate is reduced to `--secondary-node-eviction-rate` + (default 0.01) per second. +The reason these policies are implemented per availability zone is because one +availability zone might become partitioned from the master while the others remain +connected. If your cluster does not span multiple cloud provider availability zones, +then there is only one availability zone (i.e. the whole cluster). A key reason for spreading your nodes across availability zones is so that the workload can be shifted to healthy zones when one entire zone goes down. -Therefore, if all nodes in a zone are unhealthy then the node controller evicts at +Therefore, if all nodes in a zone are unhealthy, then the node controller evicts at the normal rate of `--node-eviction-rate`. The corner case is when all zones are completely unhealthy (i.e. there are no healthy nodes in the cluster). In such a -case, the node controller assumes that there's some problem with master +case, the node controller assumes that there is some problem with master connectivity and stops all evictions until some connectivity is restored. The node controller is also responsible for evicting pods running on nodes with @@ -303,8 +306,8 @@ eligible for, effectively removing incoming load balancer traffic from the cordo ### Node capacity -Node objects track information about the Node's resource capacity (for example: the amount -of memory available, and the number of CPUs). +Node objects track information about the Node's resource capacity: for example, the amount +of memory available and the number of CPUs. Nodes that [self register](#self-registration-of-nodes) report their capacity during registration. If you [manually](#manual-node-administration) add a Node, then you need to set the node's capacity information when you add it. @@ -338,7 +341,7 @@ for more information. If you have enabled the `GracefulNodeShutdown` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/), then the kubelet attempts to detect the node system shutdown and terminates pods running on the node. Kubelet ensures that pods follow the normal [pod termination process](/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination) during the node shutdown. -When the `GracefulNodeShutdown` feature gate is enabled, kubelet uses [systemd inhibitor locks](https://www.freedesktop.org/wiki/Software/systemd/inhibit/) to delay the node shutdown with a given duration. During a shutdown kubelet terminates pods in two phases: +When the `GracefulNodeShutdown` feature gate is enabled, kubelet uses [systemd inhibitor locks](https://www.freedesktop.org/wiki/Software/systemd/inhibit/) to delay the node shutdown with a given duration. During a shutdown, kubelet terminates pods in two phases: 1. Terminate regular pods running on the node. 2. Terminate [critical pods](/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/#marking-pod-as-critical) running on the node. From 9101931018d5c6f8808a3bd4f7258b131ac75ffa Mon Sep 17 00:00:00 2001 From: Max Leonov <78564304+max-cx@users.noreply.github.com> Date: Sat, 13 Feb 2021 19:58:37 +0100 Subject: [PATCH 022/788] Update control-plane-node-communication.md minor edits to improve readability --- .../architecture/control-plane-node-communication.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/content/en/docs/concepts/architecture/control-plane-node-communication.md b/content/en/docs/concepts/architecture/control-plane-node-communication.md index 2e7235a89f..9c7f135f29 100644 --- a/content/en/docs/concepts/architecture/control-plane-node-communication.md +++ b/content/en/docs/concepts/architecture/control-plane-node-communication.md @@ -11,14 +11,14 @@ aliases: -This document catalogs the communication paths between the control plane (really the apiserver) and the Kubernetes cluster. The intent is to allow users to customize their installation to harden the network configuration such that the cluster can be run on an untrusted network (or on fully public IPs on a cloud provider). +This document catalogs the communication paths between the control plane (apiserver) and the Kubernetes cluster. The intent is to allow users to customize their installation to harden the network configuration such that the cluster can be run on an untrusted network (or on fully public IPs on a cloud provider). ## Node to Control Plane -Kubernetes has a "hub-and-spoke" API pattern. All API usage from nodes (or the pods they run) terminate at the apiserver (none of the other control plane components are designed to expose remote services). The apiserver is configured to listen for remote connections on a secure HTTPS port (typically 443) with one or more forms of client [authentication](/docs/reference/access-authn-authz/authentication/) enabled. +Kubernetes has a "hub-and-spoke" API pattern. All API usage from nodes (or the pods they run) terminates at the apiserver. None of the other control plane components are designed to expose remote services. The apiserver is configured to listen for remote connections on a secure HTTPS port (typically 443) with one or more forms of client [authentication](/docs/reference/access-authn-authz/authentication/) enabled. One or more forms of [authorization](/docs/reference/access-authn-authz/authorization/) should be enabled, especially if [anonymous requests](/docs/reference/access-authn-authz/authentication/#anonymous-requests) or [service account tokens](/docs/reference/access-authn-authz/authentication/#service-account-tokens) are allowed. Nodes should be provisioned with the public root certificate for the cluster such that they can connect securely to the apiserver along with valid client credentials. A good approach is that the client credentials provided to the kubelet are in the form of a client certificate. See [kubelet TLS bootstrapping](/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping/) for automated provisioning of kubelet client certificates. @@ -42,7 +42,7 @@ The connections from the apiserver to the kubelet are used for: * Attaching (through kubectl) to running pods. * Providing the kubelet's port-forwarding functionality. -These connections terminate at the kubelet's HTTPS endpoint. By default, the apiserver does not verify the kubelet's serving certificate, which makes the connection subject to man-in-the-middle attacks, and **unsafe** to run over untrusted and/or public networks. +These connections terminate at the kubelet's HTTPS endpoint. By default, the apiserver does not verify the kubelet's serving certificate, which makes the connection subject to man-in-the-middle attacks and **unsafe** to run over untrusted and/or public networks. To verify this connection, use the `--kubelet-certificate-authority` flag to provide the apiserver with a root certificate bundle to use to verify the kubelet's serving certificate. @@ -53,20 +53,20 @@ Finally, [Kubelet authentication and/or authorization](/docs/reference/command-l ### apiserver to nodes, pods, and services -The connections from the apiserver to a node, pod, or service default to plain HTTP connections and are therefore neither authenticated nor encrypted. They can be run over a secure HTTPS connection by prefixing `https:` to the node, pod, or service name in the API URL, but they will not validate the certificate provided by the HTTPS endpoint nor provide client credentials so while the connection will be encrypted, it will not provide any guarantees of integrity. These connections **are not currently safe** to run over untrusted and/or public networks. +The connections from the apiserver to a node, pod, or service default to plain HTTP connections and are therefore neither authenticated nor encrypted. They can be run over a secure HTTPS connection by prefixing `https:` to the node, pod, or service name in the API URL, but they will not validate the certificate provided by the HTTPS endpoint nor provide client credentials. So while the connection will be encrypted, it will not provide any guarantees of integrity. These connections **are not currently safe** to run over untrusted or public networks. ### SSH tunnels Kubernetes supports SSH tunnels to protect the control plane to nodes communication paths. In this configuration, the apiserver initiates an SSH tunnel to each node in the cluster (connecting to the ssh server listening on port 22) and passes all traffic destined for a kubelet, node, pod, or service through the tunnel. This tunnel ensures that the traffic is not exposed outside of the network in which the nodes are running. -SSH tunnels are currently deprecated so you shouldn't opt to use them unless you know what you are doing. The Konnectivity service is a replacement for this communication channel. +SSH tunnels are currently deprecated, so you shouldn't opt to use them unless you know what you are doing. The Konnectivity service is a replacement for this communication channel. ### Konnectivity service {{< feature-state for_k8s_version="v1.18" state="beta" >}} -As a replacement to the SSH tunnels, the Konnectivity service provides TCP level proxy for the control plane to cluster communication. The Konnectivity service consists of two parts: the Konnectivity server and the Konnectivity agents, running in the control plane network and the nodes network respectively. The Konnectivity agents initiate connections to the Konnectivity server and maintain the network connections. +As a replacement to the SSH tunnels, the Konnectivity service provides TCP level proxy for the control plane to cluster communication. The Konnectivity service consists of two parts: the Konnectivity server in the control plane network and the Konnectivity agents in the nodes network. The Konnectivity agents initiate connections to the Konnectivity server and maintain the network connections. After enabling the Konnectivity service, all control plane to nodes traffic goes through these connections. Follow the [Konnectivity service task](/docs/tasks/extend-kubernetes/setup-konnectivity/) to set up the Konnectivity service in your cluster. From 38b95756c50a3121deb1c4617dda5f395df3e084 Mon Sep 17 00:00:00 2001 From: Leonardo Murillo Date: Sat, 13 Feb 2021 22:59:11 +0000 Subject: [PATCH 023/788] =?UTF-8?q?Ediciones=20posteriores=20a=20revisi?= =?UTF-8?q?=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../declarative-config.md | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/content/es/docs/tasks/manage-kubernetes-objects/declarative-config.md b/content/es/docs/tasks/manage-kubernetes-objects/declarative-config.md index 0b2a0987d5..d3002931ab 100644 --- a/content/es/docs/tasks/manage-kubernetes-objects/declarative-config.md +++ b/content/es/docs/tasks/manage-kubernetes-objects/declarative-config.md @@ -31,7 +31,7 @@ La herramienta `kubectl` soporta tres modos distintos para la administración de * Configuración de objetos declarativa Acceda [Kubernetes Object Management](/docs/concepts/overview/working-with-objects/object-management/) -para una discusión de las ventajas y desventajas de cada distinto modo de administración. +para una discusión de las ventajas y desventajas de cada modo distinto de administración. ## Visión general @@ -39,8 +39,8 @@ La configuración de objetos declarativa requiere una comprensión firme de la definición y configuración de objetos de Kubernetes. Lea y complete los siguientes documentos si aún no lo ha hecho: -* [Managing Kubernetes Objects Using Imperative Commands](/docs/tasks/manage-kubernetes-objects/imperative-command/) -* [Imperative Management of Kubernetes Objects Using Configuration Files](/docs/tasks/manage-kubernetes-objects/imperative-config/) +* [Administració n de Objetos de Kubernetes usando comandos imperativos](/docs/tasks/manage-kubernetes-objects/imperative-command/) +* [Administración imperativa de los Objetos de Kubernetes usando ficheros de Configuración](/docs/tasks/manage-kubernetes-objects/imperative-config/) {{< comment >}} TODO(lmurillo): Update the links above to the spanish versions of these documents once the @@ -50,13 +50,13 @@ localizations become available A continuación la definición de términos usados en este documento: - *fichero de configuración de objeto / fichero de configuración*: Un fichero en el - que se define la configuración de un objeto de Kubernetes. Este tema demuestra como + que se define la configuración de un objeto de Kubernetes. Este tema muestra como utilizar ficheros de configuración con `kubectl apply`. Los ficheros de configuración - usualmente se almacenan en un sistema de control de versiones, como Git. + por lo general se almacenan en un sistema de control de versiones, como Git. - *configuración activa de objeto / configuración activa*: Los valores de configuración - activos de un objeto, según estan siendo observados por el Cluster. Esta configuración + activos de un objeto, según estén siendo observados por el Clúster. Esta configuración se almacena en el sistema de almacenamiento de Kubernetes, usualmente etcd. -- *escritor de configuración declarativo / escritor declarativo*: Una persona o +- *escritor de configuración declarativo / escritor declarativo*: Una persona o componente de software que actualiza a un objeto activo. Los escritores activos a los que se refiere este tema aplican cambios a los ficheros de configuración de objetos y ejecutan `kubectl apply` para aplicarlos. @@ -72,7 +72,7 @@ kubectl apply -f / ``` Esto definirá la anotación `kubectl.kubernetes.io/last-applied-configuration: '{...}'` -en cada objeto. Esta anotación contiene el contenido del fichero de configuración +en cada objeto. Esta anotación contiene el contenido del fichero de configuración utilizado para la creación del objeto. {{< note >}} @@ -95,7 +95,7 @@ que debe estar habilitado en el `kube-apiserver`. Dado que `diff` ejecuta una solicitud de `apply` en el servidor en modo de simulacro (dry-run), requiere obtener permisos de `PATCH`, `CREATE`, y `UPDATE`. -Vea [Dry-Run Authorization](/docs/reference/using-api/api-concepts#dry-run-authorization) +Vea [Autorización Dry-Run](/docs/reference/using-api/api-concepts#dry-run-authorization) para más detalles. {{< /note >}} @@ -250,7 +250,7 @@ Despliegue la configuración activa usando `kubectl get`: kubectl get deployment nginx-deployment -o yaml ``` -La salida le demuestra que el campo `replicas` ha sido definido en 2, y que la +La salida le muestra que el campo `replicas` ha sido definido en 2, y que la anotación `last-applied-configuration` no contiene el campo `replicas`: ```yaml @@ -360,10 +360,10 @@ spec: ``` {{< warning >}} -Combinar `kubectl apply` con los comandos de configuración imperativa de objetos -`create` y `replace` no es soportado. Esto debido a que `create` +No es soportado combinar `kubectl apply` con los comandos de configuración imperativa de objetos +`create` y `replace`. Esto se debe a que `create` y `replace` no retienen la anotación `kubectl.kubernetes.io/last-applied-configuration` -que `kubectl apply` utiliza para computar los cambios por realizar. +que `kubectl apply` utiliza para calcular los cambios por realizar. {{< /warning >}} ## Como eliminar objetos @@ -382,11 +382,11 @@ kubectl delete -f ### Manera alternativa: `kubectl apply -f --prune -l etiqueta=deseada` -Únicamente utilice esta opción si está seguro de saber lo que está haciendo.. +Únicamente utilice esta opción si está seguro de saber lo que está haciendo. {{< warning >}} -`kubectl apply --prune` se encuenta aún en alpha, y cambios incompatibles con versiones previas -podrían ser introducidos en futuros lanzamientos. +`kubectl apply --prune` se encuentra aún en alpha, y cambios incompatibles con versiones previas +podrían ser introducidos en lanzamientos futuros. {{< /warning >}} {{< warning >}} @@ -394,10 +394,10 @@ Sea cuidadoso o cuidadosa al usar este comando, para evitar eliminar objetos no intencionalmente. {{< /warning >}} -Como una alternativa a `kubectl delete`, usted puede usar `kubectl apply`para identificar objetos por ser +Como una alternativa a `kubectl delete`, puede usar `kubectl apply`para identificar objetos por ser eliminados, luego de que sus archivos de configuración han sido eliminados del directorio. El commando `apply` con `--prune` -consulta al servidor de API por todos los objetos que coincidan con un grupo de etiquetas, e intenta parear -la configuración retornada para los objetos activos contra los objetos según sus ficheros de configuración. +consulta a la API del servidor por todos los objetos que coincidan con un grupo de etiquetas, e intenta relacionar +la configuración obtenida de los objetos activos contra los objetos según sus ficheros de configuración. Si un objeto coincide con la consulta, y no tiene un fichero de configuración en el directorio, pero si tiene una anotación `last-applied-configuration`, entonces será eliminado. @@ -794,7 +794,7 @@ spec: protocol: TCP # valor por defecto definido por apiserver resources: {} # valor por defecto definido por apiserver terminationMessagePath: /dev/termination-log # valor por defecto definido por apiserver - dnsPolicy: ClusterFirst # valor por defecto definido por apiserver + dnsPolicy: ClústerFirst # valor por defecto definido por apiserver restartPolicy: Always # valor por defecto definido por apiserver securityContext: {} # valor por defecto definido por apiserver terminationGracePeriodSeconds: 30 # valor por defecto definido por apiserver @@ -1009,9 +1009,9 @@ template: ## {{% heading "whatsnext" %}} -* [Managing Kubernetes Objects Using Imperative Commands](/docs/tasks/manage-kubernetes-objects/imperative-command/) -* [Imperative Management of Kubernetes Objects Using Configuration Files](/docs/tasks/manage-kubernetes-objects/imperative-config/) -* [Kubectl Command Reference](/docs/reference/generated/kubectl/kubectl-commands/) -* [Kubernetes API Reference](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/) +* [Administración de Objetos de Kubernetes usando comandos imperativos](/docs/tasks/manage-kubernetes-objects/imperative-command/) +* [Administración imperativa de los Objetos de Kubernetes usando archivos de configuración](/docs/tasks/manage-kubernetes-objects/imperative-config/) +* [Referencia del comando Kubectl](/docs/reference/generated/kubectl/kubectl-commands/) +* [Referencia de la API de Kubernetes](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/) From b4cb812a1d216d5a0b8fe189879cd91a329cad8c Mon Sep 17 00:00:00 2001 From: Suhel Khan Date: Mon, 15 Feb 2021 11:14:18 +0530 Subject: [PATCH 024/788] Update horizontal-pod-autoscale.md With `v2beta2` controller can take replication decision on memory and custom metric utilisation as well. --- .../en/docs/tasks/run-application/horizontal-pod-autoscale.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/content/en/docs/tasks/run-application/horizontal-pod-autoscale.md b/content/en/docs/tasks/run-application/horizontal-pod-autoscale.md index 763d9ab996..ed99e9bd96 100644 --- a/content/en/docs/tasks/run-application/horizontal-pod-autoscale.md +++ b/content/en/docs/tasks/run-application/horizontal-pod-autoscale.md @@ -23,9 +23,7 @@ Pod Autoscaling does not apply to objects that can't be scaled, for example, Dae The Horizontal Pod Autoscaler is implemented as a Kubernetes API resource and a controller. The resource determines the behavior of the controller. -The controller periodically adjusts the number of replicas in a replication controller or deployment -to match the observed average CPU utilization to the target specified by user. - +The controller periodically adjusts the number of replicas in a replication controller or deployment to match the observed metrics such as average CPU utilisation, average memory utilisation or any other custom metric to the target specified by the user. From c8d58f3d52f09b67d6e291619b4764d250ce975b Mon Sep 17 00:00:00 2001 From: AliRezaTaleghani Date: Tue, 16 Feb 2021 19:48:47 +0100 Subject: [PATCH 025/788] Update cheatsheet.md adding a custom output to format output by listing Images per Pod in table. --- content/en/docs/reference/kubectl/cheatsheet.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/en/docs/reference/kubectl/cheatsheet.md b/content/en/docs/reference/kubectl/cheatsheet.md index 79ca330bd5..4d969fd7dc 100644 --- a/content/en/docs/reference/kubectl/cheatsheet.md +++ b/content/en/docs/reference/kubectl/cheatsheet.md @@ -374,6 +374,8 @@ Examples using `-o=custom-columns`: ```bash # All images running in a cluster kubectl get pods -A -o=custom-columns='DATA:spec.containers[*].image' +# All images running in namespace: default, grouped by Pod +kubectl get pods --namespace default --output=custom-columns="NAME:.metadata.name,IMAGE:.spec.containers[*].image" # All images excluding "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' From c3245e47d7dce41c481f29db126c36aa2e264eb7 Mon Sep 17 00:00:00 2001 From: AliRezaTaleghani Date: Tue, 16 Feb 2021 19:56:24 +0100 Subject: [PATCH 026/788] Update cheatsheet.md adding blank space between examples --- content/en/docs/reference/kubectl/cheatsheet.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/en/docs/reference/kubectl/cheatsheet.md b/content/en/docs/reference/kubectl/cheatsheet.md index 4d969fd7dc..22be0b48ed 100644 --- a/content/en/docs/reference/kubectl/cheatsheet.md +++ b/content/en/docs/reference/kubectl/cheatsheet.md @@ -374,6 +374,7 @@ Examples using `-o=custom-columns`: ```bash # All images running in a cluster kubectl get pods -A -o=custom-columns='DATA:spec.containers[*].image' + # All images running in namespace: default, grouped by Pod kubectl get pods --namespace default --output=custom-columns="NAME:.metadata.name,IMAGE:.spec.containers[*].image" From 21100c15ee9d493c5fd01d509a1eb9c9546ec2fc Mon Sep 17 00:00:00 2001 From: AliRezaTaleghani Date: Tue, 16 Feb 2021 20:01:07 +0100 Subject: [PATCH 027/788] Update cheatsheet.md activate CLA --- content/en/docs/reference/kubectl/cheatsheet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/reference/kubectl/cheatsheet.md b/content/en/docs/reference/kubectl/cheatsheet.md index 22be0b48ed..1df2567eb9 100644 --- a/content/en/docs/reference/kubectl/cheatsheet.md +++ b/content/en/docs/reference/kubectl/cheatsheet.md @@ -375,7 +375,7 @@ Examples using `-o=custom-columns`: # All images running in a cluster kubectl get pods -A -o=custom-columns='DATA:spec.containers[*].image' -# All images running in namespace: default, grouped by Pod +# All images running in default namespace, grouped by Pod kubectl get pods --namespace default --output=custom-columns="NAME:.metadata.name,IMAGE:.spec.containers[*].image" # All images excluding "k8s.gcr.io/coredns:1.6.2" From 5316aaf207c1a73e34e95741905b50a596705232 Mon Sep 17 00:00:00 2001 From: AliRezaTaleghani Date: Tue, 16 Feb 2021 20:09:06 +0100 Subject: [PATCH 028/788] Update cheatsheet.md fix CLA sign --- content/en/docs/reference/kubectl/cheatsheet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/reference/kubectl/cheatsheet.md b/content/en/docs/reference/kubectl/cheatsheet.md index 1df2567eb9..22be0b48ed 100644 --- a/content/en/docs/reference/kubectl/cheatsheet.md +++ b/content/en/docs/reference/kubectl/cheatsheet.md @@ -375,7 +375,7 @@ Examples using `-o=custom-columns`: # All images running in a cluster kubectl get pods -A -o=custom-columns='DATA:spec.containers[*].image' -# All images running in default namespace, grouped by Pod +# All images running in namespace: default, grouped by Pod kubectl get pods --namespace default --output=custom-columns="NAME:.metadata.name,IMAGE:.spec.containers[*].image" # All images excluding "k8s.gcr.io/coredns:1.6.2" From f65f808fb2a455af9244ecce9853b091c740202f Mon Sep 17 00:00:00 2001 From: Tim Allclair Date: Tue, 16 Feb 2021 11:25:43 -0800 Subject: [PATCH 029/788] Mark PSP deprecated in the docs --- content/en/docs/concepts/policy/pod-security-policy.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/content/en/docs/concepts/policy/pod-security-policy.md b/content/en/docs/concepts/policy/pod-security-policy.md index f355a8f539..f0884c3dea 100644 --- a/content/en/docs/concepts/policy/pod-security-policy.md +++ b/content/en/docs/concepts/policy/pod-security-policy.md @@ -9,7 +9,9 @@ weight: 30 -{{< feature-state state="beta" >}} +{{< feature-state for_k8s_version="v1.21" state="deprecated" >}} + +PodSecurityPolicy is deprecated as of Kubernetes v1.21, and will be removed in v1.25. Pod Security Policies enable fine-grained authorization of pod creation and updates. From 5b127f07612d45ba0a142370e4e58f9e859c3830 Mon Sep 17 00:00:00 2001 From: flo-oss Date: Tue, 16 Feb 2021 21:07:07 -0800 Subject: [PATCH 030/788] changes suggested by code reviewer (sie -> du, Pod Vorlage, ....) --- .../de/docs/concepts/workloads/pods/_index.md | 97 +++++++++---------- 1 file changed, 48 insertions(+), 49 deletions(-) diff --git a/content/de/docs/concepts/workloads/pods/_index.md b/content/de/docs/concepts/workloads/pods/_index.md index 837a1f1571..e6adce49a6 100644 --- a/content/de/docs/concepts/workloads/pods/_index.md +++ b/content/de/docs/concepts/workloads/pods/_index.md @@ -57,15 +57,15 @@ die gemeinsame Namespaces und Dateisystem-Volumes nutzen. Normalerweise müssen keine Pods erzeugt werden, auch keine Singleton-Pods. Stattdessen werden sie mit Workload-Ressourcen wie {{}} oder {{}} erzeugt. Für Pods, die von einem Systemzustand -abhängen, erwägen Sie die Nutzung von {{}}-Ressourcen. +text="Job" term_id="job">}} erzeugt. Für Pods, die von einem Systemzustand +abhängen, ist die Nutzung von {{}}-Ressourcen zu erwägen. Pods in einem Kubernetes-Cluster werden hauptsächlich auf zwei Arten verwendet: * **Pods, die einen einzelnen Container ausführen**. Das "Ein-Container-per-Pod"-Modell ist der häufigste Kubernetes-Anwendungsfall. In -diesem Fall können Sie sich einen Pod als einen Behälter vorstellen, der einen +diesem Fall kannst du dir einen einen Pod als einen Behälter vorstellen, der einen einzelnen Container enthält; Kubernetes verwaltet die Pods anstatt die Container direkt zu verwalten. * **Pods, in denen mehrere Container ausgeführt werden, die zusammenarbeiten @@ -81,16 +81,15 @@ und eine kurzlebiges Netzwerk-Identität als eine Einheit zusammen. {{< note >}} Das Gruppieren mehrerer gemeinsam lokalisierter und gemeinsam verwalteter Container in einem einzigen Pod ist ein relativ fortgeschrittener -Anwendungsfall. Sie sollten diese Architektur nur in bestimmten Fällen -verwenden, wenn Ihre Container stark voneinander abhängen. +Anwendungsfall. Du solltest diese Architektur nur in bestimmten Fällen +verwenden, wenn deine Container stark voneinander abhängen. {{< /note >}} Jeder Pod sollte eine einzelne Instanz einer gegebenen Anwendung ausführen. Wenn -Sie Ihre Anwendung horizontal skalieren wollen (um mehr Instanzen auszuführen -und dadurch mehr Gesamtressourcen bereitstellen), sollten Sie mehrere Pods -verwenden, -einen für jede Instanz. In Kubernetes wird dies typischerweise als Replikation -bezeichnet. +du deine Anwendung horizontal skalieren willst (um mehr Instanzen auszuführen +und dadurch mehr Gesamtressourcen bereitstellen), solltest du mehrere Pods +verwenden, einen für jede Instanz. +In Kubernetes wird dies typischerweise als Replikation bezeichnet. Replizierte Pods werden normalerweise als eine Gruppe durch eine Workload-Ressource und deren {{}} erstellt @@ -109,7 +108,7 @@ virtuellen Server im Cluster befinden. Die Container können Ressourcen und Abhängigkeiten gemeinsam nutzen, miteinander kommunizieren und ferner koordinieren wann und wie sie beendet werden. -Zum Beispiel könnten Sie einen Container haben, der als Webserver für Dateien in +Zum Beispiel könntest du einen Container haben, der als Webserver für Dateien in einem gemeinsamen Volume arbeitet. Und ein separater "Sidecar" -Container aktualisiert die Daten von einer externen Datenquelle, siehe folgenden Abbildung: @@ -129,7 +128,7 @@ enthaltenen Container bereit: ## Mit Pods arbeiten -Sie werden selten einzelne Pods direkt in Kubernetes erstellen, selbst +Du wirst selten einzelne Pods direkt in Kubernetes erstellen, selbst Singleton-Pods. Das liegt daran, dass Pods als relativ kurzlebige Einweg-Einheiten konzipiert sind. Wann Ein Pod erstellt wird (entweder direkt von Ihnen oder indirekt von einem @@ -145,16 +144,16 @@ eines Pods verwechselt werden. Ein Pod ist kein Prozess, sondern eine Umgebung zur Ausführung von Containern. Ein Pod bleibt bestehen bis er gelöscht wird. {{< /note >}} -Stellen Sie beim Erstellen des Manifests für ein Pod-Objekt sicher, dass der +Stelle beim Erstellen des Manifests für ein Pod-Objekt sicher, dass der angegebene Name ein gültiger [DNS-Subdomain-Name](/docs/concepts/overview/working-with-objects/names#dns-subdomain-names) ist. ### Pods und Controller -Mit Workload-Ressourcen können Sie mehrere Pods erstellen und verwalten. Ein +Mit Workload-Ressourcen kannst du mehrere Pods erstellen und verwalten. Ein Controller für die Ressource kümmert sich um Replikation, Roll-Out sowie -automatische Heilung im Fall von Podfehlern. Wenn beispielsweise ein Node +automatische Wiederherstellung im Fall von versagenden Pods. Wenn beispielsweise ein Node ausfällt, bemerkt ein Controller, dass die Pods auf dem Node nicht mehr laufen und plant die Ausführung eines Ersatzpods auf einem funktionierenden Node. Hier sind einige Beispiele für Workload-Ressourcen, die einen oder mehrere Pods @@ -164,22 +163,22 @@ verwalten: * {{< glossary_tooltip text="StatefulSet" term_id="statefulset" >}} * {{< glossary_tooltip text="DaemonSet" term_id="daemonset" >}} -### Podvorlagen +### Pod Vorlagen Controller für {{}}-Ressourcen -erstellen Pods von einer _Podvorlage_ und verwalten diese Pods für sie. +erstellen Pods von einer _Pod Vorlage_ und verwalten diese Pods für dich. -Podvorlagen sind Spezifikationen zum Erstellen von Pods und sind in +Pod Vorlagen sind Spezifikationen zum Erstellen von Pods und sind in Workload-Ressourcen enthalten wie z. B. [Deployments](/docs/concepts/workloads/controllers/deployment/), [Jobs](/docs/concepts/workloads/controllers/job/), and [DaemonSets](/docs/concepts/workloads/controllers/daemonset/). -Jeder Controller für eine Workload-Ressource verwendet die Podvorlage innerhalb -des Workload-Objektes, um Pods zu erzeugen. Die Podvorlage ist Teil des -gewünschten Zustands der Workload-Ressource, mit der Sie Ihre Anwendung -ausgeführt haben. +Jeder Controller für eine Workload-Ressource verwendet die Pod Vorlage innerhalb +des Workload-Objektes, um Pods zu erzeugen. Die Pod Vorlage ist Teil des +gewünschten Zustands der Workload-Ressource, mit der du deine Anwendung +ausgeführt hast. Das folgende Beispiel ist ein Manifest für einen einfachen Job mit einer `Vorlage`, die einen Container startet. Der Container in diesem Pod druckt @@ -192,37 +191,37 @@ metadata: name: hello spec: template: - # Dies is the Podvorlage + # Dies is the Pod Vorlage spec: containers: - name: hello image: busybox command: ['sh', '-c', 'echo "Hello, Kubernetes!" && sleep 3600'] restartPolicy: OnFailure - # Die Podvorlage endet hier + # Die Pod Vorlage endet hier ``` -Das Ändern der Podvorlage oder der Wechsel zu einer neuen Podvorlage hat keine -direkten Auswirkungen auf bereits existierende Pods. Wenn Sie die Podvorlage für -eine Workload-Ressource ändern, dann muss diese Ressource die Ersatz-Pods +Das Ändern der Pod Vorlage oder der Wechsel zu einer neuen Pod Vorlage hat keine +direkten Auswirkungen auf bereits existierende Pods. Wenn du die Pod Vorlage für +eine Workload-Ressource änderst, dann muss diese Ressource die Ersatz-Pods erstellen, welche die aktualisierte Vorlage verwenden. Beispielsweise stellt der StatefulSet-Controller sicher, dass für jedes -StatefulSet-Objekt die ausgeführten Pods mit der aktueller Podvorlage -übereinstimmen. Wenn Sie das StatefulSet bearbeiten und die Vorlage ändern, +StatefulSet-Objekt die ausgeführten Pods mit der aktueller Pod Vorlage +übereinstimmen. Wenn du das StatefulSet bearbeitest und die Vorlage änderst, beginnt das StatefulSet mit der Erstellung neuer Pods basierend auf der aktualisierten Vorlage. Schließlich werden alle alten Pods durch neue Pods ersetzt, und das Update ist abgeschlossen. Jede Workload-Ressource implementiert eigenen Regeln für die Umsetzung von -Änderungen der Podvorlage. Wenn Sie mehr über StatefulSet erfahren möchten, -lesen Sie die Seite +Änderungen der Pod Vorlage. Wenn du mehr über StatefulSet erfahren möchtest, +dann lese die Seite [Update-Strategien](/docs/tutorials/stateful-application/basic-stateful-set/#updating-statefulsets) im Tutorial StatefulSet Basics. Auf Nodes beobachtet oder verwaltet das {{< glossary_tooltip term_id="kubelet" text="Kubelet" >}} -nicht direkt die Details zu Podvorlagen und Updates. Diese Details sind +nicht direkt die Details zu Pod Vorlagen und Updates. Diese Details sind abstrahiert. Die Abstraktion und Trennung von Aufgaben vereinfacht die Systemsemantik und ermöglicht so das Verhalten des Clusters zu ändern ohne vorhandenen Code zu ändern. @@ -230,10 +229,10 @@ vorhandenen Code zu ändern. ## Pod Update und Austausch Wie im vorherigen Abschnitt erwähnt, erstellt der Controller neue Pods basierend -auf der aktualisierten Vorlage, wenn die Podvorlage für eine Workload-Ressource +auf der aktualisierten Vorlage, wenn die Pod Vorlage für eine Workload-Ressource geändert wird anstatt die vorhandenen Pods zu aktualisieren oder zu patchen. -Kubernetes hindert Sie nicht daran, Pods direkt zu verwalten. Es ist möglich, +Kubernetes hindert dich nicht daran, Pods direkt zu verwalten. Es ist möglich, einige Felder eines laufenden Pods zu aktualisieren. Allerdings haben Pod-Aktualisierungsvorgänge wie zum Beispiel [`patch`](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#patch-pod-v1-core), @@ -241,8 +240,8 @@ und [`replace`](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#replace-pod-v1-core) einige Einschränkungen: -- Die meisten Metadaten zu einem Pod können nicht verändert werden. Zum Beispiel können - Sie nicht die Felder `namespace`, `name`, `uid`, oder `creationTimestamp` +- Die meisten Metadaten zu einem Pod können nicht verändert werden. Zum Beispiel kannst + du nicht die Felder `namespace`, `name`, `uid`, oder `creationTimestamp` ändern. Das `generation`-Feld muss eindeutig sein. Es werden nur Aktualisierungen akzeptiert, die den Wert des Feldes inkrementieren. - Wenn das Feld `metadata.deletionTimestamp` gesetzt ist, kann kein neuer @@ -250,7 +249,7 @@ einige Einschränkungen: - Pod-Updates dürfen keine Felder ändern, die Ausnahmen sind `spec.containers[*].image`, `spec.initContainers[*].image`,` spec.activeDeadlineSeconds` oder - `spec.tolerations`. Für `spec.tolerations` können Sie nur neue Einträge + `spec.tolerations`. Für `spec.tolerations` kannnst du nur neue Einträge hinzufügen. - Für `spec.activeDeadlineSeconds` sind nur zwei Änderungen erlaubt: @@ -269,7 +268,7 @@ Ein Pod kann eine Reihe von gemeinsam genutzten Speicher- Container im Pod können auf die gemeinsamen Volumes zugreifen und dadurch Daten austauschen. Volumes ermöglichen auch, dass Daten ohne Verlust gespeichert werden, falls einer der Container neu gestartet werden muss. -Im Kapitel [Datenspeicherung](/docs/concepts/storage/) finden Sie weitere +Im Kapitel [Datenspeicherung](/docs/concepts/storage/) findest du weitere Informationen, wie Kubernetes gemeinsam genutzten Speicher implementiert und Pods zur Verfügung stellt. @@ -321,7 +320,7 @@ _Statische Pods_ werden direkt vom Kubelet-Daemon auf einem bestimmten Node verwaltet ohne dass sie vom {{}} überwacht werden. -. + Die meisten Pods werden von der Kontrollebene verwaltet (z. B. {{< glossary_tooltip text="Deployment" term_id="deployment" >}}). Aber für statische Pods überwacht das Kubelet jeden statischen Pod direkt (und startet @@ -342,16 +341,16 @@ sichtbar sind jedoch von dort nicht gesteuert werden können. ## {{% heading "whatsnext" %}} -* Erfahren Sie mehr über den +* Lerne den [Lebenszyklus eines Pods](/docs/concepts/workloads/pods/pod-lifecycle/). -* Erfahren Sie mehr über [RuntimeClass](/docs/concepts/containers/runtime-class/) - und wie Sie damit verschiedene Pods mit unterschiedlichen - Container-Laufzeitumgebungen konfigurieren können. -* Lesen sie mehr über +* Lerne die [RuntimeClass](/docs/concepts/containers/runtime-class/) + und wie du damit verschiedene Pods mit unterschiedlichen + Container-Laufzeitumgebungen konfigurieren kannst. +* Lese [Restriktionen für die Verteilung von Pods](/docs/concepts/workloads/pods/pod-topology-spread-constraints/). -* Lesen sie mehr über sogenannte - [Pod-Disruption-Budgets](/docs/concepts/workloads/pods/disruptions/) - und wie Sie diese verwenden können, um die Verfügbarkeit von Anwendungen bei +* Lese + [Pod-Disruption-Budget](/docs/concepts/workloads/pods/disruptions/) + und wie du es verwenden kannst, um die Verfügbarkeit von Anwendungen bei Störungen zu verwalten. Die [Pod](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#pod-v1-core) -Objektdefinition beschreibt das Objekt im Detail. @@ -362,7 +361,7 @@ Um den Hintergrund zu verstehen, warum Kubernetes eine gemeinsame Pod-API in andere Ressourcen, wie z. B. {{< glossary_tooltip text="StatefulSets" term_id="statefulset" >}} oder {{< glossary_tooltip text="Deployments" term_id="deployment" >}} einbindet, -können sie Artikel zu früheren Technologien lesen, unter anderem: +kannst du Artikel zu früheren Technologien lesen, unter anderem: * [Aurora](https://aurora.apache.org/documentation/latest/reference/configuration/#job-schema) * [Borg](https://research.google.com/pubs/pub43438.html) * [Marathon](https://mesosphere.github.io/marathon/docs/rest-api.html) From 29520dbf08d7171bef0d38fee19b6300176a55f2 Mon Sep 17 00:00:00 2001 From: Kobayashi Date: Wed, 17 Feb 2021 17:34:57 +0900 Subject: [PATCH 031/788] Copy file "docs/contribute/perticipate/_index.md" to translate --- .../ja/docs/contribute/perticipate/_index.md | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 content/ja/docs/contribute/perticipate/_index.md diff --git a/content/ja/docs/contribute/perticipate/_index.md b/content/ja/docs/contribute/perticipate/_index.md new file mode 100644 index 0000000000..6a86326945 --- /dev/null +++ b/content/ja/docs/contribute/perticipate/_index.md @@ -0,0 +1,120 @@ +--- +title: Participating in SIG Docs +content_type: concept +weight: 60 +card: + name: contribute + weight: 60 +--- + + + +SIG Docs is one of the +[special interest groups](https://github.com/kubernetes/community/blob/master/sig-list.md) +within the Kubernetes project, focused on writing, updating, and maintaining +the documentation for Kubernetes as a whole. See +[SIG Docs from the community github repo](https://github.com/kubernetes/community/tree/master/sig-docs) +for more information about the SIG. + +SIG Docs welcomes content and reviews from all contributors. Anyone can open a +pull request (PR), and anyone is welcome to file issues about content or comment +on pull requests in progress. + +You can also become a [member](/docs/contribute/participate/roles-and-responsibilities/#members), +[reviewer](/docs/contribute/participate/roles-and-responsibilities/#reviewers), or +[approver](/docs/contribute/participate/roles-and-responsibilities/#approvers). +These roles require greater access and entail certain responsibilities for +approving and committing changes. See +[community-membership](https://github.com/kubernetes/community/blob/master/community-membership.md) +for more information on how membership works within the Kubernetes community. + +The rest of this document outlines some unique ways these roles function within +SIG Docs, which is responsible for maintaining one of the most public-facing +aspects of Kubernetes -- the Kubernetes website and documentation. + + + +## SIG Docs chairperson + +Each SIG, including SIG Docs, selects one or more SIG members to act as +chairpersons. These are points of contact between SIG Docs and other parts of +the Kubernetes organization. They require extensive knowledge of the structure +of the Kubernetes project as a whole and how SIG Docs works within it. See +[Leadership](https://github.com/kubernetes/community/tree/master/sig-docs#leadership) +for the current list of chairpersons. + +## SIG Docs teams and automation + +Automation in SIG Docs relies on two different mechanisms: +GitHub teams and OWNERS files. + +### GitHub teams + +There are two categories of SIG Docs [teams](https://github.com/orgs/kubernetes/teams?query=sig-docs) on GitHub: + +- `@sig-docs-{language}-owners` are approvers and leads +- `@sig-docs-{language}-reviewers` are reviewers + +Each can be referenced with their `@name` in GitHub comments to communicate with +everyone in that group. + +Sometimes Prow and GitHub teams overlap without matching exactly. For +assignment of issues, pull requests, and to support PR approvals, the +automation uses information from `OWNERS` files. + +### OWNERS files and front-matter + +The Kubernetes project uses an automation tool called prow for automation +related to GitHub issues and pull requests. The +[Kubernetes website repository](https://github.com/kubernetes/website) uses +two [prow plugins](https://github.com/kubernetes/test-infra/tree/master/prow/plugins): + +- blunderbuss +- approve + +These two plugins use the +[OWNERS](https://github.com/kubernetes/website/blob/master/OWNERS) and +[OWNERS_ALIASES](https://github.com/kubernetes/website/blob/master/OWNERS_ALIASES) +files in the top level of the `kubernetes/website` GitHub repository to control +how prow works within the repository. + +An OWNERS file contains a list of people who are SIG Docs reviewers and +approvers. OWNERS files can also exist in subdirectories, and can override who +can act as a reviewer or approver of files in that subdirectory and its +descendants. For more information about OWNERS files in general, see +[OWNERS](https://github.com/kubernetes/community/blob/master/contributors/guide/owners.md). + +In addition, an individual Markdown file can list reviewers and approvers in its +front-matter, either by listing individual GitHub usernames or GitHub groups. + +The combination of OWNERS files and front-matter in Markdown files determines +the advice PR owners get from automated systems about who to ask for technical +and editorial review of their PR. + +## How merging works + +When a pull request is merged to the branch used to publish content, that content is published to http://kubernetes.io. To ensure that +the quality of our published content is high, we limit merging pull requests to +SIG Docs approvers. Here's how it works. + +- When a pull request has both the `lgtm` and `approve` labels, has no `hold` + labels, and all tests are passing, the pull request merges automatically. +- Kubernetes organization members and SIG Docs approvers can add comments to + prevent automatic merging of a given pull request (by adding a `/hold` comment + or withholding a `/lgtm` comment). +- Any Kubernetes member can add the `lgtm` label by adding a `/lgtm` comment. +- Only SIG Docs approvers can merge a pull request + by adding an `/approve` comment. Some approvers also perform additional + specific roles, such as [PR Wrangler](/docs/contribute/participate/pr-wranglers/) or + [SIG Docs chairperson](#sig-docs-chairperson). + + + +## {{% heading "whatsnext" %}} + + +For more information about contributing to the Kubernetes documentation, see: + +- [Contributing new content](/docs/contribute/new-content/overview/) +- [Reviewing content](/docs/contribute/review/reviewing-prs) +- [Documentation style guide](/docs/contribute/style/) From 6a166cf5112b1b492ef7de6473a8440a1faf943b Mon Sep 17 00:00:00 2001 From: Mike Patterson Date: Wed, 17 Feb 2021 17:34:31 -0800 Subject: [PATCH 032/788] Update content/en/docs/reference/access-authn-authz/certificate-signing-requests.md Co-authored-by: Irvi Aini <7439590+irvifa@users.noreply.github.com> --- .../access-authn-authz/certificate-signing-requests.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/en/docs/reference/access-authn-authz/certificate-signing-requests.md b/content/en/docs/reference/access-authn-authz/certificate-signing-requests.md index 045b1661aa..cee4342ddf 100644 --- a/content/en/docs/reference/access-authn-authz/certificate-signing-requests.md +++ b/content/en/docs/reference/access-authn-authz/certificate-signing-requests.md @@ -255,7 +255,7 @@ The certificate value is in Base64-encoded format under `status.certificate`. Export the issued certificate from the CertificateSigningRequest. ``` -kubectl get csr john -o jsonpath='{.status.certificate}'| base64 -d > /home/vagrant/work/john.crt +kubectl get csr john -o jsonpath='{.status.certificate}'| base64 -d > certificate.crt ``` ### Create Role and RoleBinding @@ -444,4 +444,3 @@ status: * View the source code for the kube-controller-manager built in [approver](https://github.com/kubernetes/kubernetes/blob/32ec6c212ec9415f604ffc1f4c1f29b782968ff1/pkg/controller/certificates/approver/sarapprove.go) * For details of X.509 itself, refer to [RFC 5280](https://tools.ietf.org/html/rfc5280#section-3.1) section 3.1 * For information on the syntax of PKCS#10 certificate signing requests, refer to [RFC 2986](https://tools.ietf.org/html/rfc2986) - From 99c69c1bcc887bd6774d43ea6638139742f48d9d Mon Sep 17 00:00:00 2001 From: Kobayashi Date: Thu, 18 Feb 2021 14:06:13 +0900 Subject: [PATCH 033/788] Translate docs/contribute/participate/ into Japanese. --- .../ja/docs/contribute/participate/_index.md | 102 +++++++++++++++ .../ja/docs/contribute/perticipate/_index.md | 120 ------------------ 2 files changed, 102 insertions(+), 120 deletions(-) create mode 100644 content/ja/docs/contribute/participate/_index.md delete mode 100644 content/ja/docs/contribute/perticipate/_index.md diff --git a/content/ja/docs/contribute/participate/_index.md b/content/ja/docs/contribute/participate/_index.md new file mode 100644 index 0000000000..d1f39eaffa --- /dev/null +++ b/content/ja/docs/contribute/participate/_index.md @@ -0,0 +1,102 @@ +--- +title: SIG Docsへの参加 +content_type: concept +weight: 60 +card: + name: contribute + weight: 60 +--- + + + +SIG Docsは、Kubernetesプロジェクト内の +[special interest groups](https://github.com/kubernetes/community/blob/master/sig-list.md)の1つであり、 +Kubernetes全体のドキュメントの作成、更新、および保守に重点を置いています。 +SIGの詳細については、[SIG DocsのGithubリポジトリ](https://github.com/kubernetes/community/blob/master/sig-list.md)を参照してください。 + +SIG Docsは、すべての寄稿者からのコンテンツとレビューを歓迎します。 +誰でもPull Request(PR)を開くことができ、コンテンツに関するissueを提出したり、進行中のPull Requestにコメントしたりできます。 + +あなたは、[member](/docs/contribute/participate/roles-and-responsibilities/#members)や、 +[reviewer](/docs/contribute/participate/roles-and-responsibilities/#reviewers)、 +[approver](/docs/contribute/participate/roles-and-responsibilities/#approvers)になることもできます。 +これらの役割にはより多くのアクセスが必要であり、変更を承認およびコミットするための特定の責任が伴います。 +Kubernetesコミュニティ内でメンバーシップがどのように機能するかについての詳細は、 +[community-membership](https://github.com/kubernetes/community/blob/master/community-membership.md) +をご覧ください。 + +このドキュメントの残りの部分では、kubernetesの中で最も広く公開されている +Kubernetesのウェブサイトとドキュメントの管理を担当しているSIG Docsの中で、これらの役割がどのように機能するのかを概説します。 + + + + +## SIG Docs chairperson + +SIG Docsを含む各SIGは、議長として機能する1人以上のSIGメンバーを選択します。 +これらは、SIGDocsとKubernetes organizationの他の部分との連絡先です。 +それらには、Kubernetesプロジェクト全体の構造と、SIG Docsがその中でどのように機能するかについての広範な知識が必要です。 +現在のchairpersonのリストについては、 +[Leadership](https://github.com/kubernetes/community/tree/master/sig-docs#leadership) +を参照してください。 + +## SIG Docs teamsと自動化 + +SIG Docsの自動化は、GitHub teamsとOWNERSファイルの2つの異なるメカニズムに依存しています。 + +### GitHub teams + +GitHubには、SIG Docs +[teams](https://github.com/orgs/kubernetes/teams?query=sig-docs) +の二つのカテゴリがあります。: + +- `@sig-docs-{language}-owners`は承認者かつリードです。 +- `@sig-docs-{language}-reviewers` はレビュアーです。 + +それぞれをGitHubコメントの`@name`で参照して、そのグループの全員とコミュニケーションできます。 + +ProwチームとGitHub teamsが完全に一致せずに重複する場合があります。 +問題の割り当て、Pull Request、およびPR承認のサポートのために、自動化ではOWNERSファイルからの情報を使用します。 + +### OWNERSファイルとfront-matter + +Kubernetesプロジェクトは、GitHubのissueとPull Requestに関連する自動化のためにprowと呼ばれる自動化ツールを使用します。 +[Kubernetes Webサイトリポジトリ](https://github.com/kubernetes/website) +は、2つの[prowプラグイン](https://github.com/kubernetes/test-infra/tree/master/prow/plugins)を使用します。: + +- blunderbuss +- approve + +これらの2つのプラグインは`kubernetes.website`のGithubリポジトリのトップレベルにある +[OWNERS](https://github.com/kubernetes/website/blob/master/OWNERS)ファイルと、 +[OWNERS_ALIASES](https://github.com/kubernetes/website/blob/master/OWNERS_ALIASES)ファイルを使用して、 +リポジトリ内でのplowの動作を制御します。 + +OWNERSファイルには、SIG Docsのレビュー担当者および承認者であるユーザーのリストが含まれています。 +OWNERSファイルはサブディレクトリに存在することもでき、そのサブディレクトリとその子孫のファイルのレビュー担当者または承認者として機能できるユーザーを上書きできます。 +一般的なOWNERSファイルの詳細については、 +[OWNERS](https://github.com/kubernetes/community/blob/master/contributors/guide/owners.md)を参照してください。 + +さらに、個々のMarkdownファイルは、個々のGitHubユーザー名またはGitHubグループを一覧表示することにより、そのfront-matterでレビュー担当者と承認者を一覧表示できます。 + +OWNERSファイルとMarkdownファイルのfront-matterの組み合わせにより、PRの技術的および編集上のレビューを誰に依頼するかについてPRの所有者が自動化システムから得るアドバイスが決まります。 + +## マージの仕組み + +Pull Requestがコンテンツの公開に使用されるブランチにマージされると、そのコンテンツは http://kubernetes.io に公開されます。 +公開されたコンテンツの品質を高くするために、Pull RequestのマージはSIG Docsの承認者に限定しています。仕組みは次のとおりです。 + +- Pull Requestに`lgtm`ラベルと`approve`ラベルの両方があり、`hold`ラベルがなく、すべてのテストに合格すると、Pull Requestは自動的にマージされます。 +- Kubernetes organizationのメンバーとSIG Docsの承認者はコメントを追加して、特定のPull Requestが自動的にマージされないようにすることができます(`/hold`コメントを追加するか、`/lgtm`コメントを保留します)。 +- Kubernetesメンバーは誰でも、`/lgtm`コメントを追加することで`lgtm`ラベルを追加できます。 +- `/approve`コメントを追加してPull Requestをマージできるのは、SIG Docsの承認者だけです。一部の承認者は、[PR Wrangler](/docs/contribute/participate/pr-wranglers/)や[SIG Docsのchairperson](#sig-docs-chairperson)など、追加の特定の役割も実行します。 + + + +## {{% heading "whatsnext" %}} + +Kubernetesドキュメントへの貢献の詳細については、以下を参照してください。: + +- [Contributing new content](/docs/contribute/new-content/overview/) +- [Reviewing content](/docs/contribute/review/reviewing-prs) +- [ドキュメントスタイルの概要](/ja/docs/contribute/style/) diff --git a/content/ja/docs/contribute/perticipate/_index.md b/content/ja/docs/contribute/perticipate/_index.md deleted file mode 100644 index 6a86326945..0000000000 --- a/content/ja/docs/contribute/perticipate/_index.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: Participating in SIG Docs -content_type: concept -weight: 60 -card: - name: contribute - weight: 60 ---- - - - -SIG Docs is one of the -[special interest groups](https://github.com/kubernetes/community/blob/master/sig-list.md) -within the Kubernetes project, focused on writing, updating, and maintaining -the documentation for Kubernetes as a whole. See -[SIG Docs from the community github repo](https://github.com/kubernetes/community/tree/master/sig-docs) -for more information about the SIG. - -SIG Docs welcomes content and reviews from all contributors. Anyone can open a -pull request (PR), and anyone is welcome to file issues about content or comment -on pull requests in progress. - -You can also become a [member](/docs/contribute/participate/roles-and-responsibilities/#members), -[reviewer](/docs/contribute/participate/roles-and-responsibilities/#reviewers), or -[approver](/docs/contribute/participate/roles-and-responsibilities/#approvers). -These roles require greater access and entail certain responsibilities for -approving and committing changes. See -[community-membership](https://github.com/kubernetes/community/blob/master/community-membership.md) -for more information on how membership works within the Kubernetes community. - -The rest of this document outlines some unique ways these roles function within -SIG Docs, which is responsible for maintaining one of the most public-facing -aspects of Kubernetes -- the Kubernetes website and documentation. - - - -## SIG Docs chairperson - -Each SIG, including SIG Docs, selects one or more SIG members to act as -chairpersons. These are points of contact between SIG Docs and other parts of -the Kubernetes organization. They require extensive knowledge of the structure -of the Kubernetes project as a whole and how SIG Docs works within it. See -[Leadership](https://github.com/kubernetes/community/tree/master/sig-docs#leadership) -for the current list of chairpersons. - -## SIG Docs teams and automation - -Automation in SIG Docs relies on two different mechanisms: -GitHub teams and OWNERS files. - -### GitHub teams - -There are two categories of SIG Docs [teams](https://github.com/orgs/kubernetes/teams?query=sig-docs) on GitHub: - -- `@sig-docs-{language}-owners` are approvers and leads -- `@sig-docs-{language}-reviewers` are reviewers - -Each can be referenced with their `@name` in GitHub comments to communicate with -everyone in that group. - -Sometimes Prow and GitHub teams overlap without matching exactly. For -assignment of issues, pull requests, and to support PR approvals, the -automation uses information from `OWNERS` files. - -### OWNERS files and front-matter - -The Kubernetes project uses an automation tool called prow for automation -related to GitHub issues and pull requests. The -[Kubernetes website repository](https://github.com/kubernetes/website) uses -two [prow plugins](https://github.com/kubernetes/test-infra/tree/master/prow/plugins): - -- blunderbuss -- approve - -These two plugins use the -[OWNERS](https://github.com/kubernetes/website/blob/master/OWNERS) and -[OWNERS_ALIASES](https://github.com/kubernetes/website/blob/master/OWNERS_ALIASES) -files in the top level of the `kubernetes/website` GitHub repository to control -how prow works within the repository. - -An OWNERS file contains a list of people who are SIG Docs reviewers and -approvers. OWNERS files can also exist in subdirectories, and can override who -can act as a reviewer or approver of files in that subdirectory and its -descendants. For more information about OWNERS files in general, see -[OWNERS](https://github.com/kubernetes/community/blob/master/contributors/guide/owners.md). - -In addition, an individual Markdown file can list reviewers and approvers in its -front-matter, either by listing individual GitHub usernames or GitHub groups. - -The combination of OWNERS files and front-matter in Markdown files determines -the advice PR owners get from automated systems about who to ask for technical -and editorial review of their PR. - -## How merging works - -When a pull request is merged to the branch used to publish content, that content is published to http://kubernetes.io. To ensure that -the quality of our published content is high, we limit merging pull requests to -SIG Docs approvers. Here's how it works. - -- When a pull request has both the `lgtm` and `approve` labels, has no `hold` - labels, and all tests are passing, the pull request merges automatically. -- Kubernetes organization members and SIG Docs approvers can add comments to - prevent automatic merging of a given pull request (by adding a `/hold` comment - or withholding a `/lgtm` comment). -- Any Kubernetes member can add the `lgtm` label by adding a `/lgtm` comment. -- Only SIG Docs approvers can merge a pull request - by adding an `/approve` comment. Some approvers also perform additional - specific roles, such as [PR Wrangler](/docs/contribute/participate/pr-wranglers/) or - [SIG Docs chairperson](#sig-docs-chairperson). - - - -## {{% heading "whatsnext" %}} - - -For more information about contributing to the Kubernetes documentation, see: - -- [Contributing new content](/docs/contribute/new-content/overview/) -- [Reviewing content](/docs/contribute/review/reviewing-prs) -- [Documentation style guide](/docs/contribute/style/) From f54652f29b303e68705c063eeaded9247d3d6e95 Mon Sep 17 00:00:00 2001 From: Ricardo Katz Date: Fri, 19 Feb 2021 00:53:42 -0300 Subject: [PATCH 034/788] Propose Yago and Ricardo as pt approvers --- OWNERS_ALIASES | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/OWNERS_ALIASES b/OWNERS_ALIASES index 01894721d1..4883589bfa 100644 --- a/OWNERS_ALIASES +++ b/OWNERS_ALIASES @@ -178,11 +178,15 @@ aliases: - jcjesus - devlware - jhonmike + - rikatz + - yagonobre sig-docs-pt-reviews: # PR reviews for Portugese content - femrtnz - jcjesus - devlware - jhonmike + - rikatz + - yagonobre sig-docs-vi-owners: # Admins for Vietnamese content - huynguyennovem - ngtuna From fd116f4187c3d3e4a9d89e667d1d59d9072c5b81 Mon Sep 17 00:00:00 2001 From: Kobayashi Date: Fri, 19 Feb 2021 14:17:57 +0900 Subject: [PATCH 035/788] =?UTF-8?q?Delete=20unnecessary=20"=20=E3=80=82".?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/ja/docs/contribute/participate/_index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/ja/docs/contribute/participate/_index.md b/content/ja/docs/contribute/participate/_index.md index d1f39eaffa..9e79bf0b98 100644 --- a/content/ja/docs/contribute/participate/_index.md +++ b/content/ja/docs/contribute/participate/_index.md @@ -48,7 +48,7 @@ SIG Docsの自動化は、GitHub teamsとOWNERSファイルの2つの異なる GitHubには、SIG Docs [teams](https://github.com/orgs/kubernetes/teams?query=sig-docs) -の二つのカテゴリがあります。: +の二つのカテゴリがあります: - `@sig-docs-{language}-owners`は承認者かつリードです。 - `@sig-docs-{language}-reviewers` はレビュアーです。 @@ -62,7 +62,7 @@ ProwチームとGitHub teamsが完全に一致せずに重複する場合があ Kubernetesプロジェクトは、GitHubのissueとPull Requestに関連する自動化のためにprowと呼ばれる自動化ツールを使用します。 [Kubernetes Webサイトリポジトリ](https://github.com/kubernetes/website) -は、2つの[prowプラグイン](https://github.com/kubernetes/test-infra/tree/master/prow/plugins)を使用します。: +は、2つの[prowプラグイン](https://github.com/kubernetes/test-infra/tree/master/prow/plugins)を使用します: - blunderbuss - approve @@ -95,7 +95,7 @@ Pull Requestがコンテンツの公開に使用されるブランチにマー ## {{% heading "whatsnext" %}} -Kubernetesドキュメントへの貢献の詳細については、以下を参照してください。: +Kubernetesドキュメントへの貢献の詳細については、以下を参照してください: - [Contributing new content](/docs/contribute/new-content/overview/) - [Reviewing content](/docs/contribute/review/reviewing-prs) From ce2e5f87967615723b599da334e02e6c917df4b5 Mon Sep 17 00:00:00 2001 From: Tim Allclair Date: Fri, 19 Feb 2021 12:19:07 -0800 Subject: [PATCH 036/788] Add PSP to the deprecation guide --- .../docs/reference/using-api/deprecation-guide.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/content/en/docs/reference/using-api/deprecation-guide.md b/content/en/docs/reference/using-api/deprecation-guide.md index ee8328cbdd..1f3d7a9b49 100755 --- a/content/en/docs/reference/using-api/deprecation-guide.md +++ b/content/en/docs/reference/using-api/deprecation-guide.md @@ -49,6 +49,13 @@ RuntimeClass in the **node.k8s.io/v1beta1** API version will no longer be served * All existing persisted objects are accessible via the new API * No notable changes +#### PodSecurityPolicy {#psp-v125} + +PodSecurityPolicy in the **policy/v1beta1** API version will no longer be served in v1.25, and the PodSecurityPolicy admission controller will be removed. + +PodSecurityPolicy replacements are still under discussion, but current use can be migrated to +[3rd-party admission webhooks](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/) now. + ### v1.22 The **v1.22** release will stop serving the following deprecated API versions: @@ -234,6 +241,13 @@ The **extensions/v1beta1**, **apps/v1beta1**, and **apps/v1beta2** API versions * Notable changes: * `spec.selector` is now required and immutable after creation; use the existing template labels as the selector for seamless upgrades +#### PodSecurityPolicy {#psp-v116} + +The **extensions/v1beta1** API version of PodSecurityPolicy is no longer served as of v1.16. + +* Migrate manifests and API client to use the **policy/v1beta1** API version, available since v1.10. +* Note that the **policy/v1beta1** API version of PodSecurityPolicy will be removed in v1.25. + ## What to do ### Test with deprecated APIs disabled From 67a342aae3543374eddbd991b2833bc68b83384e Mon Sep 17 00:00:00 2001 From: Mike Patterson Date: Fri, 19 Feb 2021 13:18:53 -0800 Subject: [PATCH 037/788] Update certificate-signing-requests.md Maintain original docs `/home/vagrant/work/`working directory to be consistent. --- .../access-authn-authz/certificate-signing-requests.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/reference/access-authn-authz/certificate-signing-requests.md b/content/en/docs/reference/access-authn-authz/certificate-signing-requests.md index cee4342ddf..18a1afa2d0 100644 --- a/content/en/docs/reference/access-authn-authz/certificate-signing-requests.md +++ b/content/en/docs/reference/access-authn-authz/certificate-signing-requests.md @@ -253,9 +253,10 @@ kubectl get csr/john -o yaml The certificate value is in Base64-encoded format under `status.certificate`. Export the issued certificate from the CertificateSigningRequest. +This example assumes the key and certificate files are located at "/home/vagrant/work/". ``` -kubectl get csr john -o jsonpath='{.status.certificate}'| base64 -d > certificate.crt +kubectl get csr john -o jsonpath='{.status.certificate}'| base64 -d > /home/vagrant/work/john.crt ``` ### Create Role and RoleBinding @@ -278,7 +279,6 @@ kubectl create rolebinding developer-binding-john --role=developer --user=john ### Add to kubeconfig The last step is to add this user into the kubeconfig file. -This example assumes the key and certificate files are located at "/home/vagrant/work/". First, you need to add new credentials: From 6ea8ce102c3678147f4bc2f830fe87883c5d162f Mon Sep 17 00:00:00 2001 From: Michael Nikitochkin Date: Wed, 23 Sep 2020 18:50:02 +0200 Subject: [PATCH 038/788] Use apiversion networking.k8s.io/v1 for ingress for JA There is a warning deprecation message for kubernetes v1.19: ``` Warning: networking.k8s.io/v1beta1 Ingress is deprecated in v1.19+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress ``` Switched apiversion in the example to `networking.k8s.io/v1` --- .../ingress-minikube.md | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/content/ja/docs/tasks/access-application-cluster/ingress-minikube.md b/content/ja/docs/tasks/access-application-cluster/ingress-minikube.md index 563ce2478e..5870186330 100644 --- a/content/ja/docs/tasks/access-application-cluster/ingress-minikube.md +++ b/content/ja/docs/tasks/access-application-cluster/ingress-minikube.md @@ -135,7 +135,7 @@ weight: 100 1. 以下の内容で`example-ingress.yaml`を作成します。 ```yaml - apiVersion: networking.k8s.io/v1beta1 + apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress @@ -147,9 +147,12 @@ weight: 100 http: paths: - path: / + pathType: Prefix backend: - serviceName: web - servicePort: 8080 + service: + name: web + port: + number: 8080 ``` 1. 次のコマンドを実行して、Ingressリソースを作成します。 @@ -175,8 +178,8 @@ weight: 100 {{< /note >}} ```shell - NAME HOSTS ADDRESS PORTS AGE - example-ingress hello-world.info 172.17.0.15 80 38s + NAME CLASS HOSTS ADDRESS PORTS AGE + example-ingress hello-world.info 172.17.0.15 80 38s ``` 1. 次の行を`/etc/hosts`ファイルの最後に書きます。 @@ -241,9 +244,12 @@ weight: 100 ```yaml - path: /v2 + pathType: Prefix backend: - serviceName: web2 - servicePort: 8080 + service: + name: web2 + port: + number: 8080 ``` 1. 次のコマンドで変更を適用します。 From 872e88625dda4d2aa60b7db3afae68bb75e3951b Mon Sep 17 00:00:00 2001 From: Michael Nikitochkin Date: Sat, 20 Feb 2021 00:02:59 +0100 Subject: [PATCH 039/788] [ja] Update the examples with source code and sync with en version --- .../ingress-minikube.md | 26 ++----------------- .../service/networking/example-ingress.yaml | 18 +++++++++++++ 2 files changed, 20 insertions(+), 24 deletions(-) create mode 100644 content/ja/examples/service/networking/example-ingress.yaml diff --git a/content/ja/docs/tasks/access-application-cluster/ingress-minikube.md b/content/ja/docs/tasks/access-application-cluster/ingress-minikube.md index 5870186330..be26708099 100644 --- a/content/ja/docs/tasks/access-application-cluster/ingress-minikube.md +++ b/content/ja/docs/tasks/access-application-cluster/ingress-minikube.md @@ -134,31 +134,12 @@ weight: 100 1. 以下の内容で`example-ingress.yaml`を作成します。 - ```yaml - apiVersion: networking.k8s.io/v1 - kind: Ingress - metadata: - name: example-ingress - annotations: - nginx.ingress.kubernetes.io/rewrite-target: /$1 - spec: - rules: - - host: hello-world.info - http: - paths: - - path: / - pathType: Prefix - backend: - service: - name: web - port: - number: 8080 - ``` + {{< codenew file="service/networking/example-ingress.yaml" >}} 1. 次のコマンドを実行して、Ingressリソースを作成します。 ```shell - kubectl apply -f example-ingress.yaml + kubectl apply -f https://kubernetes.io/examples/service/networking/example-ingress.yaml ``` 出力は次のようになります。 @@ -306,6 +287,3 @@ weight: 100 * [Ingress](/ja/docs/concepts/services-networking/ingress/)についてさらに学ぶ。 * [Ingressコントローラー](/ja/docs/concepts/services-networking/ingress-controllers/)についてさらに学ぶ。 * [Service](/ja/docs/concepts/services-networking/service/)についてさらに学ぶ。 - - - diff --git a/content/ja/examples/service/networking/example-ingress.yaml b/content/ja/examples/service/networking/example-ingress.yaml new file mode 100644 index 0000000000..b309d13275 --- /dev/null +++ b/content/ja/examples/service/networking/example-ingress.yaml @@ -0,0 +1,18 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: example-ingress + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /$1 +spec: + rules: + - host: hello-world.info + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: web + port: + number: 8080 \ No newline at end of file From 2d781049659fb1010690cd895532c551786f9659 Mon Sep 17 00:00:00 2001 From: "Yuk, Yongsu" Date: Sun, 21 Feb 2021 03:24:39 +0900 Subject: [PATCH 040/788] Update to Outdated files in dev-1.20-ko.5 branch (3) --- .../change-default-storage-class.md | 2 +- .../pull-image-private-registry.md | 16 +- .../configure-pod-container/static-pod.md | 1 + .../logging-elasticsearch-kibana.md | 121 ----- .../tasks/extend-kubectl/kubectl-plugins.md | 24 +- .../coarse-parallel-processing-work-queue.md | 2 +- .../job/parallel-processing-expansion.md | 2 +- .../run-application/delete-stateful-set.md | 2 +- .../horizontal-pod-autoscale.md | 22 +- ...un-single-instance-stateful-application.md | 6 + content/ko/docs/tutorials/_index.md | 2 +- .../ko/docs/tutorials/clusters/apparmor.md | 3 +- .../tutorials/kubernetes-basics/_index.html | 2 +- .../expose/expose-intro.html | 6 - .../basic-stateful-set.md | 11 +- .../stateful-application/zookeeper.md | 55 ++- .../guestbook-logs-metrics-with-elk.md | 457 ------------------ .../stateless-application/guestbook.md | 185 +++---- .../guestbook/frontend-deployment.yaml | 24 +- .../guestbook/frontend-service.yaml | 10 +- .../guestbook/mongo-deployment.yaml | 31 ++ .../application/guestbook/mongo-service.yaml | 14 + .../guestbook/redis-master-deployment.yaml | 29 -- .../guestbook/redis-master-service.yaml | 17 - .../guestbook/redis-slave-deployment.yaml | 40 -- .../guestbook/redis-slave-service.yaml | 15 - 26 files changed, 204 insertions(+), 895 deletions(-) delete mode 100644 content/ko/docs/tasks/debug-application-cluster/logging-elasticsearch-kibana.md delete mode 100644 content/ko/docs/tutorials/stateless-application/guestbook-logs-metrics-with-elk.md create mode 100644 content/ko/examples/application/guestbook/mongo-deployment.yaml create mode 100644 content/ko/examples/application/guestbook/mongo-service.yaml delete mode 100644 content/ko/examples/application/guestbook/redis-master-deployment.yaml delete mode 100644 content/ko/examples/application/guestbook/redis-master-service.yaml delete mode 100644 content/ko/examples/application/guestbook/redis-slave-deployment.yaml delete mode 100644 content/ko/examples/application/guestbook/redis-slave-service.yaml diff --git a/content/ko/docs/tasks/administer-cluster/change-default-storage-class.md b/content/ko/docs/tasks/administer-cluster/change-default-storage-class.md index 8fd7445fb7..08c2e2cef4 100644 --- a/content/ko/docs/tasks/administer-cluster/change-default-storage-class.md +++ b/content/ko/docs/tasks/administer-cluster/change-default-storage-class.md @@ -32,7 +32,7 @@ content_type: task 수도 있다. 이런 경우에, 기본 스토리지 클래스를 변경하거나 완전히 비활성화 하여 스토리지의 동적 프로비저닝을 방지할 수 있다. -단순하게 기본 스토리지클래스를 삭제하는 경우, 사용자의 클러스터에서 구동중인 +기본 스토리지클래스를 삭제하는 경우, 사용자의 클러스터에서 구동 중인 애드온 매니저에 의해 자동으로 다시 생성될 수 있으므로 정상적으로 삭제가 되지 않을 수도 있다. 애드온 관리자 및 개별 애드온을 비활성화 하는 방법에 대한 자세한 내용은 설치 문서를 참조하자. diff --git a/content/ko/docs/tasks/configure-pod-container/pull-image-private-registry.md b/content/ko/docs/tasks/configure-pod-container/pull-image-private-registry.md index 34cb102f83..5a8295aff2 100644 --- a/content/ko/docs/tasks/configure-pod-container/pull-image-private-registry.md +++ b/content/ko/docs/tasks/configure-pod-container/pull-image-private-registry.md @@ -9,18 +9,13 @@ weight: 100 이 페이지는 프라이빗 도커 레지스트리나 리포지터리로부터 이미지를 받아오기 위해 시크릿(Secret)을 사용하는 파드를 생성하는 방법을 보여준다. - - ## {{% heading "prerequisites" %}} - * {{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} * 이 실습을 수행하기 위해, [도커 ID](https://docs.docker.com/docker-id/)와 비밀번호가 필요하다. - - ## 도커 로그인 @@ -106,7 +101,8 @@ kubectl create secret docker-registry regcred --docker-server=` 은 프라이빗 도커 저장소의 FQDN 주소이다. (도커허브(DockerHub)의 경우, https://index.docker.io/v1/) +* `` 은 프라이빗 도커 저장소의 FQDN 주소이다. + 도커허브(DockerHub)는 `https://index.docker.io/v2/` 를 사용한다. * `` 은 도커 사용자의 계정이다. * `` 은 도커 사용자의 비밀번호이다. * `` 은 도커 사용자의 이메일 주소이다. @@ -192,7 +188,8 @@ your.private.registry.example.com/janedoe/jdoe-private:v1 ``` 프라이빗 저장소에서 이미지를 받아오기 위하여, 쿠버네티스에서 자격 증명이 필요하다. -구성 파일의 `imagePullSecrets` 필드를 통해 쿠버네티스가 `regcred` 라는 시크릿으로부터 자격 증명을 가져올 수 있다. +구성 파일의 `imagePullSecrets` 필드를 통해 쿠버네티스가 +`regcred` 라는 시크릿으로부터 자격 증명을 가져올 수 있다. 시크릿을 사용해서 파드를 생성하고, 파드가 실행되는지 확인하자. @@ -201,16 +198,11 @@ kubectl apply -f my-private-reg-pod.yaml kubectl get pod private-reg ``` - - ## {{% heading "whatsnext" %}} - * [시크릿](/ko/docs/concepts/configuration/secret/)에 대해 더 배워 보기. * [프라이빗 레지스트리 사용](/ko/docs/concepts/containers/images/#프라이빗-레지스트리-사용)에 대해 더 배워 보기. * [서비스 어카운트에 풀 시크릿(pull secret) 추가하기](/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account)에 대해 더 배워 보기. * [kubectl create secret docker-registry](/docs/reference/generated/kubectl/kubectl-commands/#-em-secret-docker-registry-em-)에 대해 읽어보기. * [시크릿](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#secret-v1-core)에 대해 읽어보기. * [PodSpec](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#podspec-v1-core)의 `imagePullSecrets` 필드에 대해 읽어보기. - - diff --git a/content/ko/docs/tasks/configure-pod-container/static-pod.md b/content/ko/docs/tasks/configure-pod-container/static-pod.md index 41e1f6f7b0..4daf739c2f 100644 --- a/content/ko/docs/tasks/configure-pod-container/static-pod.md +++ b/content/ko/docs/tasks/configure-pod-container/static-pod.md @@ -22,6 +22,7 @@ Kubelet 은 각각의 스태틱 파드에 대하여 쿠버네티스 API 서버 생성하려고 자동으로 시도한다. 즉, 노드에서 구동되는 파드는 API 서버에 의해서 볼 수 있지만, API 서버에서 제어될 수는 없다. +파드 이름에는 노드 호스트 이름 앞에 하이픈을 붙여 접미사로 추가된다. {{< note >}} 만약 클러스터로 구성된 쿠버네티스를 구동하고 있고, 스태틱 파드를 사용하여 diff --git a/content/ko/docs/tasks/debug-application-cluster/logging-elasticsearch-kibana.md b/content/ko/docs/tasks/debug-application-cluster/logging-elasticsearch-kibana.md deleted file mode 100644 index 54a2ae61b0..0000000000 --- a/content/ko/docs/tasks/debug-application-cluster/logging-elasticsearch-kibana.md +++ /dev/null @@ -1,121 +0,0 @@ ---- -content_type: concept -title: 엘라스틱서치(Elasticsearch) 및 키바나(Kibana)를 사용한 로깅 ---- - - - -Google 컴퓨트 엔진(Compute Engine, GCE) 플랫폼에서, 기본 로깅 지원은 -[스택드라이버(Stackdriver) 로깅](https://cloud.google.com/logging/)을 대상으로 한다. 이는 -[스택드라이버 로깅으로 로깅하기](/docs/tasks/debug-application-cluster/logging-stackdriver)에 자세히 설명되어 있다. - -이 문서에서는 GCE에서 운영할 때 스택드라이버 로깅의 대안으로, -[엘라스틱서치](https://www.elastic.co/products/elasticsearch)에 로그를 수집하고 -[키바나](https://www.elastic.co/products/kibana)를 사용하여 볼 수 있도록 -클러스터를 설정하는 방법에 대해 설명한다. - -{{< note >}} -Google 쿠버네티스 엔진(Kubernetes Engine)에서 호스팅되는 쿠버네티스 클러스터에는 엘라스틱서치 및 키바나를 자동으로 배포할 수 없다. 수동으로 배포해야 한다. -{{< /note >}} - - - - - -클러스터 로깅에 엘라스틱서치, 키바나를 사용하려면 kube-up.sh를 사용하여 -클러스터를 생성할 때 아래와 같이 다음의 환경 변수를 -설정해야 한다. - -```shell -KUBE_LOGGING_DESTINATION=elasticsearch -``` - -또한 `KUBE_ENABLE_NODE_LOGGING=true`(GCE 플랫폼의 기본값)인지 확인해야 한다. - -이제, 클러스터를 만들 때, 각 노드에서 실행되는 Fluentd 로그 수집 데몬이 -엘라스틱서치를 대상으로 한다는 메시지가 나타난다. - -```shell -cluster/kube-up.sh -``` -``` -... -Project: kubernetes-satnam -Zone: us-central1-b -... calling kube-up -Project: kubernetes-satnam -Zone: us-central1-b -+++ Staging server tars to Google Storage: gs://kubernetes-staging-e6d0e81793/devel -+++ kubernetes-server-linux-amd64.tar.gz uploaded (sha1 = 6987c098277871b6d69623141276924ab687f89d) -+++ kubernetes-salt.tar.gz uploaded (sha1 = bdfc83ed6b60fa9e3bff9004b542cfc643464cd0) -Looking for already existing resources -Starting master and configuring firewalls -Created [https://www.googleapis.com/compute/v1/projects/kubernetes-satnam/zones/us-central1-b/disks/kubernetes-master-pd]. -NAME ZONE SIZE_GB TYPE STATUS -kubernetes-master-pd us-central1-b 20 pd-ssd READY -Created [https://www.googleapis.com/compute/v1/projects/kubernetes-satnam/regions/us-central1/addresses/kubernetes-master-ip]. -+++ Logging using Fluentd to elasticsearch -``` - -노드별 Fluentd 파드, 엘라스틱서치 파드 및 키바나 파드는 -클러스터가 활성화된 직후 kube-system 네임스페이스에서 모두 실행되어야 -한다. - -```shell -kubectl get pods --namespace=kube-system -``` -``` -NAME READY STATUS RESTARTS AGE -elasticsearch-logging-v1-78nog 1/1 Running 0 2h -elasticsearch-logging-v1-nj2nb 1/1 Running 0 2h -fluentd-elasticsearch-kubernetes-node-5oq0 1/1 Running 0 2h -fluentd-elasticsearch-kubernetes-node-6896 1/1 Running 0 2h -fluentd-elasticsearch-kubernetes-node-l1ds 1/1 Running 0 2h -fluentd-elasticsearch-kubernetes-node-lz9j 1/1 Running 0 2h -kibana-logging-v1-bhpo8 1/1 Running 0 2h -kube-dns-v3-7r1l9 3/3 Running 0 2h -monitoring-heapster-v4-yl332 1/1 Running 1 2h -monitoring-influx-grafana-v1-o79xf 2/2 Running 0 2h -``` - -`fluentd-elasticsearch` 파드는 각 노드에서 로그를 수집하여 -`elasticsearch-logging` 파드로 전송한다. 이 로그는 `elasticsearch-logging` 이라는 -[서비스](/ko/docs/concepts/services-networking/service/)의 일부이다. 이 -엘라스틱서치 파드는 로그를 저장하고 REST API를 통해 노출한다. -`kibana-logging` 파드는 엘라스틱서치에 저장된 로그를 읽기 위한 웹 UI를 -제공하며, `kibana-logging` 이라는 서비스의 일부이다. - -엘라스틱서치 및 키바나 서비스는 모두 `kube-system` 네임스페이스에 -있으며 공개적으로 접근 가능한 IP 주소를 통해 직접 노출되지 않는다. 이를 위해, -[클러스터에서 실행 중인 서비스 접근](/ko/docs/tasks/access-application-cluster/access-cluster/#클러스터에서-실행되는-서비스로-액세스)에 -대한 지침을 참고한다. - -브라우저에서 `elasticsearch-logging` 서비스에 접근하려고 하면, -다음과 같은 상태 페이지가 표시된다. - -![엘라스틱서치 상태](/images/docs/es-browser.png) - -원할 경우, 이제 엘라스틱서치 쿼리를 브라우저에 직접 입력할 수 -있다. 수행 방법에 대한 자세한 내용은 [엘라스틱서치의 문서](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-uri-request.html)를 -참조한다. - -또는, 키바나를 사용하여 클러스터의 로그를 볼 수도 있다(다시 -[클러스터에서 실행되는 서비스에 접근하기 위한 지침](/ko/docs/tasks/access-application-cluster/access-cluster/#클러스터에서-실행되는-서비스로-액세스)을 참고). -키바나 URL을 처음 방문하면 수집된 로그 보기를 -구성하도록 요청하는 페이지가 표시된다. 시계열 값에 -대한 옵션을 선택하고 `@timestamp` 를 선택한다. 다음 페이지에서 -`Discover` 탭을 선택하면 수집된 로그를 볼 수 있다. -로그를 정기적으로 새로 고치려면 새로 고침 간격을 5초로 -설정할 수 있다. - -키바나 뷰어에서 수집된 로그의 일반적인 보기는 다음과 같다. - -![키바나 로그](/images/docs/kibana-logs.png) - - - -## {{% heading "whatsnext" %}} - - -키바나는 로그를 탐색하기 위한 모든 종류의 강력한 옵션을 제공한다! 이를 파헤치는 방법에 대한 -아이디어는 [키바나의 문서](https://www.elastic.co/guide/en/kibana/current/discover.html)를 확인한다. diff --git a/content/ko/docs/tasks/extend-kubectl/kubectl-plugins.md b/content/ko/docs/tasks/extend-kubectl/kubectl-plugins.md index f46df1e511..77081a82f3 100644 --- a/content/ko/docs/tasks/extend-kubectl/kubectl-plugins.md +++ b/content/ko/docs/tasks/extend-kubectl/kubectl-plugins.md @@ -22,7 +22,7 @@ content_type: task ## kubectl 플러그인 설치 -플러그인은 이름이 `kubectl-` 로 시작되는 독립형 실행 파일이다. 플러그인을 설치하려면, 간단히 실행 파일을 `PATH` 에 지정된 디렉터리로 옮기면 된다. +플러그인은 이름이 `kubectl-` 로 시작되는 독립형 실행 파일이다. 플러그인을 설치하려면, 실행 파일을 `PATH` 에 지정된 디렉터리로 옮기면 된다. [Krew](https://krew.dev/)를 사용하여 오픈소스에서 사용 가능한 kubectl 플러그인을 검색하고 설치할 수도 있다. Krew는 쿠버네티스 SIG CLI 커뮤니티에서 관리하는 @@ -57,9 +57,9 @@ Krew [플러그인 인덱스](https://krew.sigs.k8s.io/plugins/)를 통해 사 플러그인 설치 또는 사전 로딩이 필요하지 않다. 플러그인 실행 파일은 `kubectl` 바이너리에서 상속된 환경을 받는다. -플러그인은 이름을 기반으로 구현할 명령 경로를 결정한다. 예를 -들어, 새로운 명령인 `kubectl foo` 를 제공하려는 플러그인은 단순히 이름이 -`kubectl-foo` 이고, `PATH` 의 어딘가에 있다. +플러그인은 이름을 기반으로 구현할 명령 경로를 결정한다. +예를 들어, `kubectl-foo` 라는 플러그인은 `kubectl foo` 명령을 제공한다. +`PATH` 어딘가에 플러그인 실행 파일을 설치해야 한다. ### 플러그인 예제 @@ -85,30 +85,31 @@ echo "I am a plugin named kubectl-foo" ### 플러그인 사용 -위의 플러그인을 사용하려면, 간단히 실행 가능하게 만든다. +플러그인을 사용하려면, 실행 가능하게 만든다. -``` +```shell sudo chmod +x ./kubectl-foo ``` 그리고 `PATH` 의 어느 곳에나 옮겨 놓는다. -``` +```shell sudo mv ./kubectl-foo /usr/local/bin ``` 이제 플러그인을 `kubectl` 명령으로 호출할 수 있다. -``` +```shell kubectl foo ``` + ``` I am a plugin named kubectl-foo ``` 모든 인수와 플래그는 그대로 실행 파일로 전달된다. -``` +```shell kubectl foo version ``` ``` @@ -120,6 +121,7 @@ kubectl foo version ```bash export KUBECONFIG=~/.kube/config kubectl foo config + ``` ``` /home//.kube/config @@ -128,6 +130,7 @@ kubectl foo config ```shell KUBECONFIG=/etc/kube/config kubectl foo config ``` + ``` /etc/kube/config ``` @@ -373,11 +376,8 @@ kubectl 플러그인의 배포 패키지를 컴파일된 패키지를 사용 가능하게 하거나, Krew를 사용하면 설치가 더 쉬워진다. - - ## {{% heading "whatsnext" %}} - * Go로 작성된 플러그인의 [자세한 예제](https://github.com/kubernetes/sample-cli-plugin)에 대해서는 샘플 CLI 플러그인 리포지터리를 확인한다. diff --git a/content/ko/docs/tasks/job/coarse-parallel-processing-work-queue.md b/content/ko/docs/tasks/job/coarse-parallel-processing-work-queue.md index aeaac4803d..fa765a7005 100644 --- a/content/ko/docs/tasks/job/coarse-parallel-processing-work-queue.md +++ b/content/ko/docs/tasks/job/coarse-parallel-processing-work-queue.md @@ -35,7 +35,7 @@ weight: 30 ## 메시지 대기열 서비스 시작 -이 문서의 예시에서는 RabbitMQ를 사용하지만, 다른 AMQP 타입의 메시지 서비스에 적용하는데 문제가 없을 것이다. +이 예시에서는 RabbitMQ를 사용하지만, 다른 AMQP 유형의 메시지 서비스를 사용하도록 예시를 조정할 수 있다. 실제로 사용할 때는, 클러스터에 메시지 대기열 서비스를 한 번 구축하고서, 여러 많은 잡이나 오래 동작하는 서비스에 재사용할 수 있다. diff --git a/content/ko/docs/tasks/job/parallel-processing-expansion.md b/content/ko/docs/tasks/job/parallel-processing-expansion.md index 341739ba62..ef02dac61b 100644 --- a/content/ko/docs/tasks/job/parallel-processing-expansion.md +++ b/content/ko/docs/tasks/job/parallel-processing-expansion.md @@ -12,7 +12,7 @@ weight: 20 있다. 이 예에는 _apple_, _banana_ 그리고 _cherry_ 세 항목만 있다. -샘플 잡들은 단순히 문자열을 출력한 다음 일시 정지하는 각 항목을 처리한다. +샘플 잡들은 문자열을 출력한 다음 일시 정지하는 각 항목을 처리한다. 이 패턴이 보다 실질적인 유스케이스에 어떻게 부합하는지 알아 보려면 [실제 워크로드에서 잡 사용하기](#실제-워크로드에서-잡-사용하기)를 참고한다. diff --git a/content/ko/docs/tasks/run-application/delete-stateful-set.md b/content/ko/docs/tasks/run-application/delete-stateful-set.md index 8bb7ab89f2..1ef9220d65 100644 --- a/content/ko/docs/tasks/run-application/delete-stateful-set.md +++ b/content/ko/docs/tasks/run-application/delete-stateful-set.md @@ -60,7 +60,7 @@ PVC를 삭제할 때 데이터 손실될 수 있음에 주의하자. ### 스테이트풀셋의 완벽한 삭제 -연결된 파드를 포함해서 스테이트풀셋의 모든 것을 간단히 삭제하기 위해 다음과 같이 일련의 명령을 실행 한다. +연결된 파드를 포함해서 스테이트풀셋의 모든 것을 삭제하기 위해 다음과 같이 일련의 명령을 실행한다. ```shell grace=$(kubectl get pods --template '{{.spec.terminationGracePeriodSeconds}}') diff --git a/content/ko/docs/tasks/run-application/horizontal-pod-autoscale.md b/content/ko/docs/tasks/run-application/horizontal-pod-autoscale.md index 42172a463e..f762357603 100644 --- a/content/ko/docs/tasks/run-application/horizontal-pod-autoscale.md +++ b/content/ko/docs/tasks/run-application/horizontal-pod-autoscale.md @@ -190,7 +190,7 @@ Horizontal Pod Autoscaler는 모든 API 리소스와 마찬가지로 `kubectl` `kubectl get hpa`로 오토스케일러 목록을 조회할 수 있고, `kubectl describe hpa`로 세부 사항을 확인할 수 있다. 마지막으로 `kubectl delete hpa`를 사용하여 오토스케일러를 삭제할 수 있다. -또한 Horizontal Pod Autoscaler를 쉽게 생성 할 수 있는 `kubectl autoscale`이라는 특별한 명령이 있다. +또한 Horizontal Pod Autoscaler를 생성할 수 있는 `kubectl autoscale`이라는 특별한 명령이 있다. 예를 들어 `kubectl autoscale rs foo --min=2 --max=5 --cpu-percent=80`을 실행하면 레플리케이션 셋 *foo* 에 대한 오토스케일러가 생성되고, 목표 CPU 사용률은 `80 %`, 그리고 2와 5 사이의 레플리카 개수로 설정된다. @@ -220,9 +220,10 @@ v1.6 부터 클러스터 운영자는 `kube-controller-manager` 컴포넌트의 v1.12부터는 새로운 알고리즘 업데이트가 업스케일 지연에 대한 필요성을 제거하였다. -- `--horizontal-pod-autoscaler-downscale-delay` : 이 옵션 값은 - 오토스케일러가 현재의 작업이 완료된 후에 다른 다운스케일 작업을 - 수행하기까지 기다려야 하는 시간을 지정하는 지속 시간이다. +- `--horizontal-pod-autoscaler-downscale-delay` : 다운스케일이 + 안정화되기까지의 시간 간격을 지정한다. + Horizontal Pod Autoscaler는 이전의 권장하는 크기를 기억하고, + 이 시간 간격에서의 가장 큰 크기에서만 작동한다. 기본값은 5분(`5m0s`)이다. {{< note >}} @@ -382,7 +383,12 @@ behavior: periodSeconds: 60 ``` -파드 수가 40개를 초과하면 두 번째 폴리시가 스케일링 다운에 사용된다. +`periodSeconds` 는 폴리시가 참(true)으로 유지되어야 하는 기간을 나타낸다. +첫 번째 정책은 _(파드들)_ 이 1분 내에 최대 4개의 레플리카를 스케일 다운할 수 있도록 허용한다. +두 번째 정책은 _비율_ 로 현재 레플리카의 최대 10%를 1분 내에 스케일 다운할 수 있도록 허용한다. + +기본적으로 가장 많은 변경을 허용하는 정책이 선택되기에 두 번째 정책은 +파드의 레플리카 수가 40개를 초과하는 경우에만 사용된다. 레플리카가 40개 이하인 경우 첫 번째 정책이 적용된다. 예를 들어 80개의 레플리카가 있고 대상을 10개의 레플리카로 축소해야 하는 경우 첫 번째 단계에서 8개의 레플리카가 스케일 다운 된다. 레플리카의 수가 72개일 때 다음 반복에서 파드의 10%는 7.2 이지만, 숫자는 8로 올림된다. 오토스케일러 컨트롤러의 @@ -390,10 +396,6 @@ behavior: 미만으로 떨어지면 첫 번째 폴리시 _(파드들)_ 가 적용되고 한번에 4개의 레플리카가 줄어든다. -`periodSeconds` 는 폴리시가 참(true)으로 유지되어야 하는 기간을 나타낸다. -첫 번째 정책은 1분 내에 최대 4개의 레플리카를 스케일 다운할 수 있도록 허용한다. -두 번째 정책은 현재 레플리카의 최대 10%를 1분 내에 스케일 다운할 수 있도록 허용한다. - 확장 방향에 대해 `selectPolicy` 필드를 확인하여 폴리시 선택을 변경할 수 있다. 레플리카의 수를 최소로 변경할 수 있는 폴리시를 선택하는 `최소(Min)`로 값을 설정한다. 값을 `Disabled` 로 설정하면 해당 방향으로 스케일링이 완전히 @@ -440,7 +442,7 @@ behavior: periodSeconds: 15 selectPolicy: Max ``` -안정화 윈도우의 스케일링 다운의 경우 _300_ 초(또는 제공된 +안정화 윈도우의 스케일링 다운의 경우 _300_ 초 (또는 제공된 경우`--horizontal-pod-autoscaler-downscale-stabilization` 플래그의 값)이다. 스케일링 다운에서는 현재 실행 중인 레플리카의 100%를 제거할 수 있는 단일 정책만 있으며, 이는 스케일링 대상을 최소 허용 레플리카로 축소할 수 있음을 의미한다. diff --git a/content/ko/docs/tasks/run-application/run-single-instance-stateful-application.md b/content/ko/docs/tasks/run-application/run-single-instance-stateful-application.md index f3debe8781..cf6c3188b7 100644 --- a/content/ko/docs/tasks/run-application/run-single-instance-stateful-application.md +++ b/content/ko/docs/tasks/run-application/run-single-instance-stateful-application.md @@ -65,6 +65,8 @@ MySQL을 실행하고 퍼시스턴트볼륨클레임을 참조하는 디플로 kubectl describe deployment mysql + 출력은 다음과 유사하다. + Name: mysql Namespace: default CreationTimestamp: Tue, 01 Nov 2016 11:18:45 -0700 @@ -105,6 +107,8 @@ MySQL을 실행하고 퍼시스턴트볼륨클레임을 참조하는 디플로 kubectl get pods -l app=mysql + 출력은 다음과 유사하다. + NAME READY STATUS RESTARTS AGE mysql-63082529-2z3ki 1/1 Running 0 3m @@ -112,6 +116,8 @@ MySQL을 실행하고 퍼시스턴트볼륨클레임을 참조하는 디플로 kubectl describe pvc mysql-pv-claim + 출력은 다음과 유사하다. + Name: mysql-pv-claim Namespace: default StorageClass: diff --git a/content/ko/docs/tutorials/_index.md b/content/ko/docs/tutorials/_index.md index a0af5ff5b5..7c1216c5fd 100644 --- a/content/ko/docs/tutorials/_index.md +++ b/content/ko/docs/tutorials/_index.md @@ -33,7 +33,7 @@ content_type: concept * [외부 IP 주소를 노출하여 클러스터의 애플리케이션에 접속하기](/ko/docs/tutorials/stateless-application/expose-external-ip-address/) -* [예시: Redis를 사용한 PHP 방명록 애플리케이션 배포하기](/ko/docs/tutorials/stateless-application/guestbook/) +* [예시: MongoDB를 사용한 PHP 방명록 애플리케이션 배포하기](/ko/docs/tutorials/stateless-application/guestbook/) ## 상태 유지가 필요한(stateful) 애플리케이션 diff --git a/content/ko/docs/tutorials/clusters/apparmor.md b/content/ko/docs/tutorials/clusters/apparmor.md index 74008f9961..c28f41a7cc 100644 --- a/content/ko/docs/tutorials/clusters/apparmor.md +++ b/content/ko/docs/tutorials/clusters/apparmor.md @@ -168,8 +168,7 @@ k8s-apparmor-example-deny-write (enforce) *이 예시는 AppArmor를 지원하는 클러스터를 이미 구성하였다고 가정한다.* -먼저 노드에서 사용하려는 프로파일을 적재해야 한다. 사용할 프로파일은 단순히 -파일 쓰기를 거부할 것이다. +먼저 노드에서 사용하려는 프로파일을 적재해야 한다. 사용할 프로파일은 파일 쓰기를 거부한다. ```shell #include diff --git a/content/ko/docs/tutorials/kubernetes-basics/_index.html b/content/ko/docs/tutorials/kubernetes-basics/_index.html index 4be0e94231..f1ab593581 100644 --- a/content/ko/docs/tutorials/kubernetes-basics/_index.html +++ b/content/ko/docs/tutorials/kubernetes-basics/_index.html @@ -41,7 +41,7 @@ card:

    쿠버네티스가 어떤 도움이 될까?

    -

    오늘날의 웹서비스에 대해서, 사용자는 애플리케이션이 24/7 가용하기를 바라고, 개발자는 하루에도 몇 번이고 새로운 버전의 애플리케이션을 배포하기를 바란다. 컨테이너화를 통해 소프트웨어를 패키지하면 애플리케이션을 다운타임 없이 쉽고 빠르게 릴리스 및 업데이트할 수 있게 되어서 이런 목표를 달성하는데 도움이 된다. 쿠버네티스는 이렇게 컨테이너화된 애플리케이션을 원하는 곳 어디에든 또 언제든 구동시킬 수 있다는 확신을 갖는데 도움을 주며, 그 애플리케이션이 작동하는데 필요한 자원과 도구를 찾는 것을 도와준다. 쿠버네티스는 구글의 컨테이너 오케스트레이션 부문의 축적된 경험으로 설계되고 커뮤니티로부터 도출된 최고의 아이디어가 결합된 운영 수준의 오픈 소스 플랫폼이다.

    +

    오늘날의 웹서비스에 대해서, 사용자는 애플리케이션이 24/7 가용하기를 바라고, 개발자는 하루에도 몇 번이고 새로운 버전의 애플리케이션을 배포하기를 바란다. 컨테이너화를 통해 소프트웨어를 패키지하면 애플리케이션을 다운타임 없이 릴리스 및 업데이트할 수 있게 되어서 이런 목표를 달성하는데 도움이 된다. 쿠버네티스는 이렇게 컨테이너화된 애플리케이션을 원하는 곳 어디에든 또 언제든 구동시킬 수 있다는 확신을 갖는데 도움을 주며, 그 애플리케이션이 작동하는데 필요한 자원과 도구를 찾는 것을 도와준다. 쿠버네티스는 구글의 컨테이너 오케스트레이션 부문의 축적된 경험으로 설계되고 커뮤니티로부터 도출된 최고의 아이디어가 결합된 운영 수준의 오픈 소스 플랫폼이다.

    diff --git a/content/ko/docs/tutorials/kubernetes-basics/expose/expose-intro.html b/content/ko/docs/tutorials/kubernetes-basics/expose/expose-intro.html index ebc880dbdd..e44e68df85 100644 --- a/content/ko/docs/tutorials/kubernetes-basics/expose/expose-intro.html +++ b/content/ko/docs/tutorials/kubernetes-basics/expose/expose-intro.html @@ -64,12 +64,6 @@ weight: 10 -
    -
    -

    -
    -
    -

    서비스는 파드 셋에 걸쳐서 트래픽을 라우트한다. 여러분의 애플리케이션에 영향을 주지 않으면서 쿠버네티스에서 파드들이 죽게도 하고, 복제가 되게도 해주는 추상적 개념이다. 종속적인 파드들 사이에서의 디스커버리와 라우팅은 (하나의 애플리케이션에서 프로트엔드와 백엔드 컴포넌트와 같은) 쿠버네티스 서비스들에 의해 처리된다.

    diff --git a/content/ko/docs/tutorials/stateful-application/basic-stateful-set.md b/content/ko/docs/tutorials/stateful-application/basic-stateful-set.md index 35eb540724..a2df8806a8 100644 --- a/content/ko/docs/tutorials/stateful-application/basic-stateful-set.md +++ b/content/ko/docs/tutorials/stateful-application/basic-stateful-set.md @@ -921,7 +921,7 @@ web-2 0/1 Terminating 0 3m `web` 스테이트풀셋이 다시 생성될 때 먼저 `web-0` 시작한다. `web-1`은 이미 Running과 Ready 상태이므로 `web-0`이 Running과 Ready 상태로 -전환될 때는 단순히 이 파드에 적용됬다. 스테이트풀셋에`replicas`를 2로 하고 +전환될 때는 이 파드에 적용됬다. 스테이트풀셋에`replicas`를 2로 하고 `web-0`을 재생성했다면 `web-1`이 이미 Running과 Ready 상태이고, `web-2`은 종료되었을 것이다. @@ -932,6 +932,7 @@ web-2 0/1 Terminating 0 3m ```shell for i in 0 1; do kubectl exec -i -t "web-$i" -- curl http://localhost/; done ``` + ``` web-0 web-1 @@ -957,6 +958,7 @@ kubectl get pods -w -l app=nginx ```shell kubectl delete statefulset web ``` + ``` statefulset.apps "web" deleted ``` @@ -966,6 +968,7 @@ statefulset.apps "web" deleted ```shell kubectl get pods -w -l app=nginx ``` + ``` NAME READY STATUS RESTARTS AGE web-0 1/1 Running 0 11m @@ -997,6 +1000,7 @@ web-1 0/1 Terminating 0 29m ```shell kubectl delete service nginx ``` + ``` service "nginx" deleted ``` @@ -1006,6 +1010,7 @@ service "nginx" deleted ```shell kubectl apply -f web.yaml ``` + ``` service/nginx created statefulset.apps/web created @@ -1017,6 +1022,7 @@ statefulset.apps/web created ```shell for i in 0 1; do kubectl exec -i -t "web-$i" -- curl http://localhost/; done ``` + ``` web-0 web-1 @@ -1031,13 +1037,16 @@ web-1 ```shell kubectl delete service nginx ``` + ``` service "nginx" deleted ``` + 그리고 `web` 스테이트풀셋을 삭제한다. ```shell kubectl delete statefulset web ``` + ``` statefulset "web" deleted ``` diff --git a/content/ko/docs/tutorials/stateful-application/zookeeper.md b/content/ko/docs/tutorials/stateful-application/zookeeper.md index b1e6dbe523..3fca0a6749 100644 --- a/content/ko/docs/tutorials/stateful-application/zookeeper.md +++ b/content/ko/docs/tutorials/stateful-application/zookeeper.md @@ -15,17 +15,17 @@ weight: 40 이 튜토리얼을 시작하기 전에 다음 쿠버네티스 개념에 친숙해야 한다. -- [파드](/ko/docs/concepts/workloads/pods/) -- [클러스터 DNS](/ko/docs/concepts/services-networking/dns-pod-service/) -- [헤드리스 서비스](/ko/docs/concepts/services-networking/service/#헤드리스-headless-서비스) -- [퍼시스턴트볼륨](/ko/docs/concepts/storage/persistent-volumes/) -- [퍼시스턴트볼륨 프로비저닝](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/persistent-volume-provisioning/) -- [스테이트풀셋](/ko/docs/concepts/workloads/controllers/statefulset/) -- [PodDisruptionBudget](/ko/docs/concepts/workloads/pods/disruptions/#파드-disruption-budgets) -- [파드안티어피니티](/ko/docs/concepts/scheduling-eviction/assign-pod-node/#어피니티-affinity-와-안티-어피니티-anti-affinity) -- [kubectl CLI](/ko/docs/reference/kubectl/kubectl/) +- [파드](/ko/docs/concepts/workloads/pods/) +- [클러스터 DNS](/ko/docs/concepts/services-networking/dns-pod-service/) +- [헤드리스 서비스](/ko/docs/concepts/services-networking/service/#헤드리스-headless-서비스) +- [퍼시스턴트볼륨](/ko/docs/concepts/storage/persistent-volumes/) +- [퍼시스턴트볼륨 프로비저닝](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/persistent-volume-provisioning/) +- [스테이트풀셋](/ko/docs/concepts/workloads/controllers/statefulset/) +- [PodDisruptionBudget](/ko/docs/concepts/workloads/pods/disruptions/#파드-disruption-budgets) +- [파드안티어피니티](/ko/docs/concepts/scheduling-eviction/assign-pod-node/#어피니티-affinity-와-안티-어피니티-anti-affinity) +- [kubectl CLI](/ko/docs/reference/kubectl/kubectl/) -최소한 4개의 노드가 있는 클러스터가 필요하며, 각 노드는 적어도 2 개의 CPU와 4 GiB 메모리가 필요하다. 이 튜토리얼에서 클러스터 노드를 통제(cordon)하고 비우게(drain) 할 것이다. **이것은 클러스터를 종료하여 노드의 모든 파드를 퇴출(evict)하는 것으로, 모든 파드는 임시로 언스케줄된다는 의미이다.** 이 튜토리얼을 위해 전용 클러스터를 이용하거나, 다른 테넌트에 간섭을 하는 혼란이 발생하지 않도록 해야 합니다. +반드시 최소한 4개의 노드가 있는 클러스터가 필요하며, 각 노드는 적어도 2 개의 CPU와 4 GiB 메모리가 필요하다. 이 튜토리얼에서 클러스터 노드를 통제(cordon)하고 비우게(drain) 할 것이다. **이것은 클러스터를 종료하여 노드의 모든 파드를 축출(evict)하는 것으로, 모든 파드는 임시로 언스케줄된다는 의미이다.** 이 튜토리얼을 위해 전용 클러스터를 이용하거나, 다른 테넌트에 간섭을 하는 혼란이 발생하지 않도록 해야 합니다. 이 튜토리얼은 클러스터가 동적으로 퍼시스턴트볼륨을 프로비저닝하도록 구성한다고 가정한다. 그렇게 설정되어 있지 않다면 @@ -37,15 +37,15 @@ weight: 40 이 튜토리얼을 마치면 다음에 대해 알게 된다. -- 어떻게 스테이트풀셋을 이용하여 ZooKeeper 앙상블을 배포하는가. -- 어떻게 앙상블을 일관되게 설정하는가. -- 어떻게 ZooKeeper 서버 디플로이먼트를 앙상블 안에서 퍼뜨리는가. -- 어떻게 PodDisruptionBudget을 이용하여 계획된 점검 기간 동안 서비스 가용성을 보장하는가. +- 어떻게 스테이트풀셋을 이용하여 ZooKeeper 앙상블을 배포하는가. +- 어떻게 앙상블을 일관되게 설정하는가. +- 어떻게 ZooKeeper 서버 디플로이먼트를 앙상블 안에서 퍼뜨리는가. +- 어떻게 PodDisruptionBudget을 이용하여 계획된 점검 기간 동안 서비스 가용성을 보장하는가. -### ZooKeeper 기본 {#zookeeper-basics} +### ZooKeeper [아파치 ZooKeeper](https://zookeeper.apache.org/doc/current/)는 분산 애플리케이션을 위한 분산 오픈 소스 코디네이션 서비스이다. @@ -438,8 +438,8 @@ datadir-zk-2 Bound pvc-bee0817e-bcb1-11e6-994f-42010a800002 20Gi R ```shell volumeMounts: - - name: datadir - mountPath: /var/lib/zookeeper +- name: datadir + mountPath: /var/lib/zookeeper ``` `zk` 스테이트풀셋이 (재)스케줄링될 때 항상 동일한 `퍼시스턴트볼륨`을 @@ -462,6 +462,7 @@ ZooKeeper 앙상블에 서버는 리더 선출과 쿼럼을 구성하기 위한 ```shell kubectl get sts zk -o yaml ``` + ``` … command: @@ -551,11 +552,9 @@ kubectl logs zk-0 --tail 20 2016-12-06 19:34:46,230 [myid:1] - INFO [Thread-1142:NIOServerCnxn@1008] - Closed socket connection for client /127.0.0.1:52768 (no session established for client) ``` -쿠버네티스는 더 강력하지만 조금 복잡한 로그 통합을 -[스택드라이버](/docs/tasks/debug-application-cluster/logging-stackdriver/)와 -[Elasticsearch와 Kibana](/ko/docs/tasks/debug-application-cluster/logging-elasticsearch-kibana/)를 지원한다. -클러스터 수준의 로그 적재(ship)와 통합을 위해서는 로그 순환과 적재를 위해 -[사이드카](https://kubernetes.io/blog/2015/06/the-distributed-system-toolkit-patterns) 컨테이너를 배포하는 것을 고려한다. +쿠버네티스는 많은 로그 솔루션과 통합된다. 클러스터와 애플리케이션에 +가장 적합한 로그 솔루션을 선택할 수 있다. 클러스터 수준의 +로그 적재(ship)와 통합을 위해서는 로그 순환과 적재를 위해 [사이드카 컨테이너](/ko/docs/concepts/cluster-administration/logging/#로깅-에이전트와-함께-사이드카-컨테이너-사용)를 배포하는 것을 고려한다. ### 권한 없는 사용자를 위해 구성하기 @@ -623,6 +622,7 @@ drwxr-sr-x 3 zookeeper zookeeper 4096 Dec 5 20:45 /var/lib/zookeeper/data ```shell kubectl patch sts zk --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/resources/requests/cpu", "value":"0.3"}]' ``` + ``` statefulset.apps/zk patched ``` @@ -632,6 +632,7 @@ statefulset.apps/zk patched ```shell kubectl rollout status sts/zk ``` + ``` waiting for statefulset rolling update to complete 0 pods at revision zk-5db4499664... Waiting for 1 pods to be ready... @@ -872,8 +873,8 @@ kubernetes-node-2g2d ## 생존 유지 -**이 섹션에서는 노드를 통제(cordon)하고 비운다(drain). 공유된 클러스터에서 이 튜토리얼을 진행한다면, -다른 테넌트에 부정적인 영향을 비치지 않음을 보증해야 한다.** +이 섹션에서는 노드를 통제(cordon)하고 비운다(drain). 공유된 클러스터에서 이 튜토리얼을 진행한다면, +다른 테넌트에 부정적인 영향을 비치지 않음을 보증해야 한다. 이전 섹션은 계획되지 않은 노드 실패에서 살아남도록 어떻게 파드를 확산할 것인가에 대해 알아보았다. @@ -1008,6 +1009,7 @@ zk-1 0/1 Pending 0 0s ```shell kubectl drain $(kubectl get pod zk-2 --template {{.spec.nodeName}}) --ignore-daemonsets --force --delete-local-data ``` + ``` node "kubernetes-node-i4c4" cordoned @@ -1051,6 +1053,7 @@ numChildren = 0 ```shell kubectl uncordon kubernetes-node-pb41 ``` + ``` node "kubernetes-node-pb41" uncordoned ``` @@ -1060,6 +1063,7 @@ node "kubernetes-node-pb41" uncordoned ```shell kubectl get pods -w -l app=zk ``` + ``` NAME READY STATUS RESTARTS AGE zk-0 1/1 Running 2 1h @@ -1125,7 +1129,6 @@ drain으로 노드를 통제하고 유지보수를 위해 노드를 오프라인 - `kubectl uncordon`은 클러스터 내에 모든 노드를 통제 해제한다. -- 이 튜토리얼에서 사용한 퍼시스턴트 볼륨을 위한 - 퍼시스턴트 스토리지 미디어를 삭제하자. +- 반드시 이 튜토리얼에서 사용한 퍼시스턴트 볼륨을 위한 퍼시스턴트 스토리지 미디어를 삭제하자. 귀하의 환경과 스토리지 구성과 프로비저닝 방법에서 필요한 절차를 따라서 모든 스토리지가 재확보되도록 하자. diff --git a/content/ko/docs/tutorials/stateless-application/guestbook-logs-metrics-with-elk.md b/content/ko/docs/tutorials/stateless-application/guestbook-logs-metrics-with-elk.md deleted file mode 100644 index faf5fd5303..0000000000 --- a/content/ko/docs/tutorials/stateless-application/guestbook-logs-metrics-with-elk.md +++ /dev/null @@ -1,457 +0,0 @@ ---- -title: "예제: PHP / Redis 방명록 예제에 로깅과 메트릭 추가" -content_type: tutorial -weight: 21 -card: - name: tutorials - weight: 31 - title: "예제: PHP / Redis 방명록 예제에 로깅과 메트릭 추가" ---- - - -이 튜토리얼은 [Redis를 이용한 PHP 방명록](/ko/docs/tutorials/stateless-application/guestbook) 튜토리얼을 기반으로 한다. Elastic의 경량 로그, 메트릭, 네트워크 데이터 오픈소스 배송기인 *Beats* 를 방명록과 동일한 쿠버네티스 클러스터에 배포한다. Beats는 데이터를 수집하고 구문분석하여 Elasticsearch에 색인화하므로, Kibana에서 동작 정보를 결과로 보며 분석할 수 있다. 이 예시는 다음과 같이 구성되어 있다. - -* [Redis를 이용한 PHP 방명록](/ko/docs/tutorials/stateless-application/guestbook)을 실행한 인스턴스 -* Elasticsearch와 Kibana -* Filebeat -* Metricbeat -* Packetbeat - -## {{% heading "objectives" %}} - -* Redis를 이용한 PHP 방명록 시작. -* kube-state-metrics 설치. -* 쿠버네티스 시크릿 생성. -* Beats 배포. -* 로그와 메트릭의 대시보드 보기. - -## {{% heading "prerequisites" %}} - - -{{< include "task-tutorial-prereqs.md" >}} -{{< version-check >}} - -추가로 다음이 필요하다. - -* 실행 중인 [Redis를 이용한 PHP 방명록](/ko/docs/tutorials/stateless-application/guestbook) 튜토리얼의 배포본. - -* 실행 중인 Elasticsearch와 Kibana 디플로이먼트. [Elastic Cloud의 Elasticsearch 서비스](https://cloud.elastic.co)를 사용하거나, - [파일을 내려받아](https://www.elastic.co/guide/en/elastic-stack-get-started/current/get-started-elastic-stack.html) - 워크스테이션이나 서버에서 운영하거나, [Elastic의 Helm 차트](https://github.com/elastic/helm-charts)를 이용한다. - - - - - -## Redis를 이용한 PHP 방명록 시작 - -이 튜토리얼은 [Redis를 이용한 PHP 방명록](/ko/docs/tutorials/stateless-application/guestbook)을 기반으로 한다. 방명록 애플리케이션을 실행 중이라면, 이를 모니터링할 수 있다. 실행되지 않은 경우라면 지침을 따라 방명록을 배포하고 **정리하기** 단계는 수행하지 말자. 방명록을 실행할 때 이 페이지로 돌아오자. - -## 클러스터 롤 바인딩 추가 - -[클러스터 단위 롤 바인딩](/docs/reference/access-authn-authz/rbac/#rolebinding-and-clusterrolebinding)을 생성하여, 클러스터 수준(kube-system 안에)으로 kube-state-metrics와 Beats를 배포할 수 있게 한다. - -```shell -kubectl create clusterrolebinding cluster-admin-binding \ - --clusterrole=cluster-admin --user= -``` - -## kube-state-metrics 설치 - -[*kube-state-metrics*](https://github.com/kubernetes/kube-state-metrics)는 쿠버네티스 API 서버를 모니터링하며 오브젝트 상태에 대한 메트릭을 생성하는 간단한 서비스이다. 이런 메트릭을 Metricbeat이 보고한다. 방명록이 실행된 쿠버네티스 클러스터에서 kube-state-metrics을 추가한다. - -```shell -git clone https://github.com/kubernetes/kube-state-metrics.git kube-state-metrics -kubectl apply -f kube-state-metrics/examples/standard -``` - -### kube-state-metrics 실행 여부 확인 - -```shell -kubectl get pods --namespace=kube-system -l app.kubernetes.io/name=kube-state-metrics -``` - -출력 - -``` -NAME READY STATUS RESTARTS AGE -kube-state-metrics-89d656bf8-vdthm 1/1 Running 0 21s -``` - -## Elastic의 예제를 GitHub 리포지터리에 클론한다. - -```shell -git clone https://github.com/elastic/examples.git -``` - -나머지 커맨드는 `examples/beats-k8s-send-anywhere` 디렉터리의 파일을 참조할 것이라서, 그쪽으로 현재 디렉터리를 변경한다. - -```shell -cd examples/beats-k8s-send-anywhere -``` - -## 쿠버네티스 시크릿 만들기 - -쿠버네티스 {{< glossary_tooltip text="시크릿" term_id="secret" >}}은 암호나 토큰, 키 같이 소량의 민감한 데이터를 포함하는 오브젝트이다. 이러한 정보는 다른 방식으로도 파드 스펙이나 이미지에 넣을 수 있을 것이다. 시크릿 오브젝트에 넣으면 이것이 어떻게 사용되는지 다양하게 제어할 수 있고, 우발적인 노출 사고의 위험이 줄일 수 있다. - -{{< note >}} -여기에는 방식이 나뉘는데, 하나는 *자체 관리(Self managed)* 로 Elasticsearch와 Kibana(Elastic의 Helm 차트를 이용하여 사용자 서버를 구동하는)를 사용하는 경우이고 다른 경우는 Elastic Cloud의 Elasticsearch 서비스의 *관리 서비스(Managed service)* 를 사용하는 방식이다. 이 튜토리얼에서는 사용할 Elasticsearch와 Kibana 시스템의 종류에 따라 시크릿을 만들어야 한다. -{{< /note >}} - -{{< tabs name="tab_with_md" >}} -{{% tab name="자체 관리(Self Managed)" %}} - -### 자체 관리 - -Elastic Cloud의 Elasticsearch 서비스로 연결한다면 **관리 서비스** 탭으로 전환한다. - -### 자격증명(credentials) 설정 - -자체 관리 Elasticsearch와 Kibana(자체 관리는 사실상 Elastic Cloud의 관리 서비스 Elasticsearch와 다르다) 서비스에 접속할 때에 4개 파일을 수정하여 쿠버네티스 시크릿을 생성한다. 파일은 다음과 같다. - -1. `ELASTICSEARCH_HOSTS` -1. `ELASTICSEARCH_PASSWORD` -1. `ELASTICSEARCH_USERNAME` -1. `KIBANA_HOST` - -이 정보를 Elasticsearch 클러스터와 Kibana 호스트에 지정한다. 여기 예시(또는 [*이 구성*](https://stackoverflow.com/questions/59892896/how-to-connect-from-minikube-to-elasticsearch-installed-on-host-local-developme/59892897#59892897)을 본다)가 있다. - -#### `ELASTICSEARCH_HOSTS` - -1. Elastic의 Elasticsearch Helm 차트에서 노드 그룹(nodeGroup). - - ``` - ["http://elasticsearch-master.default.svc.cluster.local:9200"] - ``` - -1. Mac을 위한 Docker에서 Beats를 운영 중인 Mac에서 운영하는 단일 Elasticsearch 노드. - - ``` - ["http://host.docker.internal:9200"] - ``` - -1. VM이나 물리 장비에서 운영 중인 두 개의 ELASTICSEARCH 노드. - - ``` - ["http://host1.example.com:9200", "http://host2.example.com:9200"] - ``` - -`ELASTICSEARCH_HOSTS` 를 수정한다. - -```shell -vi ELASTICSEARCH_HOSTS -``` - -#### `ELASTICSEARCH_PASSWORD` -화이트 스페이스나 인용 부호나 `<` 또는 `>` 도 없는 암호이다. - -``` -<사용자시크릿암호> -``` - -`ELASTICSEARCH_PASSWORD` 를 수정한다. - -```shell -vi ELASTICSEARCH_PASSWORD -``` - -#### `ELASTICSEARCH_USERNAME` -화이트 스페이스나 인용 부호나 `<` 또는 `>` 도 없는 이름이다. - -``` - -``` - -`ELASTICSEARCH_USERNAME` 을 수정한다. - -```shell -vi ELASTICSEARCH_USERNAME -``` - -#### `KIBANA_HOST` - -1.Elastic의 Kibana Helm 차트의 인스턴스이다. 하위 도메인 `default`는 기본 네임스페이스를 참조한다. 다른 네임스페이스를 사용하여 Helm 차트를 배포한 경우 하위 도메인이 다릅니다. - - ``` - "kibana-kibana.default.svc.cluster.local:5601" - ``` - -1. Mac 용 Docker에서 실행하는 Beats가 있는 Mac에서 실행하는 Kibana 인스턴스 - - ``` - "host.docker.internal:5601" - ``` -1. 가상머신이나 물리적 하드웨어에서 실행 중인 두 개의 Elasticsearch 노드 - - ``` - "host1.example.com:5601" - ``` - -`KIBANA_HOST` 를 편집한다. - -```shell -vi KIBANA_HOST -``` - -### 쿠버네티스 시크릿 만들기 - -이 커맨드는 방금 편집한 파일을 기반으로 쿠버네티스의 시스템 수준의 네임스페이스(`kube-system`)에 시크릿을 만든다. - -```shell -kubectl create secret generic dynamic-logging \ - --from-file=./ELASTICSEARCH_HOSTS \ - --from-file=./ELASTICSEARCH_PASSWORD \ - --from-file=./ELASTICSEARCH_USERNAME \ - --from-file=./KIBANA_HOST \ - --namespace=kube-system -``` - -{{% /tab %}} -{{% tab name="관리 서비스(Managed service)" %}} - -## 관리 서비스 - -이 탭은 Elastic Cloud에서 Elasticsearch 서비스 만에 대한 것으로, 이미 자체 관리 Elasticsearch와 Kibana 배포로 시크릿을 생성했다면, [Beats 배포](#deploy-the-beats)를 계속한다. - -### 자격증명(credentials) 설정 - -Elastic Cloud에서 관리되는 Elastic 서비스에 연결할 때, 쿠버네티스 시크릿을 생성하기 위해 편집할 두 파일이 있다. 파일은 다음과 같다. - -1. `ELASTIC_CLOUD_AUTH` -1. `ELASTIC_CLOUD_ID` - -디플로이먼트를 생성할 때에 Elasticsearch 콘솔에서 제공한 정보로 이를 설정한다. 여기 예시들이 있다. - -#### `ELASTIC_CLOUD_ID` - -``` -devk8s:ABC123def456ghi789jkl123mno456pqr789stu123vwx456yza789bcd012efg345hijj678klm901nop345zEwOTJjMTc5YWQ0YzQ5OThlN2U5MjAwYTg4NTIzZQ== -``` - -#### `ELASTIC_CLOUD_AUTH` - -사용자 이름, 콜론(`:`) 및 비밀번호인데, 공백 또는 따옴표는 없다. - -``` -elastic:VFxJJf9Tjwer90wnfTghsn8w -``` - -### 필요 파일 편집하기 - -```shell -vi ELASTIC_CLOUD_ID -vi ELASTIC_CLOUD_AUTH -``` - -### 쿠버네티스 시크릿 생성하기 - -이 커맨드는 방금 편집한 파일을 기반으로 쿠버네티스의 시스템 수준의 네임스페이스(`kube-system`)에 시크릿을 생성한다. - -```shell -kubectl create secret generic dynamic-logging \ - --from-file=./ELASTIC_CLOUD_ID \ - --from-file=./ELASTIC_CLOUD_AUTH \ - --namespace=kube-system -``` - -{{% /tab %}} -{{< /tabs >}} - -## Beats 배포하기 {#deploy-the-beats} - -각 Beat마다 메니페스트 파일을 제공한다. 이 메니페스트 파일은 앞서 생성한 시크릿을 사용하여, Elasticsearch 및 Kibana 서버에 연결하도록 Beats를 구성한다. - -### Filebeat에 대해 - -Filebeat는 쿠버네티스 노드와 해당 노두에서 실행되는 각 파드에서 실행되는 컨테이너의 로그를 수집한다. Filebeat는 {{< glossary_tooltip text="데몬 셋" term_id="daemonset" >}}으로 배포한다. Filebeat는 쿠버네티스 클러스터에서 실행 중인 애플리케이션을 자동 검색할 수 있다. 시작시에 Filebeat는 기존 컨테이너를 검색하고 이에 적절한 구성을 시작하고 새 시작/종료 이벤트를 감시한다. - -아래 내용은 Filebeat가 방명록 애플리케이션과 함께 배포된 Redis 컨테이너에서 Redis 로그를 찾아 구문분석할 수 있게 하는 자동 검색 구성이다. 이 구성은 `filebeat-kubernetes.yaml`파일에 있다. - -```yaml -- condition.contains: - kubernetes.labels.app: redis - config: - - module: redis - log: - input: - type: docker - containers.ids: - - ${data.kubernetes.container.id} - slowlog: - enabled: true - var.hosts: ["${data.host}:${data.port}"] -``` - -이것은 `redis` 컨테이너가 `app` 문자열을 포함하는 레이블로 감지될 때에 Filebeat 모듈 `redis`를 적용하도록 Filebeat를 구성한다. Redis 모듈은 Docker 입력 유형을 사용하여 컨테이너에서 `로그` 스트림을 수집할 수 있다(이 Redis 컨테이너의 STDOUT 스트림과 연관된 쿠버네티스 노드에서 파일 읽기). 또한 이 모듈은 컨테이너 메타 데이터에 제공되는 적절한 파드 호스트와 포트에 연결하여 Redis의 `slowlog` 항목을 수집할 수 있다. - -### Filebeat 배포 - -```shell -kubectl create -f filebeat-kubernetes.yaml -``` - -#### 확인 - -```shell -kubectl get pods -n kube-system -l k8s-app=filebeat-dynamic -``` - -### Metricbeat에 대해 - -Metricbeat 자동 검색은 Filebeat와 같은 방식으로 구성된다. 다음은 Redis 컨테이너에 대한 Metricbeat의 자동 검색 구성이다. 이 구성은 `metricbeat-kubernetes.yaml`에 있다. - -```yaml -- condition.equals: - kubernetes.labels.tier: backend - config: - - module: redis - metricsets: ["info", "keyspace"] - period: 10s - - # Redis hosts - hosts: ["${data.host}:${data.port}"] -``` - -이것은 컨테이너가 `tier` 레이블이 `backend` 문자열과 같은 레이블로 감지될 때에 Metricbeat 모듈 `redis`를 적용하도록 Metricbeat를 구성한다. `redis` 모듈은 컨테이너 메타데이터에 제공되는 적절한 파드 호스트와 포트에 연결하여 컨테이너에서 `info` 및 `keyspace` 메트릭을 수집할 수 있다. - -### Metricbeat 배포 - -```shell -kubectl create -f metricbeat-kubernetes.yaml -``` - -#### 확인 - -```shell -kubectl get pods -n kube-system -l k8s-app=metricbeat -``` - -### Packetbeat에 대해 - -Packetbeat 구성은 Filebeat와 Metricbeat와는 다르다. 컨테이너 레이블과 일치시킬 패턴을 지정하지 않고, 구성은 관련 프로토콜 및 포트 번호를 기반으로 한다. 아래는 포트 번호의 하위 집합이다. - -{{< note >}} -비표준 포트로 서비스를 실행했다면 해당 포트를 `filebeat.yaml`에 적절한 유형에 추가하고, Packetbeat 데몬 셋을 삭제하고 생성한다. -{{< /note >}} - -```yaml -packetbeat.interfaces.device: any - -packetbeat.protocols: -- type: dns - ports: [53] - include_authorities: true - include_additionals: true - -- type: http - ports: [80, 8000, 8080, 9200] - -- type: mysql - ports: [3306] - -- type: redis - ports: [6379] - -packetbeat.flows: - timeout: 30s - period: 10s -``` - -#### Packetbeat 배포하기 - -```shell -kubectl create -f packetbeat-kubernetes.yaml -``` - -#### 확인하기 - -```shell -kubectl get pods -n kube-system -l k8s-app=packetbeat-dynamic -``` - -## Kibana에서 보기 - -브라우저에서 Kibana를 열고, **대시보드** 애플리케이션을 열어보자. 검색창에 kubernetes를 입력하고 쿠버네티스를 위한 Metricbeat 대시보드를 클릭한다. 이 대시보드에는 노드 상태, 배포 등의 보고 내용이 있다. - -대시보드 페이지에 Packetbeat를 검색하고 Packetbeat의 개요 페이지를 살펴보자. - -마찬가지로 Apache와 Redis를 위한 대시보드를 확인한다. 각 로그와 메트릭에 대한 대시보드가 표시된다. 이 Apache Metricbeat 대시보드는 비어 있다. Apache Filebeat 대시보드를 보고, 맨 아래로 스크롤하여 Apache 오류 로그를 확인한다. Apache에서 보여줄 메트릭이 없는 이유를 알려줄 것이다. - -Metricbeat에서 Apache 메트릭을 가져올 수 있게 하려면, mod-status 구성 파일을 포함한 컨피그맵을 추가하고 방명록을 재배포하여 서버 상태를 활성화해야 한다. - - -## 디플로이먼트를 확장하고 모니터링중인 새 파드를 확인하기 - -기존 디플로이먼트를 확인한다. - -```shell -kubectl get deployments -``` - -출력 - -``` -NAME READY UP-TO-DATE AVAILABLE AGE -frontend 3/3 3 3 3h27m -redis-master 1/1 1 1 3h27m -redis-slave 2/2 2 2 3h27m -``` - -front의 디플로이먼트를 두 개의 파드로 축소한다. - -```shell -kubectl scale --replicas=2 deployment/frontend -``` - -출력 - -``` -deployment.extensions/frontend scaled -``` - -frontend의 파드를 최대 3개의 파드로 확장한다. - -```shell -kubectl scale --replicas=3 deployment/frontend -``` - -## Kibana에서 변화 확인하기 - -스크린 캡처를 확인하여, 표시된 필터를 추가하고 해당 열을 뷰에 추가한다. ScalingReplicaSet 항목이 표시되고, 여기에서 이벤트 목록의 맨 위에 풀링되는 이미지, 마운트된 볼륨, 파드 시작 등을 보여준다. -![Kibana 디스커버리](https://raw.githubusercontent.com/elastic/examples/master/beats-k8s-send-anywhere/scaling-up.png) - -## {{% heading "cleanup" %}} - -디플로이먼트와 서비스를 삭제하면 실행중인 파드도 삭제된다. 한 커맨드로 여러 개의 리소스를 삭제하기 위해 레이블을 이용한다. - -1. 다음 커맨드를 실행하여 모든 파드, 디플로이먼트, 서비스를 삭제한다. - - ```shell - kubectl delete deployment -l app=redis - kubectl delete service -l app=redis - kubectl delete deployment -l app=guestbook - kubectl delete service -l app=guestbook - kubectl delete -f filebeat-kubernetes.yaml - kubectl delete -f metricbeat-kubernetes.yaml - kubectl delete -f packetbeat-kubernetes.yaml - kubectl delete secret dynamic-logging -n kube-system - ``` - -1. 실행 중인 파드가 없음을 확인하기 위해 파드 목록을 조회한다. - - ```shell - kubectl get pods - ``` - - 출력은 다음과 같아야 한다. - - ``` - No resources found. - ``` - -## {{% heading "whatsnext" %}} - -* [리소스 모니터링 도구](/ko/docs/tasks/debug-application-cluster/resource-usage-monitoring/)를 공부한다. -* [로깅 아키텍처](/ko/docs/concepts/cluster-administration/logging/)를 더 읽어본다. -* [애플리케이션 검사 및 디버깅](/ko/docs/tasks/debug-application-cluster/)을 더 읽어본다. -* [애플리케이션 문제 해결](/ko/docs/tasks/debug-application-cluster/resource-usage-monitoring/)을 더 읽어본다. diff --git a/content/ko/docs/tutorials/stateless-application/guestbook.md b/content/ko/docs/tutorials/stateless-application/guestbook.md index cce67800a6..c91ecd2e1b 100644 --- a/content/ko/docs/tutorials/stateless-application/guestbook.md +++ b/content/ko/docs/tutorials/stateless-application/guestbook.md @@ -1,26 +1,25 @@ --- -title: "예시: Redis를 사용한 PHP 방명록 애플리케이션 배포하기" +title: "예시: MongoDB를 사용한 PHP 방명록 애플리케이션 배포하기" content_type: tutorial weight: 20 card: name: tutorials weight: 30 - title: "상태를 유지하지 않는 예제: Redis를 사용한 PHP 방명록" + title: "상태를 유지하지 않는 예제: MongoDB를 사용한 PHP 방명록" +min-kubernetes-server-version: v1.14 --- -이 튜토리얼에서는 쿠버네티스와 [Docker](https://www.docker.com/)를 사용하여 간단한 멀티 티어 웹 애플리케이션을 빌드하고 배포하는 방법을 보여준다. 이 예제는 다음과 같은 구성으로 이루어져 있다. +이 튜토리얼에서는 쿠버네티스와 [Docker](https://www.docker.com/)를 사용하여 간단한 _(운영 준비가 아닌)_ 멀티 티어 웹 애플리케이션을 빌드하고 배포하는 방법을 보여준다. 이 예제는 다음과 같은 구성으로 이루어져 있다. -* 방명록을 저장하는 단일 인스턴스 [Redis](https://redis.io/) 마스터 -* 읽기를 제공하는 여러 개의 [복제된 Redis](https://redis.io/topics/replication) 인스턴스 +* 방명록을 저장하는 단일 인스턴스 [MongoDB](https://www.mongodb.com/) * 여러 개의 웹 프론트엔드 인스턴스 ## {{% heading "objectives" %}} -* Redis 마스터를 시작 -* Redis 슬레이브를 시작 +* Mongo 데이터베이스를 시작 * 방명록 프론트엔드를 시작 * 프론트엔드 서비스를 노출하고 확인 * 정리 하기 @@ -37,24 +36,28 @@ card: -## Redis 마스터를 실행하기 +## Mongo 데이터베이스를 실행 -방명록 애플리케이션은 Redis를 사용하여 데이터를 저장한다. Redis 마스터 인스턴스에 데이터를 기록하고 여러 Redis 슬레이브 인스턴스에서 데이터를 읽는다. +방명록 애플리케이션은 MongoDB를 사용해서 데이터를 저장한다. -### Redis 마스터의 디플로이먼트를 생성하기 +### Mongo 디플로이먼트를 생성하기 -아래의 매니페스트 파일은 단일 복제본 Redis 마스터 파드를 실행하는 디플로이먼트 컨트롤러를 지정한다. +아래의 매니페스트 파일은 단일 복제본 Mongo 파드를 실행하는 디플로이먼트 컨트롤러를 지정한다. -{{< codenew file="application/guestbook/redis-master-deployment.yaml" >}} +{{< codenew file="application/guestbook/mongo-deployment.yaml" >}} 1. 매니페스트 파일을 다운로드한 디렉터리에서 터미널 창을 시작한다. -1. `redis-master-deployment.yaml` 파일을 통해 Redis 마스터의 디플로이먼트에 적용한다. +1. `mongo-deployment.yaml` 파일을 통해 MongoDB 디플로이먼트에 적용한다. ```shell - kubectl apply -f https://k8s.io/examples/application/guestbook/redis-master-deployment.yaml + kubectl apply -f https://k8s.io/examples/application/guestbook/mongo-deployment.yaml ``` + -1. 파드의 목록을 질의하여 Redis 마스터 파드가 실행 중인지 확인한다. +1. 파드의 목록을 질의하여 MongoDB 파드가 실행 중인지 확인한다. ```shell kubectl get pods @@ -64,32 +67,32 @@ card: ```shell NAME READY STATUS RESTARTS AGE - redis-master-1068406935-3lswp 1/1 Running 0 28s + mongo-5cfd459dd4-lrcjb 1/1 Running 0 28s ``` -1. Redis 마스터 파드에서 로그를 보려면 다음 명령어를 실행한다. +2. MongoDB 파드에서 로그를 보려면 다음 명령어를 실행한다. ```shell - kubectl logs -f POD-NAME + kubectl logs -f deployment/mongo ``` -{{< note >}} -POD-NAME을 해당 파드 이름으로 수정해야 한다. -{{< /note >}} +### MongoDB 서비스 생성하기 -### Redis 마스터 서비스 생성하기 +방명록 애플리케이션에서 데이터를 쓰려면 MongoDB와 통신해야 한다. MongoDB 파드로 트래픽을 프록시하려면 [서비스](/ko/docs/concepts/services-networking/service/)를 적용해야 한다. 서비스는 파드에 접근하기 위한 정책을 정의한다. -방명록 애플리케이션에서 데이터를 쓰려면 Redis 마스터와 통신해야 한다. Redis 마스터 파드로 트래픽을 프록시하려면 [서비스](/ko/docs/concepts/services-networking/service/)를 적용해야 한다. 서비스는 파드에 접근하기 위한 정책을 정의한다. +{{< codenew file="application/guestbook/mongo-service.yaml" >}} -{{< codenew file="application/guestbook/redis-master-service.yaml" >}} - -1. `redis-master-service.yaml` 파일을 통해 Redis 마스터 서비스에 적용한다. +1. `mongo-service.yaml` 파일을 통해 MongoDB 서비스에 적용한다. ```shell - kubectl apply -f https://k8s.io/examples/application/guestbook/redis-master-service.yaml + kubectl apply -f https://k8s.io/examples/application/guestbook/mongo-service.yaml ``` + -1. 서비스의 목록을 질의하여 Redis 마스터 서비스가 실행 중인지 확인한다. +1. 서비스의 목록을 질의하여 MongoDB 서비스가 실행 중인지 확인한다. ```shell kubectl get service @@ -100,77 +103,17 @@ POD-NAME을 해당 파드 이름으로 수정해야 한다. ```shell NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.0.0.1 443/TCP 1m - redis-master ClusterIP 10.0.0.151 6379/TCP 8s + mongo ClusterIP 10.0.0.151 6379/TCP 8s ``` {{< note >}} -이 매니페스트 파일은 이전에 정의된 레이블과 일치하는 레이블 집합을 가진 `redis-master`라는 서비스를 생성하므로, 서비스는 네트워크 트래픽을 Redis 마스터 파드로 라우팅한다. +이 매니페스트 파일은 이전에 정의된 레이블과 일치하는 레이블 집합을 가진 `mongo`라는 서비스를 생성하므로, 서비스는 네트워크 트래픽을 MongoDB 파드로 라우팅한다. {{< /note >}} -## Redis 슬레이브 실행하기 - -Redis 마스터는 단일 파드이지만, 복제된 Redis 슬레이브를 추가하여 트래픽 요구 사항을 충족시킬 수 있다. - -### Redis 슬레이브의 디플로이먼트 생성하기 - -디플로이먼트는 매니페스트 파일에 설정된 구성에 따라 확장된다. 이 경우, 디플로이먼트 오브젝트는 두 개의 복제본을 지정한다. - -실행 중인 복제본이 없으면, 이 디플로이먼트는 컨테이너 클러스터에 있는 두 개의 복제본을 시작한다. 반대로 두 개 이상의 복제본이 실행 중이면, 두 개의 복제본이 실행될 때까지 축소된다. - -{{< codenew file="application/guestbook/redis-slave-deployment.yaml" >}} - -1. `redis-slave-deployment.yaml` 파일을 통해 Redis 슬레이브의 디플로이먼트에 적용한다. - - ```shell - kubectl apply -f https://k8s.io/examples/application/guestbook/redis-slave-deployment.yaml - ``` - -1. 파드의 목록을 질의하여 Redis 슬레이브 파드가 실행 중인지 확인한다. - - ```shell - kubectl get pods - ``` - - 결과는 아래와 같은 형태로 나타난다. - - ```shell - NAME READY STATUS RESTARTS AGE - redis-master-1068406935-3lswp 1/1 Running 0 1m - redis-slave-2005841000-fpvqc 0/1 ContainerCreating 0 6s - redis-slave-2005841000-phfv9 0/1 ContainerCreating 0 6s - ``` - -### Redis 슬레이브 서비스 생성하기 - -방명록 애플리케이션은 Redis 슬레이브와 통신하여 데이터를 읽는다. Redis 슬레이브를 확인할 수 있도록 하기 위해 서비스를 설정해야 한다. 서비스는 파드 집합에 투명한 로드 밸런싱을 제공한다. - -{{< codenew file="application/guestbook/redis-slave-service.yaml" >}} - -1. `redis-slave-service.yaml` 파일을 통해 Redis 슬레이브 서비스에 적용한다. - - ```shell - kubectl apply -f https://k8s.io/examples/application/guestbook/redis-slave-service.yaml - ``` - -1. 서비스의 목록을 질의하여 Redis 슬레이브 서비스가 실행 중인지 확인한다. - - ```shell - kubectl get services - ``` - - 결과는 아래와 같은 형태로 나타난다. - - ``` - NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE - kubernetes ClusterIP 10.0.0.1 443/TCP 2m - redis-master ClusterIP 10.0.0.151 6379/TCP 1m - redis-slave ClusterIP 10.0.0.223 6379/TCP 6s - ``` - ## 방명록 프론트엔드를 설정하고 노출하기 -방명록 애플리케이션에는 PHP로 작성된 HTTP 요청을 처리하는 웹 프론트엔드가 있다. 쓰기 요청을 위한 `redis-master` 서비스와 읽기 요청을 위한 `redis-slave` 서비스에 연결하도록 설정된다. +방명록 애플리케이션에는 PHP로 작성된 HTTP 요청을 처리하는 웹 프론트엔드가 있다. 방명록 항목들을 저장하기 위해 `mongo` 서비스에 연결하도록 구성 한다. ### 방명록 프론트엔드의 디플로이먼트 생성하기 @@ -182,6 +125,11 @@ Redis 마스터는 단일 파드이지만, 복제된 Redis 슬레이브를 추 kubectl apply -f https://k8s.io/examples/application/guestbook/frontend-deployment.yaml ``` + + 1. 파드의 목록을 질의하여 세 개의 프론트엔드 복제본이 실행되고 있는지 확인한다. ```shell @@ -199,12 +147,12 @@ Redis 마스터는 단일 파드이지만, 복제된 Redis 슬레이브를 추 ### 프론트엔드 서비스 생성하기 -서비스의 기본 유형은 [ClusterIP](/ko/docs/concepts/services-networking/service/#publishing-services-service-types)이기 때문에 적용한 redis-slave 및 redis-master 서비스는 컨테이너 클러스터 내에서만 접근할 수 있다. `ClusterIP`는 서비스가 가리키는 파드 집합에 대한 단일 IP 주소를 제공한다. 이 IP 주소는 클러스터 내에서만 접근할 수 있다. +서비스의 기본 유형은 [ClusterIP](/ko/docs/concepts/services-networking/service/#publishing-services-service-types)이기 때문에 적용한 `mongo` 서비스는 컨테이너 클러스터 내에서만 접근할 수 있다. `ClusterIP`는 서비스가 가리키는 파드 집합에 대한 단일 IP 주소를 제공한다. 이 IP 주소는 클러스터 내에서만 접근할 수 있다. -게스트가 방명록에 접근할 수 있도록 하려면, 외부에서 볼 수 있도록 프론트엔드 서비스를 구성해야 한다. 그렇게 하면 클라이언트가 컨테이너 클러스터 외부에서 서비스를 요청할 수 있다. Minikube는 `NodePort`를 통해서만 서비스를 노출할 수 있다. +게스트가 방명록에 접근할 수 있도록 하려면, 외부에서 볼 수 있도록 프론트엔드 서비스를 구성해야 한다. 그렇게 하면 클라이언트가 쿠버네티스 클러스터 외부에서 서비스를 요청할 수 있다. 그러나 쿠버네티스 사용자는 `ClusterIP`를 사용하더라도 `kubectl port-forward`를 사용해서 서비스에 접근할 수 있다. {{< note >}} -Google Compute Engine 또는 Google Kubernetes Engine과 같은 일부 클라우드 공급자는 외부 로드 밸런서를 지원한다. 클라우드 공급자가 로드 밸런서를 지원하고 이를 사용하려면 `type : NodePort`를 삭제하거나 주석 처리하고 `type : LoadBalancer`의 주석을 제거해야 한다. +Google Compute Engine 또는 Google Kubernetes Engine과 같은 일부 클라우드 공급자는 외부 로드 밸런서를 지원한다. 클라우드 공급자가 로드 밸런서를 지원하고 이를 사용하려면 `type : LoadBalancer`의 주석을 제거해야 한다. {{< /note >}} {{< codenew file="application/guestbook/frontend-service.yaml" >}} @@ -215,6 +163,11 @@ Google Compute Engine 또는 Google Kubernetes Engine과 같은 일부 클라우 kubectl apply -f https://k8s.io/examples/application/guestbook/frontend-service.yaml ``` + + 1. 서비스의 목록을 질의하여 프론트엔드 서비스가 실행 중인지 확인한다. ```shell @@ -225,29 +178,27 @@ Google Compute Engine 또는 Google Kubernetes Engine과 같은 일부 클라우 ``` NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE - frontend NodePort 10.0.0.112 80:31323/TCP 6s + frontend ClusterIP 10.0.0.112 80/TCP 6s kubernetes ClusterIP 10.0.0.1 443/TCP 4m - redis-master ClusterIP 10.0.0.151 6379/TCP 2m - redis-slave ClusterIP 10.0.0.223 6379/TCP 1m + mongo ClusterIP 10.0.0.151 6379/TCP 2m ``` -### `NodePort`를 통해 프론트엔드 서비스 확인하기 +### `kubectl port-forward`를 통해 프론트엔드 서비스 확인하기 -애플리케이션을 Minikube 또는 로컬 클러스터에 배포한 경우, 방명록을 보려면 IP 주소를 찾아야 한다. - -1. 프론트엔드 서비스의 IP 주소를 얻기 위해 아래 명령어를 실행한다. +1. 다음 명령어를 실행해서 로컬 머신의 `8080` 포트를 서비스의 `80` 포트로 전달한다. ```shell - minikube service frontend --url + kubectl port-forward svc/frontend 8080:80 ``` 결과는 아래와 같은 형태로 나타난다. ``` - http://192.168.99.100:31323 + Forwarding from 127.0.0.1:8080 -> 80 + Forwarding from [::1]:8080 -> 80 ``` -1. IP 주소를 복사하고, 방명록을 보기 위해 브라우저에서 페이지를 로드한다. +1. 방명록을 보기위해 브라우저에서 [http://localhost:8080](http://localhost:8080) 페이지를 로드한다. ### `LoadBalancer`를 통해 프론트엔드 서비스 확인하기 @@ -270,7 +221,7 @@ Google Compute Engine 또는 Google Kubernetes Engine과 같은 일부 클라우 ## 웹 프론트엔드 확장하기 -서버가 디플로이먼트 컨트롤러를 사용하는 서비스로 정의되어 있기 때문에 확장 또는 축소가 쉽다. +서버가 디플로이먼트 컨르롤러를 사용하는 서비스로 정의되어 있기에 필요에 따라 확장 또는 축소할 수 있다. 1. 프론트엔드 파드의 수를 확장하기 위해 아래 명령어를 실행한다. @@ -293,9 +244,7 @@ Google Compute Engine 또는 Google Kubernetes Engine과 같은 일부 클라우 frontend-3823415956-k22zn 1/1 Running 0 54m frontend-3823415956-w9gbt 1/1 Running 0 54m frontend-3823415956-x2pld 1/1 Running 0 5s - redis-master-1068406935-3lswp 1/1 Running 0 56m - redis-slave-2005841000-fpvqc 1/1 Running 0 55m - redis-slave-2005841000-phfv9 1/1 Running 0 55m + mongo-1068406935-3lswp 1/1 Running 0 56m ``` 1. 프론트엔드 파드의 수를 축소하기 위해 아래 명령어를 실행한다. @@ -316,9 +265,7 @@ Google Compute Engine 또는 Google Kubernetes Engine과 같은 일부 클라우 NAME READY STATUS RESTARTS AGE frontend-3823415956-k22zn 1/1 Running 0 1h frontend-3823415956-w9gbt 1/1 Running 0 1h - redis-master-1068406935-3lswp 1/1 Running 0 1h - redis-slave-2005841000-fpvqc 1/1 Running 0 1h - redis-slave-2005841000-phfv9 1/1 Running 0 1h + mongo-1068406935-3lswp 1/1 Running 0 1h ``` @@ -330,19 +277,18 @@ Google Compute Engine 또는 Google Kubernetes Engine과 같은 일부 클라우 1. 모든 파드, 디플로이먼트, 서비스를 삭제하기 위해 아래 명령어를 실행한다. ```shell - kubectl delete deployment -l app=redis - kubectl delete service -l app=redis - kubectl delete deployment -l app=guestbook - kubectl delete service -l app=guestbook + kubectl delete deployment -l app.kubernetes.io/name=mongo + kubectl delete service -l app.kubernetes.io/name=mongo + kubectl delete deployment -l app.kubernetes.io/name=guestbook + kubectl delete service -l app.kubernetes.io/name=guestbook ``` 결과는 아래와 같은 형태로 나타난다. ``` - deployment.apps "redis-master" deleted - deployment.apps "redis-slave" deleted - service "redis-master" deleted - service "redis-slave" deleted + deployment.apps "mongo" deleted + service "mongo" deleted + deployment.apps "frontend" deleted deployment.apps "frontend" deleted service "frontend" deleted ``` @@ -363,7 +309,6 @@ Google Compute Engine 또는 Google Kubernetes Engine과 같은 일부 클라우 ## {{% heading "whatsnext" %}} -* [ELK 로깅과 모니터링](/ko/docs/tutorials/stateless-application/guestbook-logs-metrics-with-elk/)을 방명록 애플리케이션에 추가하기 * [쿠버네티스 기초](/ko/docs/tutorials/kubernetes-basics/) 튜토리얼을 완료 * [MySQL과 Wordpress을 위한 퍼시스턴트 볼륨](/ko/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume/#visit-your-new-wordpress-blog)을 사용하여 블로그 생성하는데 쿠버네티스 이용하기 * [애플리케이션 접속](/ko/docs/concepts/services-networking/connect-applications-service/)에 대해 더 알아보기 diff --git a/content/ko/examples/application/guestbook/frontend-deployment.yaml b/content/ko/examples/application/guestbook/frontend-deployment.yaml index 23d64be644..613c654aa9 100644 --- a/content/ko/examples/application/guestbook/frontend-deployment.yaml +++ b/content/ko/examples/application/guestbook/frontend-deployment.yaml @@ -3,22 +3,24 @@ kind: Deployment metadata: name: frontend labels: - app: guestbook + app.kubernetes.io/name: guestbook + app.kubernetes.io/component: frontend spec: selector: matchLabels: - app: guestbook - tier: frontend + app.kubernetes.io/name: guestbook + app.kubernetes.io/component: frontend replicas: 3 template: metadata: labels: - app: guestbook - tier: frontend + app.kubernetes.io/name: guestbook + app.kubernetes.io/component: frontend spec: containers: - - name: php-redis - image: gcr.io/google-samples/gb-frontend:v4 + - name: guestbook + image: paulczar/gb-frontend:v5 + # image: gcr.io/google-samples/gb-frontend:v4 resources: requests: cpu: 100m @@ -26,13 +28,5 @@ spec: env: - name: GET_HOSTS_FROM value: dns - # Using `GET_HOSTS_FROM=dns` requires your cluster to - # provide a dns service. As of Kubernetes 1.3, DNS is a built-in - # service launched automatically. However, if the cluster you are using - # does not have a built-in DNS service, you can instead - # access an environment variable to find the master - # service's host. To do so, comment out the 'value: dns' line above, and - # uncomment the line below: - # value: env ports: - containerPort: 80 diff --git a/content/ko/examples/application/guestbook/frontend-service.yaml b/content/ko/examples/application/guestbook/frontend-service.yaml index 6f283f347b..34ad3771d7 100644 --- a/content/ko/examples/application/guestbook/frontend-service.yaml +++ b/content/ko/examples/application/guestbook/frontend-service.yaml @@ -3,16 +3,14 @@ kind: Service metadata: name: frontend labels: - app: guestbook - tier: frontend + app.kubernetes.io/name: guestbook + app.kubernetes.io/component: frontend spec: - # comment or delete the following line if you want to use a LoadBalancer - type: NodePort # if your cluster supports it, uncomment the following to automatically create # an external load-balanced IP for the frontend service. # type: LoadBalancer ports: - port: 80 selector: - app: guestbook - tier: frontend + app.kubernetes.io/name: guestbook + app.kubernetes.io/component: frontend diff --git a/content/ko/examples/application/guestbook/mongo-deployment.yaml b/content/ko/examples/application/guestbook/mongo-deployment.yaml new file mode 100644 index 0000000000..04908ce25b --- /dev/null +++ b/content/ko/examples/application/guestbook/mongo-deployment.yaml @@ -0,0 +1,31 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: mongo + labels: + app.kubernetes.io/name: mongo + app.kubernetes.io/component: backend +spec: + selector: + matchLabels: + app.kubernetes.io/name: mongo + app.kubernetes.io/component: backend + replicas: 1 + template: + metadata: + labels: + app.kubernetes.io/name: mongo + app.kubernetes.io/component: backend + spec: + containers: + - name: mongo + image: mongo:4.2 + args: + - --bind_ip + - 0.0.0.0 + resources: + requests: + cpu: 100m + memory: 100Mi + ports: + - containerPort: 27017 diff --git a/content/ko/examples/application/guestbook/mongo-service.yaml b/content/ko/examples/application/guestbook/mongo-service.yaml new file mode 100644 index 0000000000..b9cef607bc --- /dev/null +++ b/content/ko/examples/application/guestbook/mongo-service.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + name: mongo + labels: + app.kubernetes.io/name: mongo + app.kubernetes.io/component: backend +spec: + ports: + - port: 27017 + targetPort: 27017 + selector: + app.kubernetes.io/name: mongo + app.kubernetes.io/component: backend diff --git a/content/ko/examples/application/guestbook/redis-master-deployment.yaml b/content/ko/examples/application/guestbook/redis-master-deployment.yaml deleted file mode 100644 index 478216d1ac..0000000000 --- a/content/ko/examples/application/guestbook/redis-master-deployment.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: redis-master - labels: - app: redis -spec: - selector: - matchLabels: - app: redis - role: master - tier: backend - replicas: 1 - template: - metadata: - labels: - app: redis - role: master - tier: backend - spec: - containers: - - name: master - image: k8s.gcr.io/redis:e2e # or just image: redis - resources: - requests: - cpu: 100m - memory: 100Mi - ports: - - containerPort: 6379 diff --git a/content/ko/examples/application/guestbook/redis-master-service.yaml b/content/ko/examples/application/guestbook/redis-master-service.yaml deleted file mode 100644 index 65cef2191c..0000000000 --- a/content/ko/examples/application/guestbook/redis-master-service.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: redis-master - labels: - app: redis - role: master - tier: backend -spec: - ports: - - name: redis - port: 6379 - targetPort: 6379 - selector: - app: redis - role: master - tier: backend diff --git a/content/ko/examples/application/guestbook/redis-slave-deployment.yaml b/content/ko/examples/application/guestbook/redis-slave-deployment.yaml deleted file mode 100644 index 1a7b04386a..0000000000 --- a/content/ko/examples/application/guestbook/redis-slave-deployment.yaml +++ /dev/null @@ -1,40 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: redis-slave - labels: - app: redis -spec: - selector: - matchLabels: - app: redis - role: slave - tier: backend - replicas: 2 - template: - metadata: - labels: - app: redis - role: slave - tier: backend - spec: - containers: - - name: slave - image: gcr.io/google_samples/gb-redisslave:v3 - resources: - requests: - cpu: 100m - memory: 100Mi - env: - - name: GET_HOSTS_FROM - value: dns - # Using `GET_HOSTS_FROM=dns` requires your cluster to - # provide a dns service. As of Kubernetes 1.3, DNS is a built-in - # service launched automatically. However, if the cluster you are using - # does not have a built-in DNS service, you can instead - # access an environment variable to find the master - # service's host. To do so, comment out the 'value: dns' line above, and - # uncomment the line below: - # value: env - ports: - - containerPort: 6379 diff --git a/content/ko/examples/application/guestbook/redis-slave-service.yaml b/content/ko/examples/application/guestbook/redis-slave-service.yaml deleted file mode 100644 index 238fd63fb6..0000000000 --- a/content/ko/examples/application/guestbook/redis-slave-service.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: redis-slave - labels: - app: redis - role: slave - tier: backend -spec: - ports: - - port: 6379 - selector: - app: redis - role: slave - tier: backend From 4c3ff2f844c62198f1d070d0098a07e1244e1581 Mon Sep 17 00:00:00 2001 From: spy1233 Date: Sun, 21 Feb 2021 23:08:41 +0900 Subject: [PATCH 041/788] Fix mistranslation in labels.md --- .../docs/concepts/overview/working-with-objects/labels.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/ko/docs/concepts/overview/working-with-objects/labels.md b/content/ko/docs/concepts/overview/working-with-objects/labels.md index 1e0d86a97b..5d60c9f28f 100644 --- a/content/ko/docs/concepts/overview/working-with-objects/labels.md +++ b/content/ko/docs/concepts/overview/working-with-objects/labels.md @@ -108,7 +108,7 @@ tier != frontend 후자는 `tier`를 키로 가지고, 값을 `frontend`를 가지는 리소스를 제외한 모든 리소스를 선택하고, `tier`를 키로 가지며, 값을 공백으로 가지는 모든 리소스를 선택한다. `environment=production,tier!=frontend` 처럼 쉼표를 통해 한 문장으로 `frontend`를 제외한 `production`을 필터링할 수 있다. -균등-기반 레이블의 요건에 대한 하나의 이용 시나리오는 파드가 노드를 선택하는 기준을 지정하는 것이다. +일치성 기준 레이블 요건에 대한 하나의 이용 시나리오는 파드가 노드를 선택하는 기준을 지정하는 것이다. 예를 들어, 아래 샘플 파드는 "`accelerator=nvidia-tesla-p100`" 레이블을 가진 노드를 선택한다. ```yaml @@ -154,10 +154,10 @@ _집합성 기준_ 요건은 _일치성 기준_ 요건과 조합해서 사용할 LIST와 WATCH 작업은 쿼리 파라미터를 사용해서 반환되는 오브젝트 집합을 필터링하기 위해 레이블 셀렉터를 지정할 수 있다. 다음의 2가지 요건 모두 허용된다(URL 쿼리 문자열을 그대로 표기함). - * _불일치 기준_ 요건: `?labelSelector=environment%3Dproduction,tier%3Dfrontend` + * _일치성 기준_ 요건: `?labelSelector=environment%3Dproduction,tier%3Dfrontend` * _집합성 기준_ 요건: `?labelSelector=environment+in+%28production%2Cqa%29%2Ctier+in+%28frontend%29` -두 가지 레이블 셀렉터 스타일은 모두 REST 클라이언트를 통해 선택된 리소스를 확인하거나 목록을 볼 수 있다. 예를 들어, `kubectl`로 `apiserver`를 대상으로 _불일치 기준_ 으로 하는 셀렉터를 다음과 같이 이용할 수 있다. +두 가지 레이블 셀렉터 스타일은 모두 REST 클라이언트를 통해 선택된 리소스를 확인하거나 목록을 볼 수 있다. 예를 들어, `kubectl`로 `apiserver`를 대상으로 _일치성 기준_ 으로 하는 셀렉터를 다음과 같이 이용할 수 있다. ```shell kubectl get pods -l environment=production,tier=frontend @@ -192,7 +192,7 @@ kubectl get pods -l 'environment,environment notin (frontend)' `services`에서 지정하는 파드 집합은 레이블 셀렉터로 정의한다. 마찬가지로 `replicationcontrollers`가 관리하는 파드의 오브젝트 그룹도 레이블 셀렉터로 정의한다. -서비스와 레플리케이션 컨트롤러의 레이블 셀렉터는 `json` 또는 `yaml` 파일에 매핑된 _균등-기반_ 요구사항의 셀렉터만 지원한다. +서비스와 레플리케이션 컨트롤러의 레이블 셀렉터는 `json` 또는 `yaml` 파일에 매핑된 _일치성 기준_ 요구사항의 셀렉터만 지원한다. ```json "selector": { From 9068e7071685a8db58076272f45c2d99b58fbd17 Mon Sep 17 00:00:00 2001 From: Jailton Lopes Date: Sun, 21 Feb 2021 20:18:25 -0300 Subject: [PATCH 042/788] Update content/en/docs/tasks/access-application-cluster/port-forward-access-application-cluster.md Update page port-forward-access-application-cluster.md to use MongoDB examples instead of Redis examples Commit 99029b9 removes the Redis examples. Signed-off-by: Jailton Lopes --- ...port-forward-access-application-cluster.md | 91 ++++++++++--------- 1 file changed, 49 insertions(+), 42 deletions(-) diff --git a/content/en/docs/tasks/access-application-cluster/port-forward-access-application-cluster.md b/content/en/docs/tasks/access-application-cluster/port-forward-access-application-cluster.md index 62ddbdcbbc..0a6d352d2c 100644 --- a/content/en/docs/tasks/access-application-cluster/port-forward-access-application-cluster.md +++ b/content/en/docs/tasks/access-application-cluster/port-forward-access-application-cluster.md @@ -7,7 +7,7 @@ min-kubernetes-server-version: v1.10 -This page shows how to use `kubectl port-forward` to connect to a Redis +This page shows how to use `kubectl port-forward` to connect to a MongoDB server running in a Kubernetes cluster. This type of connection can be useful for database debugging. @@ -19,25 +19,25 @@ for database debugging. * {{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} -* Install [redis-cli](http://redis.io/topics/rediscli). +* Install [MongoDB Shell](https://www.mongodb.com/try/download/shell). -## Creating Redis deployment and service +## Creating MongoDB deployment and service -1. Create a Deployment that runs Redis: +1. Create a Deployment that runs MongoDB: ```shell - kubectl apply -f https://k8s.io/examples/application/guestbook/redis-master-deployment.yaml + kubectl apply -f https://k8s.io/examples/application/guestbook/mongo-deployment.yaml ``` The output of a successful command verifies that the deployment was created: ``` - deployment.apps/redis-master created + deployment.apps/mongo created ``` View the pod status to check that it is ready: @@ -49,8 +49,8 @@ for database debugging. The output displays the pod created: ``` - NAME READY STATUS RESTARTS AGE - redis-master-765d459796-258hz 1/1 Running 0 50s + NAME READY STATUS RESTARTS AGE + mongo-75f59d57f4-4nd6q 1/1 Running 0 2m4s ``` View the Deployment's status: @@ -62,8 +62,8 @@ for database debugging. The output displays that the Deployment was created: ``` - NAME READY UP-TO-DATE AVAILABLE AGE - redis-master 1/1 1 1 55s + NAME READY UP-TO-DATE AVAILABLE AGE + mongo 1/1 1 1 2m21s ``` The Deployment automatically manages a ReplicaSet. @@ -76,50 +76,50 @@ for database debugging. The output displays that the ReplicaSet was created: ``` - NAME DESIRED CURRENT READY AGE - redis-master-765d459796 1 1 1 1m + NAME DESIRED CURRENT READY AGE + mongo-75f59d57f4 1 1 1 3m12s ``` -2. Create a Service to expose Redis on the network: +2. Create a Service to expose MongoDB on the network: ```shell - kubectl apply -f https://k8s.io/examples/application/guestbook/redis-master-service.yaml + kubectl apply -f https://k8s.io/examples/application/guestbook/mongo-service.yaml ``` The output of a successful command verifies that the Service was created: ``` - service/redis-master created + service/mongo created ``` Check the Service created: ```shell - kubectl get service redis-master + kubectl get service mongo ``` The output displays the service created: ``` - NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE - redis-master ClusterIP 10.0.0.213 6379/TCP 27s + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + mongo ClusterIP 10.96.41.183 27017/TCP 11s ``` -3. Verify that the Redis server is running in the Pod, and listening on port 6379: +3. Verify that the MongoDB server is running in the Pod, and listening on port 27017: ```shell - # Change redis-master-765d459796-258hz to the name of the Pod - kubectl get pod redis-master-765d459796-258hz --template='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}' + # Change mongo-75f59d57f4-4nd6q to the name of the Pod + kubectl get pod mongo-75f59d57f4-4nd6q --template='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}' ``` - The output displays the port for Redis in that Pod: + The output displays the port for MongoDB in that Pod: ``` - 6379 + 27017 ``` - (this is the TCP port allocated to Redis on the internet). + (this is the TCP port allocated to MongoDB on the internet). ## Forward a local port to a port on the Pod @@ -127,39 +127,39 @@ for database debugging. ```shell - # Change redis-master-765d459796-258hz to the name of the Pod - kubectl port-forward redis-master-765d459796-258hz 7000:6379 + # Change mongo-75f59d57f4-4nd6q to the name of the Pod + kubectl port-forward mongo-75f59d57f4-4nd6q 28015:27017 ``` which is the same as ```shell - kubectl port-forward pods/redis-master-765d459796-258hz 7000:6379 + kubectl port-forward pods/mongo-75f59d57f4-4nd6q 28015:27017 ``` or ```shell - kubectl port-forward deployment/redis-master 7000:6379 + kubectl port-forward deployment/mongo 28015:27017 ``` or ```shell - kubectl port-forward replicaset/redis-master 7000:6379 + kubectl port-forward replicaset/mongo-75f59d57f4 28015:27017 ``` or ```shell - kubectl port-forward service/redis-master 7000:redis + kubectl port-forward service/mongo 28015:27017 ``` Any of the above commands works. The output is similar to this: ``` - Forwarding from 127.0.0.1:7000 -> 6379 - Forwarding from [::1]:7000 -> 6379 + Forwarding from 127.0.0.1:28015 -> 27017 + Forwarding from [::1]:28015 -> 27017 ``` {{< note >}} @@ -168,22 +168,22 @@ for database debugging. {{< /note >}} -2. Start the Redis command line interface: +2. Start the MongoDB command line interface: ```shell - redis-cli -p 7000 + mongosh --port 28015 ``` -3. At the Redis command line prompt, enter the `ping` command: +3. At the MongoDB command line prompt, enter the `ping` command: ``` - ping + db.runCommand( { ping: 1 } ) ``` A successful ping request returns: ``` - PONG + { ok: 1 } ``` ### Optionally let _kubectl_ choose the local port {#let-kubectl-choose-local-port} @@ -193,15 +193,22 @@ the local port and thus relieve you from having to manage local port conflicts, the slightly simpler syntax: ```shell -kubectl port-forward deployment/redis-master :6379 +kubectl port-forward deployment/mongo :27017 +``` + +The output is similar to this: + +``` +Forwarding from 127.0.0.1:63753 -> 27017 +Forwarding from [::1]:63753 -> 27017 ``` The `kubectl` tool finds a local port number that is not in use (avoiding low ports numbers, because these might be used by other applications). The output is similar to: ``` -Forwarding from 127.0.0.1:62162 -> 6379 -Forwarding from [::1]:62162 -> 6379 +Forwarding from 127.0.0.1:63753 -> 27017 +Forwarding from [::1]:63753 -> 27017 ``` @@ -209,8 +216,8 @@ Forwarding from [::1]:62162 -> 6379 ## Discussion -Connections made to local port 7000 are forwarded to port 6379 of the Pod that -is running the Redis server. With this connection in place, you can use your +Connections made to local port 28015 are forwarded to port 27017 of the Pod that +is running the MongoDB server. With this connection in place, you can use your local workstation to debug the database that is running in the Pod. {{< note >}} From a0d509156dc4481f854bdbd319046c7f72f19dcb Mon Sep 17 00:00:00 2001 From: Michael Taufen Date: Sun, 21 Feb 2021 14:59:34 -0800 Subject: [PATCH 043/788] Update ServiceAccountIssuerDiscovery docs for GA --- .../command-line-tools-reference/feature-gates.md | 5 +++-- .../configure-service-account.md | 11 +++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/content/en/docs/reference/command-line-tools-reference/feature-gates.md b/content/en/docs/reference/command-line-tools-reference/feature-gates.md index 82eaea8390..2e9db5fce0 100644 --- a/content/en/docs/reference/command-line-tools-reference/feature-gates.md +++ b/content/en/docs/reference/command-line-tools-reference/feature-gates.md @@ -155,8 +155,6 @@ different Kubernetes components. | `SCTPSupport` | `true` | Beta | 1.19 | | | `ServerSideApply` | `false` | Alpha | 1.14 | 1.15 | | `ServerSideApply` | `true` | Beta | 1.16 | | -| `ServiceAccountIssuerDiscovery` | `false` | Alpha | 1.18 | 1.19 | -| `ServiceAccountIssuerDiscovery` | `true` | Beta | 1.20 | | | `ServiceLBNodePortControl` | `false` | Alpha | 1.20 | | | `ServiceNodeExclusion` | `false` | Alpha | 1.8 | 1.18 | | `ServiceNodeExclusion` | `true` | Beta | 1.19 | | @@ -307,6 +305,9 @@ different Kubernetes components. | `SCTPSupport` | `false` | Alpha | 1.12 | 1.18 | | `SCTPSupport` | `true` | Beta | 1.19 | 1.19 | | `SCTPSupport` | `true` | GA | 1.20 | - | +| `ServiceAccountIssuerDiscovery` | `false` | Alpha | 1.18 | 1.19 | +| `ServiceAccountIssuerDiscovery` | `true` | Beta | 1.20 | 1.20 | +| `ServiceAccountIssuerDiscovery` | `true` | GA | 1.21 | - | | `ServiceAppProtocol` | `false` | Alpha | 1.18 | 1.18 | | `ServiceAppProtocol` | `true` | Beta | 1.19 | | | `ServiceAppProtocol` | `true` | GA | 1.20 | - | diff --git a/content/en/docs/tasks/configure-pod-container/configure-service-account.md b/content/en/docs/tasks/configure-pod-container/configure-service-account.md index d96a5c8270..23a76f3752 100644 --- a/content/en/docs/tasks/configure-pod-container/configure-service-account.md +++ b/content/en/docs/tasks/configure-pod-container/configure-service-account.md @@ -323,11 +323,10 @@ The application is responsible for reloading the token when it rotates. Periodic ## Service Account Issuer Discovery -{{< feature-state for_k8s_version="v1.20" state="beta" >}} +{{< feature-state for_k8s_version="v1.21" state="stable" >}} -The Service Account Issuer Discovery feature is enabled by enabling the -`ServiceAccountIssuerDiscovery` [feature gate](/docs/reference/command-line-tools-reference/feature-gates) -and then enabling the Service Account Token Projection feature as described +The Service Account Issuer Discovery feature is enabled when the Service Account +Token Projection feature is enabled, as described [above](#service-account-token-volume-projection). {{< note >}} @@ -349,8 +348,8 @@ Configuration document at `/.well-known/openid-configuration` and the associated JSON Web Key Set (JWKS) at `/openid/v1/jwks`. The OpenID Provider Configuration is sometimes referred to as the _discovery document_. -When enabled, the cluster is also configured with a default RBAC ClusterRole -called `system:service-account-issuer-discovery`. No role bindings are provided +Clusters include a default RBAC ClusterRole called +`system:service-account-issuer-discovery`. No role bindings are provided by default. Administrators may, for example, choose whether to bind the role to `system:authenticated` or `system:unauthenticated` depending on their security requirements and which external systems they intend to federate with. From 2b6074e8edf99244452e846a6a713138fad25f37 Mon Sep 17 00:00:00 2001 From: raghvenders Date: Mon, 22 Feb 2021 19:13:26 -0600 Subject: [PATCH 044/788] changes --- content/en/docs/reference/_index.md | 26 ++++++++++++++----- .../reference/access-authn-authz/_index.md | 2 +- .../command-line-tools-reference/_index.md | 2 +- content/en/docs/reference/glossary/index.md | 2 +- .../docs/reference/issues-security/_index.md | 2 +- content/en/docs/reference/kubectl/_index.md | 2 +- .../en/docs/reference/setup-tools/_index.md | 2 +- .../reference/{tools.md => tools/_index.md} | 11 +++----- content/en/docs/reference/using-api/_index.md | 3 ++- 9 files changed, 31 insertions(+), 21 deletions(-) rename content/en/docs/reference/{tools.md => tools/_index.md} (78%) diff --git a/content/en/docs/reference/_index.md b/content/en/docs/reference/_index.md index 5885618102..01341d4a67 100644 --- a/content/en/docs/reference/_index.md +++ b/content/en/docs/reference/_index.md @@ -6,8 +6,10 @@ linkTitle: "Reference" main_menu: true weight: 70 content_type: concept +no_list: true --- + This section of the Kubernetes documentation contains references. @@ -16,11 +18,17 @@ This section of the Kubernetes documentation contains references. -## API Reference +## Standardized Glossary + +* [Glossary](/docs/reference/glossary/) - a comprehensive, standardized list of Kubernetes terminology + + * [Kubernetes API Reference](/docs/reference/kubernetes-api/) * [One-page API Reference for Kubernetes {{< param "version" >}}](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/) * [Using The Kubernetes API](/docs/reference/using-api/) - overview of the API for Kubernetes. +* [API access control](/docs/reference/access-authn-authz/) - details on how Kubernetes controls API access +* [Well-Known Labels, Annotations and Taints](/docs/reference/kubernetes-api/labels-annotations-taints/) ## API Client Libraries @@ -32,22 +40,28 @@ client libraries: - [Kubernetes Python client library](https://github.com/kubernetes-client/python) - [Kubernetes Java client library](https://github.com/kubernetes-client/java) - [Kubernetes JavaScript client library](https://github.com/kubernetes-client/javascript) +- [Kubernetes Dotnet client library](https://github.com/kubernetes-client/csharp) +- [Kubernetes Haskell Client library](https://github.com/kubernetes-client/haskell) -## CLI Reference +## CLI * [kubectl](/docs/reference/kubectl/overview/) - Main CLI tool for running commands and managing Kubernetes clusters. * [JSONPath](/docs/reference/kubectl/jsonpath/) - Syntax guide for using [JSONPath expressions](https://goessner.net/articles/JsonPath/) with kubectl. * [kubeadm](/docs/reference/setup-tools/kubeadm/) - CLI tool to easily provision a secure Kubernetes cluster. -## Components Reference +## Components * [kubelet](/docs/reference/command-line-tools-reference/kubelet/) - The primary *node agent* that runs on each node. The kubelet takes a set of PodSpecs and ensures that the described containers are running and healthy. * [kube-apiserver](/docs/reference/command-line-tools-reference/kube-apiserver/) - REST API that validates and configures data for API objects such as pods, services, replication controllers. * [kube-controller-manager](/docs/reference/command-line-tools-reference/kube-controller-manager/) - Daemon that embeds the core control loops shipped with Kubernetes. * [kube-proxy](/docs/reference/command-line-tools-reference/kube-proxy/) - Can do simple TCP/UDP stream forwarding or round-robin TCP/UDP forwarding across a set of back-ends. -* [kube-scheduler](/docs/reference/command-line-tools-reference/kube-scheduler/) - Scheduler that manages availability, performance, and capacity. - * [kube-scheduler Policies](/docs/reference/scheduling/policies) - * [kube-scheduler Profiles](/docs/reference/scheduling/config#profiles) +* [kube-scheduler](/docs/reference/command-line-tools-reference/kube-scheduler/) - Scheduler that manages availability, performance, and capacity. + +## Scheduling + +* [Scheduler Policies](/docs/reference/scheduling/policies) +* [Scheduler Profiles](/docs/reference/scheduling/config#profiles) + ## Design Docs diff --git a/content/en/docs/reference/access-authn-authz/_index.md b/content/en/docs/reference/access-authn-authz/_index.md index d999e52bf5..86d06488a8 100644 --- a/content/en/docs/reference/access-authn-authz/_index.md +++ b/content/en/docs/reference/access-authn-authz/_index.md @@ -1,6 +1,6 @@ --- title: API Access Control -weight: 20 +weight: 15 no_list: true --- diff --git a/content/en/docs/reference/command-line-tools-reference/_index.md b/content/en/docs/reference/command-line-tools-reference/_index.md index 6698fe66c0..8f9cf74a0e 100644 --- a/content/en/docs/reference/command-line-tools-reference/_index.md +++ b/content/en/docs/reference/command-line-tools-reference/_index.md @@ -1,4 +1,4 @@ --- -title: Command line tools reference +title: Component tools weight: 60 --- diff --git a/content/en/docs/reference/glossary/index.md b/content/en/docs/reference/glossary/index.md index 1fb8799a16..29bd54bd21 100755 --- a/content/en/docs/reference/glossary/index.md +++ b/content/en/docs/reference/glossary/index.md @@ -2,7 +2,7 @@ approvers: - chenopis - abiogenesis-now -title: Standardized Glossary +title: Glossary layout: glossary noedit: true default_active_tag: fundamental diff --git a/content/en/docs/reference/issues-security/_index.md b/content/en/docs/reference/issues-security/_index.md index 530e98bf61..50c3f29333 100644 --- a/content/en/docs/reference/issues-security/_index.md +++ b/content/en/docs/reference/issues-security/_index.md @@ -1,4 +1,4 @@ --- title: Kubernetes Issues and Security -weight: 10 +weight: 40 --- \ No newline at end of file diff --git a/content/en/docs/reference/kubectl/_index.md b/content/en/docs/reference/kubectl/_index.md index 7b6c2d720b..ce08a5a97a 100755 --- a/content/en/docs/reference/kubectl/_index.md +++ b/content/en/docs/reference/kubectl/_index.md @@ -1,5 +1,5 @@ --- -title: "kubectl CLI" +title: "CLI" weight: 60 --- diff --git a/content/en/docs/reference/setup-tools/_index.md b/content/en/docs/reference/setup-tools/_index.md index 3988d6485e..c97758fe6e 100644 --- a/content/en/docs/reference/setup-tools/_index.md +++ b/content/en/docs/reference/setup-tools/_index.md @@ -1,4 +1,4 @@ --- -title: Setup tools reference +title: Setup tools weight: 50 --- diff --git a/content/en/docs/reference/tools.md b/content/en/docs/reference/tools/_index.md similarity index 78% rename from content/en/docs/reference/tools.md rename to content/en/docs/reference/tools/_index.md index 41d8ef4d1c..7194ab83bd 100644 --- a/content/en/docs/reference/tools.md +++ b/content/en/docs/reference/tools/_index.md @@ -1,8 +1,10 @@ --- +title: Other Tools reviewers: - janetkuo -title: Tools content_type: concept +weight: 80 +no_list: true --- @@ -10,13 +12,6 @@ Kubernetes contains several built-in tools to help you work with the Kubernetes -## Kubectl - -[`kubectl`](/docs/tasks/tools/install-kubectl/) is the command line tool for Kubernetes. It controls the Kubernetes cluster manager. - -## Kubeadm - -[`kubeadm`](/docs/setup/production-environment/tools/kubeadm/install-kubeadm/) is the command line tool for easily provisioning a secure Kubernetes cluster on top of physical or cloud servers or virtual machines (currently in alpha). ## Minikube diff --git a/content/en/docs/reference/using-api/_index.md b/content/en/docs/reference/using-api/_index.md index df9e00758e..2039e33e28 100644 --- a/content/en/docs/reference/using-api/_index.md +++ b/content/en/docs/reference/using-api/_index.md @@ -1,11 +1,12 @@ --- -title: Kubernetes API Overview +title: API Overview reviewers: - erictune - lavalamp - jbeda content_type: concept weight: 10 +no_list: true card: name: reference weight: 50 From 363545ef9673242e21eacad2c6259a0be803a33c Mon Sep 17 00:00:00 2001 From: flo-oss Date: Mon, 22 Feb 2021 21:35:48 -0800 Subject: [PATCH 045/788] Slightly more creative translation to make it sound less repetitive and less commanding :-) --- content/de/docs/concepts/workloads/pods/_index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/de/docs/concepts/workloads/pods/_index.md b/content/de/docs/concepts/workloads/pods/_index.md index e6adce49a6..956190e6c7 100644 --- a/content/de/docs/concepts/workloads/pods/_index.md +++ b/content/de/docs/concepts/workloads/pods/_index.md @@ -341,12 +341,12 @@ sichtbar sind jedoch von dort nicht gesteuert werden können. ## {{% heading "whatsnext" %}} -* Lerne den +* Verstehe den [Lebenszyklus eines Pods](/docs/concepts/workloads/pods/pod-lifecycle/). -* Lerne die [RuntimeClass](/docs/concepts/containers/runtime-class/) +* Erfahre mehr über [RuntimeClass](/docs/concepts/containers/runtime-class/) und wie du damit verschiedene Pods mit unterschiedlichen Container-Laufzeitumgebungen konfigurieren kannst. -* Lese +* Mehr zum Thema [Restriktionen für die Verteilung von Pods](/docs/concepts/workloads/pods/pod-topology-spread-constraints/). * Lese [Pod-Disruption-Budget](/docs/concepts/workloads/pods/disruptions/) From a12e5510056ee889090395edd6e451e9af891de7 Mon Sep 17 00:00:00 2001 From: TAKAHASHI Shuuji Date: Thu, 17 Sep 2020 18:38:04 +0900 Subject: [PATCH 046/788] Translate en/docs/contribute/review/reviewing-prs into Japanese. --- .../docs/contribute/review/reviewing-prs.md | 114 ++++++++---------- 1 file changed, 51 insertions(+), 63 deletions(-) diff --git a/content/ja/docs/contribute/review/reviewing-prs.md b/content/ja/docs/contribute/review/reviewing-prs.md index ff6ef9d709..0ecb2951e0 100644 --- a/content/ja/docs/contribute/review/reviewing-prs.md +++ b/content/ja/docs/contribute/review/reviewing-prs.md @@ -1,5 +1,5 @@ --- -title: Reviewing pull requests +title: プルリクエストのレビュー content_type: concept main_menu: true weight: 10 @@ -7,91 +7,79 @@ weight: 10 -Anyone can review a documentation pull request. Visit the [pull requests](https://github.com/kubernetes/website/pulls) section in the Kubernetes website repository to see open pull requests. +ドキュメントのプルリクエストは誰でもレビューすることができます。Kubernetesのwebsiteリポジトリで[pull requests](https://github.com/kubernetes/website/pulls)のセクションに移動し、open状態のプルリクエストを確認してください。 -Reviewing documentation pull requests is a -great way to introduce yourself to the Kubernetes community. -It helps you learn the code base and build trust with other contributors. +ドキュメントのプルリクエストのレビューは、Kubernetesコミュニティに自分を知ってもらうためのよい方法の1つです。コードベースについて学んだり、他のコントリビューターとの信頼関係を築く助けともなるはずです。 -Before reviewing, it's a good idea to: +レビューを行う前には、以下のことを理解しておくとよいでしょう。 -- Read the [content guide](/docs/contribute/style/content-guide/) and - [style guide](/docs/contribute/style/style-guide/) so you can leave informed comments. -- Understand the different - [roles and responsibilities](/docs/contribute/participate/roles-and-responsibilities/) - in the Kubernetes documentation community. +- [コンテンツガイド](/docs/contribute/style/content-guide/)と[スタイルガイド](/docs/contribute/style/style-guide/)を読んで、有益なコメントを残せるようにする。 +- Kubernetesのドキュメントコミュニティにおける[役割と責任](/docs/contribute/participate/roles-and-responsibilities/)の違いを理解する。 -## Before you begin +## はじめる前に -Before you start a review: +レビューを始める前に、以下のことを心に留めてください。 -- Read the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md) and ensure that you abide by it at all times. -- Be polite, considerate, and helpful. -- Comment on positive aspects of PRs as well as changes. -- Be empathetic and mindful of how your review may be received. -- Assume good intent and ask clarifying questions. -- Experienced contributors, consider pairing with new contributors whose work requires extensive changes. +- [CNCFの行動規範](https://github.com/cncf/foundation/blob/master/code-of-conduct.md)を読み、いかなる時にも行動規範にしたがって行動するようにする。 +- 礼儀正しく、思いやりを持ち、助け合う気持ちを持つ。 +- 変更点だけでなく、PRのポジティブな側面についてもコメントする。 +- 相手の善意を前提として、疑問点を明確にする質問をする。 +- 経験を積んだコントリビューターの場合、コンテンツに大幅な変更が必要な新規のコントリビューターとペアを組んで作業に取り組むことを考える。 -## Review process +## レビューのプロセス -In general, review pull requests for content and style in English. +一般に、コンテンツや文体に対するプルリクエストは、英語でレビューを行います。 -1. Go to - [https://github.com/kubernetes/website/pulls](https://github.com/kubernetes/website/pulls). - You see a list of every open pull request against the Kubernetes website and - docs. +1. [https://github.com/kubernetes/website/pulls](https://github.com/kubernetes/website/pulls)に移動します。Kubernetesのウェブサイトとドキュメントに対するopen状態のプルリクエスト一覧が表示されます。 -2. Filter the open PRs using one or all of the following labels: - - `cncf-cla: yes` (Recommended): PRs submitted by contributors who have not signed the CLA cannot be merged. See [Sign the CLA](/docs/contribute/new-content/overview/#sign-the-cla) for more information. - - `language/en` (Recommended): Filters for english language PRs only. - - `size/`: filters for PRs of a certain size. If you're new, start with smaller PRs. +2. open状態のPRに、以下に示すラベルを1つ以上使って絞り込みます。 - Additionally, ensure the PR isn't marked as a work in progress. PRs using the `work in progress` label are not ready for review yet. + - `cncf-cla: yes` (推奨): CLAにサインしていないコントリビューターが提出したPRはマージできません。詳しい情報は、[CLAの署名](/docs/contribute/new-content/overview/#sign-the-cla)を読んでください。 + - `language/en` (推奨): 英語のPRだけに絞り込みます。 + - `size/`: 特定の大きさのPRだけに絞り込みます。レビューを始めたばかりの人は、小さなPRから始めてください。 -3. Once you've selected a PR to review, understand the change by: - - Reading the PR description to understand the changes made, and read any linked issues - - Reading any comments by other reviewers - - Clicking the **Files changed** tab to see the files and lines changed - - Previewing the changes in the Netlify preview build by scrolling to the PR's build check section at the bottom of the **Conversation** tab and clicking the **deploy/netlify** line's **Details** link. + さらに、PRがwork in progressとしてマークされていないことも確認してください。`work in progress`ラベルの付いたPRは、まだレビューの準備ができていない状態です。 -4. Go to the **Files changed** tab to start your review. - 1. Click on the `+` symbol beside the line you want to comment on. - 2. Fill in any comments you have about the line and click either **Add single comment** (if you have only one comment to make) or **Start a review** (if you have multiple comments to make). - 3. When finished, click **Review changes** at the top of the page. Here, you can add - add a summary of your review (and leave some positive comments for the contributor!), - approve the PR, comment or request changes as needed. New contributors should always - choose **Comment**. +3. レビューするPRを選んだら、以下のことを行い、変更点について理解します。 + - PRの説明を読み、行われた変更について理解し、関連するissueがあればそれも読みます。 + - 他のレビュアのコメントがあれば読みます。 + - **Files changed**タブをクリックし、変更されたファイルと行を確認します。 + - **Conversation**タブの下にあるPRのbuild checkセクションまでスクロールし、**deploy/netlify**の行の**Details**リンクをクリックして、Netlifyのプレビュービルドで変更点をプレビューします。 -## Reviewing checklist +4. **Files changed**タブに移動してレビューを始めます。 + 1. コメントしたい場合は行の横の`+`マークをクリックします。 + 2. その行に関するコメントを書き、**Add single comment**(1つのコメントだけを残したい場合)または**Start a review**(複数のコメントを行いたい場合)のいずれかをクリックします。 + 3. コメントをすべて書いたら、ページ上部の**Review changes**をクリックします。ここでは、レビューの要約を追加できます(コントリビューターにポジティブなコメントも書きましょう!)。必要に応じて、PRを承認したり、コメントしたり、変更をリクエストします。新しいコントリビューターの場合は**Comment**だけが行えます。 -When reviewing, use the following as a starting point. +## レビューのチェックリスト -### Language and grammar +レビューするときは、最初に以下の点を確認してみてください。 -- Are there any obvious errors in language or grammar? Is there a better way to phrase something? -- Are there any complicated or archaic words which could be replaced with a simpler word? -- Are there any words, terms or phrases in use which could be replaced with a non-discriminatory alternative? -- Does the word choice and its capitalization follow the [style guide](/docs/contribute/style/style-guide/)? -- Are there long sentences which could be shorter or less complex? -- Are there any long paragraphs which might work better as a list or table? +### 言語と文法 -### Content +- 言語や文法に明らかな間違いはないですか? もっとよい言い方はないですか? +- もっと簡単な単語に置き換えられる複雑な単語や古い単語はありませんか? +- 使われている単語や専門用語や言い回しで差別的ではない別の言葉に置き換えられるものはありませんか? +- 言葉選びや大文字の使い方は[style guide](/docs/contribute/style/style-guide/)に従っていますか? +- もっと短くしたり単純な文に書き換えられる長い文はありませんか? +- 箇条書きやテーブルでもっとわかりやすく表現できる長いパラグラフはありませんか? -- Does similar content exist elsewhere on the Kubernetes site? -- Does the content excessively link to off-site, individual vendor or non-open source documentation? +### コンテンツ -### Website +- 同様のコンテンツがKubernetesのサイト上のどこかに存在しませんか? +- コンテンツが外部サイト、特定のベンダー、オープンソースではないドキュメントなどに過剰にリンクを張っていませんか? -- Did this PR change or remove a page title, slug/alias or anchor link? If so, are there broken links as a result of this PR? Is there another option, like changing the page title without changing the slug? -- Does the PR introduce a new page? If so: - - Is the page using the right [page content type](/docs/contribute/style/page-content-types/) and associated Hugo shortcodes? - - Does the page appear correctly in the section's side navigation (or at all)? - - Should the page appear on the [Docs Home](/docs/home/) listing? -- Do the changes show up in the Netlify preview? Be particularly vigilant about lists, code blocks, tables, notes and images. +### ウェブサイト -### Other +- PRはページ名、slug/alias、アンカーリンクの変更や削除をしていますか? その場合、このPRの変更の結果、リンク切れは発生しませんか? ページ名を変更してslugはそのままにするなど、他の選択肢はありませんか? +- PRは新しいページを作成するものですか? その場合、次の点に注意してください。 + - ページは正しい[page content type](/docs/contribute/style/page-content-types/)と関係するHugoのshortcodeを使用していますか? + - セクションの横のナビゲーション(または全体)にページは正しく表示されますか? + - ページは[Docs Home](/docs/home/)に一覧されますか? +- Netlifyのプレビューで変更は確認できますか? 特にリスト、コードブロック、テーブル、備考、画像などに注意してください。 -For small issues with a PR, like typos or whitespace, prefix your comments with `nit:`. This lets the author know the issue is non-critical. +### その他 +PRに関して誤字や空白などの小さな問題を指摘する場合は、コメントの前に`nit:`と書いてください。こうすることで、PRの作者は問題が深刻なものではないことが分かります。 From 9548c08e17ddb5f5846ecb66324ae7e2c9111e4c Mon Sep 17 00:00:00 2001 From: chenxuc Date: Tue, 23 Feb 2021 18:26:00 +0800 Subject: [PATCH 047/788] List operator tools in alphabetical order This is to update operator web page to list operator tools in alphabetical order as well as other minor improvements. --- .../concepts/extend-kubernetes/operator.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/content/en/docs/concepts/extend-kubernetes/operator.md b/content/en/docs/concepts/extend-kubernetes/operator.md index 64b9ed3eb8..323200ec3a 100644 --- a/content/en/docs/concepts/extend-kubernetes/operator.md +++ b/content/en/docs/concepts/extend-kubernetes/operator.md @@ -103,26 +103,27 @@ 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 -links to libraries and tools you can use to write your own cloud native -Operator. +want, you can code your own. You also implement an Operator (that is, a Controller) using any language / runtime that can act as a [client for the Kubernetes API](/docs/reference/using-api/client-libraries/). +Following are a few libraries and tools you can use to write your own cloud native +Operator. +{{% thirdparty-content %}} + +* [kubebuilder](https://book.kubebuilder.io/) +* [KUDO](https://kudo.dev/) (Kubernetes Universal Declarative Operator) +* [Metacontroller](https://metacontroller.app/) along with WebHooks that + you implement yourself +* [Operator Framework](https://operatorframework.io) ## {{% heading "whatsnext" %}} * Learn more about [Custom Resources](/docs/concepts/extend-kubernetes/api-extension/custom-resources/) * Find ready-made operators on [OperatorHub.io](https://operatorhub.io/) to suit your use case -* Use existing tools to write your own operator, eg: - * using [KUDO](https://kudo.dev/) (Kubernetes Universal Declarative Operator) - * using [kubebuilder](https://book.kubebuilder.io/) - * using [Metacontroller](https://metacontroller.app/) along with WebHooks that - you implement yourself - * using the [Operator Framework](https://operatorframework.io) * [Publish](https://operatorhub.io/) your operator for other people to use * Read [CoreOS' original article](https://web.archive.org/web/20170129131616/https://coreos.com/blog/introducing-operators.html) that introduced the Operator pattern (this is an archived version of the original article). * 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 From a7c7662fb9d01ba9ff8bf97abee6cb2c4d8abfdc Mon Sep 17 00:00:00 2001 From: Juampy NR Date: Wed, 24 Feb 2021 10:06:02 +0100 Subject: [PATCH 048/788] Demonstrate how to use secure communication --- .../administer-cluster/configure-upgrade-etcd.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/content/en/docs/tasks/administer-cluster/configure-upgrade-etcd.md b/content/en/docs/tasks/administer-cluster/configure-upgrade-etcd.md index 25cd61a710..66c6c0f94a 100644 --- a/content/en/docs/tasks/administer-cluster/configure-upgrade-etcd.md +++ b/content/en/docs/tasks/administer-cluster/configure-upgrade-etcd.md @@ -125,7 +125,16 @@ the URL schema. Similarly, to configure etcd with secure client communication, specify flags `--key-file=k8sclient.key` and `--cert-file=k8sclient.cert`, and use HTTPS as -the URL schema. +the URL schema. Here is an example on a client command that uses secure +communication: + +``` +ETCDCTL_API=3 etcdctl --endpoints 10.2.0.9:2379 \ +--cert=/etc/kubernetes/pki/etcd/server.crt \ +--key=/etc/kubernetes/pki/etcd/server.key \ +--cacert=/etc/kubernetes/pki/etcd/ca.crt \ +member list +``` ### Limiting access of etcd clusters From ce8d33face52ab019b44311d0091f9e31e0a85cd Mon Sep 17 00:00:00 2001 From: Juampy NR Date: Wed, 24 Feb 2021 10:22:38 +0100 Subject: [PATCH 049/788] Add example to restore snapshot --- .../docs/tasks/administer-cluster/configure-upgrade-etcd.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/content/en/docs/tasks/administer-cluster/configure-upgrade-etcd.md b/content/en/docs/tasks/administer-cluster/configure-upgrade-etcd.md index 25cd61a710..863383f177 100644 --- a/content/en/docs/tasks/administer-cluster/configure-upgrade-etcd.md +++ b/content/en/docs/tasks/administer-cluster/configure-upgrade-etcd.md @@ -293,6 +293,12 @@ employed to recover the data of a failed cluster. Before starting the restore operation, a snapshot file must be present. It can either be a snapshot file from a previous backup operation, or from a remaining [data directory]( https://etcd.io/docs/current/op-guide/configuration/#--data-dir). +Here is an example: + +```shell +ETCDCTL_API=3 etcdctl --endpoints 10.2.0.9:2379 snapshot restore snapshotdb +``` + For more information and examples on restoring a cluster from a snapshot file, see [etcd disaster recovery documentation](https://etcd.io/docs/current/op-guide/recovery/#restoring-a-cluster). From 6d48be986b07a9609b74415e411e935757093c29 Mon Sep 17 00:00:00 2001 From: Aditi Sharma Date: Thu, 25 Feb 2021 17:16:19 +0530 Subject: [PATCH 050/788] Update pod-infra-container-image description Update kubelet flag pod-infra-container-image description --- .../en/docs/reference/command-line-tools-reference/kubelet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 b569177dda..3f9e9bac44 100644 --- a/content/en/docs/reference/command-line-tools-reference/kubelet.md +++ b/content/en/docs/reference/command-line-tools-reference/kubelet.md @@ -917,7 +917,7 @@ WindowsEndpointSliceProxying=true|false (ALPHA - default=false)
    - + From 06f1e784b85dcc0def7f4e683d6bec2c772da847 Mon Sep 17 00:00:00 2001 From: Leonardo Murillo Date: Thu, 25 Feb 2021 14:28:26 +0000 Subject: [PATCH 051/788] =?UTF-8?q?=C3=9Altimos=20cambios=20a=20partir=20d?= =?UTF-8?q?e=20revisi=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../declarative-config.md | 157 +++++++++--------- 1 file changed, 78 insertions(+), 79 deletions(-) diff --git a/content/es/docs/tasks/manage-kubernetes-objects/declarative-config.md b/content/es/docs/tasks/manage-kubernetes-objects/declarative-config.md index d3002931ab..05090d3a3f 100644 --- a/content/es/docs/tasks/manage-kubernetes-objects/declarative-config.md +++ b/content/es/docs/tasks/manage-kubernetes-objects/declarative-config.md @@ -1,15 +1,15 @@ --- -title: Administración declarativa de Objetos en Kubernetes usando Ficheros de Configuración +title: Administración declarativa de Objetos en Kubernetes usando archivos de Configuración content_type: task weight: 10 --- Objetos en Kubernetes pueden ser creados, actualizados y eliminados utilizando -ficheros de configuración almacenados en un directorio. Usando el comando +archivos de configuración almacenados en un directorio. Usando el comando `kubectl apply` podrá crearlos o actualizarlos de manera recursiva según sea necesario. Este método retiene cualquier escritura realizada contra objetos activos en el -sistema sin unirlos de regreso a los ficheros de configuración. `kubectl diff` le +sistema sin unirlos de regreso a los archivos de configuración. `kubectl diff` le permite visualizar de manera previa los cambios que `apply` realizará. ## {{% heading "prerequisites" %}} @@ -36,11 +36,11 @@ para una discusión de las ventajas y desventajas de cada modo distinto de admin ## Visión general La configuración de objetos declarativa requiere una comprensión firme de la -definición y configuración de objetos de Kubernetes. Lea y complete los siguientes -documentos si aún no lo ha hecho: +definición y configuración de objetos de Kubernetes. Si aún no lo ha hecho, lea +y complete los siguientes documentos: -* [Administració n de Objetos de Kubernetes usando comandos imperativos](/docs/tasks/manage-kubernetes-objects/imperative-command/) -* [Administración imperativa de los Objetos de Kubernetes usando ficheros de Configuración](/docs/tasks/manage-kubernetes-objects/imperative-config/) +* [Administración de Objetos de Kubernetes usando comandos imperativos](/docs/tasks/manage-kubernetes-objects/imperative-command/) +* [Administración imperativa de los Objetos de Kubernetes usando archivos de Configuración](/docs/tasks/manage-kubernetes-objects/imperative-config/) {{< comment >}} TODO(lmurillo): Update the links above to the spanish versions of these documents once the @@ -49,21 +49,21 @@ localizations become available A continuación la definición de términos usados en este documento: -- *fichero de configuración de objeto / fichero de configuración*: Un fichero en el +- *archivo de configuración de objeto / archivo de configuración*: Un archivo en el que se define la configuración de un objeto de Kubernetes. Este tema muestra como - utilizar ficheros de configuración con `kubectl apply`. Los ficheros de configuración + utilizar archivos de configuración con `kubectl apply`. Los archivos de configuración por lo general se almacenan en un sistema de control de versiones, como Git. - *configuración activa de objeto / configuración activa*: Los valores de configuración activos de un objeto, según estén siendo observados por el Clúster. Esta configuración se almacena en el sistema de almacenamiento de Kubernetes, usualmente etcd. - *escritor de configuración declarativo / escritor declarativo*: Una persona o componente de software que actualiza a un objeto activo. Los escritores activos a - los que se refiere este tema aplican cambios a los ficheros de configuración de objetos + los que se refiere este tema aplican cambios a los archivos de configuración de objetos y ejecutan `kubectl apply` para aplicarlos. ## Como crear objetos -Utilice `kubectl apply` para crear todos los objetos definidos en los ficheros +Utilice `kubectl apply` para crear todos los objetos definidos en los archivos de configuración existentes en un directorio específico, con excepción de aquellos que ya existen: @@ -72,14 +72,14 @@ kubectl apply -f / ``` Esto definirá la anotación `kubectl.kubernetes.io/last-applied-configuration: '{...}'` -en cada objeto. Esta anotación contiene el contenido del fichero de configuración +en cada objeto. Esta anotación contiene el contenido del archivo de configuración utilizado para la creación del objeto. {{< note >}} Agregue la opción `-R` para procesar un directorio de manera recursiva. {{< /note >}} -El siguiente es un ejemplo de fichero de configuración para un objeto: +El siguiente es un ejemplo de archivo de configuración para un objeto: {{< codenew file="application/simple_deployment.yaml" >}} @@ -113,7 +113,7 @@ kubectl get -f https://k8s.io/examples/application/simple_deployment.yaml -o yam ``` La salida le demostrará que la anotación `kubectl.kubernetes.io/last-applied-configuration` -fue escrita a la configuración activa, y es consistente con los contenidos del fichero +fue escrita a la configuración activa, y es consistente con los contenidos del archivo de configuración: ```yaml @@ -162,7 +162,7 @@ aún cuando esos objetos ya existan en la configuración activa. Con este enfoqu lo siguiente: 1. Definir los campos que aparecerán en la configuración activa. -2. Eliminar aquellos campos eliminados en el fichero de configuración, de la configuración activa. +2. Eliminar aquellos campos eliminados en el archivo de configuración, de la configuración activa. ```shell kubectl diff -f / @@ -173,7 +173,7 @@ kubectl apply -f / Agregue la opción `-R` para procesar directorios de manera recursiva. {{< /note >}} -Este es un ejemplo de fichero de configuración: +Este es un ejemplo de archivo de configuración: {{< codenew file="application/simple_deployment.yaml" >}} @@ -184,7 +184,7 @@ kubectl apply -f https://k8s.io/examples/application/simple_deployment.yaml ``` {{< note >}} -Con el propósito de ilustrar, el comando anterior se refiere a un único fichero +Con el propósito de ilustrar, el comando anterior se refiere a un único archivo de configuración en vez de un directorio. {{< /note >}} @@ -195,7 +195,7 @@ kubectl get -f https://k8s.io/examples/application/simple_deployment.yaml -o yam ``` La salida le demostrará que la anotación `kubectl.kubernetes.io/last-applied-configuration` -fue escrita a la configuración activa, y es consistente con los contenidos del fichero +fue escrita a la configuración activa, y es consistente con los contenidos del archivo de configuración: ```yaml @@ -291,12 +291,12 @@ spec: # ... ``` -Actualice el fichero de configuración `simple_deployment.yaml` para cambiar el campo `image` +Actualice el archivo de configuración `simple_deployment.yaml` para cambiar el campo `image` de `nginx:1.14.2` a `nginx:1.16.1`, y elimine el campo `minReadySeconds`: {{< codenew file="application/update_deployment.yaml" >}} -Aplique los cambios realizados al fichero de configuración: +Aplique los cambios realizados al archivo de configuración: ```shell kubectl diff -f https://k8s.io/examples/application/update_deployment.yaml @@ -312,7 +312,7 @@ kubectl get -f https://k8s.io/examples/application/update_deployment.yaml -o yam La salida le mostrará los siguienes cambios hechos a la configuración activa: * El campo `replicas` retiene el valor de 2 definido por `kubectl scale`. - Esto es posible ya que el campo fue omitido en el fichero de configuración. + Esto es posible ya que el campo fue omitido en el archivo de configuración. * El campo `image` ha sido actualizado de `nginx:1.16.1` a `nginx:1.14.2`. * La anotación `last-applied-configuration` ha sido actualizada con la nueva imagen. * El campo `minReadySeconds` ha sido despejado. @@ -360,24 +360,24 @@ spec: ``` {{< warning >}} -No es soportado combinar `kubectl apply` con los comandos de configuración imperativa de objetos -`create` y `replace`. Esto se debe a que `create` +No se puede combinar `kubectl apply` con comandos de configuración imperativa de objetos +como `create` y `replace`. Esto se debe a que `create` y `replace` no retienen la anotación `kubectl.kubernetes.io/last-applied-configuration` que `kubectl apply` utiliza para calcular los cambios por realizar. {{< /warning >}} ## Como eliminar objetos -Hay dos diferentes opciones para eliminar objetos gestionados por `kubectl apply`. +Hay dos opciones diferentes para eliminar objetos gestionados por `kubectl apply`. -### Manera recomendada: `kubectl delete -f ` +### Manera recomendada: `kubectl delete -f ` Eliminar objetos de manera manual utilizando el comando imperativo es la opción recomendada, ya que es más explícito en relación a lo que será eliminado, y es menos probable que resulte en algo siendo eliminado sin la intención del usuario. ```shell -kubectl delete -f +kubectl delete -f ``` ### Manera alternativa: `kubectl apply -f --prune -l etiqueta=deseada` @@ -397,8 +397,8 @@ no intencionalmente. Como una alternativa a `kubectl delete`, puede usar `kubectl apply`para identificar objetos por ser eliminados, luego de que sus archivos de configuración han sido eliminados del directorio. El commando `apply` con `--prune` consulta a la API del servidor por todos los objetos que coincidan con un grupo de etiquetas, e intenta relacionar -la configuración obtenida de los objetos activos contra los objetos según sus ficheros de configuración. -Si un objeto coincide con la consulta, y no tiene un fichero de configuración en el directorio, pero si +la configuración obtenida de los objetos activos contra los objetos según sus archivos de configuración. +Si un objeto coincide con la consulta, y no tiene un archivo de configuración en el directorio, pero si tiene una anotación `last-applied-configuration`, entonces será eliminado. {{< comment >}} @@ -411,7 +411,7 @@ kubectl apply -f --prune -l {{< warning >}} `apply` con `--prune` debería de ser ejecutado únicamente en contra del directorio -raíz que contiene los ficheros de configuración. Ejecutarlo en contra de sub-directorios +raíz que contiene los archivos de configuración. Ejecutarlo en contra de sub-directorios podría causar que objetos sean eliminados no intencionalmente, si son retornados en la consulta por selección de etiqueta usando `-l ` y no existen en el subdirectorio. {{< /warning >}} @@ -421,7 +421,7 @@ consulta por selección de etiqueta usando `-l ` y no existen en el s Puede usar `kubectl get` con `-o yaml` para ver la configuración de objetos activos: ```shell -kubectl get -f -o yaml +kubectl get -f -o yaml ``` ## Como son las diferencias calculadas y unidas por apply @@ -435,7 +435,7 @@ específicos en un objeto sin tener que leer el objeto primero. Cuando `kubectl apply` actualiza la configuración activa para un objeto, lo hace enviando una solicitud de patch al servidor de API. El patch define actualizaciones para campos específicos en la configuración del objeto activo. El comando `kubectl apply` calcula esta solicitud -de patch usando el fichero de configuración, la configuración activa, y la anotación `last-applied-configuration` +de patch usando el archivo de configuración, la configuración activa, y la anotación `last-applied-configuration` almacenada en la configuración activa. ### Calculando la unión de un patch @@ -445,10 +445,10 @@ El comando `kubectl apply` escribe los contenidos de la configuración a la anot que han sido eliminados de la configuración y deben ser limpiados. Los siguientes pasos son usados para calcular que campos deben ser eliminados o definidos: -1. Calculo de campos por eliminar. Estos son los campos presentes en `last-applied-configuration` pero ausentes en el fichero de configuración. -2. Calculo de campos por agregar o definir. Estos son los campos presentes en el fichero de configuración, con valores inconsistentes con la configuración activa. +1. Calculo de campos por eliminar. Estos son los campos presentes en `last-applied-configuration` pero ausentes en el archivo de configuración. +2. Calculo de campos por agregar o definir. Estos son los campos presentes en el archivo de configuración, con valores inconsistentes con la configuración activa. -A continuación un ejemplo. Suponga que este es el fichero de configuración para un objeto de tipo Deployment: +A continuación un ejemplo. Suponga que este es el archivo de configuración para un objeto de tipo Deployment: {{< codenew file="application/update_deployment.yaml" >}} @@ -495,18 +495,18 @@ spec: Estos son los cálculos de unión que serían realizados por `kubectl apply`: 1. Calcular los campos por eliminar, leyendo los valores de `last-applied-configuration` - y comparándolos con los valores en el fichero de configuración. - Limpiar los campos definidos en null de manera explícita en el fichero de configuración + y comparándolos con los valores en el archivo de configuración. + Limpiar los campos definidos en null de manera explícita en el archivo de configuración sin tomar en cuenta si se encuentran presentes en la anotación `last-applied-configuration`. En este ejemplo, `minReadySeconds` aparece en la anotación - `last-applied-configuration` pero no aparece en el fichero de configuración. + `last-applied-configuration` pero no aparece en el archivo de configuración. **Acción:** Limpiar `minReadySeconds` de la configuración activa. 2. Calcular los campos por ser definidos, al leer los valores del firecho de configuración y compararlos con los valores en la configuración activa. En este ejemplo, el valor `image` - en el fichero de configuración, no coincide con el valor en la configuración activa. + en el archivo de configuración, no coincide con el valor en la configuración activa. **Acción:** Definir el campo `image` en la configuración activa. 3. Definir el valor de la anotación `last-applied-configuration` para que sea consistente - con el fichero de configuración. + con el archivo de configuración. 4. Unir los resultados de 1, 2 y 3, en una única solicitud de patch para enviar al API server. Esta es la configuración activa como resultado de esta unión: @@ -554,7 +554,7 @@ spec: ### Como se unen los diferentes tipos de campos -La manera en la que los campos en un fichero de configuración son unidos con la +La manera en la que los campos en un archivo de configuración son unidos con la configuración activa depende del tipo de campo. Existen varios tipos de campos: - *primitivo*: Campos de cadena de texto (string), enteros (integer), o lógicos (boolean). @@ -581,9 +581,9 @@ Campos primitivos son limpiados o reemplazados. `-` determina que "no aplica" debido a que el valor no es utilizado. {{< /note >}} -| Campo en el fichero de configuración | Campo en la configuración activa | Campo en last-applied-configuration | Acción | +| Campo en el archivo de configuración | Campo en la configuración activa | Campo en last-applied-configuration | Acción | |---------------------------------------|------------------------------------|-------------------------------------|--------------------------------------------------------------| -| Si | Si | - | Define el valor en el fichero de configuración como activo. | +| Si | Si | - | Define el valor en el archivo de configuración como activo. | | Si | No | - | Define el valor a la configuración local. | | No | - | Si | Elimina de la configuración activa. | | No | - | No | No hacer nada. Mantiene el valor activo. | @@ -596,7 +596,7 @@ Los campos que conjúntamente representan un mapa, son unidos al comparar cada u `-` determina que "no aplica" debido a que el valor no es utilizado. {{< /note >}} -| Propiedad en fichero de configuración | Propiedad en configuración activa | Campo en last-applied-configuration | Acción | +| Propiedad en archivo de configuración | Propiedad en configuración activa | Campo en last-applied-configuration | Acción | |---------------------------------------|-----------------------------------|-------------------------------------|------------------------------------------| | Si | Si | - | Comparar valores de sub-propiedades. | | Si | No | - | Usar configuracón local. | @@ -620,16 +620,16 @@ Esto preserva el orden de los elementos. **Ejemplo:** Usndo `kubectl apply` para actualizar el campo `args` de un Contenedor en un Pod. -Esto define el valor de `args` en la configuración activa, al valor en el fichero de configuración. +Esto define el valor de `args` en la configuración activa, al valor en el archivo de configuración. Cualquier elemento de `args` que haya sido previamente agregado a la configuración activa se perderá. -El orden de los elementos definidos en `args` en el fichero de configuración, serán conservados +El orden de los elementos definidos en `args` en el archivo de configuración, serán conservados en la configuración activa. ```yaml # valor en last-applied-configuration args: ["a", "b"] -# valores en fichero de configuración +# valores en archivo de configuración args: ["a", "c"] # configuración activa @@ -639,7 +639,7 @@ en la configuración activa. args: ["a", "c"] ``` -**Explicación:** La unión utilizó los valores del fichero de configuración para definir los nuevos valores de la lista. +**Explicación:** La unión utilizó los valores del archivo de configuración para definir los nuevos valores de la lista. #### Unir elementos individuales en una lista de elementos complejos @@ -665,7 +665,7 @@ Esto une la lista como si fuese un mapa donde cada elemento utiliza `name` por l - name: nginx-helper-b # llave: nginx-helper-b; será conservado image: helper:1.3 -# valor en fichero de configuración +# valor en archivo de configuración containers: - name: nginx image: nginx:1.16 @@ -703,16 +703,16 @@ Esto une la lista como si fuese un mapa donde cada elemento utiliza `name` por l **Explicación:** - El contenedor llamado "nginx-helper-a" fué eliminado al no aparecer ningún - contenedor llamado "nginx-helper-a" en el fichero de configuración. + contenedor llamado "nginx-helper-a" en el archivo de configuración. - El contenedor llamado "nginx-helper-b" mantiene los cambios a `args` existentes en la configuración activa. `kubectl apply` pudo identificar que el contenedor "nginx-helper-b" en la configuración activa es el mismo - "nginx-helper-b" que aparece en el fichero de configuración, aún teniendo diferentes - valores en los campos (no existe `args` en el fichero de configuración). Esto sucede + "nginx-helper-b" que aparece en el archivo de configuración, aún teniendo diferentes + valores en los campos (no existe `args` en el archivo de configuración). Esto sucede debido a que el valor del campo `patchMergeKey` (name) es idéntico en ambos. - El contenedor llamado "nginx-helper-c" fue agregado ya que no existe ningún contenedor con ese nombre en la configuración activa, pero si existe uno con ese nombre - en el fichero de configuración. + en el archivo de configuración. - El contendor llamado "nginx-helper-d" fue conservado debido a que no aparece ningún elemento con ese nombre en last-applied-configuration. @@ -721,10 +721,9 @@ Esto une la lista como si fuese un mapa donde cada elemento utiliza `name` por l A partir de Kubernetes 1.5, el unir listas de elementos primitivos no es soportado. {{< note >}} -La escogencia de estrategia por selecciones para un campo en particular, es controlada -por la etiqueta `patchStrategy` en [types.go](https://github.com/kubernetes/api/blob/d04500c8c3dda9c980b668c57abc2ca61efcf5c4/core/v1/types.go#L2748) -Si no se especifica `patchStrategy` para un campo de tipo lista, entonces el campo -es reemplazado. +La etiqueta `patchStrategy` en [types.go](https://github.com/kubernetes/api/blob/d04500c8c3dda9c980b668c57abc2ca61efcf5c4/core/v1/types.go#L2748) es la que +determina cual de las estrategias aplica para cualquier campo en particular. +Para campos de tipo lista, el campo será reemplazado cuando no exista una especificación de `patchStrategy`. {{< /note >}} {{< comment >}} @@ -743,7 +742,7 @@ is lost. El Servidor de API define algunos campos a sus valores por defecto si no son especificados al momento de crear un objeto. -Aquí puede ver un fichero de configuración para un Deployment. Este fichero no especifica +Aquí puede ver un archivo de configuración para un Deployment. Este archivo no especifica el campo `strategy`: {{< codenew file="application/simple_deployment.yaml" >}} @@ -760,8 +759,8 @@ Despliegue la configuración activa usando `kubectl get`: kubectl get -f https://k8s.io/examples/application/simple_deployment.yaml -o yaml ``` -La salida demuestra que el API Server definió varios campos con los valores por defecto -en la configuración activa. Estos campos no fueron especificados en el fichero de +La salida muestra que el servidor de API definió varios campos con los valores por defecto +en la configuración activa. Estos campos no fueron especificados en el archivo de configuración. ```yaml @@ -801,14 +800,14 @@ spec: # ... ``` -En una solicitud de patch, los campos definidos a valores por defecto no son re-definidos exceptuando -cuando hayan sido limpiados de manera explícita como parte de la solicitud de patch. Esto puede +En una solicitud de patch, los campos definidos a valores por defecto no son redefinidos a excepción +de cuando hayan sido limpiados de manera explícita como parte de la solicitud de patch. Esto puede causar comportamientos no esperados para campos cuyo valor por defecto es basado en los valores de otros campos. Cuando el otro campo ha cambiado, el valor por defecto de ellos no será actualizado de no ser que sean limpiados de manera explícita. Por esta razón, se recomienda que algunos campos que reciben un valor por defecto del -servidor sean definidos de manera explícita en los ficheros de configuración, aun cuando +servidor sean definidos de manera explícita en los archivos de configuración, aun cuando el valor definido sea idéntico al valor por defecto. Esto facilita la identificación de valores conflictivos que podrían no ser revertidos a valores por defecto por parte del servidor. @@ -829,7 +828,7 @@ spec: ports: - containerPort: 80 -# fichero de configuración +# archivo de configuración spec: strategy: type: Recreate # valor actualizado @@ -888,12 +887,12 @@ spec: agrega los valores por defecto a `strategy.rollingUpdate`. 3. El usuario cambia `strategy.type` a `Recreate`. Los valores de `strategy.rollingUpdate` se mantienen en su configuración por defecto, sin embargo el servidor espera que se limpien. - Si los valores de `strategy.rollingUpdate` hubiesen sido definidos inicialmente en el fichero + Si los valores de `strategy.rollingUpdate` hubiesen sido definidos inicialmente en el archivo de configuración, hubiese sido más claro que requerían ser eliminados. 4. Apply fallará debido a que `strategy.rollingUpdate` no fue eliminado. El campo `strategy.rollingupdate` no puede estar definido, si el valor de `strategy.type` es `Recreate`. -Recomendación: Estos campos deberían de ser definidos de manera explícita en el fichero de configuración: +Recomendación: Estos campos deberían de ser definidos de manera explícita en el archivo de configuración: - Etiquetas de Selectors y PodTemplate en cargas de trabajo como Deployment, StatefulSet, Job, DaemonSet, ReplicaSet, y ReplicationController @@ -901,31 +900,31 @@ Recomendación: Estos campos deberían de ser definidos de manera explícita en ### Como limpiar campos definidos a valores por defecto por el servidor, o definidos por otros escritores -Campos que no aparecen en el fichero de configuración pueden ser limpiados si se define su valor -a `null` y luego se aplica el fichero de configuración. -Para los campos definidos a valores por defecto por el servidor, esto provoca el re establecimiento +Campos que no aparecen en el archivo de configuración pueden ser limpiados si se define su valor +a `null` y luego se aplica el archivo de configuración. +Para los campos definidos a valores por defecto por el servidor, esto provoca que se reestablezca a sus valores por defecto. -## Como cambiar al propietario de un campo entre un fichero de configuración y un escritor imperativo +## Como cambiar al propietario de un campo entre un archivo de configuración y un escritor imperativo Estos son los únicos métodos que debe usar para cambiar un campo individual de un objeto: - Usando `kubectl apply`. -- Escribiendo de manera directa a la configuración activa sin modificar el fichero de configuración: +- Escribiendo de manera directa a la configuración activa sin modificar el archivo de configuración: por ejemplo, usando `kubectl scale`. -### Cambiando al propietario de un campo de un escritor imperativo a un fichero de configuración +### Cambiando al propietario de un campo de un escritor imperativo a un archivo de configuración -Añada el campo al fichero de configuración, y no realice nuevas actualizaciones a la configuración +Añada el campo al archivo de configuración, y no realice nuevas actualizaciones a la configuración activa que no sucedan por medio de `kubectl apply`. -### Cambiando al propietario de un fichero de configuración a un escritor imperativo +### Cambiando al propietario de un archivo de configuración a un escritor imperativo A partir de Kubernetes 1.5, el cambiar un campo que ha sido definido por medio de un -fichero de configuración para que sea modificado por un escritor imperativo requiere +archivo de configuración para que sea modificado por un escritor imperativo requiere pasos manuales: -- Eliminar el campo del fichero de configuración. +- Eliminar el campo del archivo de configuración. - Eliminar el campo de la anotación `kubectl.kubernetes.io/last-applied-configuration` en el objeto activo. ## Cambiando los métodos de gestión @@ -950,17 +949,17 @@ fields to the annotation, and instead. Then add this bullet point. El migrar de gestión imperativa utilizando comandos a la gestión declarativa de objetos requiere varios pasos manuales: -1. Exporte el objeto activo a un fichero local de configuración: +1. Exporte el objeto activo a un archivo local de configuración: ```shell kubectl get / -o yaml > _.yaml ``` -1. Elimine de manera manual el campo `status` del fichero de configuración. +1. Elimine de manera manual el campo `status` del archivo de configuración. {{< note >}} Este paso es opcional, ya que `kubectl apply` no actualiza el campo `status` - aunque este presente en el fichero de configuración. + aunque este presente en el archivo de configuración. {{< /note >}} 1. Defina la anotación `kubectl.kubernetes.io/last-applied-configuration` en el objeto: @@ -988,7 +987,7 @@ TODO(pwittrock): Why doesn't export remove the status field? Seems like it shou ## Definiendo los selectores para el controlador y las etiquetas de PodTemplate {{< warning >}} -Actualizar selectores en controladores se desaconseja encarecidamente. +Se desaconseja encarecidamente actualizar los selectores en controladores. {{< /warning >}} La forma recomendada es definir una etiqueta única e inmutable para PodTemplate usada From a799505a5e8c8986908dd2c6e4204106bc6d129f Mon Sep 17 00:00:00 2001 From: Ricardo Pchevuzinske Katz Date: Thu, 25 Feb 2021 14:37:40 -0300 Subject: [PATCH 052/788] Add netpol endport documentation before release --- .../services-networking/network-policies.md | 43 ++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/content/en/docs/concepts/services-networking/network-policies.md b/content/en/docs/concepts/services-networking/network-policies.md index 2000d838b4..2a829b3ab4 100644 --- a/content/en/docs/concepts/services-networking/network-policies.md +++ b/content/en/docs/concepts/services-networking/network-policies.md @@ -221,6 +221,48 @@ When the feature gate is enabled, you can set the `protocol` field of a NetworkP You must be using a {{< glossary_tooltip text="CNI" term_id="cni" >}} plugin that supports SCTP protocol NetworkPolicies. {{< /note >}} +## Targeting a range of Ports + +{{< feature-state for_k8s_version="v1.21" state="alpha" >}} + +When writing a Network Policy, you can target a range of Ports instead of a single port. + +This is achiveable with the usage of the `endPort` field, as the following example: + +```yaml +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: multi-port-egress + namespace: default +spec: + podSelector: + matchLabels: + role: db + policyTypes: + - Egress + egress: + - to: + - ipBlock: + cidr: 10.0.0.0/24 + ports: + - protocol: TCP + port: 32000 + endPort: 32768 +``` + +The above rule will allow a Pod with label `db` on the namespace `default` to communicate with any IP within the range `10.0.0.0/24` if the target port is between the range 32000 and 32768. + +The following restrictions apply when using this field: +* As an alpha feature, this is disabled by default. To enable endPort field at a cluster level, you (or your cluster administrator) will need to enable the `NetworkPolicyEndPort` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/) for the API server with `--feature-gates=NetworkPolicyEndPort=true,…`. +* The `endPort` field must be equal than or greater to `port` field. +* `endPort` can only be defined if `port` is also defined. +* When using `endPort` field, the `port` field must be numeric. + +{{< note >}} +You must be using a {{< glossary_tooltip text="CNI" term_id="cni" >}} plugin that supports endPort field in NetworkPolicies ports specification. +{{< /note >}} + ## What you can't do with network policies (at least, not yet) As of Kubernetes 1.20, the following functionality does not exist in the NetworkPolicy API, but you might be able to implement workarounds using Operating System components (such as SELinux, OpenVSwitch, IPTables, and so on) or Layer 7 technologies (Ingress controllers, Service Mesh implementations) or admission controllers. In case you are new to network security in Kubernetes, its worth noting that the following User Stories cannot (yet) be implemented using the NetworkPolicy API. Some (but not all) of these user stories are actively being discussed for future releases of the NetworkPolicy API. @@ -232,7 +274,6 @@ As of Kubernetes 1.20, the following functionality does not exist in the Network - Creation or management of "Policy requests" that are fulfilled by a third party. - Default policies which are applied to all namespaces or pods (there are some third party Kubernetes distributions and projects which can do this). - Advanced policy querying and reachability tooling. -- The ability to target ranges of Ports in a single policy declaration. - The ability to log network security events (for example connections that are blocked or accepted). - The ability to explicitly deny policies (currently the model for NetworkPolicies are deny by default, with only the ability to add allow rules). - The ability to prevent loopback or incoming host traffic (Pods cannot currently block localhost access, nor do they have the ability to block access from their resident node). From 79113f3f6843489498dfcbf2fd65e87376c2a585 Mon Sep 17 00:00:00 2001 From: Cristian Klein Date: Fri, 26 Feb 2021 10:32:30 +0100 Subject: [PATCH 053/788] Change to inclusive naming See https://inclusivenaming.org/ on why "multi-master" should be avoided. --- content/en/docs/concepts/overview/components.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/concepts/overview/components.md b/content/en/docs/concepts/overview/components.md index eb17e2dd7e..3d42d83616 100644 --- a/content/en/docs/concepts/overview/components.md +++ b/content/en/docs/concepts/overview/components.md @@ -33,7 +33,7 @@ The control plane's components make global decisions about the cluster (for exam Control plane components can be run on any machine in the cluster. However, for simplicity, set up scripts typically start all control plane components on the same machine, and do not run user containers on this machine. See -[Building High-Availability Clusters](/docs/admin/high-availability/) for an example multi-master-VM setup. +[Building High-Availability Clusters](/docs/admin/high-availability/) for an example multi-control-plane-VM setup. ### kube-apiserver From 05e03289a96f94261339df13a8e84624f244acdb Mon Sep 17 00:00:00 2001 From: Abdullah Gharaibeh Date: Fri, 26 Feb 2021 14:52:47 -0500 Subject: [PATCH 054/788] ttlafterfinish to beta --- .../docs/concepts/workloads/controllers/ttlafterfinished.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/en/docs/concepts/workloads/controllers/ttlafterfinished.md b/content/en/docs/concepts/workloads/controllers/ttlafterfinished.md index 65527e5ce2..266e72a79f 100644 --- a/content/en/docs/concepts/workloads/controllers/ttlafterfinished.md +++ b/content/en/docs/concepts/workloads/controllers/ttlafterfinished.md @@ -8,7 +8,7 @@ weight: 70 -{{< feature-state for_k8s_version="v1.12" state="alpha" >}} +{{< feature-state for_k8s_version="v1.21" state="beta" >}} The TTL controller provides a TTL (time to live) mechanism to limit the lifetime of resource objects that have finished execution. TTL controller only handles @@ -16,9 +16,9 @@ objects that have finished execution. TTL controller only handles and may be expanded to handle other resources that will finish execution, such as Pods and custom resources. -Alpha Disclaimer: this feature is currently alpha, and can be enabled with both kube-apiserver and kube-controller-manager +This feature is currently beta and enabled by default, and can be disabled via [feature gate](/docs/reference/command-line-tools-reference/feature-gates/) -`TTLAfterFinished`. +`TTLAfterFinished` in both kube-apiserver and kube-controller-manager. From c0bb986cd6537034d523e917cfc2728aa56e6a9d Mon Sep 17 00:00:00 2001 From: Ricardo Katz Date: Fri, 26 Feb 2021 17:34:57 -0300 Subject: [PATCH 055/788] Add review suggestions Co-authored-by: Tim Bannister --- .../en/docs/concepts/services-networking/network-policies.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/content/en/docs/concepts/services-networking/network-policies.md b/content/en/docs/concepts/services-networking/network-policies.md index 2a829b3ab4..d5c14f9465 100644 --- a/content/en/docs/concepts/services-networking/network-policies.md +++ b/content/en/docs/concepts/services-networking/network-policies.md @@ -225,7 +225,7 @@ You must be using a {{< glossary_tooltip text="CNI" term_id="cni" >}} plugin tha {{< feature-state for_k8s_version="v1.21" state="alpha" >}} -When writing a Network Policy, you can target a range of Ports instead of a single port. +When writing a NetworkPolicy, you can target a range of ports instead of a single port. This is achiveable with the usage of the `endPort` field, as the following example: @@ -260,7 +260,8 @@ The following restrictions apply when using this field: * When using `endPort` field, the `port` field must be numeric. {{< note >}} -You must be using a {{< glossary_tooltip text="CNI" term_id="cni" >}} plugin that supports endPort field in NetworkPolicies ports specification. +Your cluster must be using a {{< glossary_tooltip text="CNI" term_id="cni" >}} plugin that +supports the `endPort` field in NetworkPolicy specifications. {{< /note >}} ## What you can't do with network policies (at least, not yet) From bc023f265cfe4829e09e74859219dd7fbd65124f Mon Sep 17 00:00:00 2001 From: Richard Li Date: Sat, 27 Feb 2021 07:03:42 -0500 Subject: [PATCH 056/788] add blog post on using kubectl annotate for human service discovery --- .../2021-02-27-annotating-k8s-for-humans.md | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md diff --git a/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md b/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md new file mode 100644 index 0000000000..bfc49a431b --- /dev/null +++ b/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md @@ -0,0 +1,99 @@ +--- +layout: blog +title: 'Annotating Kubernetes Services for Humans' +date: 2021-02-27 +slug: annotating-k8s-for-humans +--- + +**Authors:** Richard Li (Ambassador Labs) + +Have you ever been asked to troubleshoot a failing Kubernetes service and struggled to find basic information about the service such as the source repository and owner? + +One of the problems as Kubernetes applications grow is the proliferation of services. As the number of services grows, developers start to specialize working with specific services. When it comes to troubleshooting, however, developers need to be able to find the source, understand the service and dependencies, and chat with the owning team for any service. + +## Human Service Discovery + +Troubleshooting always begins with information gathering. While much attention has been paid to centralizing machine data (e.g., logs, metrics), much less attention has been given to the human aspect of service discovery. Who owns a particular service? What Slack channel does the team work on? Where is the source for the service? What issues are currently known and being tracked? + +## Kubernetes Annotations + +Kubernetes annotations are designed to solve exactly this problem. Oft-overlooked, Kubernetes annotations are designed to add metadata to Kubernetes objects. The Kubernetes documentation says annotations can “attach arbitrary non-identifying metadata to objects.” This means that annotations should be used for attaching metadata that is external to Kubernetes (i.e., metadata that Kubernetes won’t use to identify objects. As such, annotations can contain any type of data. This is a contrast to labels, which are designed for uses internal to Kubernetes. As such, label structure and values are [constrained](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set) so they can be efficiently used by Kubernetes. + + +## Kubernetes Annotations in Action + +Here is an example. Imagine you have a Kubernetes service for quoting, called the quote service. You can do the following: + +``` +$ kubectl annotate service quote a8r.io/owner=”@sally” +``` + +In this example, we’ve just added an annotation called `a8r.io/owner` with the value of @sally. Now, we can use `kubectl describe` to get the information. + +``` +$ kubectl describe svc quote +Name: quote +Namespace: default +Labels: +Annotations: a8r.io/owner: @sally +Selector: app=quote +Type: ClusterIP +IP: 10.109.142.131 +Port: http 80/TCP +TargetPort: 8080/TCP +Endpoints: +Session Affinity: None +Events: +``` + +If you’re practicing GitOps (and you should be!) you’ll want to code these values directly into your Kubernetes manifest, e.g., + +``` +apiVersion: v1 +kind: Service +metadata: + name: quote + annotations: + a8r.io/owner: “@sally” +spec: + ports: + - name: http + port: 80 + targetPort: 8080 + selector: + app: quote +``` + +## A Convention for Annotations + +Adopting a common convention for annotations ensures consistency and understandability. Typically, you’ll want to attach the annotation to the service object, as services are the high-level resource that maps most clearly to a team’s responsibility. Namespacing your annotations is also very important. Here is one set of conventions, documented at [a8r.io](https://a8r.io), and reproduced below: + +| Annotation | Description | +| ------------------------------------------ | ------------------------------------------- | +| `a8r.io/description` | Unstructured text description of the service for humans. | +| `a8r.io/owner` | SSO username (GitHub), email address (linked to GitHub account), or unstructured owner description. | +| `a8r.io/chat` | Slack channel, or link to external chat system | +| `a8r.io/bugs` | Link to external bug tracker | +| `a8r.io/logs` | Link to external log viewer | +| `a8r.io/documentation` | Link to external project documentation | +| `a8r.io/repository` | Link to external VCS repository | +| `a8r.io/support` | Link to external support center | +| `a8r.io/runbook` | Link to external project runbook | +| `a8r.io/incidents` | Link to external incident dashboard | +| `a8r.io/uptime` | Link to external uptime dashboard | +| `a8r.io/performance` | Link to external performance dashboard | +| `a8r.io/dependencies` | Unstructured text describing the service dependencies for humans. | + + +## Visualizing Annotations: Service Catalogs + +As the number of microservices and annotations proliferate, using `kubectl describe` can get tedious. Moreover, kubectl describe requires every developer to have some direct access to the Kubernetes cluster. A [service catalog](https://www.getambassador.io/learn/kubernetes-glossary/service-catalog) presents an internal, developer-oriented view of all services. + +Historically, service catalogs have not been a key piece of infrastructure, as applications consisted of a single monolith. Today, with distributed development and microservices the norm, service catalogs are increasingly being adopted as a best practice. Some popular options today include Backstage and Ambassador. [Backstage](https://backstage.io/) is a highly flexible project ideal for organizations that wish to customize every aspect of their service catalog, while [Ambassador](https://www.getambassador.io/products/service-catalog) provides a turnkey, cloud-hosted solution that can be set up quickly. + +## Annotate Your Services Now and Thank Yourself Later +Much like implementing observability within microservice systems, you often don’t realize that you need human service discovery until it’s too late. Typically, something is on fire in production and you wished you had implemented better metrics and also specified which Slack channel the owning team lived in within your organization. + +There's enormous benefits to building an effective “[version 0](https://www.getambassador.io/learn/kubernetes-glossary/version-0/)” of any service: a “[dancing skeleton](https://containerjournal.com/topics/container-management/dancing-skeleton-apis-and-microservices/)” application with a thin slice of complete functionality that can be deployed to production with a minimal yet effective continuous delivery pipeline. + +Adding service annotations should be an essential part of your “version 0” for all of your services. Add them now, and you’ll thank yourself later. From 94f6f4945eee67fceed6688f66f48b941e9b06a2 Mon Sep 17 00:00:00 2001 From: ishii1648 Date: Wed, 17 Feb 2021 10:52:08 +0900 Subject: [PATCH 057/788] Fix the translation about Source IP for Services with Type=LoadBalancer Signed-off-by: ishii1648 --- content/ja/docs/tutorials/services/source-ip.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/ja/docs/tutorials/services/source-ip.md b/content/ja/docs/tutorials/services/source-ip.md index 05a54152a3..17317bbeae 100644 --- a/content/ja/docs/tutorials/services/source-ip.md +++ b/content/ja/docs/tutorials/services/source-ip.md @@ -272,7 +272,7 @@ graph TD; ## `Type=LoadBalancer`を使用したServiceでの送信元IP -[`Type=LoadBalancer`](/ja/docs/concepts/services-networking/service/#loadbalancer)を使用したServiceに送られたパケットは、デフォルトでは送信元のNATは行われません。`Ready`状態にあるすべてのスケジュール可能なKubernetesのNodeは、ロードバランサーからのトラフィックを受付可能であるためです。そのため、エンドポイントが存在しないノードにパケットが到達した場合、システムはエンドポイントが*存在する*ノードにパケットをプロシキーします。このとき、(前のセクションで説明したように)パケットの送信元IPがノードのIPに置換されます。 +[`Type=LoadBalancer`](/ja/docs/concepts/services-networking/service/#loadbalancer)を使用したServiceに送られたパケットは、デフォルトで送信元のNATが行われます。`Ready`状態にあるすべてのスケジュール可能なKubernetesのNodeは、ロードバランサーからのトラフィックを受付可能であるためです。そのため、エンドポイントが存在しないノードにパケットが到達した場合、システムはエンドポイントが*存在する*ノードにパケットをプロシキーします。このとき、(前のセクションで説明したように)パケットの送信元IPがノードのIPに置換されます。 ロードバランサー経由でsource-ip-appを公開することで、これをテストできます。 From 973ac40ef858964826b2ac19ab494a3c68d1d249 Mon Sep 17 00:00:00 2001 From: Jailton Lopes Date: Sun, 28 Feb 2021 14:46:01 -0300 Subject: [PATCH 058/788] Update content/pt/docs/tutorials/kubernetes-basics/create-cluster/cluster-intro.html - Update create-introl.html to use the "control plane" follow the official translation to Portuguese. Signed-off-by: Jailton Lopes --- .../create-cluster/cluster-intro.html | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/content/pt/docs/tutorials/kubernetes-basics/create-cluster/cluster-intro.html b/content/pt/docs/tutorials/kubernetes-basics/create-cluster/cluster-intro.html index 971e84ba40..8301e8890c 100644 --- a/content/pt/docs/tutorials/kubernetes-basics/create-cluster/cluster-intro.html +++ b/content/pt/docs/tutorials/kubernetes-basics/create-cluster/cluster-intro.html @@ -29,16 +29,16 @@ weight: 10

    Clusters do Kubernetes

    - O Kubernetes coordena um cluster altamente disponível de computadores conectados para funcionar como uma única unidade. - As abstrações no Kubernetes permitem implantar aplicativos em contêineres em um cluster sem amarrá-los especificamente a máquinas individuais. - Para fazer uso desse novo modelo de implantação, os aplicativos precisam ser empacotados de uma forma que os desacople dos hosts individuais: eles precisam ser colocados em contêineres. Os aplicativos em contêineres são mais flexíveis e disponíveis do que nos modelos de implantação anteriores, nos quais os aplicativos eram instalados diretamente em máquinas específicas como pacotes profundamente integrados ao host. + O Kubernetes coordena um cluster com alta disponibilidade de computadores conectados para funcionar como uma única unidade. + As abstrações no Kubernetes permitem implantar aplicativos em contêineres em um cluster sem amarrá-los especificamente as máquinas individuais. + Para fazer uso desse novo modelo de implantação, os aplicativos precisam ser empacotados de uma forma que os desacoplem dos hosts individuais: eles precisam ser empacotados em contêineres. Os aplicativos em contêineres são mais flexíveis e disponíveis do que nos modelos de implantação anteriores, nos quais os aplicativos eram instalados diretamente em máquinas específicas como pacotes profundamente integrados ao host. O Kubernetes automatiza a distribuição e o agendamento de contêineres de aplicativos em um cluster de maneira mais eficiente. O Kubernetes é uma plataforma de código aberto e está pronto para produção.

    Um cluster Kubernetes consiste em dois tipos de recursos:

      -
    • O Master coordena o cluster
    • -
    • Os Nodes são os trabalhadores que executam aplicativos
    • +
    • A Camada de gerenciamento (Control Plane) coordena o cluster
    • +
    • Os Nós (Nodes) são os nós de processamento que executam aplicativos

    @@ -75,22 +75,22 @@ weight: 10
    -

    O mestre é responsável por gerenciar o cluster. O mestre coordena todas as atividades em seu cluster, como programação de aplicativos, manutenção do estado desejado dos aplicativos, escalonamento de aplicativos e lançamento de novas atualizações.

    -

    Um nó é uma VM ou um computador físico que atua como uma máquina de trabalho em um cluster Kubernetes. Cada nó tem um Kubelet, que é um agente para gerenciar o nó e se comunicar com o mestre do Kubernetes. O nó também deve ter ferramentas para lidar com operações de contêiner, como containerd ou Docker. Um cluster Kubernetes que lida com o tráfego de produção deve ter no mínimo três nós.

    +

    A camada de gerenciamento é responsável por gerenciar o cluster. A camada de gerenciamento coordena todas as atividades em seu cluster, como programação de aplicativos, manutenção do estado desejado dos aplicativos, escalonamento de aplicativos e lançamento de novas atualizações.

    +

    Um nó é uma VM ou um computador físico que atua como um nó de processamento em um cluster Kubernetes. Cada nó tem um Kubelet, que é um agente para gerenciar o nó e se comunicar com a camada de gerenciamento do Kubernetes. O nó também deve ter ferramentas para lidar com operações de contêiner, como containerd ou Docker. Um cluster Kubernetes que lida com o tráfego de produção deve ter no mínimo três nós.

    -

    Os mestres gerenciam o cluster e os nós que são usados ​​para hospedar os aplicativos em execução.

    +

    As camadas de gerenciamento gerenciam o cluster e os nós que são usados ​​para hospedar os aplicativos em execução.

    -

    Ao implantar aplicativos no Kubernetes, você diz ao mestre para iniciar os contêineres de aplicativos. O mestre agenda os contêineres para serem executados nos nós do cluster. Os nós se comunicam com o mestre usando a API Kubernetes , que o mestre expõe. Os usuários finais também podem usar a API Kubernetes diretamente para interagir com o cluster.

    +

    Ao implantar aplicativos no Kubernetes, você diz à camada de gerenciamento para iniciar os contêineres de aplicativos. A camada de gerenciamento agenda os contêineres para serem executados nos nós do cluster. Os nós se comunicam com o camada de gerenciamento usando a API do Kubernetes , que a camada de gerenciamento expõe. Os usuários finais também podem usar a API do Kubernetes diretamente para interagir com o cluster.

    -

    Um cluster Kubernetes pode ser implantado em máquinas físicas ou virtuais. Para começar o desenvolvimento do Kubernetes, você pode usar o Minikube. O Minikube é uma implementação leve do Kubernetes que cria uma VM em sua máquina local e implanta um cluster simples contendo apenas um nó. O Minikube está disponível para sistemas Linux, macOS e Windows. O Minikube CLI fornece operações básicas de inicialização para trabalhar com seu cluster, incluindo iniciar, parar, status e excluir. Para este tutorial, no entanto, você usará um terminal online fornecido com o Minikube pré-instalado.

    +

    Um cluster Kubernetes pode ser implantado em máquinas físicas ou virtuais. Para começar o desenvolvimento do Kubernetes, você pode usar o Minikube. O Minikube é uma implementação leve do Kubernetes que cria uma VM em sua máquina local e implanta um cluster simples contendo apenas um nó. O Minikube está disponível para sistemas Linux, macOS e Windows. A linha de comando (cli) do Minikube fornece operações básicas de inicialização para trabalhar com seu cluster, incluindo iniciar, parar, status e excluir. Para este tutorial, no entanto, você usará um terminal online fornecido com o Minikube pré-instalado.

    Agora que você sabe o que é Kubernetes, vamos para o tutorial online e iniciar nosso primeiro cluster!

    From 8bad612482550ca385cdfb37ec4dd2304b0ba79c Mon Sep 17 00:00:00 2001 From: edsoncelio Date: Sun, 28 Feb 2021 16:44:36 -0300 Subject: [PATCH 059/788] Add content/pt/docs/concepts/containers/container-environment.md --- .../containers/container-environment.md | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 content/pt/docs/concepts/containers/container-environment.md diff --git a/content/pt/docs/concepts/containers/container-environment.md b/content/pt/docs/concepts/containers/container-environment.md new file mode 100644 index 0000000000..2b879eeb12 --- /dev/null +++ b/content/pt/docs/concepts/containers/container-environment.md @@ -0,0 +1,59 @@ +--- +reviewers: + - femrtnz + - jcjesus +title: Ambiente de contêiner +content_type: concept +weight: 20 +--- + + + +Essa página descreve os recursos disponíveis para contêineres no ambiente de contêiner. + + + + + +## Ambiente de contêiner + +O ambiente de contêiner do Kubernetes fornece recursos importantes para contêineres: + +* Um sistema de arquivos, que é a combinação de uma [imagem](/docs/concepts/containers/images/) e um ou mais [volumes](/docs/concepts/storage/volumes/). +* Informação sobre o contêiner propriamente. +* Informação sobre outros objetos no cluster. + +### Informação de contêiner + +O _hostname_ de um contêiner é o nome do pod em que o contîner está executando. +Isso é disponível através do comando `hostname` ou da função [`gethostname`](https://man7.org/linux/man-pages/man2/gethostname.2.html) chamada na libc. + +O nome do pod e o namespace sáo disponíveis como variáveis de ambiente atráves do [downward API](/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/). + +Variáveis de ambiente definidas pelo usuário a partir da definição do pod também são disponíveis para o contêiner, assim como qualquer variável de ambiente especificada estáticamente na imagem Docker. + +### Informação do cluster + +Uma lista de todos os serviços que estáo executando quando um contêiner é criado é disponibilizada para o contêiner como variáveis de ambiente. +Essas variáveis de ambiente correspondem a sintaxa dos links Docker. + +Para um serviço nomeado *foo* que mapeia para um contêiner nomeado *bar*, as seguintes variáveis são definidas: + +```shell +FOO_SERVICE_HOST= +FOO_SERVICE_PORT= +``` + +Serviços possuem endereço IP dedicado e são disponibilizados para o contêiner via DNS, +se possuirem [DNS addon](https://releases.k8s.io/{{< param "githubbranch" >}}/cluster/addons/dns/) habilitado. + + + +## {{% heading "whatsnext" %}} + + +* Aprenda mais sobre [container lifecycle hooks](/docs/concepts/containers/container-lifecycle-hooks/). +* Obtenha experiência prática + [anexando manipuladores a eventos de ciclo de vida do contêiner](/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/). + + From 82355b4bacf492daf541d7420e48ec06748b81fa Mon Sep 17 00:00:00 2001 From: Jerry Park Date: Sun, 21 Feb 2021 07:57:46 +0900 Subject: [PATCH 060/788] Update outdated files in dev-1.20-ko.5 (2) --- .../concepts/security/controlling-access.md | 2 +- content/ko/docs/concepts/security/overview.md | 2 ++ .../services-networking/dual-stack.md | 8 +++---- .../ingress-controllers.md | 10 ++++---- .../concepts/services-networking/service.md | 8 +++---- .../concepts/storage/persistent-volumes.md | 7 +++++- .../docs/concepts/storage/storage-classes.md | 4 ++-- .../concepts/storage/volume-pvc-datasource.md | 4 +--- content/ko/docs/concepts/storage/volumes.md | 6 +++-- .../workloads/controllers/cron-jobs.md | 5 ++++ .../workloads/controllers/daemonset.md | 4 ++-- .../workloads/controllers/deployment.md | 23 ++++++++++++------- .../controllers/replicationcontroller.md | 9 ++++---- .../workloads/pods/ephemeral-containers.md | 4 ++-- .../participate/roles-and-responsibilities.md | 2 +- .../access-authn-authz/authorization.md | 11 ++++++++- .../feature-gates.md | 4 ++-- .../ko/docs/reference/kubectl/cheatsheet.md | 4 ++-- content/ko/docs/reference/tools.md | 4 ++-- .../container-runtimes.md | 2 +- .../production-environment/tools/kops.md | 8 +++---- .../tools/kubeadm/control-plane-flags.md | 4 +--- .../windows/intro-windows-in-kubernetes.md | 4 ++-- content/ko/docs/setup/release/notes.md | 4 ++-- .../access-cluster.md | 2 +- .../administer-cluster/access-cluster-api.md | 2 +- .../access-cluster-services.md | 2 +- 27 files changed, 89 insertions(+), 60 deletions(-) diff --git a/content/ko/docs/concepts/security/controlling-access.md b/content/ko/docs/concepts/security/controlling-access.md index 0b4bb6e2cc..3b45be648c 100644 --- a/content/ko/docs/concepts/security/controlling-access.md +++ b/content/ko/docs/concepts/security/controlling-access.md @@ -132,7 +132,7 @@ Bob이 `projectCaribou` 네임스페이스에 있는 오브젝트에 쓰기(`cre 이전의 논의는 (일반적인 경우) API 서버의 보안 포트로 전송되는 요청에 적용된다. API 서버는 실제로 다음과 같이 2개의 포트에서 서비스할 수 있다. -기본적으로 쿠버네티스 API 서버는 2개의 포트에서 HTTP 서비스를 한다. +기본적으로, 쿠버네티스 API 서버는 2개의 포트에서 HTTP 서비스를 한다. 1. `로컬호스트 포트`: diff --git a/content/ko/docs/concepts/security/overview.md b/content/ko/docs/concepts/security/overview.md index 86240a4116..9cd48a172c 100644 --- a/content/ko/docs/concepts/security/overview.md +++ b/content/ko/docs/concepts/security/overview.md @@ -119,6 +119,7 @@ RBAC 인증(쿠버네티스 API에 대한 접근) | https://kubernetes.io/docs/r 컨테이너 취약점 스캔 및 OS에 종속적인 보안 | 이미지 빌드 단계의 일부로 컨테이너에 알려진 취약점이 있는지 검사해야 한다. 이미지 서명 및 시행 | 컨테이너 이미지에 서명하여 컨테이너의 내용에 대한 신뢰 시스템을 유지한다. 권한있는 사용자의 비허용 | 컨테이너를 구성할 때 컨테이너의 목적을 수행하는데 필요한 최소 권한을 가진 사용자를 컨테이너 내에 만드는 방법에 대해서는 설명서를 참조한다. +더 강력한 격리로 컨테이너 런타임 사용 | 더 강력한 격리를 제공하는 [컨테이너 런타임 클래스](/ko/docs/concepts/containers/runtime-class/)를 선택한다. ## 코드 @@ -151,3 +152,4 @@ TLS를 통한 접근 | 코드가 TCP를 통해 통신해야 한다면, 미리 * 컨트롤 플레인을 위한 [전송 데이터 암호화](/docs/tasks/tls/managing-tls-in-a-cluster/) * [Rest에서 데이터 암호화](/docs/tasks/administer-cluster/encrypt-data/) * [쿠버네티스 시크릿](/ko/docs/concepts/configuration/secret/) +* [런타임 클래스](/ko/docs/concepts/containers/runtime-class) diff --git a/content/ko/docs/concepts/services-networking/dual-stack.md b/content/ko/docs/concepts/services-networking/dual-stack.md index cae986bb5d..dcfb818650 100644 --- a/content/ko/docs/concepts/services-networking/dual-stack.md +++ b/content/ko/docs/concepts/services-networking/dual-stack.md @@ -35,7 +35,7 @@ IPv4/IPv6 이중 스택 쿠버네티스 클러스터를 활용하려면 다음 * 쿠버네티스 1.20 이상 이전 버전과 함께 이중 스택 서비스를 사용하는 방법에 대한 정보 - 쿠버네티스 버전, 쿠버네티스 해당 버전에 대한 + 쿠버네티스 버전, 쿠버네티스 해당 버전에 대한 문서 참조 * 이중 스택 네트워킹을 위한 공급자의 지원(클라우드 공급자 또는 다른 방식으로 쿠버네티스 노드에 라우팅 가능한 IPv4/IPv6 네트워크 인터페이스를 제공할 수 있어야 한다.) * 이중 스택(예: Kubenet 또는 Calico)을 지원하는 네트워크 플러그인 @@ -69,9 +69,9 @@ IPv6 CIDR의 예: `fdXY:IJKL:MNOP:15::/64` (이 형식으로 표시되지만, 클러스터에 이중 스택이 활성화된 경우 IPv4, IPv6 또는 둘 다를 사용할 수 있는 {{< glossary_tooltip text="서비스" term_id="service" >}}를 만들 수 있다. -서비스의 주소 계열은 기본적으로 첫 번째 서비스 클러스터 IP 범위의 주소 계열로 설정된다. (`--service-cluster-ip-range` 플래그를 통해 kube-controller-manager에 구성) +서비스의 주소 계열은 기본적으로 첫 번째 서비스 클러스터 IP 범위의 주소 계열로 설정된다. (`--service-cluster-ip-range` 플래그를 통해 kube-apiserver에 구성) -서비스를 정의할 때 선택적으로 이중 스택으로 구성할 수 있다. 원하는 동작을 지정하려면 `.spec.ipFamilyPolicy` 필드를 +서비스를 정의할 때 선택적으로 이중 스택으로 구성할 수 있다. 원하는 동작을 지정하려면 `.spec.ipFamilyPolicy` 필드를 다음 값 중 하나로 설정한다. * `SingleStack`: 단일 스택 서비스. 컨트롤 플레인은 첫 번째로 구성된 서비스 클러스터 IP 범위를 사용하여 서비스에 대한 클러스터 IP를 할당한다. @@ -158,7 +158,7 @@ status: loadBalancer: {} ``` -1. 클러스터에서 이중 스택이 활성화된 경우, 셀렉터가 있는 기존 [헤드리스 서비스](/ko/docs/concepts/services-networking/service/#헤드리스-headless-서비스)는 `.spec.ClusterIP`가 `None`이라도 컨트롤 플레인이 `.spec.ipFamilyPolicy`을 `SingleStack`으로 지정하고 `.spec.ipFamilies`는 첫 번째 서비스 클러스터 IP 범위(kube-controller-manager에 대한 `--service-cluster-ip-range` 플래그를 통해 구성)의 주소 계열으로 지정한다. +1. 클러스터에서 이중 스택이 활성화된 경우, 셀렉터가 있는 기존 [헤드리스 서비스](/ko/docs/concepts/services-networking/service/#헤드리스-headless-서비스)는 `.spec.ClusterIP`가 `None`이라도 컨트롤 플레인이 `.spec.ipFamilyPolicy`을 `SingleStack`으로 지정하고 `.spec.ipFamilies`는 첫 번째 서비스 클러스터 IP 범위(kube-apiserver에 대한 `--service-cluster-ip-range` 플래그를 통해 구성)의 주소 계열으로 지정한다. {{< codenew file="service/networking/dual-stack-default-svc.yaml" >}} diff --git a/content/ko/docs/concepts/services-networking/ingress-controllers.md b/content/ko/docs/concepts/services-networking/ingress-controllers.md index 06340143a0..8554d9a87d 100644 --- a/content/ko/docs/concepts/services-networking/ingress-controllers.md +++ b/content/ko/docs/concepts/services-networking/ingress-controllers.md @@ -23,7 +23,7 @@ weight: 40 {{% thirdparty-content %}} -* [AKS 애플리케이션 게이트웨이 인그레스 컨트롤러] (https://azure.github.io/application-gateway-kubernetes-ingress/)는 [Azure 애플리케이션 게이트웨이](https://docs.microsoft.com)를 구성하는 인그레스 컨트롤러다. +* [AKS 애플리케이션 게이트웨이 인그레스 컨트롤러](https://azure.github.io/application-gateway-kubernetes-ingress/)는 [Azure 애플리케이션 게이트웨이](https://docs.microsoft.com)를 구성하는 인그레스 컨트롤러다. * [Ambassador](https://www.getambassador.io/) API 게이트웨이는 [Envoy](https://www.envoyproxy.io) 기반 인그레스 컨트롤러다. * [Apache APISIX 인그레스 컨트롤러](https://github.com/apache/apisix-ingress-controller)는 [Apache APISIX](https://github.com/apache/apisix) 기반의 인그레스 컨트롤러이다. @@ -31,13 +31,14 @@ weight: 40 * [Citrix 인그레스 컨트롤러](https://github.com/citrix/citrix-k8s-ingress-controller#readme)는 Citrix 애플리케이션 딜리버리 컨트롤러에서 작동한다. * [Contour](https://projectcontour.io/)는 [Envoy](https://www.envoyproxy.io/) 기반 인그레스 컨트롤러다. +* [EnRoute](https://getenroute.io/)는 인그레스 컨트롤러로 실행할 수 있는 [Envoy](https://www.envoyproxy.io) 기반 API 게이트웨이다. * F5 BIG-IP [쿠버네티스 용 컨테이너 인그레스 서비스](https://clouddocs.f5.com/containers/latest/userguide/kubernetes/)를 이용하면 인그레스를 사용하여 F5 BIG-IP 가상 서버를 구성할 수 있다. * [Gloo](https://gloo.solo.io)는 API 게이트웨이 기능을 제공하는 [Envoy](https://www.envoyproxy.io) 기반의 오픈소스 인그레스 컨트롤러다. -* [HAProxy 인그레스](https://haproxy-ingress.github.io/)는 [HAProxy](http://www.haproxy.org/#desc)의 +* [HAProxy 인그레스](https://haproxy-ingress.github.io/)는 [HAProxy](https://www.haproxy.org/#desc)의 인그레스 컨트롤러다. -* [쿠버네티스 용 HAProxy 인그레스 컨트롤러](https://github.com/haproxytech/kubernetes-ingress#readme)는 [HAProxy](http://www.haproxy.org/#desc) 용 +* [쿠버네티스 용 HAProxy 인그레스 컨트롤러](https://github.com/haproxytech/kubernetes-ingress#readme)는 [HAProxy](https://www.haproxy.org/#desc) 용 인그레스 컨트롤러이기도 하다. * [Istio 인그레스](https://istio.io/latest/docs/tasks/traffic-management/ingress/kubernetes-ingress/)는 [Istio](https://istio.io/) 기반 인그레스 컨트롤러다. @@ -48,8 +49,9 @@ weight: 40 * [Skipper](https://opensource.zalando.com/skipper/kubernetes/ingress-controller/)는 사용자의 커스텀 프록시를 구축하기 위한 라이브러리로 설계된 쿠버네티스 인그레스와 같은 유스케이스를 포함한 서비스 구성을 위한 HTTP 라우터 및 역방향 프록시다. * [Traefik 쿠버네티스 인그레스 제공자](https://doc.traefik.io/traefik/providers/kubernetes-ingress/)는 [Traefik](https://traefik.io/traefik/) 프록시 용 인그레스 컨트롤러다. +* [Tyk 오퍼레이터](https://github.com/TykTechnologies/tyk-operator)는 사용자 지정 리소스로 인그레스를 확장하여 API 관리 기능을 인그레스로 가져온다. Tyk 오퍼레이터는 오픈 소스 Tyk 게이트웨이 및 Tyk 클라우드 컨트롤 플레인과 함께 작동한다. * [Voyager](https://appscode.com/products/voyager)는 - [HAProxy](http://www.haproxy.org/#desc)의 인그레스 컨트롤러다. + [HAProxy](https://www.haproxy.org/#desc)의 인그레스 컨트롤러다. ## 여러 인그레스 컨트롤러 사용 diff --git a/content/ko/docs/concepts/services-networking/service.md b/content/ko/docs/concepts/services-networking/service.md index 5d1acf5392..be1f3ecaae 100644 --- a/content/ko/docs/concepts/services-networking/service.md +++ b/content/ko/docs/concepts/services-networking/service.md @@ -430,8 +430,8 @@ CoreDNS와 같은, 클러스터-인식 DNS 서버는 새로운 서비스를 위 예를 들면, 쿠버네티스 네임스페이스 `my-ns`에 `my-service`라는 서비스가 있는 경우, 컨트롤 플레인과 DNS 서비스가 함께 작동하여 `my-service.my-ns`에 대한 DNS 레코드를 만든다. `my-ns` 네임 스페이스의 파드들은 -간단히 `my-service`에 대한 이름 조회를 수행하여 찾을 수 있어야 한다 -(`my-service.my-ns` 역시 동작함). +`my-service`(`my-service.my-ns` 역시 동작함)에 대한 이름 조회를 +수행하여 서비스를 찾을 수 있어야 한다. 다른 네임스페이스의 파드들은 이름을 `my-service.my-ns`으로 사용해야 한다. 이 이름은 서비스에 할당된 클러스터 IP로 변환된다. @@ -463,7 +463,7 @@ DNS SRV 쿼리를 수행할 수 있다. 셀렉터를 정의하는 헤드리스 서비스의 경우, 엔드포인트 컨트롤러는 API에서 `엔드포인트` 레코드를 생성하고, DNS 구성을 수정하여 -`서비스` 를 지원하는 `파드` 를 직접 가리키는 레코드 (주소)를 반환한다. +`서비스` 를 지원하는 `파드` 를 직접 가리키는 A 레코드(IP 주소)를 반환한다. ### 셀렉터가 없는 경우 @@ -1164,7 +1164,7 @@ IP 주소(예 : 10.0.0.1)를 할당한다. 서비스 포트를 1234라고 가정 이는 서비스 소유자가 충돌 위험 없이 원하는 어떤 포트든 선택할 수 있음을 의미한다. 클라이언트는 실제로 접근하는 파드를 몰라도, IP와 포트에 -간단히 연결할 수 있다. +연결할 수 있다. #### iptables diff --git a/content/ko/docs/concepts/storage/persistent-volumes.md b/content/ko/docs/concepts/storage/persistent-volumes.md index 9ce1eba6cf..05997eb0f3 100644 --- a/content/ko/docs/concepts/storage/persistent-volumes.md +++ b/content/ko/docs/concepts/storage/persistent-volumes.md @@ -487,7 +487,7 @@ PV는 `storageClassName` 속성을 * VsphereVolume * iSCSI -마운트 옵션의 유효성이 검사되지 않으므로 마운트 옵션이 유효하지 않으면 마운트가 실패한다. +마운트 옵션의 유효성이 검사되지 않는다. 마운트 옵션이 유효하지 않으면, 마운트가 실패한다. 이전에는 `mountOptions` 속성 대신 `volume.beta.kubernetes.io/mount-options` 어노테이션이 사용되었다. 이 어노테이션은 아직까지는 사용할 수 있지만, @@ -629,6 +629,11 @@ spec: 퍼시스턴트볼륨 바인딩은 배타적이며, 퍼시스턴트볼륨클레임은 네임스페이스 오브젝트이므로 "다중" 모드(`ROX`, `RWX`)를 사용한 클레임은 하나의 네임스페이스 내에서만 가능하다. +### `hostPath` 유형의 퍼시스턴트볼륨 + +`hostPath` 퍼시스턴트볼륨은 노드의 파일이나 디렉터리를 사용하여 네트워크 연결 스토리지를 에뮬레이션한다. +[`hostPath` 유형 볼륨의 예](/ko/docs/tasks/configure-pod-container/configure-persistent-volume-storage/#퍼시스턴트볼륨-생성하기)를 참고한다. + ## 원시 블록 볼륨 지원 {{< feature-state for_k8s_version="v1.18" state="stable" >}} diff --git a/content/ko/docs/concepts/storage/storage-classes.md b/content/ko/docs/concepts/storage/storage-classes.md index 8bc6f7b1bf..94577ca182 100644 --- a/content/ko/docs/concepts/storage/storage-classes.md +++ b/content/ko/docs/concepts/storage/storage-classes.md @@ -143,8 +143,8 @@ CSI | 1.14 (alpha), 1.16 (beta) 클래스의 `mountOptions` 필드에 지정된 마운트 옵션을 가진다. 만약 볼륨 플러그인이 마운트 옵션을 지원하지 않는데, 마운트 -옵션을 지정하면 프로비저닝은 실패한다. 마운트 옵션은 클래스 또는 PV 에서 -검증되지 않으므로 PV 마운트가 유효하지 않으면 마운트가 실패하게 된다. +옵션을 지정하면 프로비저닝은 실패한다. 마운트 옵션은 클래스 또는 PV에서 +검증되지 않는다. PV 마운트가 유효하지 않으면, 마운트가 실패하게 된다. ### 볼륨 바인딩 모드 diff --git a/content/ko/docs/concepts/storage/volume-pvc-datasource.md b/content/ko/docs/concepts/storage/volume-pvc-datasource.md index e6ff2caa38..e9857885d7 100644 --- a/content/ko/docs/concepts/storage/volume-pvc-datasource.md +++ b/content/ko/docs/concepts/storage/volume-pvc-datasource.md @@ -19,7 +19,7 @@ weight: 30 복제는 표준 볼륨처럼 소비할 수 있는 쿠버네티스 볼륨의 복제본으로 정의된다. 유일한 차이점은 프로비저닝할 때 "새" 빈 볼륨을 생성하는 대신에 백엔드 장치가 지정된 볼륨의 정확한 복제본을 생성한다는 것이다. -쿠버네티스 API의 관점에서 복제를 구현하면 새로운 PVC 생성 중에 기존 PVC를 데이터 소스로 지정할 수 있는 기능이 추가된다. 소스 PVC는 바인딩되어있고, 사용가능해야 한다(사용 중이 아니어야함). +쿠버네티스 API의 관점에서 복제를 구현하면 새로운 PVC 생성 중에 기존 PVC를 데이터 소스로 지정할 수 있는 기능이 추가된다. 소스 PVC는 바인딩되어 있고, 사용 가능해야 한다(사용 중이 아니어야 함). 사용자는 이 기능을 사용할 때 다음 사항을 알고 있어야 한다. @@ -64,5 +64,3 @@ spec: ## 사용 새 PVC를 사용할 수 있게 되면, 복제된 PVC는 다른 PVC와 동일하게 소비된다. 또한, 이 시점에서 새롭게 생성된 PVC는 독립된 오브젝트이다. 원본 dataSource PVC와는 무관하게 독립적으로 소비하고, 복제하고, 스냅샷의 생성 또는 삭제를 할 수 있다. 이는 소스가 새롭게 생성된 복제본에 어떤 방식으로든 연결되어 있지 않으며, 새롭게 생성된 복제본에 영향 없이 수정하거나, 삭제할 수도 있는 것을 의미한다. - - diff --git a/content/ko/docs/concepts/storage/volumes.md b/content/ko/docs/concepts/storage/volumes.md index 2e37dc0a67..398c2e7e1f 100644 --- a/content/ko/docs/concepts/storage/volumes.md +++ b/content/ko/docs/concepts/storage/volumes.md @@ -103,6 +103,8 @@ spec: fsType: ext4 ``` +EBS 볼륨이 파티션된 경우, 선택적 필드인 `partition: ""` 를 제공하여 마운트할 파티션을 지정할 수 있다. + #### AWS EBS CSI 마이그레이션 {{< feature-state for_k8s_version="v1.17" state="beta" >}} @@ -207,8 +209,8 @@ spec: Cinder의 `CSIMigration` 기능이 활성화된 경우, 기존 트리 내 플러그인에서 `cinder.csi.openstack.org` 컨테이너 스토리지 인터페이스(CSI) 드라이버로 모든 플러그인 작업을 수행한다. 이 기능을 사용하려면, 클러스터에 [오픈스택 Cinder CSI -드라이버](https://github.com/kubernetes/cloud-provider-openstack/blob/master/docs/using-cinder-csi-plugin.md) -를 설치하고 `CSIMigration` 과 `CSIMigrationOpenStack` +드라이버](https://github.com/kubernetes/cloud-provider-openstack/blob/master/docs/cinder-csi-plugin/using-cinder-csi-plugin.md)를 +설치하고 `CSIMigration` 과 `CSIMigrationOpenStack` 베타 기능을 활성화해야 한다. ### 컨피그맵(configMap) {#configmap} diff --git a/content/ko/docs/concepts/workloads/controllers/cron-jobs.md b/content/ko/docs/concepts/workloads/controllers/cron-jobs.md index ed29659a7e..7756c93cb0 100644 --- a/content/ko/docs/concepts/workloads/controllers/cron-jobs.md +++ b/content/ko/docs/concepts/workloads/controllers/cron-jobs.md @@ -89,6 +89,11 @@ kube-controller-manager 컨테이너에 설정된 시간대는 `concurrencyPolicy` 가 `Allow` 로 설정될 경우, 잡은 항상 적어도 한 번은 실행될 것이다. +{{< caution >}} +`startingDeadlineSeconds` 가 10초 미만의 값으로 설정되면, 크론잡이 스케줄되지 않을 수 있다. 이는 크론잡 컨트롤러가 10초마다 항목을 확인하기 때문이다. +{{< /caution >}} + + 모든 크론잡에 대해 크론잡 {{< glossary_tooltip term_id="controller" text="컨트롤러" >}} 는 마지막 일정부터 지금까지 얼마나 많은 일정이 누락되었는지 확인한다. 만약 100회 이상의 일정이 누락되었다면, 잡을 실행하지 않고 아래와 같은 에러 로그를 남긴다. ```` diff --git a/content/ko/docs/concepts/workloads/controllers/daemonset.md b/content/ko/docs/concepts/workloads/controllers/daemonset.md index 589fe7c1dd..d7d583d142 100644 --- a/content/ko/docs/concepts/workloads/controllers/daemonset.md +++ b/content/ko/docs/concepts/workloads/controllers/daemonset.md @@ -141,8 +141,8 @@ nodeAffinity: | ---------------------------------------- | ---------- | ------- | ------------------------------------------------------------ | | `node.kubernetes.io/not-ready` | NoExecute | 1.13+ | 네트워크 파티션과 같은 노드 문제가 발생해도 데몬셋 파드는 축출되지 않는다. | | `node.kubernetes.io/unreachable` | NoExecute | 1.13+ | 네트워크 파티션과 같은 노드 문제가 발생해도 데몬셋 파드는 축출되지 않는다. | -| `node.kubernetes.io/disk-pressure` | NoSchedule | 1.8+ | | -| `node.kubernetes.io/memory-pressure` | NoSchedule | 1.8+ | | +| `node.kubernetes.io/disk-pressure` | NoSchedule | 1.8+ | 데몬셋 파드는 기본 스케줄러에서 디스크-압박(disk-pressure) 속성을 허용한다. | +| `node.kubernetes.io/memory-pressure` | NoSchedule | 1.8+ | 데몬셋 파드는 기본 스케줄러에서 메모리-압박(memory-pressure) 속성을 허용한다. | | `node.kubernetes.io/unschedulable` | NoSchedule | 1.12+ | 데몬셋 파드는 기본 스케줄러의 스케줄할 수 없는(unschedulable) 속성을 극복한다. | | `node.kubernetes.io/network-unavailable` | NoSchedule | 1.12+ | 호스트 네트워크를 사용하는 데몬셋 파드는 기본 스케줄러에 의해 이용할 수 없는 네트워크(network-unavailable) 속성을 극복한다. | diff --git a/content/ko/docs/concepts/workloads/controllers/deployment.md b/content/ko/docs/concepts/workloads/controllers/deployment.md index 779fcfbe34..1407bb28f0 100644 --- a/content/ko/docs/concepts/workloads/controllers/deployment.md +++ b/content/ko/docs/concepts/workloads/controllers/deployment.md @@ -45,7 +45,7 @@ _디플로이먼트(Deployment)_ 는 {{< glossary_tooltip text="파드" term_id= * `.metadata.name` 필드에 따라 `nginx-deployment` 이름으로 디플로이먼트가 생성된다. * `.spec.replicas` 필드에 따라 디플로이먼트는 3개의 레플리카 파드를 생성한다. * `.spec.selector` 필드는 디플로이먼트가 관리할 파드를 찾는 방법을 정의한다. - 이 사례에서는 간단하게 파드 템플릿에 정의된 레이블(`app: nginx`)을 선택한다. + 이 사례에서는 파드 템플릿에 정의된 레이블(`app: nginx`)을 선택한다. 그러나 파드 템플릿 자체의 규칙이 만족되는 한, 보다 정교한 선택 규칙의 적용이 가능하다. @@ -169,13 +169,15 @@ kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml ```shell kubectl --record deployment.apps/nginx-deployment set image deployment.v1.apps/nginx-deployment nginx=nginx:1.16.1 ``` - 또는 간단하게 다음의 명령어를 사용한다. + + 또는 다음의 명령어를 사용한다. ```shell kubectl set image deployment/nginx-deployment nginx=nginx:1.16.1 --record ``` - 이와 유사하게 출력된다. + 다음과 유사하게 출력된다. + ``` deployment.apps/nginx-deployment image updated ``` @@ -186,7 +188,8 @@ kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml kubectl edit deployment.v1.apps/nginx-deployment ``` - 이와 유사하게 출력된다. + 다음과 유사하게 출력된다. + ``` deployment.apps/nginx-deployment edited ``` @@ -198,10 +201,13 @@ kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml ``` 이와 유사하게 출력된다. + ``` Waiting for rollout to finish: 2 out of 3 new replicas have been updated... ``` + 또는 + ``` deployment "nginx-deployment" successfully rolled out ``` @@ -210,10 +216,11 @@ kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml * 롤아웃이 성공하면 `kubectl get deployments` 를 실행해서 디플로이먼트를 볼 수 있다. 이와 유사하게 출력된다. - ``` - NAME READY UP-TO-DATE AVAILABLE AGE - nginx-deployment 3/3 3 3 36s - ``` + + ```ini + NAME READY UP-TO-DATE AVAILABLE AGE + nginx-deployment 3/3 3 3 36s + ``` * `kubectl get rs` 를 실행해서 디플로이먼트가 새 레플리카셋을 생성해서 파드를 업데이트 했는지 볼 수 있고, 새 레플리카셋을 최대 3개의 레플리카로 스케일 업, 이전 레플리카셋을 0개의 레플리카로 스케일 다운한다. diff --git a/content/ko/docs/concepts/workloads/controllers/replicationcontroller.md b/content/ko/docs/concepts/workloads/controllers/replicationcontroller.md index 9c3450851a..ff48730a13 100644 --- a/content/ko/docs/concepts/workloads/controllers/replicationcontroller.md +++ b/content/ko/docs/concepts/workloads/controllers/replicationcontroller.md @@ -180,7 +180,7 @@ delete`](/docs/reference/generated/kubectl/kubectl-commands#delete) 를 사용 Kubectl은 레플리케이션 컨트롤러를 0으로 스케일하고 레플리케이션 컨트롤러 자체를 삭제하기 전에 각 파드를 삭제하기를 기다린다. 이 kubectl 명령이 인터럽트되면 다시 시작할 수 있다. -REST API나 go 클라이언트 라이브러리를 사용하는 경우 명시적으로 단계를 수행해야 한다 (레플리카를 0으로 스케일하고 파드의 삭제를 기다린 이후, +REST API나 Go 클라이언트 라이브러리를 사용하는 경우 명시적으로 단계를 수행해야 한다(레플리카를 0으로 스케일하고 파드의 삭제를 기다린 이후, 레플리케이션 컨트롤러를 삭제). ### 레플리케이션 컨트롤러만 삭제 @@ -189,7 +189,7 @@ REST API나 go 클라이언트 라이브러리를 사용하는 경우 명시적 kubectl을 사용하여, [`kubectl delete`](/docs/reference/generated/kubectl/kubectl-commands#delete)에 옵션으로 `--cascade=false`를 지정하라. -REST API나 go 클라이언트 라이브러리를 사용하는 경우 간단히 레플리케이션 컨트롤러 오브젝트를 삭제하라. +REST API나 Go 클라이언트 라이브러리를 사용하는 경우 레플리케이션 컨트롤러 오브젝트를 삭제하라. 원본이 삭제되면 대체할 새로운 레플리케이션 컨트롤러를 생성하여 교체할 수 있다. 오래된 파드와 새로운 파드의 `.spec.selector` 가 동일하다면, 새로운 레플리케이션 컨트롤러는 오래된 파드를 채택할 것이다. 그러나 기존 파드를 @@ -208,7 +208,8 @@ REST API나 go 클라이언트 라이브러리를 사용하는 경우 간단히 ### 스케일링 -레플리케이션 컨트롤러는 `replicas` 필드를 업데이트함으로써 수동으로 또는 오토 스케일링 제어 에이전트로 레플리카의 수를 쉽게 스케일 업하거나 스케일 다운할 수 있다. +레플리케이션컨트롤러는 `replicas` 필드를 설정하여 레플리카의 수를 늘리거나 줄인다. +레플리카를 수동으로 또는 오토 스케일링 제어 에이전트로 관리하도록 레플리케이션컨트롤러를 구성할 수 있다. ### 롤링 업데이트 @@ -239,7 +240,7 @@ REST API나 go 클라이언트 라이브러리를 사용하는 경우 간단히 ## 레플리케이션 컨트롤러의 책임 -레플리케이션 컨트롤러는 의도한 수의 파드가 해당 레이블 선택기와 일치하고 동작하는지를 단순히 확인한다. 현재, 종료된 파드만 해당 파드의 수에서 제외된다. 향후 시스템에서 사용할 수 있는 [readiness](https://issue.k8s.io/620) 및 기타 정보가 고려될 수 있으며 교체 정책에 대한 통제를 더 추가 할 수 있고 외부 클라이언트가 임의로 정교한 교체 또는 스케일 다운 정책을 구현하기 위해 사용할 수 있는 이벤트를 내보낼 계획이다. +레플리케이션 컨트롤러는 의도한 수의 파드가 해당 레이블 셀렉터와 일치하고 동작하는지를 확인한다. 현재, 종료된 파드만 해당 파드의 수에서 제외된다. 향후 시스템에서 사용할 수 있는 [readiness](https://issue.k8s.io/620) 및 기타 정보가 고려될 수 있으며 교체 정책에 대한 통제를 더 추가 할 수 있고 외부 클라이언트가 임의로 정교한 교체 또는 스케일 다운 정책을 구현하기 위해 사용할 수 있는 이벤트를 내보낼 계획이다. 레플리케이션 컨트롤러는 이 좁은 책임에 영원히 제약을 받는다. 그 자체로는 준비성 또는 활성 프로브를 실행하지 않을 것이다. 오토 스케일링을 수행하는 대신, 외부 오토 스케일러 ([#492](https://issue.k8s.io/492)에서 논의된)가 레플리케이션 컨트롤러의 `replicas` 필드를 변경함으로써 제어되도록 의도되었다. 레플리케이션 컨트롤러에 스케줄링 정책 (예를 들어 [spreading](https://issue.k8s.io/367#issuecomment-48428019))을 추가하지 않을 것이다. 오토사이징 및 기타 자동화 된 프로세스를 방해할 수 있으므로 제어된 파드가 현재 지정된 템플릿과 일치하는지 확인해야 한다. 마찬가지로 기한 완료, 순서 종속성, 구성 확장 및 기타 기능은 다른 곳에 속한다. 대량의 파드 생성 메커니즘 ([#170](https://issue.k8s.io/170))까지도 고려해야 한다. diff --git a/content/ko/docs/concepts/workloads/pods/ephemeral-containers.md b/content/ko/docs/concepts/workloads/pods/ephemeral-containers.md index 27e48b192f..9aa9e9bf51 100644 --- a/content/ko/docs/concepts/workloads/pods/ephemeral-containers.md +++ b/content/ko/docs/concepts/workloads/pods/ephemeral-containers.md @@ -76,7 +76,7 @@ API에서 특별한 `ephemeralcontainers` 핸들러를 사용해서 만들어지 임시 컨테이너를 사용해서 문제를 해결하는 예시는 [임시 디버깅 컨테이너로 디버깅하기] -(/docs/tasks/debug-application-cluster/debug-running-pod/#debugging-with-ephemeral-debug-container)를 참조한다. +(/docs/tasks/debug-application-cluster/debug-running-pod/#ephemeral-container)를 참조한다. ## 임시 컨테이너 API @@ -100,7 +100,7 @@ API에서 특별한 `ephemeralcontainers` 핸들러를 사용해서 만들어지 "apiVersion": "v1", "kind": "EphemeralContainers", "metadata": { - "name": "example-pod" + "name": "example-pod" }, "ephemeralContainers": [{ "command": [ diff --git a/content/ko/docs/contribute/participate/roles-and-responsibilities.md b/content/ko/docs/contribute/participate/roles-and-responsibilities.md index 354e9d669f..448502c0c3 100644 --- a/content/ko/docs/contribute/participate/roles-and-responsibilities.md +++ b/content/ko/docs/contribute/participate/roles-and-responsibilities.md @@ -51,7 +51,7 @@ GitHub 계정을 가진 누구나 쿠버네티스에 기여할 수 있다. SIG D - 풀 리퀘스트에 `/lgtm` 코멘트를 사용하여 LGTM(looks good to me) 레이블을 추가한다. {{< note >}} - `/lgtm` 사용은 자동화를 트리거한다. 만약 구속력 없는 승인을 제공하려면, 단순히 "LGTM" 코멘트를 남기는 것도 좋다! + `/lgtm` 사용은 자동화를 트리거한다. 만약 구속력 없는 승인을 제공하려면, "LGTM" 코멘트를 남기는 것도 좋다! {{< /note >}} - `/hold` 코멘트를 사용하여 풀 리퀘스트에 대한 병합을 차단한다. diff --git a/content/ko/docs/reference/access-authn-authz/authorization.md b/content/ko/docs/reference/access-authn-authz/authorization.md index b34f68e392..a9370ea74b 100644 --- a/content/ko/docs/reference/access-authn-authz/authorization.md +++ b/content/ko/docs/reference/access-authn-authz/authorization.md @@ -99,6 +99,9 @@ DELETE | delete(개별 리소스), deletecollection(리소스 모음) ```bash kubectl auth can-i create deployments --namespace dev ``` + +다음과 유사하게 출력된다. + ``` yes ``` @@ -106,6 +109,9 @@ yes ```shell kubectl auth can-i create deployments --namespace prod ``` + +다음과 유사하게 출력된다. + ``` no ``` @@ -116,6 +122,9 @@ no ```bash kubectl auth can-i list secrets --namespace dev --as dave ``` + +다음과 유사하게 출력된다. + ``` no ``` @@ -145,7 +154,7 @@ EOF ``` 생성된 `SelfSubjectAccessReview` 는 다음과 같다. -``` +```yaml apiVersion: authorization.k8s.io/v1 kind: SelfSubjectAccessReview metadata: diff --git a/content/ko/docs/reference/command-line-tools-reference/feature-gates.md b/content/ko/docs/reference/command-line-tools-reference/feature-gates.md index 715dbf4801..cece4022ef 100644 --- a/content/ko/docs/reference/command-line-tools-reference/feature-gates.md +++ b/content/ko/docs/reference/command-line-tools-reference/feature-gates.md @@ -634,8 +634,8 @@ kubelet과 같은 컴포넌트의 기능 게이트를 설정하려면, 기능 - `KubeletCredentialProviders`: 이미지 풀 자격 증명에 대해 kubelet exec 자격 증명 공급자를 활성화한다. - `KubeletPluginsWatcher`: kubelet이 [CSI 볼륨 드라이버](/ko/docs/concepts/storage/volumes/#csi)와 같은 플러그인을 검색할 수 있도록 프로브 기반 플러그인 감시자(watcher) 유틸리티를 사용한다. -- `KubeletPodResources`: kubelet의 파드 리소스 GPRC 엔드포인트를 활성화한다. 자세한 내용은 - [장치 모니터링 지원](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/compute-device-assignment.md)을 +- `KubeletPodResources`: kubelet의 파드 리소스 gPRC 엔드포인트를 활성화한다. 자세한 내용은 + [장치 모니터링 지원](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/606-compute-device-assignment/README.md)을 참고한다. - `LegacyNodeRoleBehavior`: 비활성화되면, 서비스 로드 밸런서 및 노드 중단의 레거시 동작은 `NodeDisruptionExclusion` 과 `ServiceNodeExclusion` 에 의해 제공된 기능별 레이블을 대신하여 diff --git a/content/ko/docs/reference/kubectl/cheatsheet.md b/content/ko/docs/reference/kubectl/cheatsheet.md index 2ac5f6076c..0020d7b574 100644 --- a/content/ko/docs/reference/kubectl/cheatsheet.md +++ b/content/ko/docs/reference/kubectl/cheatsheet.md @@ -191,7 +191,7 @@ JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.ty && kubectl get nodes -o jsonpath="$JSONPATH" | grep "Ready=True" # 외부 도구 없이 디코딩된 시크릿 출력 -kubectl get secret ${secret_name} -o go-template='{{range $k,$v := .data}}{{$k}}={{$v|base64decode}}{{"\n"}}{{end}}' +kubectl get secret my-secret -o go-template='{{range $k,$v := .data}}{{"### "}}{{$k}}{{"\n"}}{{$v|base64decode}}{{"\n\n"}}{{end}}' # 파드에 의해 현재 사용되고 있는 모든 시크릿 목록 조회 kubectl get pods -o json | jq '.items[].spec.containers[].env[]?.valueFrom.secretKeyRef.name' | grep -v null | sort | uniq @@ -334,7 +334,7 @@ kubectl taint nodes foo dedicated=special-user:NoSchedule ### 리소스 타입 -단축명, [API 그룹](/ko/docs/concepts/overview/kubernetes-api/#api-그룹)과 함께 지원되는 모든 리소스 유형들, 그것들의 [네임스페이스](/ko/docs/concepts/overview/working-with-objects/namespaces)와 [종류(Kind)](/ko/docs/concepts/overview/working-with-objects/kubernetes-objects)를 나열: +단축명, [API 그룹](/ko/docs/concepts/overview/kubernetes-api/#api-그룹과-버전-규칙)과 함께 지원되는 모든 리소스 유형들, 그것들의 [네임스페이스](/ko/docs/concepts/overview/working-with-objects/namespaces)와 [종류(Kind)](/ko/docs/concepts/overview/working-with-objects/kubernetes-objects)를 나열: ```bash kubectl api-resources diff --git a/content/ko/docs/reference/tools.md b/content/ko/docs/reference/tools.md index ac0a5fb6c5..97206f3be7 100644 --- a/content/ko/docs/reference/tools.md +++ b/content/ko/docs/reference/tools.md @@ -20,9 +20,9 @@ content_type: concept ## Minikube -[`minikube`](https://minikube.sigs.k8s.io/docs/)는 개발과 테스팅 목적으로 하는 +[`minikube`](https://minikube.sigs.k8s.io/docs/)는 개발과 테스팅 목적으로 단일 노드 쿠버네티스 클러스터를 로컬 워크스테이션에서 -쉽게 구동시키는 도구이다. +실행하는 도구이다. ## 대시보드 diff --git a/content/ko/docs/setup/production-environment/container-runtimes.md b/content/ko/docs/setup/production-environment/container-runtimes.md index f51b5f5eef..42c8bd8095 100644 --- a/content/ko/docs/setup/production-environment/container-runtimes.md +++ b/content/ko/docs/setup/production-environment/container-runtimes.md @@ -420,7 +420,7 @@ CRI-O를 시작한다. ```shell sudo systemctl daemon-reload -sudo systemctl start crio +sudo systemctl enable crio --now ``` 자세한 사항은 [CRI-O 설치 가이드](https://github.com/cri-o/cri-o/blob/master/install.md)를 diff --git a/content/ko/docs/setup/production-environment/tools/kops.md b/content/ko/docs/setup/production-environment/tools/kops.md index 4ec5386d2f..05fc21f32a 100644 --- a/content/ko/docs/setup/production-environment/tools/kops.md +++ b/content/ko/docs/setup/production-environment/tools/kops.md @@ -39,7 +39,7 @@ kops는 자동화된 프로비저닝 시스템인데, #### 설치 -[releases page](https://github.com/kubernetes/kops/releases)에서 kops를 다운로드 한다(소스코드로부터 빌드하는것도 역시 어렵지 않다). +[releases page](https://github.com/kubernetes/kops/releases)에서 kops를 다운로드 한다(소스 코드로부터 빌드하는 것도 역시 편리하다). {{< tabs name="kops_installation" >}} {{% tab name="macOS" %}} @@ -51,7 +51,7 @@ curl -LO https://github.com/kubernetes/kops/releases/download/$(curl -s https:// | grep tag_name | cut -d '"' -f 4)/kops-darwin-amd64 ``` -특정 버전을 다운로드 받는다면 명령의 다음부분을 특정 kops 버전으로 변경한다. +특정 버전을 다운로드 받는다면 명령의 다음 부분을 특정 kops 버전으로 변경한다. ```shell $(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4) @@ -147,8 +147,8 @@ Route53 hosted zone은 서브도메인도 지원한다. 여러분의 hosted zone `dev` NS 레코드를 `example.com`에 생성한다. 만약 이것이 루트 도메인 네임이라면 이 NS 레코드들은 도메인 등록기관을 통해서 생성해야 한다(예를 들어, `example.com`는 `example.com`를 구매한 곳에서 설정 할 수 있다). -이 단계에서 문제가 되기 쉽다.(문제를 만드는 가장 큰 이유이다!) dig 툴을 실행해서 -클러스터 설정이 정확한지 한번 더 확인 한다. +route53 도메인 설정을 확인한다(문제를 만드는 가장 큰 이유이다!). dig 툴을 실행해서 +클러스터 설정이 정확한지 한번 더 확인한다. `dig NS dev.example.com` 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 2e6252bf80..358274d143 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 @@ -76,9 +76,7 @@ kind: ClusterConfiguration kubernetesVersion: v1.16.0 scheduler: extraArgs: - address: 0.0.0.0 + bind-address: 0.0.0.0 config: /home/johndoe/schedconfig.yaml kubeconfig: /home/johndoe/kubeconfig.yaml ``` - - diff --git a/content/ko/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md b/content/ko/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md index 0ea3dc0ce9..67283774af 100644 --- a/content/ko/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md +++ b/content/ko/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md @@ -12,7 +12,7 @@ weight: 65 ## 쿠버네티스의 윈도우 컨테이너 -쿠버네티스에서 윈도우 컨테이너 오케스트레이션을 활성화하려면, 기존 리눅스 클러스터에 윈도우 노드를 포함하기만 하면 된다. 쿠버네티스의 {{< glossary_tooltip text="파드" term_id="pod" >}}에서 윈도우 컨테이너를 스케줄링하는 것은 리눅스 기반 컨테이너를 스케줄링하는 것만큼 간단하고 쉽다. +쿠버네티스에서 윈도우 컨테이너 오케스트레이션을 활성화하려면, 기존 리눅스 클러스터에 윈도우 노드를 포함한다. 쿠버네티스의 {{< glossary_tooltip text="파드" term_id="pod" >}}에서 윈도우 컨테이너를 스케줄링하는 것은 리눅스 기반 컨테이너를 스케줄링하는 것과 유사하다. 윈도우 컨테이너를 실행하려면, 쿠버네티스 클러스터에 리눅스를 실행하는 컨트롤 플레인 노드와 사용자의 워크로드 요구에 따라 윈도우 또는 리눅스를 실행하는 워커가 있는 여러 운영 체제가 포함되어 있어야 한다. 윈도우 서버 2019는 윈도우에서 [쿠버네티스 노드](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/architecture/architecture.md#the-kubernetes-node)를 활성화하는 유일한 윈도우 운영 체제이다(kubelet, [컨테이너 런타임](https://docs.microsoft.com/ko-kr/virtualization/windowscontainers/deploy-containers/containerd) 및 kube-proxy 포함). 윈도우 배포 채널에 대한 자세한 설명은 [Microsoft 문서](https://docs.microsoft.com/ko-kr/windows-server/get-started-19/servicing-channels-19)를 참고한다. @@ -544,7 +544,7 @@ PodSecurityContext 필드는 윈도우에서 작동하지 않는다. 참조를 1. `start.ps1`을 시작한 후, flanneld가 "Waiting for the Network to be created"에서 멈춘다. - 이 [조사 중인 이슈](https://github.com/coreos/flannel/issues/1066)에 대한 수많은 보고가 있다. 플란넬 네트워크의 관리 IP가 설정될 때 타이밍 이슈일 가능성이 높다. 해결 방법은 간단히 start.ps1을 다시 시작하거나 다음과 같이 수동으로 다시 시작하는 것이다. + 이 [이슈](https://github.com/coreos/flannel/issues/1066)에 대한 수많은 보고가 있다. 플란넬 네트워크의 관리 IP가 설정될 때의 타이밍 이슈일 가능성이 높다. 해결 방법은 start.ps1을 다시 시작하거나 다음과 같이 수동으로 다시 시작하는 것이다. ```powershell PS C:> [Environment]::SetEnvironmentVariable("NODE_NAME", "") diff --git a/content/ko/docs/setup/release/notes.md b/content/ko/docs/setup/release/notes.md index f833d27094..7bcbb39489 100644 --- a/content/ko/docs/setup/release/notes.md +++ b/content/ko/docs/setup/release/notes.md @@ -92,7 +92,7 @@ We expect this implementation to progress from alpha to beta and GA in coming re ### go1.15.5 -go1.15.5 has been integrated to Kubernets project as of this release, [including other infrastructure related updates on this effort](https://github.com/kubernetes/kubernetes/pull/95776). +go1.15.5 has been integrated to Kubernetes project as of this release, [including other infrastructure related updates on this effort](https://github.com/kubernetes/kubernetes/pull/95776). ### CSI 볼륨 스냅샷(CSI Volume Snapshot)이 안정 기능으로 전환 @@ -190,7 +190,7 @@ Currently, cadvisor_stats_provider provides AcceleratorStats but cri_stats_provi PodSubnet validates against the corresponding cluster "--node-cidr-mask-size" of the kube-controller-manager, it fail if the values are not compatible. kubeadm no longer sets the node-mask automatically on IPv6 deployments, you must check that your IPv6 service subnet mask is compatible with the default node mask /64 or set it accordenly. Previously, for IPv6, if the podSubnet had a mask lower than /112, kubeadm calculated a node-mask to be multiple of eight and splitting the available bits to maximise the number used for nodes. ([#95723](https://github.com/kubernetes/kubernetes/pull/95723), [@aojea](https://github.com/aojea)) [SIG Cluster Lifecycle] -- The deprecated flag --experimental-kustomize is now removed from kubeadm commands. Use --experimental-patches instead, which was introduced in 1.19. Migration infromation available in --help description for --exprimental-patches. ([#94871](https://github.com/kubernetes/kubernetes/pull/94871), [@neolit123](https://github.com/neolit123)) +- The deprecated flag --experimental-kustomize is now removed from kubeadm commands. Use --experimental-patches instead, which was introduced in 1.19. Migration information available in --help description for --experimental-patches. ([#94871](https://github.com/kubernetes/kubernetes/pull/94871), [@neolit123](https://github.com/neolit123)) - Windows hyper-v container featuregate is deprecated in 1.20 and will be removed in 1.21 ([#95505](https://github.com/kubernetes/kubernetes/pull/95505), [@wawa0210](https://github.com/wawa0210)) [SIG Node and Windows] - The kube-apiserver ability to serve on an insecure port, deprecated since v1.10, has been removed. The insecure address flags `--address` and `--insecure-bind-address` have no effect in kube-apiserver and will be removed in v1.24. The insecure port flags `--port` and `--insecure-port` may only be set to 0 and will be removed in v1.24. ([#95856](https://github.com/kubernetes/kubernetes/pull/95856), [@knight42](https://github.com/knight42), [SIG API Machinery, Node, Testing]) - Add dual-stack Services (alpha). This is a BREAKING CHANGE to an alpha API. diff --git a/content/ko/docs/tasks/access-application-cluster/access-cluster.md b/content/ko/docs/tasks/access-application-cluster/access-cluster.md index e78046f0ee..43a6a82343 100644 --- a/content/ko/docs/tasks/access-application-cluster/access-cluster.md +++ b/content/ko/docs/tasks/access-application-cluster/access-cluster.md @@ -280,7 +280,7 @@ heapster is running at https://104.197.5.247/api/v1/namespaces/kube-system/servi #### 수작업으로 apiserver proxy URL을 구축 -위에서 언급한 것처럼 서비스의 proxy URL을 검색하는데 `kubectl cluster-info` 커맨드를 사용할 수 있다. 서비스 endpoint, 접미사, 매개변수를 포함하는 proxy URL을 생성하려면 단순하게 해당 서비스에 +위에서 언급한 것처럼 서비스의 proxy URL을 검색하는데 `kubectl cluster-info` 커맨드를 사용할 수 있다. 서비스 endpoint, 접미사, 매개변수를 포함하는 proxy URL을 생성하려면 해당 서비스에 `http://`*`kubernetes_master_address`*`/api/v1/namespaces/`*`namespace_name`*`/services/`*`service_name[:port_name]`*`/proxy` 형식의 proxy URL을 덧붙인다. 당신이 port에 이름을 지정하지 않았다면 URL에 *port_name* 을 지정할 필요는 없다. diff --git a/content/ko/docs/tasks/administer-cluster/access-cluster-api.md b/content/ko/docs/tasks/administer-cluster/access-cluster-api.md index 123c09d2d2..d6e567e674 100644 --- a/content/ko/docs/tasks/administer-cluster/access-cluster-api.md +++ b/content/ko/docs/tasks/administer-cluster/access-cluster-api.md @@ -216,7 +216,7 @@ for i in ret.items: #### Java 클라이언트 {#java-client} -* [Java 클라이언트](https://github.com/kubernetes-client/java)를 설치하려면, 다음을 실행한다. +[Java 클라이언트](https://github.com/kubernetes-client/java)를 설치하려면, 다음을 실행한다. ```shell # java 라이브러리를 클론한다 diff --git a/content/ko/docs/tasks/administer-cluster/access-cluster-services.md b/content/ko/docs/tasks/administer-cluster/access-cluster-services.md index f8f707eb33..5dd7a627d0 100644 --- a/content/ko/docs/tasks/administer-cluster/access-cluster-services.md +++ b/content/ko/docs/tasks/administer-cluster/access-cluster-services.md @@ -83,7 +83,7 @@ heapster is running at https://104.197.5.247/api/v1/namespaces/kube-system/servi #### apiserver 프록시 URL 수동 구성 -위에서 언급한 것처럼, `kubectl cluster-info` 명령을 사용하여 서비스의 프록시 URL을 검색한다. 서비스 엔드포인트, 접미사 및 매개 변수를 포함하는 프록시 URL을 작성하려면, 단순히 서비스의 프록시 URL에 추가하면 된다. +위에서 언급한 것처럼, `kubectl cluster-info` 명령을 사용하여 서비스의 프록시 URL을 검색한다. 서비스 엔드포인트, 접미사 및 매개 변수를 포함하는 프록시 URL을 작성하려면, 서비스의 프록시 URL에 추가하면 된다. `http://`*`kubernetes_master_address`*`/api/v1/namespaces/`*`namespace_name`*`/services/`*`[https:]service_name[:port_name]`*`/proxy` 포트에 대한 이름을 지정하지 않은 경우, URL에 *port_name* 을 지정할 필요가 없다. From c77e38066fcf96eb43f3ade541284e7e90c65b08 Mon Sep 17 00:00:00 2001 From: raghvenders Date: Sun, 28 Feb 2021 20:40:16 -0600 Subject: [PATCH 061/788] Review Comments --- content/en/docs/reference/_index.md | 4 ++-- content/en/docs/reference/kubectl/_index.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/content/en/docs/reference/_index.md b/content/en/docs/reference/_index.md index 01341d4a67..a261b8a947 100644 --- a/content/en/docs/reference/_index.md +++ b/content/en/docs/reference/_index.md @@ -18,7 +18,7 @@ This section of the Kubernetes documentation contains references. -## Standardized Glossary +## API Reference * [Glossary](/docs/reference/glossary/) - a comprehensive, standardized list of Kubernetes terminology @@ -30,7 +30,7 @@ This section of the Kubernetes documentation contains references. * [API access control](/docs/reference/access-authn-authz/) - details on how Kubernetes controls API access * [Well-Known Labels, Annotations and Taints](/docs/reference/kubernetes-api/labels-annotations-taints/) -## API Client Libraries +## Officially supported client libraries To call the Kubernetes API from a programming language, you can use [client libraries](/docs/reference/using-api/client-libraries/). Officially supported diff --git a/content/en/docs/reference/kubectl/_index.md b/content/en/docs/reference/kubectl/_index.md index ce08a5a97a..765adb6fe8 100755 --- a/content/en/docs/reference/kubectl/_index.md +++ b/content/en/docs/reference/kubectl/_index.md @@ -1,5 +1,5 @@ --- -title: "CLI" +title: "kubectl" weight: 60 --- From a19a86f9a9018529fb6cf75ac3dc31a893c21fe5 Mon Sep 17 00:00:00 2001 From: debugwish Date: Mon, 1 Mar 2021 16:20:33 +0800 Subject: [PATCH 062/788] Update connect-applications-service.md --- .../services-networking/connect-applications-service.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/docs/concepts/services-networking/connect-applications-service.md b/content/zh/docs/concepts/services-networking/connect-applications-service.md index bf54a0f2d0..8baed256d5 100644 --- a/content/zh/docs/concepts/services-networking/connect-applications-service.md +++ b/content/zh/docs/concepts/services-networking/connect-applications-service.md @@ -438,7 +438,7 @@ kind: "Secret" metadata: name: "nginxsecret" namespace: "default" - type: kubernetes.io/tls +type: kubernetes.io/tls data: tls.crt: "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURIekNDQWdlZ0F3SUJBZ0lKQUp5M3lQK0pzMlpJTUEwR0NTcUdTSWIzRFFFQkJRVUFNQ1l4RVRBUEJnTlYKQkFNVENHNW5hVzU0YzNaak1SRXdEd1lEVlFRS0V3aHVaMmx1ZUhOMll6QWVGdzB4TnpFd01qWXdOekEzTVRKYQpGdzB4T0RFd01qWXdOekEzTVRKYU1DWXhFVEFQQmdOVkJBTVRDRzVuYVc1NGMzWmpNUkV3RHdZRFZRUUtFd2h1CloybHVlSE4yWXpDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBSjFxSU1SOVdWM0IKMlZIQlRMRmtobDRONXljMEJxYUhIQktMSnJMcy8vdzZhU3hRS29GbHlJSU94NGUrMlN5ajBFcndCLzlYTnBwbQppeW1CL3JkRldkOXg5UWhBQUxCZkVaTmNiV3NsTVFVcnhBZW50VWt1dk1vLzgvMHRpbGhjc3paenJEYVJ4NEo5Ci82UVRtVVI3a0ZTWUpOWTVQZkR3cGc3dlVvaDZmZ1Voam92VG42eHNVR0M2QURVODBpNXFlZWhNeVI1N2lmU2YKNHZpaXdIY3hnL3lZR1JBRS9mRTRqakxCdmdONjc2SU90S01rZXV3R0ljNDFhd05tNnNTSzRqYUNGeGpYSnZaZQp2by9kTlEybHhHWCtKT2l3SEhXbXNhdGp4WTRaNVk3R1ZoK0QrWnYvcW1mMFgvbVY0Rmo1NzV3ajFMWVBocWtsCmdhSXZYRyt4U1FVQ0F3RUFBYU5RTUU0d0hRWURWUjBPQkJZRUZPNG9OWkI3YXc1OUlsYkROMzhIYkduYnhFVjcKTUI4R0ExVWRJd1FZTUJhQUZPNG9OWkI3YXc1OUlsYkROMzhIYkduYnhFVjdNQXdHQTFVZEV3UUZNQU1CQWY4dwpEUVlKS29aSWh2Y05BUUVGQlFBRGdnRUJBRVhTMW9FU0lFaXdyMDhWcVA0K2NwTHI3TW5FMTducDBvMm14alFvCjRGb0RvRjdRZnZqeE04Tzd2TjB0clcxb2pGSW0vWDE4ZnZaL3k4ZzVaWG40Vm8zc3hKVmRBcStNZC9jTStzUGEKNmJjTkNUekZqeFpUV0UrKzE5NS9zb2dmOUZ3VDVDK3U2Q3B5N0M3MTZvUXRUakViV05VdEt4cXI0Nk1OZWNCMApwRFhWZmdWQTRadkR4NFo3S2RiZDY5eXM3OVFHYmg5ZW1PZ05NZFlsSUswSGt0ejF5WU4vbVpmK3FqTkJqbWZjCkNnMnlwbGQ0Wi8rUUNQZjl3SkoybFIrY2FnT0R4elBWcGxNSEcybzgvTHFDdnh6elZPUDUxeXdLZEtxaUMwSVEKQ0I5T2wwWW5scE9UNEh1b2hSUzBPOStlMm9KdFZsNUIyczRpbDlhZ3RTVXFxUlU9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" tls.key: "LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRQ2RhaURFZlZsZHdkbFIKd1V5eFpJWmVEZWNuTkFhbWh4d1NpeWF5N1AvOE9ta3NVQ3FCWmNpQ0RzZUh2dGtzbzlCSzhBZi9WemFhWm9zcApnZjYzUlZuZmNmVUlRQUN3WHhHVFhHMXJKVEVGSzhRSHA3VkpMcnpLUC9QOUxZcFlYTE0yYzZ3MmtjZUNmZitrCkU1bEVlNUJVbUNUV09UM3c4S1lPNzFLSWVuNEZJWTZMMDUrc2JGQmd1Z0ExUE5JdWFubm9UTWtlZTRuMG4rTDQKb3NCM01ZUDhtQmtRQlAzeE9JNHl3YjREZXUraURyU2pKSHJzQmlIT05Xc0RadXJFaXVJMmdoY1kxeWIyWHI2UAozVFVOcGNSbC9pVG9zQngxcHJHclk4V09HZVdPeGxZZmcvbWIvNnBuOUYvNWxlQlkrZStjSTlTMkQ0YXBKWUdpCkwxeHZzVWtGQWdNQkFBRUNnZ0VBZFhCK0xkbk8ySElOTGo5bWRsb25IUGlHWWVzZ294RGQwci9hQ1Zkank4dlEKTjIwL3FQWkUxek1yall6Ry9kVGhTMmMwc0QxaTBXSjdwR1lGb0xtdXlWTjltY0FXUTM5SjM0VHZaU2FFSWZWNgo5TE1jUHhNTmFsNjRLMFRVbUFQZytGam9QSFlhUUxLOERLOUtnNXNrSE5pOWNzMlY5ckd6VWlVZWtBL0RBUlBTClI3L2ZjUFBacDRuRWVBZmI3WTk1R1llb1p5V21SU3VKdlNyblBESGtUdW1vVlVWdkxMRHRzaG9reUxiTWVtN3oKMmJzVmpwSW1GTHJqbGtmQXlpNHg0WjJrV3YyMFRrdWtsZU1jaVlMbjk4QWxiRi9DSmRLM3QraTRoMTVlR2ZQegpoTnh3bk9QdlVTaDR2Q0o3c2Q5TmtEUGJvS2JneVVHOXBYamZhRGR2UVFLQmdRRFFLM01nUkhkQ1pKNVFqZWFKClFGdXF4cHdnNzhZTjQyL1NwenlUYmtGcVFoQWtyczJxWGx1MDZBRzhrZzIzQkswaHkzaE9zSGgxcXRVK3NHZVAKOWRERHBsUWV0ODZsY2FlR3hoc0V0L1R6cEdtNGFKSm5oNzVVaTVGZk9QTDhPTm1FZ3MxMVRhUldhNzZxelRyMgphRlpjQ2pWV1g0YnRSTHVwSkgrMjZnY0FhUUtCZ1FEQmxVSUUzTnNVOFBBZEYvL25sQVB5VWs1T3lDdWc3dmVyClUycXlrdXFzYnBkSi9hODViT1JhM05IVmpVM25uRGpHVHBWaE9JeXg5TEFrc2RwZEFjVmxvcG9HODhXYk9lMTAKMUdqbnkySmdDK3JVWUZiRGtpUGx1K09IYnRnOXFYcGJMSHBzUVpsMGhucDBYSFNYVm9CMUliQndnMGEyOFVadApCbFBtWmc2d1BRS0JnRHVIUVV2SDZHYTNDVUsxNFdmOFhIcFFnMU16M2VvWTBPQm5iSDRvZUZKZmcraEppSXlnCm9RN3hqWldVR3BIc3AyblRtcHErQWlSNzdyRVhsdlhtOElVU2FsbkNiRGlKY01Pc29RdFBZNS9NczJMRm5LQTQKaENmL0pWb2FtZm1nZEN0ZGtFMXNINE9MR2lJVHdEbTRpb0dWZGIwMllnbzFyb2htNUpLMUI3MkpBb0dBUW01UQpHNDhXOTVhL0w1eSt5dCsyZ3YvUHM2VnBvMjZlTzRNQ3lJazJVem9ZWE9IYnNkODJkaC8xT2sybGdHZlI2K3VuCnc1YytZUXRSTHlhQmd3MUtpbGhFZDBKTWU3cGpUSVpnQWJ0LzVPbnlDak9OVXN2aDJjS2lrQ1Z2dTZsZlBjNkQKckliT2ZIaHhxV0RZK2Q1TGN1YSt2NzJ0RkxhenJsSlBsRzlOZHhrQ2dZRUF5elIzT3UyMDNRVVV6bUlCRkwzZAp4Wm5XZ0JLSEo3TnNxcGFWb2RjL0d5aGVycjFDZzE2MmJaSjJDV2RsZkI0VEdtUjZZdmxTZEFOOFRwUWhFbUtKCnFBLzVzdHdxNWd0WGVLOVJmMWxXK29xNThRNTBxMmk1NVdUTThoSDZhTjlaMTltZ0FGdE5VdGNqQUx2dFYxdEYKWSs4WFJkSHJaRnBIWll2NWkwVW1VbGc9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K" From 88fd85e27f2fddf1aeba27843405d1abfae9c47d Mon Sep 17 00:00:00 2001 From: Lapi Date: Mon, 1 Mar 2021 21:32:04 +0900 Subject: [PATCH 063/788] translate horizontal-pod-autoscale-walkthrough into ja --- .../horizontal-pod-autoscale-walkthrough.md | 410 ++++++++++++++++++ 1 file changed, 410 insertions(+) create mode 100644 content/ja/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md diff --git a/content/ja/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md b/content/ja/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md new file mode 100644 index 0000000000..e175ec99e7 --- /dev/null +++ b/content/ja/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md @@ -0,0 +1,410 @@ +--- +title: Horizontal Pod Autoscalerウォークスルー +content_type: task +weight: 100 +--- + + + +Horizontal Pod Autoscalerは、Deployment、ReplicaSetまたはStatefulSetといったレプリケーションコントローラ内のPodの数を、観測されたCPU使用率(もしくはベータサポートの、アプリケーションによって提供されるその他のメトリクス)に基づいて自動的にスケールさせます。 + +このドキュメントはphp-apacheサーバーに対しHorizontal Pod Autoscalerを有効化するという例に沿ってウォークスルーで説明していきます。Horizontal Pod Autoscalerの動作についてのより詳細な情報を知りたい場合は、[Horizontal Pod Autoscalerユーザーガイド](/docs/tasks/run-application/horizontal-pod-autoscale/)をご覧ください。 + +## {{% heading "前提条件" %}} + +この例ではバージョン1.2以上の動作するKubernetesクラスターおよびkubectlが必要です。 +[Metrics server](https://github.com/kubernetes-sigs/metrics-server)によるモニタリングが[Metrics API](https://github.com/kubernetes/metrics)を通じてクラスター内にデプロイされている必要があります。 +Horizontal Pod Autoscalerはメトリクスを収集するためにこのAPIを利用します。metrics-serverをデプロイする方法を知りたい場合は[metrics-server ドキュメント](https://github.com/kubernetes-sigs/metrics-server#deployment)をご覧ください。 + +Horizontal Pod Autoscalerで複数のリソースメトリクスを利用するためには、バージョン1.6以上のKubernetesクラスターおよびkubectlが必要です。カスタムメトリクスを使えるようにするためには、あなたのクラスターがカスタムメトリクスAPIを提供するAPIサーバーと通信できる必要があります。 +最後に、Kubernetesオブジェクトと関係のないメトリクスを使うにはバージョン1.10以上のKubernetesクラスターおよびkubectlが必要で、さらにあなたのクラスターが外部メトリクスAPIを提供するAPIサーバーと通信できる必要があります。 +詳細については[Horizontal Pod Autoscaler user guide](/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-custom-metrics)をご覧ください。 + + + +## php-apacheの起動と公開 + +Horizontal Pod Autoscalerのデモンストレーションのために、php-apacheイメージをもとにしたカスタムのDockerイメージを使います。 +このDockerfileは下記のようになっています。 + +```dockerfile +FROM php:5-apache +COPY index.php /var/www/html/index.php +RUN chmod a+rx index.php +``` + +これはCPU負荷の高い演算を行うindex.phpを定義しています。 + +```php + +``` + +まず最初に、イメージを動かすDeploymentを起動し、Serviceとして公開しましょう。 +下記の設定を使います。 + +{{< codenew file="application/php-apache.yaml" >}} + +以下のコマンドを実行してください。 + +```shell +kubectl apply -f https://k8s.io/examples/application/php-apache.yaml +``` + +``` +deployment.apps/php-apache created +service/php-apache created +``` + +## Horizontal Pod Autoscalerを作成する + +サーバーが起動したら、[kubectl autoscale](/docs/reference/generated/kubectl/kubectl-commands#autoscale)を使ってautoscalerを作成しましょう。以下のコマンドで、最初のステップで作成したphp-apache deploymentによって制御されるPodレプリカ数を1から10の間に維持するHorizontal Pod Autoscalerを作成します。 +簡単に言うと、HPAは(Deploymentを通じて)レプリカ数を増減させ、すべてのPodにおける平均CPU使用率を50%(それぞれのPodは`kubectl run`で200 milli-coresを要求しているため、平均CPU使用率100 milli-coresを意味します)に保とうとします。 +このアルゴリズムについての詳細は[こちら](/docs/tasks/run-application/horizontal-pod-autoscale/#algorithm-details)をご覧ください。 + +```shell +kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10 +``` + +``` +horizontalpodautoscaler.autoscaling/php-apache autoscaled +``` + +以下を実行して現在のAutoscalerの状況を確認できます。 + +```shell +kubectl get hpa +``` + +``` +NAME REFERENCE TARGET MINPODS MAXPODS REPLICAS AGE +php-apache Deployment/php-apache/scale 0% / 50% 1 10 1 18s +``` + +現在はサーバーにリクエストを送っていないため、CPU使用率が0%になっていることに注意してください(`TARGET`カラムは対応するDeploymentによって制御される全てのPodの平均値を示しています。)。 + +## 負荷の増加 + +Autoscalerがどのように負荷の増加に反応するか見てみましょう。 +コンテナを作成し、クエリの無限ループをphp-apacheサーバーに送ってみます(これは別のターミナルで実行してください)。 + +```shell +kubectl run -i --tty load-generator --rm --image=busybox --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done" +``` + +数分以内に、下記を実行することでCPU負荷が高まっていることを確認できます。 + +```shell +kubectl get hpa +``` + +``` +NAME REFERENCE TARGET MINPODS MAXPODS REPLICAS AGE +php-apache Deployment/php-apache/scale 305% / 50% 1 10 1 3m +``` + +ここでは、CPU使用率はrequestの305%にまで高まっています。 +結果として、Deploymentはレプリカ数7にリサイズされました。 + +```shell +kubectl get deployment php-apache +``` + +``` +NAME READY UP-TO-DATE AVAILABLE AGE +php-apache 7/7 7 7 19m +``` + +{{< note >}} +レプリカ数が安定するまでは数分かかることがあります。負荷量は何らかの方法で制御されているわけではないので、最終的なレプリカ数はこの例とは異なる場合があります。 +{{< /note >}} + +## 負荷の停止 + +ユーザー負荷を止めてこの例を終わらせましょう。 + +私たちが`busybox`イメージを使って作成したコンテナ内のターミナルで、` + C`を入力して負荷生成を終了させます。 + +そして結果の状態を確認します(数分後)。 + +```shell +kubectl get hpa +``` + +``` +NAME REFERENCE TARGET MINPODS MAXPODS REPLICAS AGE +php-apache Deployment/php-apache/scale 0% / 50% 1 10 1 11m +``` + +```shell +kubectl get deployment php-apache +``` + +``` +NAME READY UP-TO-DATE AVAILABLE AGE +php-apache 1/1 1 1 27m +``` + +ここでCPU使用率は0に下がり、HPAによってオートスケールされたレプリカ数は1に戻ります。 + +{{< note >}} +レプリカのオートスケールには数分かかることがあります。 +{{< /note >}} + + + +## 複数のメトリクスやカスタムメトリクスを基にオートスケーリングする + +`autoscaling/v2beta2` APIバージョンと使うと、`php-apache` Deploymentをオートスケーリングする際に使う追加のメトリクスを導入することが出来ます。 + +まず、`autoscaling/v2beta2`内のHorizontalPodAutoscalerのYAMLファイルを入手します。 + +```shell +kubectl get hpa.v2beta2.autoscaling -o yaml > /tmp/hpa-v2.yaml +``` + +`/tmp/hpa-v2.yaml`ファイルをエディタで開くと、以下のようなYAMLファイルが見えるはずです。 + +```yaml +apiVersion: autoscaling/v2beta2 +kind: HorizontalPodAutoscaler +metadata: + name: php-apache +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: php-apache + minReplicas: 1 + maxReplicas: 10 + metrics: + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: 50 +status: + observedGeneration: 1 + lastScaleTime: + currentReplicas: 1 + desiredReplicas: 1 + currentMetrics: + - type: Resource + resource: + name: cpu + current: + averageUtilization: 0 + averageValue: 0 +``` + +`targetCPUUtilizationPercentage`フィールドは`metrics`と呼ばれる配列に置換されています。 +CPU使用率メトリクスは、Podコンテナで定められたリソースの割合として表されるため、*リソースメトリクス*です。CPU以外のリソースメトリクスを指定することもできます。デフォルトでは、他にメモリだけがリソースメトリクスとしてサポートされています。これらのリソースはクラスター間で名前が変わることはなく、そして`metrics.k8s.io` APIが利用可能である限り常に利用可能です。 + +さらに`target.type`において`Utilization`の代わりに`AverageValue`を使い、`target.averageUtilization`フィールドの代わりに対応する`target.averageValue`フィールドを設定することで、リソースメトリクスをrequest値に対する割合に代わり、直接的な値に設定することも可能です。 + +PodメトリクスとObjectメトリクスという2つの異なる種類のメトリクスが存在し、どちらも*カスタムメトリクス*とみなされます。これらのメトリクスはクラスター特有の名前を持ち、利用するにはより発展的なクラスター監視設定が必要となります。 + +これらの代替メトリクスタイプのうち、最初のものが*Podメトリクス*です。これらのメトリクスはPodを説明し、Podを渡って平均され、レプリカ数を決定するためにターゲット値と比較されます。 +これらはほとんどリソースメトリクス同様に機能しますが、`target`の種類としては`AverageValue`*のみ*をサポートしている点が異なります。 + +Podメトリクスはmetricブロックを使って以下のように指定されます。 + +```yaml +type: Pods +pods: + metric: + name: packets-per-second + target: + type: AverageValue + averageValue: 1k +``` + +2つ目のメトリクスタイプは*Objectメトリクス*です。これらのメトリクスはPodを説明するかわりに、同一Namespace内の異なったオブジェクトを説明します。このメトリクスはオブジェクトから取得される必要はありません。単に説明するだけです。Objectメトリクスは`target`の種類として`Value`と`AverageValue`をサポートします。`Value`では、ターゲットはAPIから返ってきたメトリクスと直接比較されます。`AverageValue`では、カスタムメトリクスAPIから返ってきた値はターゲットと比較される前にPodの数で除算されます。以下の例は`requests-per-second`メトリクスのYAML表現です。 + +```yaml +type: Object +object: + metric: + name: requests-per-second + describedObject: + apiVersion: networking.k8s.io/v1beta1 + kind: Ingress + name: main-route + target: + type: Value + value: 2k +``` + +もしこのようなmetricブロックを複数提供した場合、HorizontalPodAutoscalerはこれらのメトリクスを順番に処理します。 +HorizontalPodAutoscalerはそれぞれのメトリクスについて推奨レプリカ数を算出し、その中で最も多いレプリカ数を採用します。 + +例えば、もしあなたがネットワークトラフィックについてのメトリクスを収集する監視システムを持っているなら、`kubectl edit`を使って指定を次のように更新することができます。 + +```yaml +apiVersion: autoscaling/v2beta2 +kind: HorizontalPodAutoscaler +metadata: + name: php-apache +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: php-apache + minReplicas: 1 + maxReplicas: 10 + metrics: + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: 50 + - type: Pods + pods: + metric: + name: packets-per-second + target: + type: AverageValue + averageValue: 1k + - type: Object + object: + metric: + name: requests-per-second + describedObject: + apiVersion: networking.k8s.io/v1beta1 + kind: Ingress + name: main-route + target: + type: Value + value: 10k +status: + observedGeneration: 1 + lastScaleTime: + currentReplicas: 1 + desiredReplicas: 1 + currentMetrics: + - type: Resource + resource: + name: cpu + current: + averageUtilization: 0 + averageValue: 0 + - type: Object + object: + metric: + name: requests-per-second + describedObject: + apiVersion: networking.k8s.io/v1beta1 + kind: Ingress + name: main-route + current: + value: 10k +``` + +この時、HorizontalPodAutoscalerはそれぞれのPodがCPU requestの50%を使い、1秒当たり1000パケットを送信し、そしてmain-route +Ingressの裏にあるすべてのPodが合計で1秒当たり10000パケットを送信する状態を保持しようとします。 + +### より詳細なメトリクスをもとにオートスケーリングする + +多くのメトリクスパイプラインは、名前もしくは _labels_ と呼ばれる追加の記述子の組み合わせによって説明することができます。全てのリソースメトリクス以外のメトリクスタイプ(Pod、Object、そして下で説明されている外部メトリクス)において、メトリクスパイプラインに渡す追加のラベルセレクターを指定することができます。例えば、もしあなたが`http_requests`メトリクスを`verb`ラベルとともに収集しているなら、下記のmetricブロックを指定してGETリクエストにのみ基づいてスケールさせることができます。 + +```yaml +type: Object +object: + metric: + name: http_requests + selector: {matchLabels: {verb: GET}} +``` + +このセレクターは完全なKubernetesラベルセレクターと同じ文法を利用します。もし名前とセレクターが複数の系列に一致した場合、この監視パイプラインはどのようにして複数の系列を一つの値にまとめるかを決定します。このセレクターは付加的なもので、ターゲットオブジェクト(`Pods`タイプの場合は対象Pod、`Object`タイプの場合は説明されるオブジェクト)では**ない**オブジェクトを説明するメトリクスを選択することは出来ません。 + +### Kubernetesオブジェクトと関係ないメトリクスに基づいたオートスケーリング + +Kubernetes上で動いているアプリケーションを、Kubernetes Namespaceと直接的な関係がないサービスを説明するメトリクスのようなKubernetesクラスター内のオブジェクトと明確な関係が無いメトリクスを基にオートスケールする必要があるかもしれません。Kubernetes 1.10以降では、このようなユースケースを*外部メトリクス*によって解決できます。 + +外部メトリクスを使うにはあなたの監視システムについての知識が必要となります。この設定はカスタムメトリクスを使うときのものに似ています。外部メトリクスを使うとあなたの監視システムのあらゆる利用可能なメトリクスに基づいてクラスターをオートスケールできるようになります。上記のように`metric`ブロックで`name`と`selector`を設定し、`Object`のかわりに`External`メトリクスタイプを使います。 +もし複数の時系列が`metricSelector`により一致した場合は、それらの値の合計がHorizontalPodAutoscalerに使われます。 +外部メトリクスは`Value`と`AverageValue`の両方のターゲットタイプをサポートしています。これらの機能は`Object`タイプを利用するときとまったく同じです。 + +例えばもしあなたのアプリケーションがホストされたキューサービスからのタスクを処理している場合、あなたは下記のセクションをHorizontalPodAutoscalerマニフェストに追記し、未処理のタスク30個あたり1つのワーカーを必要とすることを指定します。 + +```yaml +- type: External + external: + metric: + name: queue_messages_ready + selector: "queue=worker_tasks" + target: + type: AverageValue + averageValue: 30 +``` + +可能なら、クラスター管理者がカスタムメトリクスAPIを保護することを簡単にするため、外部メトリクスのかわりにカスタムメトリクスを用いることが望ましいです。外部メトリクスAPIは潜在的に全てのメトリクスへのアクセスを許可するため、クラスター管理者はこれを公開する際には注意が必要です。 + +## 付録: Horizontal Pod Autoscaler status conditions + +`autoscaling/v2beta2`形式のHorizontalPodAutoscalerを使っている場合は、KubernetesによるHorizontalPodAutoscaler上の*status conditions*セットを見ることができます。status conditionsはHorizontalPodAutoscalerがスケール可能かどうか、そして現時点でそれが何らかの方法で制限されているかどうかを示しています。 + +このconditionsは`status.conditions`フィールドに現れます。HorizontalPodAutoscalerに影響しているconditionsを確認するために、`kubectl describe hpa`を利用できます。 + +```shell +kubectl describe hpa cm-test +``` + +``` +Name: cm-test +Namespace: prom +Labels: +Annotations: +CreationTimestamp: Fri, 16 Jun 2017 18:09:22 +0000 +Reference: ReplicationController/cm-test +Metrics: ( current / target ) + "http_requests" on pods: 66m / 500m +Min replicas: 1 +Max replicas: 4 +ReplicationController pods: 1 current / 1 desired +Conditions: + Type Status Reason Message + ---- ------ ------ ------- + AbleToScale True ReadyForNewScale the last scale time was sufficiently old as to warrant a new scale + ScalingActive True ValidMetricFound the HPA was able to successfully calculate a replica count from pods metric http_requests + ScalingLimited False DesiredWithinRange the desired replica count is within the acceptable range +Events: +``` + +このHorizontalPodAutoscalerにおいて、いくつかの正常な状態のconditionsを見ることができます。まず最初に、`AbleToScale`は、HPAがスケール状況を取得し、更新させることが出来るかどうかだけでなく、何らかのbackoffに関連した状況がスケーリングを妨げていないかを示しています。2番目に、`ScalingActive`は、HPAが有効化されているかどうか(例えば、レプリカ数のターゲットがゼロでないこと)や、望ましいスケールを算出できるかどうかを示します。もしこれが`False`の場合、大体はメトリクスの取得において問題があることを示しています。最後に、一番最後の状況である`ScalingLimited`は、HorizontalPodAutoscalerの最大値や最小値によって望ましいスケールがキャップされていることを示しています。この指標を見てHorizontalPodAutoscaler上の最大・最小レプリカ数制限を増やす、もしくは減らす検討ができます。 + +## 付録: 数量 + +All metrics in the HorizontalPodAutoscaler and metrics APIs are specified using +a special whole-number notation known in Kubernetes as a +{{< glossary_tooltip term_id="quantity" text="quantity">}}. For example, +the quantity `10500m` would be written as `10.5` in decimal notation. The metrics APIs +will return whole numbers without a suffix when possible, and will generally return +quantities in milli-units otherwise. This means you might see your metric value fluctuate +between `1` and `1500m`, or `1` and `1.5` when written in decimal notation. +全てのHorizontalPodAutoscalerおよびメトリクスAPIにおけるメトリクスは{{< glossary_tooltip term_id="quantity" text="quantity">}}として知られる特殊な整数表記によって指定されます。例えば、`10500m`という数量は10進数表記で`10.5`と書くことができます。メトリクスAPIは可能であれば接尾辞を用いない整数を返し、そうでない場合は基本的にミリ単位での数量を返します。これはメトリクス値が`1`と`1500m`の間で、もしくは10進法表記で書かれた場合は`1`と`1.5`の間で変動するということを意味します。 + +## 付録: その他の起きうるシナリオ + +### Autoscalerを宣言的に作成する + +`kubectl autoscale`コマンドを使って命令的にHorizontalPodAutoscalerを作るかわりに、下記のファイルを使って宣言的に作成することができます。 + +{{< codenew file="application/hpa/php-apache.yaml" >}} + +下記のコマンドを実行してAutoscalerを作成します。 + +```shell +kubectl create -f https://k8s.io/examples/application/hpa/php-apache.yaml +``` + +``` +horizontalpodautoscaler.autoscaling/php-apache created +``` \ No newline at end of file From d62fa456251c6f740d80f747592a612e1f2d2f66 Mon Sep 17 00:00:00 2001 From: Lapi Date: Mon, 1 Mar 2021 21:33:25 +0900 Subject: [PATCH 064/788] fix translation --- .../horizontal-pod-autoscale-walkthrough.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/content/ja/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md b/content/ja/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md index e175ec99e7..7cf4718f5c 100644 --- a/content/ja/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md +++ b/content/ja/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md @@ -382,13 +382,6 @@ Events: ## 付録: 数量 -All metrics in the HorizontalPodAutoscaler and metrics APIs are specified using -a special whole-number notation known in Kubernetes as a -{{< glossary_tooltip term_id="quantity" text="quantity">}}. For example, -the quantity `10500m` would be written as `10.5` in decimal notation. The metrics APIs -will return whole numbers without a suffix when possible, and will generally return -quantities in milli-units otherwise. This means you might see your metric value fluctuate -between `1` and `1500m`, or `1` and `1.5` when written in decimal notation. 全てのHorizontalPodAutoscalerおよびメトリクスAPIにおけるメトリクスは{{< glossary_tooltip term_id="quantity" text="quantity">}}として知られる特殊な整数表記によって指定されます。例えば、`10500m`という数量は10進数表記で`10.5`と書くことができます。メトリクスAPIは可能であれば接尾辞を用いない整数を返し、そうでない場合は基本的にミリ単位での数量を返します。これはメトリクス値が`1`と`1500m`の間で、もしくは10進法表記で書かれた場合は`1`と`1.5`の間で変動するということを意味します。 ## 付録: その他の起きうるシナリオ From ecd25dfefb01c707393a579087b39026ab522775 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Mon, 1 Mar 2021 08:09:13 -0500 Subject: [PATCH 065/788] Update content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md Co-authored-by: Tim Bannister --- content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md b/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md index bfc49a431b..a1969cd9cc 100644 --- a/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md +++ b/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md @@ -17,7 +17,7 @@ Troubleshooting always begins with information gathering. While much attention h ## Kubernetes Annotations -Kubernetes annotations are designed to solve exactly this problem. Oft-overlooked, Kubernetes annotations are designed to add metadata to Kubernetes objects. The Kubernetes documentation says annotations can “attach arbitrary non-identifying metadata to objects.” This means that annotations should be used for attaching metadata that is external to Kubernetes (i.e., metadata that Kubernetes won’t use to identify objects. As such, annotations can contain any type of data. This is a contrast to labels, which are designed for uses internal to Kubernetes. As such, label structure and values are [constrained](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set) so they can be efficiently used by Kubernetes. +Kubernetes annotations are designed to solve exactly this problem. Oft-overlooked, Kubernetes annotations are designed to add metadata to Kubernetes objects. The Kubernetes documentation says annotations can “attach arbitrary non-identifying metadata to objects.” This means that annotations should be used for attaching metadata that is external to Kubernetes (i.e., metadata that Kubernetes won’t use to identify objects. As such, annotations can contain any type of data. This is a contrast to labels, which are designed for uses internal to Kubernetes. As such, label structure and values are [constrained](/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set) so they can be efficiently used by Kubernetes. ## Kubernetes Annotations in Action From eeb8c0b45ec3972d942c32d791d8d68dbbe5c2fc Mon Sep 17 00:00:00 2001 From: Richard Li Date: Mon, 1 Mar 2021 08:09:20 -0500 Subject: [PATCH 066/788] Update content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md Co-authored-by: Tim Bannister --- content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md b/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md index a1969cd9cc..9a0c166421 100644 --- a/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md +++ b/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md @@ -87,7 +87,7 @@ Adopting a common convention for annotations ensures consistency and understanda ## Visualizing Annotations: Service Catalogs -As the number of microservices and annotations proliferate, using `kubectl describe` can get tedious. Moreover, kubectl describe requires every developer to have some direct access to the Kubernetes cluster. A [service catalog](https://www.getambassador.io/learn/kubernetes-glossary/service-catalog) presents an internal, developer-oriented view of all services. +As the number of microservices and annotations proliferate, running `kubectl describe` can get tedious. Moreover, using `kubectl describe` requires every developer to have some direct access to the Kubernetes cluster. An [service catalog](https://www.getambassador.io/learn/kubernetes-glossary/service-catalog), in the Ambassador meaning of that term, presents an internal, developer-oriented view of all services. Historically, service catalogs have not been a key piece of infrastructure, as applications consisted of a single monolith. Today, with distributed development and microservices the norm, service catalogs are increasingly being adopted as a best practice. Some popular options today include Backstage and Ambassador. [Backstage](https://backstage.io/) is a highly flexible project ideal for organizations that wish to customize every aspect of their service catalog, while [Ambassador](https://www.getambassador.io/products/service-catalog) provides a turnkey, cloud-hosted solution that can be set up quickly. From 69ee6318a5f6d293f2c9a2c3bfd2dfd371af228b Mon Sep 17 00:00:00 2001 From: Richard Li Date: Mon, 1 Mar 2021 08:10:02 -0500 Subject: [PATCH 067/788] Update content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md Co-authored-by: Tim Bannister --- content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md b/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md index 9a0c166421..ddf0bca364 100644 --- a/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md +++ b/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md @@ -92,7 +92,7 @@ As the number of microservices and annotations proliferate, running `kubectl des Historically, service catalogs have not been a key piece of infrastructure, as applications consisted of a single monolith. Today, with distributed development and microservices the norm, service catalogs are increasingly being adopted as a best practice. Some popular options today include Backstage and Ambassador. [Backstage](https://backstage.io/) is a highly flexible project ideal for organizations that wish to customize every aspect of their service catalog, while [Ambassador](https://www.getambassador.io/products/service-catalog) provides a turnkey, cloud-hosted solution that can be set up quickly. ## Annotate Your Services Now and Thank Yourself Later -Much like implementing observability within microservice systems, you often don’t realize that you need human service discovery until it’s too late. Typically, something is on fire in production and you wished you had implemented better metrics and also specified which Slack channel the owning team lived in within your organization. +Much like implementing observability within microservice systems, you often don’t realize that you need human service discovery until it’s too late. Don't wait until something is on fire in production to start wishing you had implemented better metrics and also documented how to get in touch with the part of your organization that looks after it. There's enormous benefits to building an effective “[version 0](https://www.getambassador.io/learn/kubernetes-glossary/version-0/)” of any service: a “[dancing skeleton](https://containerjournal.com/topics/container-management/dancing-skeleton-apis-and-microservices/)” application with a thin slice of complete functionality that can be deployed to production with a minimal yet effective continuous delivery pipeline. From dc86d666482105fc0edfe4b392c7ab0d5a54ad2a Mon Sep 17 00:00:00 2001 From: Richard Li Date: Mon, 1 Mar 2021 08:11:11 -0500 Subject: [PATCH 068/788] Update content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md Co-authored-by: Tim Bannister --- content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md b/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md index ddf0bca364..994601a9f3 100644 --- a/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md +++ b/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md @@ -85,7 +85,7 @@ Adopting a common convention for annotations ensures consistency and understanda | `a8r.io/dependencies` | Unstructured text describing the service dependencies for humans. | -## Visualizing Annotations: Service Catalogs +## Visualizing annotations: service catalogs As the number of microservices and annotations proliferate, running `kubectl describe` can get tedious. Moreover, using `kubectl describe` requires every developer to have some direct access to the Kubernetes cluster. An [service catalog](https://www.getambassador.io/learn/kubernetes-glossary/service-catalog), in the Ambassador meaning of that term, presents an internal, developer-oriented view of all services. From 3188c43241b6be5484b65dd351417ca36b66ef65 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Mon, 1 Mar 2021 08:11:17 -0500 Subject: [PATCH 069/788] Update content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md Co-authored-by: Tim Bannister --- content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md b/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md index 994601a9f3..1c05fe2410 100644 --- a/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md +++ b/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md @@ -91,7 +91,7 @@ As the number of microservices and annotations proliferate, running `kubectl des Historically, service catalogs have not been a key piece of infrastructure, as applications consisted of a single monolith. Today, with distributed development and microservices the norm, service catalogs are increasingly being adopted as a best practice. Some popular options today include Backstage and Ambassador. [Backstage](https://backstage.io/) is a highly flexible project ideal for organizations that wish to customize every aspect of their service catalog, while [Ambassador](https://www.getambassador.io/products/service-catalog) provides a turnkey, cloud-hosted solution that can be set up quickly. -## Annotate Your Services Now and Thank Yourself Later +## Annotate your services now and thank yourself later Much like implementing observability within microservice systems, you often don’t realize that you need human service discovery until it’s too late. Don't wait until something is on fire in production to start wishing you had implemented better metrics and also documented how to get in touch with the part of your organization that looks after it. There's enormous benefits to building an effective “[version 0](https://www.getambassador.io/learn/kubernetes-glossary/version-0/)” of any service: a “[dancing skeleton](https://containerjournal.com/topics/container-management/dancing-skeleton-apis-and-microservices/)” application with a thin slice of complete functionality that can be deployed to production with a minimal yet effective continuous delivery pipeline. From a381d88fe26590491b5e81652afa18b7651caf9f Mon Sep 17 00:00:00 2001 From: Richard Li Date: Mon, 1 Mar 2021 08:11:26 -0500 Subject: [PATCH 070/788] Update content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md Co-authored-by: Tim Bannister --- content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md b/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md index 1c05fe2410..87af6e8863 100644 --- a/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md +++ b/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md @@ -11,7 +11,7 @@ Have you ever been asked to troubleshoot a failing Kubernetes service and strugg One of the problems as Kubernetes applications grow is the proliferation of services. As the number of services grows, developers start to specialize working with specific services. When it comes to troubleshooting, however, developers need to be able to find the source, understand the service and dependencies, and chat with the owning team for any service. -## Human Service Discovery +## Human service discovery Troubleshooting always begins with information gathering. While much attention has been paid to centralizing machine data (e.g., logs, metrics), much less attention has been given to the human aspect of service discovery. Who owns a particular service? What Slack channel does the team work on? Where is the source for the service? What issues are currently known and being tracked? From 5b3eedc8c2ccbcb149e535aff6a2ce6d1fb47d37 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Mon, 1 Mar 2021 08:49:44 -0500 Subject: [PATCH 071/788] clarify difference with k8s service catalog Signed-off-by: Richard Li --- .../blog/_posts/2021-02-27-annotating-k8s-for-humans.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md b/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md index 87af6e8863..d2c4223713 100644 --- a/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md +++ b/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md @@ -5,7 +5,7 @@ date: 2021-02-27 slug: annotating-k8s-for-humans --- -**Authors:** Richard Li (Ambassador Labs) +**Author:** Richard Li, Ambassador Labs Have you ever been asked to troubleshoot a failing Kubernetes service and struggled to find basic information about the service such as the source repository and owner? @@ -15,7 +15,7 @@ One of the problems as Kubernetes applications grow is the proliferation of serv Troubleshooting always begins with information gathering. While much attention has been paid to centralizing machine data (e.g., logs, metrics), much less attention has been given to the human aspect of service discovery. Who owns a particular service? What Slack channel does the team work on? Where is the source for the service? What issues are currently known and being tracked? -## Kubernetes Annotations +## Kubernetes annotations Kubernetes annotations are designed to solve exactly this problem. Oft-overlooked, Kubernetes annotations are designed to add metadata to Kubernetes objects. The Kubernetes documentation says annotations can “attach arbitrary non-identifying metadata to objects.” This means that annotations should be used for attaching metadata that is external to Kubernetes (i.e., metadata that Kubernetes won’t use to identify objects. As such, annotations can contain any type of data. This is a contrast to labels, which are designed for uses internal to Kubernetes. As such, label structure and values are [constrained](/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set) so they can be efficiently used by Kubernetes. @@ -87,9 +87,9 @@ Adopting a common convention for annotations ensures consistency and understanda ## Visualizing annotations: service catalogs -As the number of microservices and annotations proliferate, running `kubectl describe` can get tedious. Moreover, using `kubectl describe` requires every developer to have some direct access to the Kubernetes cluster. An [service catalog](https://www.getambassador.io/learn/kubernetes-glossary/service-catalog), in the Ambassador meaning of that term, presents an internal, developer-oriented view of all services. +As the number of microservices and annotations proliferate, running `kubectl describe` can get tedious. Moreover, using `kubectl describe` requires every developer to have some direct access to the Kubernetes cluster. Over the past few years, [service catalogs](https://www.getambassador.io/learn/kubernetes-glossary/service-catalog) have gained greater visibility in the Kubernetes ecosystem. Popularized by tools such as [Shopify's ServicesDB](https://shopify.engineering/scaling-mobile-development-by-treating-apps-as-services) and [Spotify's System Z](https://dzone.com/articles/modeling-microservices-at-spotify-with-petter-mari), service catalogs are internally-facing developer portals that present critical information about microservices. Note that these service catalogs should not be confused with the [Kubernetes Service Catalog project](https://svc-cat.io/). Built on the Open Service Broker API, the Kubernetes Service Catalog enables Kubernetes operators to plug in different services (e.g., databases) to their cluster. -Historically, service catalogs have not been a key piece of infrastructure, as applications consisted of a single monolith. Today, with distributed development and microservices the norm, service catalogs are increasingly being adopted as a best practice. Some popular options today include Backstage and Ambassador. [Backstage](https://backstage.io/) is a highly flexible project ideal for organizations that wish to customize every aspect of their service catalog, while [Ambassador](https://www.getambassador.io/products/service-catalog) provides a turnkey, cloud-hosted solution that can be set up quickly. +Historically, service catalogs have not been a key piece of infrastructure, as applications consisted of a single monolith. Today, with distributed development and microservices the norm, service catalogs are increasingly being adopted as a best practice. Some popular options today include [Backstage]((https://backstage.io/) and [Ambassador Service Catalog](https://www.getambassador.io/products/service-catalog). Backstage is a highly flexible project ideal for organizations that wish to customize every aspect of their service catalog, while Ambassador Service Catalog provides a turnkey, cloud-hosted solution that can be set up quickly. ## Annotate your services now and thank yourself later Much like implementing observability within microservice systems, you often don’t realize that you need human service discovery until it’s too late. Don't wait until something is on fire in production to start wishing you had implemented better metrics and also documented how to get in touch with the part of your organization that looks after it. From d2239f3d7af89b852c82de04b9dc3378c5a79c51 Mon Sep 17 00:00:00 2001 From: Adrian Ludwin Date: Sun, 21 Feb 2021 21:58:15 -0500 Subject: [PATCH 072/788] Better document default imagePullPolicy behaviour The `imagePullPolicy` field is set automatically based on the image tag if it's initially omitted, but it is not updated if the image tag later changes. This can lead to [confusing behaviour](https://itnext.io/defaults-are-hard-kubernetes-deployment-edition-3b11095792f2). This change attempts to warn users of this potential pitfall. --- .../docs/concepts/configuration/overview.md | 6 ++--- content/en/docs/concepts/containers/images.md | 26 +++++++++++++++---- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/content/en/docs/concepts/configuration/overview.md b/content/en/docs/concepts/configuration/overview.md index fce8a0c7a8..25cfb2e7f1 100644 --- a/content/en/docs/concepts/configuration/overview.md +++ b/content/en/docs/concepts/configuration/overview.md @@ -81,9 +81,9 @@ The [imagePullPolicy](/docs/concepts/containers/images/#updating-images) and the - `imagePullPolicy: Always`: every time the kubelet launches a container, the kubelet queries the container image registry to resolve the name to an image digest. If the kubelet has a container image with that exact digest cached locally, the kubelet uses its cached image; otherwise, the kubelet downloads (pulls) the image with the resolved digest, and uses that image to launch the container. -- `imagePullPolicy` is omitted and either the image tag is `:latest` or it is omitted: `Always` is applied. +- `imagePullPolicy` is omitted and either the image tag is `:latest` or it is omitted: `imagePullPolicy` is automatically set to `Always`. Note that this will _not_ be updated to `IfNotPresent` if the tag changes value. -- `imagePullPolicy` is omitted and the image tag is present but not `:latest`: `IfNotPresent` is applied. +- `imagePullPolicy` is omitted and the image tag is present but not `:latest`: `imagePullPolicy` is automatically set to `IfNotPresent`. Note that this will _not_ be updated to `Always` if the tag is later removed or changed to `:latest`. - `imagePullPolicy: Never`: the image is assumed to exist locally. No attempt is made to pull the image. @@ -96,7 +96,7 @@ You should avoid using the `:latest` tag when deploying containers in production {{< /note >}} {{< note >}} -The caching semantics of the underlying image provider make even `imagePullPolicy: Always` efficient. With Docker, for example, if the image already exists, the pull attempt is fast because all image layers are cached and no image download is needed. +The caching semantics of the underlying image provider make even `imagePullPolicy: Always` efficient, as long as the registry is reliably accessible. With Docker, for example, if the image already exists, the pull attempt is fast because all image layers are cached and no image download is needed. {{< /note >}} ## Using kubectl diff --git a/content/en/docs/concepts/containers/images.md b/content/en/docs/concepts/containers/images.md index 99698668c4..1166d4106a 100644 --- a/content/en/docs/concepts/containers/images.md +++ b/content/en/docs/concepts/containers/images.md @@ -49,16 +49,32 @@ Instead, specify a meaningful tag such as `v1.42.0`. ## Updating images -The default pull policy is `IfNotPresent` which causes the -{{< glossary_tooltip text="kubelet" term_id="kubelet" >}} to skip -pulling an image if it already exists. If you would like to always force a pull, -you can do one of the following: +When you first create a {{< glossary_tooltip text="Deployment" term_id="deployment" >}}, +{{< glossary_tooltip text="StatefulSet" term_id="statefulset" >}}, Pod, or other +object that includes a Pod template, then by default the pull policy of all +containers in that pod will be set to `IfNotPresent` if it is not explicitly +specified. This policy causes the +{{< glossary_tooltip text="kubelet" term_id="kubelet" >}} to skip pulling an +image if it already exists. + +If you would like to always force a pull, you can do one of the following: - set the `imagePullPolicy` of the container to `Always`. -- omit the `imagePullPolicy` and use `:latest` as the tag for the image to use. +- omit the `imagePullPolicy` and use `:latest` as the tag for the image to use; + Kubernetes will set the policy to `Always`. - omit the `imagePullPolicy` and the tag for the image to use. - enable the [AlwaysPullImages](/docs/reference/access-authn-authz/admission-controllers/#alwayspullimages) admission controller. +{{< note >}} +The value of `imagePullPolicy` of the container is always set when the object is +first _created_, and is not updated if the image's tag later changes. + +For example, if you create a Deployment with an image whose tag is _not_ +`:latest`, and later update that Deployment's image to a `:latest` tag, the +`imagePullPolicy` field will _not_ change to `Always`. You must manually change +the pull policy of any object after its initial creation. +{{< /note >}} + When `imagePullPolicy` is defined without a specific value, it is also set to `Always`. ## Multi-architecture images with image indexes From 77f868eb1390f0f58d193037134a41ccf99b9515 Mon Sep 17 00:00:00 2001 From: Ricardo Pchevuzinske Katz Date: Mon, 1 Mar 2021 17:43:31 -0300 Subject: [PATCH 073/788] Add featuregate documentation and correct some doc suggestion --- .../en/docs/concepts/services-networking/network-policies.md | 2 +- .../reference/command-line-tools-reference/feature-gates.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/content/en/docs/concepts/services-networking/network-policies.md b/content/en/docs/concepts/services-networking/network-policies.md index d5c14f9465..349fe84fbb 100644 --- a/content/en/docs/concepts/services-networking/network-policies.md +++ b/content/en/docs/concepts/services-networking/network-policies.md @@ -257,7 +257,7 @@ The following restrictions apply when using this field: * As an alpha feature, this is disabled by default. To enable endPort field at a cluster level, you (or your cluster administrator) will need to enable the `NetworkPolicyEndPort` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/) for the API server with `--feature-gates=NetworkPolicyEndPort=true,…`. * The `endPort` field must be equal than or greater to `port` field. * `endPort` can only be defined if `port` is also defined. -* When using `endPort` field, the `port` field must be numeric. +* Both ports must be numeric. {{< note >}} Your cluster must be using a {{< glossary_tooltip text="CNI" term_id="cni" >}} plugin that diff --git a/content/en/docs/reference/command-line-tools-reference/feature-gates.md b/content/en/docs/reference/command-line-tools-reference/feature-gates.md index 033b38a112..df65121aff 100644 --- a/content/en/docs/reference/command-line-tools-reference/feature-gates.md +++ b/content/en/docs/reference/command-line-tools-reference/feature-gates.md @@ -135,6 +135,7 @@ different Kubernetes components. | `LocalStorageCapacityIsolation` | `true` | Beta | 1.10 | | | `LocalStorageCapacityIsolationFSQuotaMonitoring` | `false` | Alpha | 1.15 | | | `MixedProtocolLBService` | `false` | Alpha | 1.20 | | +| `NetworkPolicyEndPort` | `false` | Alpha | 1.21 | | | `NodeDisruptionExclusion` | `false` | Alpha | 1.16 | 1.18 | | `NodeDisruptionExclusion` | `true` | Beta | 1.19 | | | `NonPreemptingPriority` | `false` | Alpha | 1.15 | 1.18 | @@ -657,6 +658,7 @@ Each feature gate is designed for enabling/disabling a specific feature: the volume mounter. - `MountPropagation`: Enable sharing volume mounted by one container to other containers or pods. For more details, please see [mount propagation](/docs/concepts/storage/volumes/#mount-propagation). +- `NetworkPolicyEndPort`: Enable use of the field `endPort` in NetworkPolicy objects, allowing the selection of a port range instead of a single port. - `NodeDisruptionExclusion`: Enable use of the Node label `node.kubernetes.io/exclude-disruption` which prevents nodes from being evacuated during zone failures. - `NodeLease`: Enable the new Lease API to report node heartbeats, which could be used as a node health signal. From 3491bbafc1c32f37261d077fc758cbefe5c450a0 Mon Sep 17 00:00:00 2001 From: HugoPfeffer Date: Mon, 1 Mar 2021 15:39:33 -0800 Subject: [PATCH 074/788] docs: Add 'Concepts/container/images.md' in pt language --- content/pt/docs/concepts/container/images.md | 291 +++++++++++++++++++ 1 file changed, 291 insertions(+) create mode 100644 content/pt/docs/concepts/container/images.md diff --git a/content/pt/docs/concepts/container/images.md b/content/pt/docs/concepts/container/images.md new file mode 100644 index 0000000000..06dbe75cf5 --- /dev/null +++ b/content/pt/docs/concepts/container/images.md @@ -0,0 +1,291 @@ +--- +reviewers: +- femrtnz +- jcjesus +- hugopfeffer +title: Imagens +content_type: concept +weight: 10 +--- + + + +Uma imagem de contêiner representa dados binários que encapsulam uma aplicação e todas as suas dependências de software. As imagens de contêiner são pacotes de software executáveis que podem ser executados de forma autônoma e que fazem suposições muito bem definidas sobre seu agente de execução do ambiente. + +Normalmente, você cria uma imagem de contêiner da sua aplicação e a envia para um registro antes de fazer referência a ela em um {{< glossary_tooltip text="Pod" term_id="pod" >}} + +Esta página fornece um resumo sobre o conceito de imagem de contêiner. + + + +## Nomes das imagens + +As imagens de contêiner geralmente recebem um nome como `pause`, `exemplo/meuconteiner`, ou `kube-apiserver`. +As imagens também podem incluir um hostname de algum registro; por exemplo: `exemplo.registro.ficticio/nomeimagem`, +e um possível número de porta; por exemplo: `exemplo.registro.ficticio:10443/nomeimagem`. + +Se você não especificar um hostname de registro, o Kubernetes presumirá que você se refere ao registro público do Docker. + +Após a parte do nome da imagem, você pode adicionar uma _tag_ (como também usar com comandos como +como `docker` e` podman`). +As tags permitem identificar diferentes versões da mesma série de imagens. + +Tags de imagem consistem em letras maiúsculas e minúsculas, dígitos, sublinhados (`_`), +pontos (`.`) e travessões (` -`). +Existem regras adicionais sobre onde você pode colocar o separador +caracteres (`_`,` -` e `.`) dentro de uma tag de imagem. +Se você não especificar uma tag, o Kubernetes presumirá que você se refere à tag `latest` (mais recente). + +{{< caution >}} +Você deve evitar usar a tag `latest` quando estiver realizando o deploy de contêineres em produção, +pois é mais difícil rastrear qual versão da imagem está sendo executada, além de tornar mais difícil o processo de reversão para uma versão funcional. + +Em vez disso, especifique uma tag significativa, como `v1.42.0`. +{{< /caution >}} + +## Atualizando imagens + +A política de pull padrão é `IfNotPresent` que faz com que o +{{}} ignore +o processo de *pull* da imagem, caso a mesma já exista. Se você prefere sempre forçar o processo de *pull*, +você pode fazer como exemplo: + +- defina a `imagePullPolicy` do contêiner para` Always`. +- omita `imagePullPolicy` e use`: latest` como a tag para a imagem a ser usada. +- omita o `imagePullPolicy` e a tag da imagem a ser usada. +- habilite o [AlwaysPullImages](/docs/reference/access-authn-authz/admission-controllers/#alwayspullimages) controlador de admissão. + +Quando `imagePullPolicy` é definido sem um valor específico, ele também é definido como` Always`. + +## Multiarquitetura de imagens com índice de imagens + +Além de fornecer o binário das imagens, um registro de contêiner também pode servir um [índice de imagem do contêiner](https://github.com/opencontainers/image-spec/blob/master/image-index.md). Um índice de imagem pode apontar para multiplos [manifestos da imagem](https://github.com/opencontainers/image-spec/blob/master/manifest.md) para versões específicas de arquitetura de um contêiner. A ideia é que você possa ter um nome para uma imagem (por exemplo: `pause`, `exemple/meuconteiner`, `kube-apiserver`) e permitir que diferentes sistemas busquem o binário da imagem correta para a arquitetura de máquina que estão usando. + +O próprio Kubernetes normalmente nomeia as imagens de contêiner com o sufixo `- $ (ARCH)`. Para retrocompatibilidade, gere as imagens mais antigas com sufixos. A ideia é gerar a imagem `pause` que tem o manifesto para todas as arquiteturas e `pause-amd64` que é retrocompatível com as configurações anteriores ou arquivos YAML que podem ter codificado as imagens com sufixos. + +## Usando um registro privado + +Os registros privados podem exigir chaves para acessar as imagens deles. +As credenciais podem ser fornecidas de várias maneiras: + - Configurando nós para autenticação em um registro privado + - todos os pods podem ler qualquer registro privado configurado + - requer configuração de nó pelo administrador do cluster + - Imagens pré-obtidas + - todos os pods podem usar qualquer imagem armazenada em cache em um nó + - requer acesso root a todos os nós para configurar + - Especificando ImagePullSecrets em um Pod + - apenas pods que fornecem chaves próprias podem acessar o registro privado + - Extensões locais ou específicas do fornecedor + - se estiver usando uma configuração de nó personalizado, você (ou seu provedor de nuvem) pode implementar seu mecanismo para autenticar o nó ao registro do contêiner. + +Essas opções são explicadas com mais detalhes abaixo. + +### Configurando nós para autenticação em um registro privado + +Se você executar o Docker em seus nós, poderá configurar o contêiner do Docker +runtime para autenticação em um registro de contêiner privado. + +Essa abordagem é adequada se você puder controlar a configuração do nó. + +{{< note >}} +O Kubernetes padrão é compatível apenas com as seções `auths` e` HttpHeaders` na configuração do Docker. +Auxiliares de credencial do Docker (`credHelpers` ou` credsStore`) não são suportados. +{{< /note >}} + +Docker armazena chaves de registros privados no arquivo `$HOME/.dockercfg` ou `$HOME/.docker/config.json`. Se você colocar o mesmo arquivo na lista de caminhos de pesquisa abaixo, o kubelet o usa como provedor de credenciais ao obter imagens. + +* `{--root-dir:-/var/lib/kubelet}/config.json` +* `{cwd of kubelet}/config.json` +* `${HOME}/.docker/config.json` +* `/.docker/config.json` +* `{--root-dir:-/var/lib/kubelet}/.dockercfg` +* `{cwd of kubelet}/.dockercfg` +* `${HOME}/.dockercfg` +* `/.dockercfg` + +{{< note >}} +Você talvez tenha que definir `HOME=/root` explicitamente no ambiente do processo kubelet. +{{< /note >}} + +Aqui estão as etapas recomendadas para configurar seus nós para usar um registro privado. Neste +exemplo, execute-os em seu desktop/laptop: + + 1. Execute `docker login [servidor]` para cada conjunto de credenciais que deseja usar. Isso atualiza o `$HOME/.docker/config.json` em seu PC. + 1. Visualize `$HOME/.docker/config.json` em um editor para garantir que contém apenas as credenciais que você deseja usar. + 1. Obtenha uma lista de seus nós; por exemplo: + - se você quiser os nomes: `nodes=$( kubectl get nodes -o jsonpath='{range.items[*].metadata}{.name} {end}' )` + - se você deseja obter os endereços IP: `nodes=$( kubectl get nodes -o jsonpath='{range .items[*].status.addresses[?(@.type=="ExternalIP")]}{.address} {end}' )` + 1. Copie seu `.docker/config.json` local para uma das listas de caminhos de busca acima. + - por exemplo, para testar isso: `for n in $nodes; do scp ~/.docker/config.json root@"$n":/var/lib/kubelet/config.json; done` + +{{< note >}} +Para clusters de produção, use uma ferramenta de gerenciamento de configuração para que você possa aplicar esta +configuração para todos os nós onde você precisa. +{{< /note >}} + +Verifique se está funcionando criando um pod que usa uma imagem privada; por exemplo: + +```shell +kubectl apply -f - <}} +Essa abordagem é adequada se você puder controlar a configuração do nó. Isto +não funcionará de forma confiável se o seu provedor de nuvem for responsável pelo gerenciamento de nós e os substituir +automaticamente. +{{< /note >}} + +Por padrão, o kubelet tenta realizar um "pull" para cada imagem do registro especificado. +No entanto, se a propriedade `imagePullPolicy` do contêiner for definida como` IfNotPresent` ou `Never`, +em seguida, uma imagem local é usada (preferencial ou exclusivamente, respectivamente). + +Se você quiser usar imagens pré-obtidas como um substituto para a autenticação do registro, +você deve garantir que todos os nós no cluster tenham as mesmas imagens pré-obtidas. + +Isso pode ser usado para pré-carregar certas imagens com o intuíto de aumentar a velocidade ou como uma alternativa para autenticação em um registro privado. + +Todos os pods terão permissão de leitura a quaisquer imagens pré-obtidas. + +### Especificando imagePullSecrets em um pod + +{{< note >}} +Esta é a abordagem recomendada para executar contêineres com base em imagens +de registros privados. +{{< /note >}} + +O Kubernetes oferece suporte à especificação de chaves de registro de imagem de contêiner em um pod. + +#### Criando um segredo com Docker config + +Execute o seguinte comando, substituindo as palavras em maiúsculas com os valores apropriados: + +```shell +kubectl create secret docker-registry --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL +``` + +Se você já tem um arquivo de credenciais do Docker, em vez de usar o +comando acima, você pode importar o arquivo de credenciais como um Kubernetes +{{< glossary_tooltip text="Secrets" term_id="secret" >}}. +[Criar um segredo com base nas credenciais Docker existentes](/docs/tasks/configure-pod-container/pull-image-private-registry/#registry-secret-existing-credentials) explica como configurar isso. + +Isso é particularmente útil se você estiver usando vários registros privados de contêineres, como `kubectl create secret docker-registry` cria um Segredo que +só funciona com um único registro privado. + +{{< note >}} +Os pods só podem fazer referência a *pull secrets* de imagem em seu próprio namespace, +portanto, esse processo precisa ser feito uma vez por namespace. +{{< /note >}} + +#### Referenciando um imagePullSecrets em um pod + +Agora, você pode criar pods que fazem referência a esse segredo adicionando uma seção `imagePullSecrets` +na definição de Pod. + +Por exemplo: + +```shell +cat < pod.yaml +apiVersion: v1 +kind: Pod +metadata: + name: foo + namespace: awesomeapps +spec: + containers: + - name: foo + image: janedoe/awesomeapp:v1 + imagePullSecrets: + - name: myregistrykey +EOF +cat <> ./kustomization.yaml +resources: +- pod.yaml +EOF +``` + +Isso precisa ser feito para cada pod que está usando um registro privado. + +No entanto, a configuração deste campo pode ser automatizada definindo o imagePullSecrets +em um recurso de [ServiceAccount](/docs/tasks/configure-pod-container/configure-service-account/). + +Verifique [Adicionar ImagePullSecrets a uma conta de serviço](/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account) para obter instruções detalhadas. + +Você pode usar isso em conjunto com um `.docker / config.json` por nó. As credenciais +será mesclado. + +## Casos de uso + +Existem várias soluções para configurar registros privados. Aqui estão alguns +casos de uso comuns e soluções sugeridas. + +1. Cluster executando apenas imagens não proprietárias (por exemplo, código aberto). Não há necessidade de ocultar imagens. + - Use imagens públicas no Docker hub. + - Nenhuma configuração necessária. + - Alguns provedores de nuvem armazenam em cache ou espelham automaticamente imagens públicas, o que melhora a disponibilidade e reduz o tempo para extrair imagens. +1. Cluster executando algumas imagens proprietárias que devem ser ocultadas para quem está fora da empresa, mas + visível para todos os usuários do cluster. + - Use um [registro Docker](https://docs.docker.com/registry/) privado hospedado. + - Pode ser hospedado no [Docker Hub](https://hub.docker.com/signup) ou em outro lugar. + - Configure manualmente .docker/config.json em cada nó conforme descrito acima. + - Ou execute um registro privado interno atrás de seu firewall com permissão de leitura. + - Nenhuma configuração do Kubernetes é necessária. + - Use um serviço de registro de imagem de contêiner que controla o acesso à imagem + - Funcionará melhor com o escalonamento automático do cluster do que com a configuração manual de nós. + - Ou, em um cluster onde alterar a configuração do nó é inconveniente, use `imagePullSecrets`. +1. Cluster com imagens proprietárias, algumas das quais requerem controle de acesso mais rígido. + - Certifique-se de [controlador de admissão AlwaysPullImages] (/ docs / reference / access-authn-authz / admission-controllers / # alwayspullimages) está ativo. Caso contrário, todos os pods têm potencialmente acesso a todas as imagens. + - Mova dados confidenciais para um recurso "secreto", em vez de empacotá-los em uma imagem. +1. Um cluster multilocatário em que cada locatário precisa de seu próprio registro privado. + - Certifique-se de [controlador de admissão AlwaysPullImages](/docs/reference/access-authn-authz/admission-controllers/#alwayspullimages) está ativo. Caso contrário, todos os Pods de todos os locatários terão potencialmente acesso a todas as imagens. + - Execute um registro privado com autorização necessária. + - Gere credenciais de registro para cada locatário, coloque em segredo e preencha o segredo para cada namespace de locatário. + - O locatário adiciona esse segredo a imagePullSecrets de cada namespace. + + +Se precisar de acesso a vários registros, você pode criar um segredo para cada registro. +O Kubelet mesclará qualquer `imagePullSecrets` em um único `.docker/config.json` virtual + +## {{% heading "whatsnext" %}} + +* Read the [OCI Image Manifest Specification](https://github.com/opencontainers/image-spec/blob/master/manifest.md) \ No newline at end of file From eb7cbb2845e9182462e83a71bad35fc59558ca32 Mon Sep 17 00:00:00 2001 From: iamhesir Date: Tue, 2 Mar 2021 10:25:46 +0800 Subject: [PATCH 075/788] Remove duplicate version-check --- .../zh/docs/tasks/administer-cluster/dns-custom-nameservers.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/content/zh/docs/tasks/administer-cluster/dns-custom-nameservers.md b/content/zh/docs/tasks/administer-cluster/dns-custom-nameservers.md index 330416050c..34e519e79d 100644 --- a/content/zh/docs/tasks/administer-cluster/dns-custom-nameservers.md +++ b/content/zh/docs/tasks/administer-cluster/dns-custom-nameservers.md @@ -33,8 +33,6 @@ explains how to use `kubeadm` to migrate from `kube-dns`. 文档[迁移到 CoreDNS](/zh/docs/tasks/administer-cluster/coredns/#migrating-to-coredns) 解释了如何使用 `kubeadm` 从 `kube-dns` 迁移到 CoreDNS。 -{{% version-check %}} - + +이 페이지에서는 `kubeadm` 툴박스를 설치하는 방법을 보여준다. +이 설치 프로세스를 수행한 후 kubeadm으로 클러스터를 만드는 방법에 대한 자세한 내용은 [kubeadm을 사용하여 클러스터 생성하기](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/) 페이지를 참고한다. + + + +## {{% heading "prerequisites" %}} + + +* 다음 중 하나를 실행하는 하나 이상의 머신이 필요하다. + - Ubuntu 16.04+ + - Debian 9+ + - CentOS 7+ + - Red Hat Enterprise Linux (RHEL) 7+ + - Fedora 25+ + - HypriotOS v1.0.1+ + - Flatcar Container Linux (2512.3.0으로 테스트됨) +* 2 GB 이상의 램을 장착한 머신. (이 보다 작으면 사용자의 앱을 위한 공간이 거의 남지 않음) +* 2 이상의 CPU. +* 클러스터의 모든 머신에 걸친 전체 네트워크 연결. (공용 또는 사설 네트워크면 괜찮음) +* 모든 노드에 대해 고유한 호스트 이름, MAC 주소 및 product_uuid. 자세한 내용은 [여기](#verify-mac-address)를 참고한다. +* 컴퓨터의 특정 포트들 개방. 자세한 내용은 [여기](#check-required-ports)를 참고한다. +* 스왑의 비활성화. kubelet이 제대로 작동하게 하려면 **반드시** 스왑을 사용하지 않도록 설정한다. + + + + + +## MAC 주소 및 product_uuid가 모든 노드에 대해 고유한지 확인 {#verify-mac-address} +* 사용자는 `ip link` 또는 `ifconfig -a` 명령을 사용하여 네트워크 인터페이스의 MAC 주소를 확인할 수 있다. +* product_uuid는 `sudo cat /sys/class/dmi/id/product_uuid` 명령을 사용하여 확인할 수 있다. + +일부 가상 머신은 동일한 값을 가질 수 있지만 하드웨어 장치는 고유한 주소를 가질 +가능성이 높다. 쿠버네티스는 이러한 값을 사용하여 클러스터의 노드를 고유하게 식별한다. +이러한 값이 각 노드에 고유하지 않으면 설치 프로세스가 +[실패](https://github.com/kubernetes/kubeadm/issues/31)할 수 있다. + +## 네트워크 어댑터 확인 + +네트워크 어댑터가 두 개 이상이고, 쿠버네티스 컴포넌트가 디폴트 라우트(default route)에서 도달할 수 없는 +경우, 쿠버네티스 클러스터 주소가 적절한 어댑터를 통해 이동하도록 IP 경로를 추가하는 것이 좋다. + +## iptables가 브리지된 트래픽을 보게 하기 + +`br_netfilter` 모듈이 로드되었는지 확인한다. `lsmod | grep br_netfilter` 를 실행하면 된다. 명시적으로 로드하려면 `sudo modprobe br_netfilter` 를 실행한다. + +리눅스 노드의 iptables가 브리지된 트래픽을 올바르게 보기 위한 요구 사항으로, `sysctl` 구성에서 `net.bridge.bridge-nf-call-iptables` 가 1로 설정되어 있는지 확인해야 한다. 다음은 예시이다. + +```bash +cat <}}을 사용한다. + +{{< tabs name="container_runtime" >}} +{{% tab name="리눅스 노드" %}} + +기본적으로, 쿠버네티스는 +{{< glossary_tooltip term_id="cri" text="컨테이너 런타임 인터페이스">}}(CRI)를 +사용하여 사용자가 선택한 컨테이너 런타임과 인터페이스한다. + +런타임을 지정하지 않으면, kubeadm은 잘 알려진 유닉스 도메인 소켓 목록을 검색하여 +설치된 컨테이너 런타임을 자동으로 감지하려고 한다. +다음 표에는 컨테이너 런타임 및 관련 소켓 경로가 나열되어 있다. + +{{< table caption = "컨테이너 런타임과 소켓 경로" >}} +| 런타임 | 유닉스 도메인 소켓 경로 | +|------------|-----------------------------------| +| 도커 | `/var/run/docker.sock` | +| containerd | `/run/containerd/containerd.sock` | +| CRI-O | `/var/run/crio/crio.sock` | +{{< /table >}} + +
    +도커와 containerd가 모두 감지되면 도커가 우선시된다. 이것이 필요한 이유는 도커 18.09에서 +도커만 설치한 경우에도 containerd와 함께 제공되므로 둘 다 감지될 수 있기 +때문이다. +다른 두 개 이상의 런타임이 감지되면, kubeadm은 오류와 함께 종료된다. + +kubelet은 빌트인 `dockershim` CRI 구현을 통해 도커와 통합된다. + +자세한 내용은 [컨테이너 런타임](/ko/docs/setup/production-environment/container-runtimes/)을 +참고한다. +{{% /tab %}} +{{% tab name="다른 운영 체제" %}} +기본적으로, kubeadm은 컨테이너 런타임으로 {{< glossary_tooltip term_id="docker" >}}를 사용한다. +kubelet은 빌트인 `dockershim` CRI 구현을 통해 도커와 통합된다. + +자세한 내용은 [컨테이너 런타임](/ko/docs/setup/production-environment/container-runtimes/)을 +참고한다. +{{% /tab %}} +{{< /tabs >}} + + +## kubeadm, kubelet 및 kubectl 설치 + +모든 머신에 다음 패키지들을 설치한다. + +* `kubeadm`: 클러스터를 부트스트랩하는 명령이다. + +* `kubelet`: 클러스터의 모든 머신에서 실행되는 파드와 컨테이너 시작과 + 같은 작업을 수행하는 컴포넌트이다. + +* `kubectl`: 클러스터와 통신하기 위한 커맨드 라인 유틸리티이다. + +kubeadm은 `kubelet` 또는 `kubectl` 을 설치하거나 관리하지 **않으므로**, kubeadm이 +설치하려는 쿠버네티스 컨트롤 플레인의 버전과 일치하는지 +확인해야 한다. 그렇지 않으면, 예상치 못한 버그 동작으로 이어질 수 있는 +버전 차이(skew)가 발생할 위험이 있다. 그러나, kubelet과 컨트롤 플레인 사이에 _하나의_ +마이너 버전 차이가 지원되지만, kubelet 버전은 API 서버 버전 보다 +높을 수 없다. 예를 들어, 1.7.0 버전의 kubelet은 1.8.0 API 서버와 완전히 호환되어야 하지만, +그 반대의 경우는 아니다. + +`kubectl` 설치에 대한 정보는 [kubectl 설치 및 설정](/ko/docs/tasks/tools/install-kubectl/)을 참고한다. + +{{< warning >}} +이 지침은 모든 시스템 업그레이드에서 모든 쿠버네티스 패키지를 제외한다. +이는 kubeadm 및 쿠버네티스를 +[업그레이드 하는 데 특별한 주의](/ko/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/)가 필요하기 때문이다. +{{}} + +버전 차이에 대한 자세한 내용은 다음을 참고한다. + +* 쿠버네티스 [버전 및 버전-차이 정책](/docs/setup/release/version-skew-policy/) +* Kubeadm 관련 [버전 차이 정책](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#version-skew-policy) + +{{< tabs name="k8s_install" >}} +{{% tab name="Ubuntu, Debian 또는 HypriotOS" %}} +```bash +sudo apt-get update && sudo apt-get install -y apt-transport-https curl +curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - +cat <}} +`DOWNLOAD_DIR` 변수는 쓰기 가능한 디렉터리로 설정되어야 한다. +Flatcar Container Linux를 실행 중인 경우, `DOWNLOAD_DIR=/opt/bin` 을 설정한다. +{{< /note >}} + +```bash +DOWNLOAD_DIR=/usr/local/bin +sudo mkdir -p $DOWNLOAD_DIR +``` + +crictl 설치(kubeadm / Kubelet 컨테이너 런타임 인터페이스(CRI)에 필요) + +```bash +CRICTL_VERSION="v1.17.0" +curl -L "https://github.com/kubernetes-sigs/cri-tools/releases/download/${CRICTL_VERSION}/crictl-${CRICTL_VERSION}-linux-amd64.tar.gz" | sudo tar -C $DOWNLOAD_DIR -xz +``` + +`kubeadm`, `kubelet`, `kubectl` 설치 및 `kubelet` systemd 서비스 추가 + +```bash +RELEASE="$(curl -sSL https://dl.k8s.io/release/stable.txt)" +cd $DOWNLOAD_DIR +sudo curl -L --remote-name-all https://storage.googleapis.com/kubernetes-release/release/${RELEASE}/bin/linux/amd64/{kubeadm,kubelet,kubectl} +sudo chmod +x {kubeadm,kubelet,kubectl} + +RELEASE_VERSION="v0.4.0" +curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service +sudo mkdir -p /etc/systemd/system/kubelet.service.d +curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service.d/10-kubeadm.conf +``` + +`kubelet` 활성화 및 시작 + +```bash +systemctl enable --now kubelet +``` + +{{< note >}} +Flatcar Container Linux 배포판은 `/usr` 디렉터리를 읽기 전용 파일시스템으로 마운트한다. +클러스터를 부트스트랩하기 전에, 쓰기 가능한 디렉터리를 구성하기 위한 추가 단계를 수행해야 한다. +쓰기 가능한 디렉터리를 설정하는 방법을 알아 보려면 [Kubeadm 문제 해결 가이드](/docs/setup/production-environment/tools/kubeadm/troubleshooting-kubeadm/#usr-mounted-read-only/)를 참고한다. +{{< /note >}} +{{% /tab %}} +{{< /tabs >}} + + +kubelet은 이제 kubeadm이 수행할 작업을 알려 줄 때까지 크래시루프(crashloop) 상태로 +기다려야 하므로 몇 초마다 다시 시작된다. + +## 컨트롤 플레인 노드에서 kubelet이 사용하는 cgroup 드라이버 구성 + +도커를 사용할 때, kubeadm은 kubelet 용 cgroup 드라이버를 자동으로 감지하여 +런타임 중에 `/var/lib/kubelet/config.yaml` 파일에 설정한다. + +다른 CRI를 사용하는 경우, 다음과 같이 `cgroupDriver` 값을 `kubeadm init` 에 전달해야 한다. + +```yaml +apiVersion: kubelet.config.k8s.io/v1beta1 +kind: KubeletConfiguration +cgroupDriver: +``` + +자세한 내용은 [구성 파일과 함께 kubeadm init 사용](/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file)을 참고한다. + +`cgroupfs` 가 이미 kubelet의 기본값이기 때문에, 사용자의 +CRI cgroup 드라이버가 `cgroupfs` 가 아닌 **경우에만** 위와 같이 설정해야 한다. + +{{< note >}} +`--cgroup-driver` 플래그가 kubelet에 의해 사용 중단되었으므로, `/var/lib/kubelet/kubeadm-flags.env` +또는 `/etc/default/kubelet`(RPM에 대해서는 `/etc/sysconfig/kubelet`)에 있는 경우, 그것을 제거하고 대신 KubeletConfiguration을 +사용한다(기본적으로 `/var/lib/kubelet/config.yaml` 에 저장됨). +{{< /note >}} + +CRI-O 및 containerd와 같은 다른 컨테이너 런타임에 대한 cgroup 드라이버의 +자동 감지에 대한 작업이 진행 중이다. + + +## 문제 해결 + +kubeadm에 문제가 있는 경우, [문제 해결 문서](/docs/setup/production-environment/tools/kubeadm/troubleshooting-kubeadm/)를 참고한다. + +## {{% heading "whatsnext" %}} + + +* [kubeadm을 사용하여 클러스터 생성](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/) From d8aa7224dda564c41ef3a758f76ff7d681af6626 Mon Sep 17 00:00:00 2001 From: Bridget Kromhout Date: Wed, 3 Mar 2021 21:14:07 -0600 Subject: [PATCH 086/788] Update content/en/docs/concepts/services-networking/dual-stack.md Clarifying how to disable the dual-stack feature when necessary. Co-authored-by: Qiming Teng --- content/en/docs/concepts/services-networking/dual-stack.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/content/en/docs/concepts/services-networking/dual-stack.md b/content/en/docs/concepts/services-networking/dual-stack.md index 5e7c3a757c..86abdf7c1d 100644 --- a/content/en/docs/concepts/services-networking/dual-stack.md +++ b/content/en/docs/concepts/services-networking/dual-stack.md @@ -63,7 +63,9 @@ An example of an IPv4 CIDR: `10.244.0.0/16` (though you would supply your own ad An example of an IPv6 CIDR: `fdXY:IJKL:MNOP:15::/64` (this shows the format but is not a valid address - see [RFC 4193](https://tools.ietf.org/html/rfc4193)) -Starting in 1.21, IPv4/IPv6 dual-stack defaults to true. Disable if necessary on kube-apiserver, kube-controller-manager, kubelet, and kube-proxy with `--feature-gates="IPv6DualStack=false"`. +Starting in 1.21, IPv4/IPv6 dual-stack defaults to true. +You can disable it when necessary by specifying `--feature-gates="IPv6DualStack=false"` +on the kube-apiserver, kube-controller-manager, kubelet, and kube-proxy command line. {{< /note >}} ## Services From 31777fa6b5d5a7def51707e29ae7874a5242bf59 Mon Sep 17 00:00:00 2001 From: Bridget Kromhout Date: Wed, 3 Mar 2021 21:28:15 -0600 Subject: [PATCH 087/788] Update to indicate dual-stack move to beta in 1.21 Signed-off-by: Bridget Kromhout --- content/en/docs/concepts/services-networking/dual-stack.md | 2 +- .../reference/command-line-tools-reference/feature-gates.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/concepts/services-networking/dual-stack.md b/content/en/docs/concepts/services-networking/dual-stack.md index 86abdf7c1d..9bdc756b35 100644 --- a/content/en/docs/concepts/services-networking/dual-stack.md +++ b/content/en/docs/concepts/services-networking/dual-stack.md @@ -16,7 +16,7 @@ weight: 70 -{{< feature-state for_k8s_version="v1.16" state="alpha" >}} +{{< feature-state for_k8s_version="v1.21" state="beta" >}} IPv4/IPv6 dual-stack enables the allocation of both IPv4 and IPv6 addresses to {{< glossary_tooltip text="Pods" term_id="pod" >}} and {{< glossary_tooltip text="Services" term_id="service" >}}. diff --git a/content/en/docs/reference/command-line-tools-reference/feature-gates.md b/content/en/docs/reference/command-line-tools-reference/feature-gates.md index 2e9db5fce0..835fb58d76 100644 --- a/content/en/docs/reference/command-line-tools-reference/feature-gates.md +++ b/content/en/docs/reference/command-line-tools-reference/feature-gates.md @@ -123,7 +123,7 @@ different Kubernetes components. | `HPAScaleToZero` | `false` | Alpha | 1.16 | | | `HugePageStorageMediumSize` | `false` | Alpha | 1.18 | 1.18 | | `HugePageStorageMediumSize` | `true` | Beta | 1.19 | | -| `IPv6DualStack` | `false` | Alpha | 1.15 | | +| `IPv6DualStack` | `true` | Beta | 1.21 | | | `KubeletCredentialProviders` | `false` | Alpha | 1.20 | | | `KubeletPodResources` | `true` | Alpha | 1.13 | 1.14 | | `KubeletPodResources` | `true` | Beta | 1.15 | | From 3ff51d4843607908c6c35ba2bf7268e990953e89 Mon Sep 17 00:00:00 2001 From: Neha Viswanathan Date: Sat, 27 Feb 2021 19:22:17 -0800 Subject: [PATCH 088/788] Update Helm charts repo to ArtifactHub --- .../run-application/run-replicated-stateful-application.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/tasks/run-application/run-replicated-stateful-application.md b/content/en/docs/tasks/run-application/run-replicated-stateful-application.md index 36e5334f3d..a9b34e691b 100644 --- a/content/en/docs/tasks/run-application/run-replicated-stateful-application.md +++ b/content/en/docs/tasks/run-application/run-replicated-stateful-application.md @@ -534,7 +534,7 @@ kubectl delete pvc data-mysql-4 * Learn more about [debugging a StatefulSet](/docs/tasks/debug-application-cluster/debug-stateful-set/). * Learn more about [deleting a StatefulSet](/docs/tasks/run-application/delete-stateful-set/). * Learn more about [force deleting StatefulSet Pods](/docs/tasks/run-application/force-delete-stateful-set-pod/). -* Look in the [Helm Charts repository](https://github.com/kubernetes/charts) +* Look in the [Helm Charts repository](https://artifacthub.io/) for other stateful application examples. From 9cc8d0d3298ea6bb9679e611389639843e63f76e Mon Sep 17 00:00:00 2001 From: seokho-son Date: Wed, 24 Feb 2021 13:35:40 +0900 Subject: [PATCH 089/788] Update outdated files in dev-1.20-ko.5 (1) --- content/ko/community/_index.html | 23 ++- .../docs/concepts/architecture/controller.md | 2 +- .../ko/docs/concepts/architecture/nodes.md | 2 +- .../concepts/cluster-administration/_index.md | 4 +- .../cluster-administration/logging.md | 137 +++++++++--------- .../manage-deployment.md | 27 ++-- .../docs/concepts/configuration/overview.md | 4 +- .../ko/docs/concepts/configuration/secret.md | 20 +-- .../containers/container-lifecycle-hooks.md | 30 ++-- .../api-extension/custom-resources.md | 5 +- .../compute-storage-net/network-plugins.md | 6 +- .../extend-kubernetes/service-catalog.md | 9 +- .../concepts/overview/what-is-kubernetes.md | 5 +- .../overview/working-with-objects/labels.md | 17 ++- .../working-with-objects/object-management.md | 6 +- .../docs/concepts/policy/resource-quotas.md | 29 +++- .../scheduling-eviction/assign-pod-node.md | 2 +- .../scheduler-perf-tuning.md | 2 + .../policy/priority-class-resourcequota.yaml | 10 ++ 19 files changed, 199 insertions(+), 141 deletions(-) create mode 100644 content/ko/examples/policy/priority-class-resourcequota.yaml diff --git a/content/ko/community/_index.html b/content/ko/community/_index.html index 39d17396ff..40bea7b523 100644 --- a/content/ko/community/_index.html +++ b/content/ko/community/_index.html @@ -19,6 +19,7 @@ cid: community
    +커뮤니티 가치      행동 강령       비디오      토론      @@ -41,10 +42,28 @@ cid: community 쿠버네티스 컨퍼런스 갤러리
    쿠버네티스 컨퍼런스 갤러리 - - +
    +
    +
    +
    +

    +

    +

    커뮤니티 가치

    +쿠버네티스 커뮤니티가 추구하는 가치는 프로젝트의 지속적인 성공의 핵심입니다.
    +이러한 원칙은 쿠버네티스 프로젝트의 모든 측면을 이끌어 갑니다. +
    + +

    + + 더 읽어 보기 + +
    +
    +
    +
    +
    diff --git a/content/ko/docs/concepts/architecture/controller.md b/content/ko/docs/concepts/architecture/controller.md index 784ad2ac58..29926d1435 100644 --- a/content/ko/docs/concepts/architecture/controller.md +++ b/content/ko/docs/concepts/architecture/controller.md @@ -102,7 +102,7 @@ weight: 30 온도 조절기 예에서 방이 매우 추우면 다른 컨트롤러가 서리 방지 히터를 켤 수도 있다. 쿠버네티스 클러스터에서는 [쿠버네티스 확장](/ko/docs/concepts/extend-kubernetes/)을 통해 -IP 주소 관리 도구, 스토리지 서비스, 클라우드 제공자 APIS 및 +IP 주소 관리 도구, 스토리지 서비스, 클라우드 제공자의 API들 및 기타 서비스 등과 간접적으로 연동하여 이를 구현한다. ## 의도한 상태와 현재 상태 {#desired-vs-current} diff --git a/content/ko/docs/concepts/architecture/nodes.md b/content/ko/docs/concepts/architecture/nodes.md index c951d60ca8..2bcdd9faaf 100644 --- a/content/ko/docs/concepts/architecture/nodes.md +++ b/content/ko/docs/concepts/architecture/nodes.md @@ -10,7 +10,7 @@ weight: 10 노드는 클러스터에 따라 가상 또는 물리적 머신일 수 있다. 각 노드는 {{< glossary_tooltip text="컨트롤 플레인" term_id="control-plane" >}}에 의해 관리되며 {{< glossary_tooltip text="파드" term_id="pod" >}}를 -실행하는데 필요한 서비스를 포함한다. +실행하는 데 필요한 서비스를 포함한다. 일반적으로 클러스터에는 여러 개의 노드가 있으며, 학습 또는 리소스가 제한되는 환경에서는 하나만 있을 수도 있다. diff --git a/content/ko/docs/concepts/cluster-administration/_index.md b/content/ko/docs/concepts/cluster-administration/_index.md index 1442a5da01..3ec34e9eac 100755 --- a/content/ko/docs/concepts/cluster-administration/_index.md +++ b/content/ko/docs/concepts/cluster-administration/_index.md @@ -22,12 +22,12 @@ no_list: true 가이드를 선택하기 전에 고려해야 할 사항은 다음과 같다. - - 컴퓨터에서 쿠버네티스를 그냥 한번 사용해보고 싶은가? 아니면, 고가용 멀티 노드 클러스터를 만들고 싶은가? 사용자의 필요에 따라 가장 적합한 배포판을 선택한다. + - 컴퓨터에서 쿠버네티스를 한번 사용해보고 싶은가? 아니면, 고가용 멀티 노드 클러스터를 만들고 싶은가? 사용자의 필요에 따라 가장 적합한 배포판을 선택한다. - [구글 쿠버네티스 엔진(Google Kubernetes Engine)](https://cloud.google.com/kubernetes-engine/)과 같은 클라우드 제공자의 **쿠버네티스 클러스터 호스팅** 을 사용할 것인가? 아니면, **자체 클러스터를 호스팅** 할 것인가? - 클러스터가 **온-프레미스 환경** 에 있나? 아니면, **클라우드(IaaS)** 에 있나? 쿠버네티스는 하이브리드 클러스터를 직접 지원하지는 않는다. 대신 여러 클러스터를 설정할 수 있다. - **온-프레미스 환경에 쿠버네티스** 를 구성하는 경우, 어떤 [네트워킹 모델](/ko/docs/concepts/cluster-administration/networking/)이 가장 적합한 지 고려한다. - 쿠버네티스를 **"베어 메탈" 하드웨어** 에서 실행할 것인가? 아니면, **가상 머신(VM)** 에서 실행할 것인가? - - **단지 클러스터만 실행할 것인가?** 아니면, **쿠버네티스 프로젝트 코드를 적극적으로 개발** 하는 것을 기대하는가? 만약 + - **클러스터만 실행할 것인가?** 아니면, **쿠버네티스 프로젝트 코드를 적극적으로 개발** 하는 것을 기대하는가? 만약 후자라면, 활발하게 개발이 진행되고 있는 배포판을 선택한다. 일부 배포판은 바이너리 릴리스만 사용하지만, 더 다양한 선택을 제공한다. - 클러스터를 실행하는 데 필요한 [컴포넌트](/ko/docs/concepts/overview/components/)에 익숙해지자. diff --git a/content/ko/docs/concepts/cluster-administration/logging.md b/content/ko/docs/concepts/cluster-administration/logging.md index 48044b0460..695c747a5d 100644 --- a/content/ko/docs/concepts/cluster-administration/logging.md +++ b/content/ko/docs/concepts/cluster-administration/logging.md @@ -1,4 +1,7 @@ --- + + + title: 로깅 아키텍처 content_type: concept weight: 60 @@ -6,23 +9,22 @@ weight: 60 -애플리케이션 로그는 애플리케이션 내부에서 발생하는 상황을 이해하는 데 도움이 된다. 로그는 문제를 디버깅하고 클러스터 활동을 모니터링하는 데 특히 유용하다. 대부분의 최신 애플리케이션에는 일종의 로깅 메커니즘이 있다. 따라서, 대부분의 컨테이너 엔진은 일종의 로깅을 지원하도록 설계되었다. 컨테이너화된 애플리케이션에 가장 쉽고 가장 널리 사용되는 로깅 방법은 표준 출력과 표준 에러 스트림에 작성하는 것이다. +애플리케이션 로그는 애플리케이션 내부에서 발생하는 상황을 이해하는 데 도움이 된다. 로그는 문제를 디버깅하고 클러스터 활동을 모니터링하는 데 특히 유용하다. 대부분의 최신 애플리케이션에는 일종의 로깅 메커니즘이 있다. 마찬가지로, 컨테이너 엔진들도 로깅을 지원하도록 설계되었다. 컨테이너화된 애플리케이션에 가장 쉽고 가장 널리 사용되는 로깅 방법은 표준 출력과 표준 에러 스트림에 작성하는 것이다. -그러나, 일반적으로 컨테이너 엔진이나 런타임에서 제공하는 기본 기능은 완전한 로깅 솔루션으로 충분하지 않다. 예를 들어, 컨테이너가 크래시되거나, 파드가 축출되거나, 노드가 종료된 경우에도 여전히 애플리케이션의 로그에 접근하려고 한다. 따라서, 로그는 노드, 파드 또는 컨테이너와는 독립적으로 별도의 스토리지와 라이프사이클을 가져야 한다. 이 개념을 _클러스터-레벨-로깅_ 이라고 한다. 클러스터-레벨 로깅은 로그를 저장하고, 분석하고, 쿼리하기 위해 별도의 백엔드가 필요하다. 쿠버네티스는 로그 데이터를 위한 네이티브 스토리지 솔루션을 제공하지 않지만, 기존의 많은 로깅 솔루션을 쿠버네티스 클러스터에 통합할 수 있다. +그러나, 일반적으로 컨테이너 엔진이나 런타임에서 제공하는 기본 기능은 완전한 로깅 솔루션으로 충분하지 않다. +예를 들어, 컨테이너가 크래시되거나, 파드가 축출되거나, 노드가 종료된 경우에도 애플리케이션의 로그에 접근하고 싶을 것이다. +클러스터에서 로그는 노드, 파드 또는 컨테이너와는 독립적으로 별도의 스토리지와 라이프사이클을 가져야 한다. 이 개념을 _클러스터-레벨-로깅_ 이라고 한다. -클러스터-레벨 로깅 아키텍처는 로깅 백엔드가 -클러스터 내부 또는 외부에 존재한다고 가정하여 설명한다. 클러스터-레벨 -로깅에 관심이 없는 경우에도, 노드에서 로그를 저장하고 -처리하는 방법에 대한 설명이 여전히 유용할 수 있다. +클러스터-레벨 로깅은 로그를 저장하고, 분석하고, 쿼리하기 위해 별도의 백엔드가 필요하다. 쿠버네티스는 +로그 데이터를 위한 네이티브 스토리지 솔루션을 제공하지 않지만, +쿠버네티스에 통합될 수 있는 기존의 로깅 솔루션이 많이 있다. ## 쿠버네티스의 기본 로깅 -이 섹션에서는, 쿠버네티스에서 표준 출력 스트림으로 데이터를 -출력하는 기본 로깅의 예시를 볼 수 있다. 이 데모에서는 -일부 텍스트를 초당 한 번씩 표준 출력에 쓰는 컨테이너와 함께 -파드 명세를 사용한다. +이 예시는 텍스트를 초당 한 번씩 표준 출력에 쓰는 +컨테이너에 대한 `Pod` 명세를 사용한다. {{< codenew file="debug/counter-pod.yaml" >}} @@ -31,8 +33,10 @@ weight: 60 ```shell kubectl apply -f https://k8s.io/examples/debug/counter-pod.yaml ``` + 출력은 다음과 같다. -``` + +```console pod/counter created ``` @@ -41,69 +45,69 @@ pod/counter created ```shell kubectl logs counter ``` + 출력은 다음과 같다. -``` + +```console 0: Mon Jan 1 00:00:00 UTC 2001 1: Mon Jan 1 00:00:01 UTC 2001 2: Mon Jan 1 00:00:02 UTC 2001 ... ``` -컨테이너가 크래시된 경우, `kubectl logs` 의 `--previous` 플래그를 사용해서 컨테이너의 이전 인스턴스에 대한 로그를 검색할 수 있다. 파드에 여러 컨테이너가 있는 경우, 명령에 컨테이너 이름을 추가하여 접근하려는 컨테이너 로그를 지정해야 한다. 자세한 내용은 [`kubectl logs` 문서](/docs/reference/generated/kubectl/kubectl-commands#logs)를 참조한다. +`kubectl logs --previous` 를 사용해서 컨테이너의 이전 인스턴스에 대한 로그를 검색할 수 있다. 파드에 여러 컨테이너가 있는 경우, 명령에 컨테이너 이름을 추가하여 접근하려는 컨테이너 로그를 지정해야 한다. 자세한 내용은 [`kubectl logs` 문서](/docs/reference/generated/kubectl/kubectl-commands#logs)를 참조한다. ## 노드 레벨에서의 로깅 ![노드 레벨 로깅](/images/docs/user-guide/logging/logging-node-level.png) -컨테이너화된 애플리케이션이 `stdout(표준 출력)` 및 `stderr(표준 에러)` 에 쓰는 모든 것은 컨테이너 엔진에 의해 어딘가에서 처리와 리디렉션 된다. 예를 들어, 도커 컨테이너 엔진은 이 두 스트림을 [로깅 드라이버](https://docs.docker.com/engine/admin/logging/overview)로 리디렉션 한다. 이 드라이버는 쿠버네티스에서 json 형식의 파일에 작성하도록 구성된다. +컨테이너화된 애플리케이션의 `stdout(표준 출력)` 및 `stderr(표준 에러)` 스트림에 의해 생성된 모든 출력은 컨테이너 엔진이 처리 및 리디렉션 한다. +예를 들어, 도커 컨테이너 엔진은 이 두 스트림을 [로깅 드라이버](https://docs.docker.com/engine/admin/logging/overview)로 리디렉션 한다. 이 드라이버는 쿠버네티스에서 JSON 형식의 파일에 작성하도록 구성된다. {{< note >}} -도커 json 로깅 드라이버는 각 라인을 별도의 메시지로 취급한다. 도커 로깅 드라이버를 사용하는 경우, 멀티-라인 메시지를 직접 지원하지 않는다. 로깅 에이전트 레벨 이상에서 멀티-라인 메시지를 처리해야 한다. +도커 JSON 로깅 드라이버는 각 라인을 별도의 메시지로 취급한다. 도커 로깅 드라이버를 사용하는 경우, 멀티-라인 메시지를 직접 지원하지 않는다. 로깅 에이전트 레벨 이상에서 멀티-라인 메시지를 처리해야 한다. {{< /note >}} 기본적으로, 컨테이너가 다시 시작되면, kubelet은 종료된 컨테이너 하나를 로그와 함께 유지한다. 파드가 노드에서 축출되면, 해당하는 모든 컨테이너도 로그와 함께 축출된다. 노드-레벨 로깅에서 중요한 고려 사항은 로그 로테이션을 구현하여, 로그가 노드에서 사용 가능한 모든 스토리지를 사용하지 않도록 하는 것이다. 쿠버네티스는 -현재 로그 로테이션에 대한 의무는 없지만, 디플로이먼트 도구로 +로그 로테이션에 대한 의무는 없지만, 디플로이먼트 도구로 이를 해결하기 위한 솔루션을 설정해야 한다. 예를 들어, `kube-up.sh` 스크립트에 의해 배포된 쿠버네티스 클러스터에는, 매시간 실행되도록 구성된 [`logrotate`](https://linux.die.net/man/8/logrotate) -도구가 있다. 예를 들어, 도커의 `log-opt` 를 사용하여 애플리케이션의 로그를 -자동으로 로테이션을 하도록 컨테이너 런타임을 설정할 수도 있다. -`kube-up.sh` 스크립트에서, 후자의 접근 방식은 GCP의 COS 이미지에 사용되며, -전자의 접근 방식은 다른 환경에서 사용된다. 두 경우 모두, -기본적으로 로그 파일이 10MB를 초과하면 로테이션이 되도록 구성된다. +도구가 있다. 애플리케이션의 로그를 자동으로 +로테이션하도록 컨테이너 런타임을 설정할 수도 있다. -예를 들어, `kube-up.sh` 가 해당 -[스크립트](https://github.com/kubernetes/kubernetes/blob/{{< param "githubbranch" >}}/cluster/gce/gci/configure-helper.sh)에서 -GCP의 COS 이미지 로깅을 설정하는 방법에 대한 자세한 정보를 찾을 수 있다. +예를 들어, `kube-up.sh` 가 GCP의 COS 이미지 로깅을 설정하는 방법은 +[`configure-helper` 스크립트](https://github.com/kubernetes/kubernetes/blob/{{< param "githubbranch" >}}/cluster/gce/gci/configure-helper.sh)를 통해 +자세히 알 수 있다. 기본 로깅 예제에서와 같이 [`kubectl logs`](/docs/reference/generated/kubectl/kubectl-commands#logs)를 실행하면, 노드의 kubelet이 요청을 처리하고 -로그 파일에서 직접 읽은 다음, 응답의 내용을 반환한다. +로그 파일에서 직접 읽는다. kubelet은 로그 파일의 내용을 반환한다. {{< note >}} -현재, 일부 외부 시스템에서 로테이션을 수행한 경우, +만약, 일부 외부 시스템이 로테이션을 수행한 경우, `kubectl logs` 를 통해 최신 로그 파일의 내용만 사용할 수 있다. 예를 들어, 10MB 파일이 있으면, `logrotate` 가 -로테이션을 수행하고 두 개의 파일이 생긴다(크기가 10MB인 파일 하나와 비어있는 파일). -그 후 `kubectl logs` 는 빈 응답을 반환한다. +로테이션을 수행하고 두 개의 파일이 생긴다. (크기가 10MB인 파일 하나와 비어있는 파일) +`kubectl logs` 는 이 예시에서는 빈 응답에 해당하는 최신 로그 파일을 반환한다. {{< /note >}} -[cosConfigureHelper]: https://github.com/kubernetes/kubernetes/blob/{{< param "githubbranch" >}}/cluster/gce/gci/configure-helper.sh ### 시스템 컴포넌트 로그 시스템 컴포넌트에는 컨테이너에서 실행되는 것과 컨테이너에서 실행되지 않는 두 가지 유형이 있다. 예를 들면 다음과 같다. * 쿠버네티스 스케줄러와 kube-proxy는 컨테이너에서 실행된다. -* Kubelet과 컨테이너 런타임(예: 도커)은 컨테이너에서 실행되지 않는다. +* Kubelet과 컨테이너 런타임은 컨테이너에서 실행되지 않는다. -systemd를 사용하는 시스템에서, kubelet과 컨테이너 런타임은 journald에 작성한다. -systemd를 사용하지 않으면, `/var/log` 디렉터리의 `.log` 파일에 작성한다. -컨테이너 내부의 시스템 컴포넌트는 기본 로깅 메커니즘을 무시하고, -항상 `/var/log` 디렉터리에 기록한다. 그것은 [klog](https://github.com/kubernetes/klog) +systemd를 사용하는 시스템에서는, kubelet과 컨테이너 런타임은 journald에 작성한다. +systemd를 사용하지 않으면, kubelet과 컨테이너 런타임은 `/var/log` 디렉터리의 +`.log` 파일에 작성한다. 컨테이너 내부의 시스템 컴포넌트는 기본 로깅 메커니즘을 무시하고, +항상 `/var/log` 디렉터리에 기록한다. +시스템 컴포넌트는 [klog](https://github.com/kubernetes/klog) 로깅 라이브러리를 사용한다. [로깅에 대한 개발 문서](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-instrumentation/logging.md)에서 해당 컴포넌트의 로깅 심각도(severity)에 대한 규칙을 찾을 수 있다. @@ -126,13 +130,14 @@ systemd를 사용하지 않으면, `/var/log` 디렉터리의 `.log` 파일에 각 노드에 _노드-레벨 로깅 에이전트_ 를 포함시켜 클러스터-레벨 로깅을 구현할 수 있다. 로깅 에이전트는 로그를 노출하거나 로그를 백엔드로 푸시하는 전용 도구이다. 일반적으로, 로깅 에이전트는 해당 노드의 모든 애플리케이션 컨테이너에서 로그 파일이 있는 디렉터리에 접근할 수 있는 컨테이너이다. -로깅 에이전트는 모든 노드에서 실행해야 하므로, 이를 데몬셋 레플리카, 매니페스트 파드 또는 노드의 전용 네이티브 프로세스로 구현하는 것이 일반적이다. 그러나 후자의 두 가지 접근법은 더 이상 사용되지 않으며 절대 권장하지 않는다. +로깅 에이전트는 모든 노드에서 실행해야 하므로, 에이전트는 +`DaemonSet` 으로 동작시키는 것을 추천한다. -쿠버네티스 클러스터는 노드-레벨 로깅 에이전트를 사용하는 것이 가장 일반적이며 권장되는 방법으로, 이는 노드별 하나의 에이전트만 생성하며, 노드에서 실행되는 애플리케이션을 변경할 필요가 없기 때문이다. 그러나, 노드-레벨 로깅은 _애플리케이션의 표준 출력과 표준 에러에 대해서만 작동한다_ . +노드-레벨 로깅은 노드별 하나의 에이전트만 생성하며, 노드에서 실행되는 애플리케이션에 대한 변경은 필요로 하지 않는다. -쿠버네티스는 로깅 에이전트를 지정하지 않지만, 쿠버네티스 릴리스에는 두 가지 선택적인 로깅 에이전트(Google 클라우드 플랫폼과 함께 사용하기 위한 [스택드라이버(Stackdriver) 로깅](/docs/tasks/debug-application-cluster/logging-stackdriver/)과 [엘라스틱서치(Elasticsearch)](/ko/docs/tasks/debug-application-cluster/logging-elasticsearch-kibana/))가 패키지로 함께 제공된다. 전용 문서에서 자세한 정보와 지침을 찾을 수 있다. 두 가지 다 사용자 정의 구성이 된 [fluentd](http://www.fluentd.org/)를 에이전트로써 노드에서 사용한다. +컨테이너는 stdout과 stderr를 동의되지 않은 포맷으로 작성한다. 노드-레벨 에이전트는 이러한 로그를 수집하고 취합을 위해 전달한다. -### 로깅 에이전트와 함께 사이드카 컨테이너 사용 +### 로깅 에이전트와 함께 사이드카 컨테이너 사용 {#sidecar-container-with-logging-agent} 다음 중 한 가지 방법으로 사이드카 컨테이너를 사용할 수 있다. @@ -143,28 +148,27 @@ systemd를 사용하지 않으면, `/var/log` 디렉터리의 `.log` 파일에 ![스트리밍 컨테이너가 있는 사이드카 컨테이너](/images/docs/user-guide/logging/logging-with-streaming-sidecar.png) -사이드카 컨테이너를 자체 `stdout` 및 `stderr` 스트림으로 -스트리밍하면, 각 노드에서 이미 실행 중인 kubelet과 로깅 에이전트를 -활용할 수 있다. 사이드카 컨테이너는 파일, 소켓 -또는 journald에서 로그를 읽는다. 각 개별 사이드카 컨테이너는 자체 `stdout` -또는 `stderr` 스트림에 로그를 출력한다. +사이드카 컨테이너가 자체 `stdout` 및 `stderr` 스트림으로 +쓰도록 하면, 각 노드에서 이미 실행 중인 kubelet과 로깅 에이전트를 +활용할 수 있다. 사이드카 컨테이너는 파일, 소켓 또는 journald에서 로그를 읽는다. +각 사이드카 컨테이너는 자체 `stdout` 또는 `stderr` 스트림에 로그를 출력한다. 이 방법을 사용하면 애플리케이션의 다른 부분에서 여러 로그 스트림을 분리할 수 ​​있고, 이 중 일부는 `stdout` 또는 `stderr` 에 작성하기 위한 지원이 부족할 수 있다. 로그를 리디렉션하는 로직은 -미미하기 때문에, 큰 오버헤드가 거의 없다. 또한, +최소화되어 있기 때문에, 심각한 오버헤드가 아니다. 또한, `stdout` 및 `stderr` 가 kubelet에서 처리되므로, `kubectl logs` 와 같은 빌트인 도구를 사용할 수 있다. -다음의 예를 고려해보자. 파드는 단일 컨테이너를 실행하고, 컨테이너는 -서로 다른 두 가지 형식을 사용하여, 서로 다른 두 개의 로그 파일에 기록한다. 파드에 대한 +예를 들어, 파드는 단일 컨테이너를 실행하고, 컨테이너는 +서로 다른 두 가지 형식을 사용하여 서로 다른 두 개의 로그 파일에 기록한다. 파드에 대한 구성 파일은 다음과 같다. {{< codenew file="admin/logging/two-files-counter-pod.yaml" >}} 두 컴포넌트를 컨테이너의 `stdout` 스트림으로 리디렉션한 경우에도, 동일한 로그 -스트림에 서로 다른 형식의 로그 항목을 갖는 것은 -알아보기 힘들다. 대신, 두 개의 사이드카 컨테이너를 도입할 수 있다. 각 사이드카 +스트림에 서로 다른 형식의 로그 항목을 작성하는 것은 +추천하지 않는다. 대신, 두 개의 사이드카 컨테이너를 생성할 수 있다. 각 사이드카 컨테이너는 공유 볼륨에서 특정 로그 파일을 테일(tail)한 다음 로그를 자체 `stdout` 스트림으로 리디렉션할 수 있다. @@ -178,7 +182,10 @@ systemd를 사용하지 않으면, `/var/log` 디렉터리의 `.log` 파일에 ```shell kubectl logs counter count-log-1 ``` -``` + +출력은 다음과 같다. + +```console 0: Mon Jan 1 00:00:00 UTC 2001 1: Mon Jan 1 00:00:01 UTC 2001 2: Mon Jan 1 00:00:02 UTC 2001 @@ -188,7 +195,10 @@ kubectl logs counter count-log-1 ```shell kubectl logs counter count-log-2 ``` -``` + +출력은 다음과 같다. + +```console Mon Jan 1 00:00:00 UTC 2001 INFO 0 Mon Jan 1 00:00:01 UTC 2001 INFO 1 Mon Jan 1 00:00:02 UTC 2001 INFO 2 @@ -204,11 +214,10 @@ Mon Jan 1 00:00:02 UTC 2001 INFO 2 `stdout` 으로 스트리밍하면 디스크 사용량은 두 배가 될 수 있다. 단일 파일에 쓰는 애플리케이션이 있는 경우, 일반적으로 스트리밍 사이드카 컨테이너 방식을 구현하는 대신 `/dev/stdout` 을 대상으로 -설정하는 것이 더 낫다. +설정하는 것을 추천한다. 사이드카 컨테이너를 사용하여 애플리케이션 자체에서 로테이션할 수 없는 -로그 파일을 로테이션할 수도 있다. 이 방법의 예로는 -정기적으로 logrotate를 실행하는 작은 컨테이너를 두는 것이다. +로그 파일을 로테이션할 수도 있다. 이 방법의 예시는 정기적으로 `logrotate` 를 실행하는 작은 컨테이너를 두는 것이다. 그러나, `stdout` 및 `stderr` 을 직접 사용하고 로테이션과 유지 정책을 kubelet에 두는 것이 권장된다. @@ -223,21 +232,17 @@ Mon Jan 1 00:00:02 UTC 2001 INFO 2 {{< note >}} 사이드카 컨테이너에서 로깅 에이전트를 사용하면 상당한 리소스 소비로 이어질 수 있다. 게다가, kubelet에 의해 -제어되지 않기 때문에, `kubectl logs` 명령을 사용하여 해당 로그에 +제어되지 않기 때문에, `kubectl logs` 를 사용하여 해당 로그에 접근할 수 없다. {{< /note >}} -예를 들어, 로깅 에이전트로 fluentd를 사용하는 [스택드라이버](/docs/tasks/debug-application-cluster/logging-stackdriver/)를 -사용할 수 있다. 여기에 이 방법을 구현하는 데 사용할 수 있는 -두 가지 구성 파일이 있다. 첫 번째 파일에는 -fluentd를 구성하기 위한 [컨피그맵](/docs/tasks/configure-pod-container/configure-pod-configmap/)이 포함되어 있다. +여기에 로깅 에이전트가 포함된 사이드카 컨테이너를 구현하는 데 사용할 수 있는 두 가지 구성 파일이 있다. 첫 번째 파일에는 +fluentd를 구성하기 위한 [`ConfigMap`](/docs/tasks/configure-pod-container/configure-pod-configmap/)이 포함되어 있다. {{< codenew file="admin/logging/fluentd-sidecar-config.yaml" >}} {{< note >}} -fluentd의 구성은 이 문서의 범위를 벗어난다. -fluentd를 구성하는 것에 대한 자세한 내용은, -[공식 fluentd 문서](https://docs.fluentd.org/)를 참고한다. +fluentd를 구성하는 것에 대한 자세한 내용은, [fluentd 문서](https://docs.fluentd.org/)를 참고한다. {{< /note >}} 두 번째 파일은 fluentd가 실행되는 사이드카 컨테이너가 있는 파드를 설명한다. @@ -245,16 +250,10 @@ fluentd를 구성하는 것에 대한 자세한 내용은, {{< codenew file="admin/logging/two-files-counter-pod-agent-sidecar.yaml" >}} -얼마 후 스택드라이버 인터페이스에서 로그 메시지를 찾을 수 있다. - -이것은 단지 예시일 뿐이며 실제로 애플리케이션 컨테이너 내의 -모든 소스에서 읽은 fluentd를 로깅 에이전트로 대체할 수 있다는 것을 -기억한다. +이 예시 구성에서, 사용자는 애플리케이션 컨테이너 내의 모든 소스을 읽는 fluentd를 다른 로깅 에이전트로 대체할 수 있다. ### 애플리케이션에서 직접 로그 노출 ![애플리케이션에서 직접 로그 노출](/images/docs/user-guide/logging/logging-from-application.png) -모든 애플리케이션에서 직접 로그를 노출하거나 푸시하여 클러스터-레벨 로깅을 -구현할 수 있다. 그러나, 이러한 로깅 메커니즘의 구현은 -쿠버네티스의 범위를 벗어난다. +모든 애플리케이션에서 직접 로그를 노출하거나 푸시하는 클러스터-로깅은 쿠버네티스의 범위를 벗어난다. diff --git a/content/ko/docs/concepts/cluster-administration/manage-deployment.md b/content/ko/docs/concepts/cluster-administration/manage-deployment.md index be5befdbd3..9893c76548 100644 --- a/content/ko/docs/concepts/cluster-administration/manage-deployment.md +++ b/content/ko/docs/concepts/cluster-administration/manage-deployment.md @@ -1,4 +1,6 @@ --- + + title: 리소스 관리 content_type: concept weight: 40 @@ -43,7 +45,7 @@ kubectl apply -f https://k8s.io/examples/application/nginx/ `kubectl` 은 접미사가 `.yaml`, `.yml` 또는 `.json` 인 파일을 읽는다. -동일한 마이크로서비스 또는 애플리케이션 티어(tier)와 관련된 리소스를 동일한 파일에 배치하고, 애플리케이션과 연관된 모든 파일을 동일한 디렉터리에 그룹화하는 것이 좋다. 애플리케이션의 티어가 DNS를 사용하여 서로 바인딩되면, 스택의 모든 컴포넌트를 일괄로 배포할 수 있다. +동일한 마이크로서비스 또는 애플리케이션 티어(tier)와 관련된 리소스를 동일한 파일에 배치하고, 애플리케이션과 연관된 모든 파일을 동일한 디렉터리에 그룹화하는 것이 좋다. 애플리케이션의 티어가 DNS를 사용하여 서로 바인딩되면, 스택의 모든 컴포넌트를 함께 배포할 수 있다. URL을 구성 소스로 지정할 수도 있다. 이는 github에 체크인된 구성 파일에서 직접 배포하는 데 편리하다. @@ -68,7 +70,7 @@ deployment.apps "my-nginx" deleted service "my-nginx-svc" deleted ``` -두 개의 리소스만 있는 경우, 리소스/이름 구문을 사용하여 커맨드 라인에서 둘다 모두 쉽게 지정할 수도 있다. +두 개의 리소스가 있는 경우, 리소스/이름 구문을 사용하여 커맨드 라인에서 둘다 모두 지정할 수도 있다. ```shell kubectl delete deployments/my-nginx services/my-nginx-svc @@ -85,10 +87,11 @@ deployment.apps "my-nginx" deleted service "my-nginx-svc" deleted ``` -`kubectl` 은 입력을 받아들이는 것과 동일한 구문으로 리소스 이름을 출력하므로, `$()` 또는 `xargs` 를 사용하여 작업을 쉽게 연결할 수 있다. +`kubectl` 은 입력을 받아들이는 것과 동일한 구문으로 리소스 이름을 출력하므로, `$()` 또는 `xargs` 를 사용하여 작업을 연결할 수 있다. ```shell kubectl get $(kubectl create -f docs/concepts/cluster-administration/nginx/ -o name | grep service) +kubectl create -f docs/concepts/cluster-administration/nginx/ -o name | grep service | xargs -i kubectl get {} ``` ```shell @@ -262,7 +265,7 @@ guestbook-redis-slave-qgazl 1/1 Running 0 3m ## 레이블 업데이트 새로운 리소스를 만들기 전에 기존 파드 및 기타 리소스의 레이블을 다시 지정해야 하는 경우가 있다. 이것은 `kubectl label` 로 수행할 수 있다. -예를 들어, 모든 nginx 파드에 프론트엔드 티어로 레이블을 지정하려면, 간단히 다음과 같이 실행한다. +예를 들어, 모든 nginx 파드에 프론트엔드 티어로 레이블을 지정하려면, 다음과 같이 실행한다. ```shell kubectl label pods -l app=nginx tier=fe @@ -299,6 +302,7 @@ my-nginx-2035384211-u3t6x 1/1 Running 0 23m fe kubectl annotate pods my-nginx-v4-9gw19 description='my frontend running nginx' kubectl get pods my-nginx-v4-9gw19 -o yaml ``` + ```shell apiVersion: v1 kind: pod @@ -312,11 +316,12 @@ metadata: ## 애플리케이션 스케일링 -애플리케이션의 로드가 증가하거나 축소되면, `kubectl` 을 사용하여 쉽게 스케일링할 수 있다. 예를 들어, nginx 레플리카 수를 3에서 1로 줄이려면, 다음을 수행한다. +애플리케이션의 로드가 증가하거나 축소되면, `kubectl` 을 사용하여 애플리케이션을 스케일링한다. 예를 들어, nginx 레플리카 수를 3에서 1로 줄이려면, 다음을 수행한다. ```shell kubectl scale deployment/my-nginx --replicas=1 ``` + ```shell deployment.apps/my-nginx scaled ``` @@ -326,6 +331,7 @@ deployment.apps/my-nginx scaled ```shell kubectl get pods -l app=nginx ``` + ```shell NAME READY STATUS RESTARTS AGE my-nginx-2035384211-j5fhi 1/1 Running 0 30m @@ -336,6 +342,7 @@ my-nginx-2035384211-j5fhi 1/1 Running 0 30m ```shell kubectl autoscale deployment/my-nginx --min=1 --max=3 ``` + ```shell horizontalpodautoscaler.autoscaling/my-nginx autoscaled ``` @@ -404,11 +411,12 @@ JSON 병합 패치 그리고 전략적 병합 패치를 지원한다. ## 파괴적(disruptive) 업데이트 -경우에 따라, 한 번 초기화하면 업데이트할 수 없는 리소스 필드를 업데이트해야 하거나, 디플로이먼트에서 생성된 손상된 파드를 고치는 등의 재귀적 변경을 즉시 원할 수도 있다. 이러한 필드를 변경하려면, `replace --force` 를 사용하여 리소스를 삭제하고 다시 만든다. 이 경우, 원래 구성 파일을 간단히 수정할 수 있다. +경우에 따라, 한 번 초기화하면 업데이트할 수 없는 리소스 필드를 업데이트해야 하거나, 디플로이먼트에서 생성된 손상된 파드를 고치는 등의 재귀적 변경을 즉시 원할 수도 있다. 이러한 필드를 변경하려면, `replace --force` 를 사용하여 리소스를 삭제하고 다시 만든다. 이 경우, 원래 구성 파일을 수정할 수 있다. ```shell kubectl replace -f https://k8s.io/examples/application/nginx/nginx-deployment.yaml --force ``` + ```shell deployment.apps/my-nginx deleted deployment.apps/my-nginx replaced @@ -425,19 +433,22 @@ nginx 1.14.2 버전을 실행한다고 가정해 보겠다. ```shell kubectl create deployment my-nginx --image=nginx:1.14.2 ``` + ```shell deployment.apps/my-nginx created ``` 3개의 레플리카를 포함한다(이전과 새 개정판이 공존할 수 있음). + ```shell kubectl scale deployment my-nginx --current-replicas=1 --replicas=3 ``` + ``` deployment.apps/my-nginx scaled ``` -1.16.1 버전으로 업데이트하려면, 위에서 배운 kubectl 명령을 사용하여 `.spec.template.spec.containers[0].image` 를 `nginx:1.14.2` 에서 `nginx:1.16.1` 로 간단히 변경한다. +1.16.1 버전으로 업데이트하려면, 위에서 배운 kubectl 명령을 사용하여 `.spec.template.spec.containers[0].image` 를 `nginx:1.14.2` 에서 `nginx:1.16.1` 로 변경한다. ```shell kubectl edit deployment/my-nginx @@ -452,5 +463,3 @@ kubectl edit deployment/my-nginx - [애플리케이션 검사 및 디버깅에 `kubectl` 을 사용하는 방법](/docs/tasks/debug-application-cluster/debug-application-introspection/)에 대해 알아본다. - [구성 모범 사례 및 팁](/ko/docs/concepts/configuration/overview/)을 참고한다. - - diff --git a/content/ko/docs/concepts/configuration/overview.md b/content/ko/docs/concepts/configuration/overview.md index 6bcec1d6c0..def34dd231 100644 --- a/content/ko/docs/concepts/configuration/overview.md +++ b/content/ko/docs/concepts/configuration/overview.md @@ -59,13 +59,13 @@ DNS 서버는 새로운 `서비스`를 위한 쿠버네티스 API를 Watch하며 - `hostPort`와 같은 이유로, `hostNetwork`를 사용하는 것을 피한다. -- `kube-proxy` 로드 밸런싱이 필요하지 않을 때, 쉬운 서비스 발견을 위해 [헤드리스 서비스](/ko/docs/concepts/services-networking/service/#헤드리스-headless-서비스)(`ClusterIP`의 값을 `None`으로 가지는)를 사용한다. +- `kube-proxy` 로드 밸런싱이 필요하지 않을 때, 서비스 발견을 위해 [헤드리스 서비스](/ko/docs/concepts/services-networking/service/#헤드리스-headless-서비스)(`ClusterIP`의 값을 `None`으로 가지는)를 사용한다. ## 레이블 사용하기 - `{ app: myapp, tier: frontend, phase: test, deployment: v3 }`처럼 애플리케이션이나 디플로이먼트의 __속성에 대한 의미__ 를 식별하는 [레이블](/ko/docs/concepts/overview/working-with-objects/labels/)을 정의해 사용한다. 다른 리소스를 위해 적절한 파드를 선택하는 용도로 이러한 레이블을 이용할 수 있다. 예를 들어, 모든 `tier: frontend` 파드를 선택하거나, `app: myapp`의 모든 `phase: test` 컴포넌트를 선택하는 서비스를 생각해 볼 수 있다. 이 접근 방법의 예시는 [방명록](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/guestbook/) 앱을 참고한다. -릴리스에 특정되는 레이블을 서비스의 셀렉터에서 생략함으로써 여러 개의 디플로이먼트에 걸치는 서비스를 생성할 수 있다. [디플로이먼트](/ko/docs/concepts/workloads/controllers/deployment/)는 생성되어 있는 서비스를 다운타임 없이 수정하기 쉽도록 만든다. +릴리스에 특정되는 레이블을 서비스의 셀렉터에서 생략함으로써 여러 개의 디플로이먼트에 걸치는 서비스를 생성할 수 있다. 동작 중인 서비스를 다운타임 없이 갱신하려면, [디플로이먼트](/ko/docs/concepts/workloads/controllers/deployment/)를 사용한다. 오브젝트의 의도한 상태는 디플로이먼트에 의해 기술되며, 만약 그 스펙에 대한 변화가 _적용될_ 경우, 디플로이먼트 컨트롤러는 일정한 비율로 실제 상태를 의도한 상태로 변화시킨다. diff --git a/content/ko/docs/concepts/configuration/secret.md b/content/ko/docs/concepts/configuration/secret.md index 073eb2ff4a..4637c1a63d 100644 --- a/content/ko/docs/concepts/configuration/secret.md +++ b/content/ko/docs/concepts/configuration/secret.md @@ -1,4 +1,6 @@ --- + + title: 시크릿(Secret) content_type: concept feature: @@ -24,8 +26,8 @@ weight: 30 {{< caution >}} 쿠버네티스 시크릿은 기본적으로 암호화되지 않은 base64 인코딩 문자열로 저장된다. -기본적으로 API 액세스 권한이 있는 모든 사용자 또는 쿠버네티스의 기본 데이터 저장소 etcd에 -액세스할 수 있는 모든 사용자가 일반 텍스트로 검색 할 수 있다. +기본적으로 API 액세스 권한이 있는 모든 사용자 또는 쿠버네티스의 기본 데이터 저장소 etcd에 +액세스할 수 있는 모든 사용자가 일반 텍스트로 검색할 수 있다. 시크릿을 안전하게 사용하려면 (최소한) 다음과 같이 하는 것이 좋다. 1. 시크릿에 대한 [암호화 활성화](/docs/tasks/administer-cluster/encrypt-data/). @@ -280,9 +282,9 @@ API 서버는 요구되는 키가 시크릿 구성에서 제공되고 있는지 검증도 한다. {{< caution >}} -SSH 개인 키는 자체적으로 SSH 클라이언트와 호스트 서버간에 신뢰할 수있는 통신을 -설정하지 않는다. ConfigMap에 추가된 `known_hosts` 파일과 같은 -"중간자(man in the middle)" 공격을 완화하려면 신뢰를 설정하는 +SSH 개인 키는 자체적으로 SSH 클라이언트와 호스트 서버 간에 신뢰할 수 있는 통신을 +설정하지 않는다. 컨피그맵(ConfigMap)에 추가된 `known_hosts` 파일과 같은 +"중간자(man in the middle)" 공격을 완화하려면 신뢰를 설정하는 2차 수단이 필요하다. {{< /caution >}} @@ -667,7 +669,7 @@ kubelet은 마운트된 시크릿이 모든 주기적인 동기화에서 최신 그러나, kubelet은 시크릿의 현재 값을 가져 오기 위해 로컬 캐시를 사용한다. 캐시의 유형은 [KubeletConfiguration 구조체](https://github.com/kubernetes/kubernetes/blob/{{< param "docsbranch" >}}/staging/src/k8s.io/kubelet/config/v1beta1/types.go)의 `ConfigMapAndSecretChangeDetectionStrategy` 필드를 사용하여 구성할 수 있다. -시크릿은 watch(기본값), ttl 기반 또는 단순히 API 서버로 모든 요청을 직접 +시크릿은 watch(기본값), ttl 기반 또는 API 서버로 모든 요청을 직접 리디렉션하여 전파할 수 있다. 결과적으로, 시크릿이 업데이트된 순간부터 새로운 키가 파드에 투영되는 순간까지의 총 지연 시간은 kubelet 동기화 시간 + 캐시 @@ -799,11 +801,6 @@ immutable: true 해당 프로세스에 대한 자세한 설명은 [서비스 어카운트에 ImagePullSecrets 추가하기](/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account)를 참고한다. -### 수동으로 생성된 시크릿의 자동 마운트 - -수동으로 생성된 시크릿(예: GitHub 계정에 접근하기 위한 토큰이 포함된 시크릿)은 -시크릿의 서비스 어카운트를 기반한 파드에 자동으로 연결될 수 있다. - ## 상세 내용 ### 제약 사항 @@ -1249,4 +1246,3 @@ API 서버에서 kubelet으로의 통신은 SSL/TLS로 보호된다. - [`kubectl` 을 사용한 시크릿 관리](/docs/tasks/configmap-secret/managing-secret-using-kubectl/)하는 방법 배우기 - [구성 파일을 사용한 시크릿 관리](/docs/tasks/configmap-secret/managing-secret-using-config-file/)하는 방법 배우기 - [kustomize를 사용한 시크릿 관리](/docs/tasks/configmap-secret/managing-secret-using-kustomize/)하는 방법 배우기 - diff --git a/content/ko/docs/concepts/containers/container-lifecycle-hooks.md b/content/ko/docs/concepts/containers/container-lifecycle-hooks.md index d4bdc17403..d9a1137024 100644 --- a/content/ko/docs/concepts/containers/container-lifecycle-hooks.md +++ b/content/ko/docs/concepts/containers/container-lifecycle-hooks.md @@ -1,4 +1,7 @@ --- + + + title: 컨테이너 라이프사이클 훅(Hook) content_type: concept weight: 30 @@ -33,10 +36,13 @@ Angular와 같이, 컴포넌트 라이프사이클 훅을 가진 많은 프로 `PreStop` -이 훅은 API 요청이나 활성 프로브(liveness probe) 실패, 선점, 자원 경합 등의 관리 이벤트로 인해 컨테이너가 종료되기 직전에 호출된다. 컨테이너가 이미 terminated 또는 completed 상태인 경우에는 preStop 훅 요청이 실패한다. -그것은 동기적인 동작을 의미하는, 차단(blocking)을 수행하고 있으므로, -컨테이너를 중지하기 위한 신호가 전송되기 전에 완료되어야 한다. -파라미터는 핸들러에 전달되지 않는다. +이 훅은 API 요청이나 활성 프로브(liveness probe) 실패, 선점, 자원 경합 +등의 관리 이벤트로 인해 컨테이너가 종료되기 직전에 호출된다. 컨테이너가 이미 +terminated 또는 completed 상태인 경우에는 `PreStop` 훅 요청이 실패하며, +훅은 컨테이너를 중지하기 위한 TERM 신호가 보내지기 이전에 완료되어야 한다. 파드의 그레이스 종료 +기간(termination grace period)의 초읽기는 `PreStop` 훅이 실행되기 전에 시작되어, +핸들러의 결과에 상관없이 컨테이너가 파드의 그레이스 종료 기간 내에 결국 종료되도록 한다. +어떠한 파라미터도 핸들러에게 전달되지 않는다. 종료 동작에 더 자세한 대한 설명은 [파드의 종료](/ko/docs/concepts/workloads/pods/pod-lifecycle/#파드의-종료)에서 찾을 수 있다. @@ -62,17 +68,13 @@ Angular와 같이, 컴포넌트 라이프사이클 훅을 가진 많은 프로 그러나, 만약 해당 훅이 너무 오래 동작하거나 어딘가에 걸려 있다면, 컨테이너는 `running` 상태에 이르지 못한다. -`PreStop` 훅은 컨테이너 중지 신호에서 비동기적으로 -실행되지 않는다. 훅은 신호를 보내기 전에 실행을 -완료해야 한다. -실행 중에 `PreStop` 훅이 중단되면, +`PreStop` 훅은 컨테이너 중지 신호에서 비동기적으로 실행되지 않는다. 훅은 +TERM 신호를 보내기 전에 실행을 완료해야 한다. 실행 중에 `PreStop` 훅이 중단되면, 파드의 단계는 `Terminating` 이며 `terminationGracePeriodSeconds` 가 -만료된 후 파드가 종료될 때까지 남아 있다. -이 유예 기간은 `PreStop` 훅이 실행되고 컨테이너가 -정상적으로 중지되는 데 걸리는 총 시간에 적용된다. -예를 들어, `terminationGracePeriodSeconds` 가 60이고, 훅이 -완료되는 데 55초가 걸리고, 컨테이너가 신호를 수신한 후 -정상적으로 중지하는 데 10초가 걸리면, `terminationGracePeriodSeconds` 이후 +만료된 후 파드가 종료될 때까지 남아 있다. 이 유예 기간은 `PreStop` 훅이 +실행되고 컨테이너가 정상적으로 중지되는 데 걸리는 총 시간에 적용된다. 예를 들어, +`terminationGracePeriodSeconds` 가 60이고, 훅이 완료되는 데 55초가 걸리고, +컨테이너가 신호를 수신한 후 정상적으로 중지하는 데 10초가 걸리면, `terminationGracePeriodSeconds` 이후 컨테이너가 정상적으로 중지되기 전에 종료된다. 이 두 가지 일이 발생하는 데 걸리는 총 시간(55+10)보다 적다. 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 68e529549b..d549060108 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 @@ -1,5 +1,8 @@ --- title: 커스텀 리소스 + + + content_type: concept weight: 10 --- @@ -117,7 +120,7 @@ _선언_ 하거나 지정할 수 있게 해주며 쿠버네티스 오브젝트 쿠버네티스는 다양한 사용자의 요구를 충족시키기 위해 이 두 가지 옵션을 제공하므로 사용의 용이성이나 유연성이 저하되지 않는다. -애그리게이트 API는 기본 API 서버 뒤에 있는 하위 API 서버이며 프록시 역할을 한다. 이 배치를 [API 애그리게이션](/ko/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/)(AA)이라고 한다. 사용자에게는 쿠버네티스 API가 확장된 것과 같다. +애그리게이트 API는 기본 API 서버 뒤에 있는 하위 API 서버이며 프록시 역할을 한다. 이 배치를 [API 애그리게이션](/ko/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/)(AA)이라고 한다. 사용자에게는 쿠버네티스 API가 확장된 것으로 나타난다. CRD를 사용하면 다른 API 서버를 추가하지 않고도 새로운 타입의 리소스를 생성할 수 있다. CRD를 사용하기 위해 API 애그리게이션을 이해할 필요는 없다. diff --git a/content/ko/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins.md b/content/ko/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins.md index 7542ac0add..359284b357 100644 --- a/content/ko/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins.md +++ b/content/ko/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins.md @@ -1,4 +1,8 @@ --- + + + + title: 네트워크 플러그인 content_type: concept weight: 10 @@ -20,7 +24,7 @@ weight: 10 kubelet에는 단일 기본 네트워크 플러그인과 전체 클러스터에 공통된 기본 네트워크가 있다. 플러그인은 시작할 때 플러그인을 검색하고, 찾은 것을 기억하며, 파드 라이프사이클에서 적절한 시간에 선택한 플러그인을 실행한다(CRI는 자체 CNI 플러그인을 관리하므로 도커에만 해당됨). 플러그인 사용 시 명심해야 할 두 가지 Kubelet 커맨드라인 파라미터가 있다. * `cni-bin-dir`: Kubelet은 시작할 때 플러그인에 대해 이 디렉터리를 검사한다. -* `network-plugin`: `cni-bin-dir` 에서 사용할 네트워크 플러그인. 플러그인 디렉터리에서 검색한 플러그인이 보고된 이름과 일치해야 한다. CNI 플러그인의 경우, 이는 단순히 "cni"이다. +* `network-plugin`: `cni-bin-dir` 에서 사용할 네트워크 플러그인. 플러그인 디렉터리에서 검색한 플러그인이 보고된 이름과 일치해야 한다. CNI 플러그인의 경우, 이는 "cni"이다. ## 네트워크 플러그인 요구 사항 diff --git a/content/ko/docs/concepts/extend-kubernetes/service-catalog.md b/content/ko/docs/concepts/extend-kubernetes/service-catalog.md index 3ac6a2df7d..cc387c2f02 100644 --- a/content/ko/docs/concepts/extend-kubernetes/service-catalog.md +++ b/content/ko/docs/concepts/extend-kubernetes/service-catalog.md @@ -1,5 +1,7 @@ --- title: 서비스 카탈로그 + + content_type: concept weight: 40 --- @@ -24,7 +26,7 @@ weight: 40 클러스터 운영자는 서비스 카탈로그를 설정하고 이를 이용하여 클라우드 공급자의 서비스 브로커와 통신하여 메시지 큐 서비스의 인스턴스를 프로비저닝하고 쿠버네티스 클러스터 내의 애플리케이션에서 사용할 수 있게 한다. 따라서 애플리케이션 개발자는 메시지 큐의 세부 구현 또는 관리에 신경 쓸 필요가 없다. -애플리케이션은 그것을 서비스로 간단하게 사용할 수 있다. +애플리케이션은 메시지 큐에 서비스로 접속할 수 있다. ## 아키텍처 @@ -229,8 +231,3 @@ spec: * [샘플 서비스 브로커](https://github.com/openservicebrokerapi/servicebroker/blob/master/gettingStarted.md#sample-service-brokers) 살펴보기 * [kubernetes-sigs/service-catalog](https://github.com/kubernetes-sigs/service-catalog) 프로젝트 탐색 * [svc-cat.io](https://svc-cat.io/docs/) 살펴보기 - - - - - diff --git a/content/ko/docs/concepts/overview/what-is-kubernetes.md b/content/ko/docs/concepts/overview/what-is-kubernetes.md index 449cae4393..4086e27cda 100644 --- a/content/ko/docs/concepts/overview/what-is-kubernetes.md +++ b/content/ko/docs/concepts/overview/what-is-kubernetes.md @@ -1,4 +1,7 @@ --- + + + title: 쿠버네티스란 무엇인가? description: > 쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식할 수 있고, 확장 가능한 오픈소스 플랫폼으로, 선언적 구성과 자동화를 모두 지원한다. 쿠버네티스는 크고 빠르게 성장하는 생태계를 가지고 있다. 쿠버네티스 서비스, 지원 그리고 도구들은 광범위하게 제공된다. @@ -40,7 +43,7 @@ sitemap: 컨테이너는 다음과 같은 추가적인 혜택을 제공하기 때문에 인기가 있다. * 기민한 애플리케이션 생성과 배포: VM 이미지를 사용하는 것에 비해 컨테이너 이미지 생성이 보다 쉽고 효율적임. -* 지속적인 개발, 통합 및 배포: 안정적이고 주기적으로 컨테이너 이미지를 빌드해서 배포할 수 있고 (이미지의 불변성 덕에) 빠르고 쉽게 롤백할 수 있다. +* 지속적인 개발, 통합 및 배포: 안정적이고 주기적으로 컨테이너 이미지를 빌드해서 배포할 수 있고 (이미지의 불변성 덕에) 빠르고 효율적으로 롤백할 수 있다. * 개발과 운영의 관심사 분리: 배포 시점이 아닌 빌드/릴리스 시점에 애플리케이션 컨테이너 이미지를 만들기 때문에, 애플리케이션이 인프라스트럭처에서 분리된다. * 가시성은 OS 수준의 정보와 메트릭에 머무르지 않고, 애플리케이션의 헬스와 그 밖의 시그널을 볼 수 있다. * 개발, 테스팅 및 운영 환경에 걸친 일관성: 랩탑에서도 클라우드에서와 동일하게 구동된다. diff --git a/content/ko/docs/concepts/overview/working-with-objects/labels.md b/content/ko/docs/concepts/overview/working-with-objects/labels.md index 5d60c9f28f..12f02ccee4 100644 --- a/content/ko/docs/concepts/overview/working-with-objects/labels.md +++ b/content/ko/docs/concepts/overview/working-with-objects/labels.md @@ -1,4 +1,6 @@ --- + + title: 레이블과 셀렉터 content_type: concept weight: 40 @@ -40,7 +42,7 @@ _레이블_ 은 파드와 같은 오브젝트에 첨부된 키와 값의 쌍이 * `"partition" : "customerA"`, `"partition" : "customerB"` * `"track" : "daily"`, `"track" : "weekly"` -레이블 예시는 일반적으로 사용하는 상황에 해당한다. 당신의 규약에 따라 자유롭게 개발할 수 있다. 오브젝트에 붙여진 레이블 키는 고유해야 한다는 것을 기억해야 한다. +이 예시는 일반적으로 사용하는 레이블이며, 사용자는 자신만의 규칙(convention)에 따라 자유롭게 개발할 수 있다. 오브젝트에 붙여진 레이블 키는 고유해야 한다는 것을 기억해야 한다. ## 구문과 캐릭터 셋 @@ -90,14 +92,13 @@ API는 현재 _일치성 기준_ 과 _집합성 기준_ 이라는 두 종류의 {{< /note >}} {{< caution >}} -일치성 기준과 집합성 기준 조건 모두에 대해 논리적인 _OR_ (`||`) 연산자가 없다. -필터 구문이 적절히 구성되어있는지 확인해야 한다. +일치성 기준과 집합성 기준 조건 모두에 대해 논리적인 _OR_ (`||`) 연산자가 없다. 필터 구문이 적절히 구성되어있는지 확인해야 한다. {{< /caution >}} ### _일치성 기준_ 요건 _일치성 기준_ 또는 _불일치 기준_ 의 요구사항으로 레이블의 키와 값의 필터링을 허용한다. 일치하는 오브젝트는 추가 레이블을 가질 수 있지만, 레이블의 명시된 제약 조건을 모두 만족해야 한다. -`=`,`==`,`!=` 이 3가지 연산자만 허용한다. 처음 두 개의 연산자의 _일치성_(그리고 단순히 동의어일 뿐임), 나머지는 _불일치_ 를 의미한다. 예를 들면, +`=`,`==`,`!=` 이 세 가지 연산자만 허용한다. 처음 두 개의 연산자의 _일치성_(그리고 동의어), 나머지는 _불일치_ 를 의미한다. 예를 들면, ``` environment = production @@ -109,7 +110,8 @@ tier != frontend `environment=production,tier!=frontend` 처럼 쉼표를 통해 한 문장으로 `frontend`를 제외한 `production`을 필터링할 수 있다. 일치성 기준 레이블 요건에 대한 하나의 이용 시나리오는 파드가 노드를 선택하는 기준을 지정하는 것이다. -예를 들어, 아래 샘플 파드는 "`accelerator=nvidia-tesla-p100`" 레이블을 가진 노드를 선택한다. +예를 들어, 아래 샘플 파드는 "`accelerator=nvidia-tesla-p100`" +레이블을 가진 노드를 선택한다. ```yaml apiVersion: v1 @@ -148,11 +150,12 @@ _집합성 기준_ 레이블 셀렉터는 일반적으로 `environment=productio _집합성 기준_ 요건은 _일치성 기준_ 요건과 조합해서 사용할 수 있다. 예를 들어 `partition in (customerA, customerB),environment!=qa` + ## API ### LIST와 WATCH 필터링 -LIST와 WATCH 작업은 쿼리 파라미터를 사용해서 반환되는 오브젝트 집합을 필터링하기 위해 레이블 셀렉터를 지정할 수 있다. 다음의 2가지 요건 모두 허용된다(URL 쿼리 문자열을 그대로 표기함). +LIST와 WATCH 작업은 쿼리 파라미터를 사용해서 반환되는 오브젝트 집합을 필터링하기 위해 레이블 셀렉터를 지정할 수 있다. 다음의 두 가지 요건 모두 허용된다(URL 쿼리 문자열을 그대로 표기함). * _일치성 기준_ 요건: `?labelSelector=environment%3Dproduction,tier%3Dfrontend` * _집합성 기준_ 요건: `?labelSelector=environment+in+%28production%2Cqa%29%2Ctier+in+%28frontend%29` @@ -208,7 +211,6 @@ selector: `json` 또는 `yaml` 서식에서 셀렉터는 `component=redis` 또는 `component in (redis)` 모두 같은 것이다. - #### 세트-기반 요건을 지원하는 리소스 [`Job`](/ko/docs/concepts/workloads/controllers/job/), @@ -232,4 +234,3 @@ selector: 레이블을 통해 선택하는 사용 사례 중 하나는 파드를 스케줄 할 수 있는 노드 셋을 제한하는 것이다. 자세한 내용은 [노드 선택](/ko/docs/concepts/scheduling-eviction/assign-pod-node/) 문서를 참조한다. - diff --git a/content/ko/docs/concepts/overview/working-with-objects/object-management.md b/content/ko/docs/concepts/overview/working-with-objects/object-management.md index 4c1570c458..575def2256 100644 --- a/content/ko/docs/concepts/overview/working-with-objects/object-management.md +++ b/content/ko/docs/concepts/overview/working-with-objects/object-management.md @@ -32,7 +32,7 @@ weight: 15 지정한다. 이것은 클러스터에서 일회성 작업을 개시시키거나 동작시키기 위한 -가장 단순한 방법이다. 이 기법은 활성 오브젝트를 대상으로 직접적인 +추천 방법이다. 이 기법은 활성 오브젝트를 대상으로 직접적인 영향을 미치기 때문에, 이전 구성에 대한 이력을 제공해 주지 않는다. ### 예시 @@ -47,7 +47,7 @@ kubectl create deployment nginx --image nginx 오브젝트 구성에 비해 장점은 다음과 같다. -- 커맨드는 간단해서 배우기 쉽고, 기억하기 쉽다. +- 커맨드는 하나의 동작을 나타내는 단어로 표현된다. - 커맨드는 클러스터를 수정하기 위해 단 하나의 단계만을 필요로 한다. 오브젝트 구성에 비해 단점은 다음과 같다. @@ -125,7 +125,7 @@ kubectl replace -f nginx.yaml 선언형 오브젝트 구성을 사용할 경우, 사용자는 로컬에 보관된 오브젝트 구성 파일을 대상으로 작동시키지만, 사용자는 파일에서 수행 할 작업을 정의하지 않는다. 생성, 업데이트, 그리고 삭제 작업은 -`kubectl`에 의해 오브젝트 마다 자동으로 감지된다. 이를 통해 다른 오브젝트에 대해 +`kubectl`에 의해 오브젝트마다 자동으로 감지된다. 이를 통해 다른 오브젝트에 대해 다른 조작이 필요할 수 있는 디렉터리에서 작업할 수 있다. {{< note >}} diff --git a/content/ko/docs/concepts/policy/resource-quotas.md b/content/ko/docs/concepts/policy/resource-quotas.md index a6e6208d76..ff1f4a75c8 100644 --- a/content/ko/docs/concepts/policy/resource-quotas.md +++ b/content/ko/docs/concepts/policy/resource-quotas.md @@ -1,4 +1,6 @@ --- + + title: 리소스 쿼터 content_type: concept weight: 20 @@ -608,17 +610,28 @@ plugins: values: ["cluster-services"] ``` -이제 "cluster-services" 파드는 `scopeSelector`와 일치하는 쿼터 오브젝트가 있는 네임스페이스에서만 허용된다. -예를 들면 다음과 같다. +그리고, `kube-system` 네임스페이스에 리소스 쿼터 오브젝트를 생성한다. -```yaml - scopeSelector: - matchExpressions: - - scopeName: PriorityClass - operator: In - values: ["cluster-services"] +{{< codenew file="policy/priority-class-resourcequota.yaml" >}} + +```shell +$ kubectl apply -f https://k8s.io/examples/policy/priority-class-resourcequota.yaml -n kube-system ``` +``` +resourcequota/pods-cluster-services created +``` + +이 경우, 파드 생성은 다음의 조건을 만족해야 허용될 것이다. + +1. 파드의 `priorityClassName` 가 명시되지 않음. +1. 파드의 `priorityClassName` 가 `cluster-services` 이외의 다른 값으로 명시됨. +1. 파드의 `priorityClassName` 가 `cluster-services` 로 설정되고, 파드가 `kube-system` + 네임스페이스에 생성되었으며 리소스 쿼터 검증을 통과함. + +파드 생성 요청은 `priorityClassName` 가 `cluster-services` 로 명시되고 +`kube-system` 이외의 다른 네임스페이스에 생성되는 경우, 거절된다. + ## {{% heading "whatsnext" %}} - 자세한 내용은 [리소스쿼터 디자인 문서](https://git.k8s.io/community/contributors/design-proposals/resource-management/admission_control_resource_quota.md)를 참고한다. diff --git a/content/ko/docs/concepts/scheduling-eviction/assign-pod-node.md b/content/ko/docs/concepts/scheduling-eviction/assign-pod-node.md index ebbc00f91e..f9e739d7a1 100644 --- a/content/ko/docs/concepts/scheduling-eviction/assign-pod-node.md +++ b/content/ko/docs/concepts/scheduling-eviction/assign-pod-node.md @@ -261,7 +261,7 @@ PodSpec에 지정된 NodeAffinity도 적용된다. `topologyKey` 의 빈 값을 허용하지 않는다. 2. 파드 안티-어피니티에서도 `requiredDuringSchedulingIgnoredDuringExecution` 와 `preferredDuringSchedulingIgnoredDuringExecution` 는 `topologyKey` 의 빈 값을 허용하지 않는다. -3. `requiredDuringSchedulingIgnoredDuringExecution` 파드 안티-어피니티에서 `topologyKey` 를 `kubernetes.io/hostname` 로 제한하기 위해 어드미션 컨트롤러 `LimitPodHardAntiAffinityTopology` 가 도입되었다. 사용자 지정 토폴로지를 사용할 수 있도록 하려면, 어드미션 컨트롤러를 수정하거나 아니면 간단히 이를 비활성화해야 한다. +3. `requiredDuringSchedulingIgnoredDuringExecution` 파드 안티-어피니티에서 `topologyKey` 를 `kubernetes.io/hostname` 로 제한하기 위해 어드미션 컨트롤러 `LimitPodHardAntiAffinityTopology` 가 도입되었다. 사용자 지정 토폴로지를 사용할 수 있도록 하려면, 어드미션 컨트롤러를 수정하거나 아니면 이를 비활성화해야 한다. 4. 위의 경우를 제외하고, `topologyKey` 는 적법한 어느 레이블-키도 가능하다. `labelSelector` 와 `topologyKey` 외에도 `labelSelector` 와 일치해야 하는 네임스페이스 목록 `namespaces` 를 diff --git a/content/ko/docs/concepts/scheduling-eviction/scheduler-perf-tuning.md b/content/ko/docs/concepts/scheduling-eviction/scheduler-perf-tuning.md index 4ed5c58a63..03eec40fae 100644 --- a/content/ko/docs/concepts/scheduling-eviction/scheduler-perf-tuning.md +++ b/content/ko/docs/concepts/scheduling-eviction/scheduler-perf-tuning.md @@ -1,4 +1,6 @@ --- + + title: 스케줄러 성능 튜닝 content_type: concept weight: 80 diff --git a/content/ko/examples/policy/priority-class-resourcequota.yaml b/content/ko/examples/policy/priority-class-resourcequota.yaml new file mode 100644 index 0000000000..7350d00c8f --- /dev/null +++ b/content/ko/examples/policy/priority-class-resourcequota.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: ResourceQuota +metadata: + name: pods-cluster-services +spec: + scopeSelector: + matchExpressions: + - operator : In + scopeName: PriorityClass + values: ["cluster-services"] \ No newline at end of file From f5aaf40e889404ba3d88c5c518b58714cd51432c Mon Sep 17 00:00:00 2001 From: Patrick Ohly Date: Tue, 2 Mar 2021 13:47:27 +0100 Subject: [PATCH 090/788] storage capacity: beta After the promotion to beta in 1.21, enabling the feature is easier and mostly just depends on the CSI driver deployment. --- .../docs/concepts/storage/storage-capacity.md | 33 +++---------------- .../feature-gates.md | 3 +- 2 files changed, 7 insertions(+), 29 deletions(-) diff --git a/content/en/docs/concepts/storage/storage-capacity.md b/content/en/docs/concepts/storage/storage-capacity.md index d5993d4f59..13ae8ab722 100644 --- a/content/en/docs/concepts/storage/storage-capacity.md +++ b/content/en/docs/concepts/storage/storage-capacity.md @@ -17,6 +17,7 @@ which a pod runs: network-attached storage might not be accessible by all nodes, or storage is local to a node to begin with. {{< feature-state for_k8s_version="v1.19" state="alpha" >}} +{{< feature-state for_k8s_version="v1.21" state="beta" >}} This page describes how Kubernetes keeps track of storage capacity and how the scheduler uses that information to schedule Pods onto nodes @@ -103,34 +104,10 @@ to handle this automatically. ## Enabling storage capacity tracking -Storage capacity tracking is an *alpha feature* and only enabled when -the `CSIStorageCapacity` [feature -gate](/docs/reference/command-line-tools-reference/feature-gates/) and -the `storage.k8s.io/v1alpha1` {{< glossary_tooltip text="API group" term_id="api-group" >}} are enabled. For details on -that, see the `--feature-gates` and `--runtime-config` [kube-apiserver -parameters](/docs/reference/command-line-tools-reference/kube-apiserver/). - -A quick check -whether a Kubernetes cluster supports the feature is to list -CSIStorageCapacity objects with: -```shell -kubectl get csistoragecapacities --all-namespaces -``` - -If your cluster supports CSIStorageCapacity, the response is either a list of CSIStorageCapacity objects or: -``` -No resources found -``` - -If not supported, this error is printed instead: -``` -error: the server doesn't have a resource type "csistoragecapacities" -``` - -In addition to enabling the feature in the cluster, a CSI -driver also has to -support it. Please refer to the driver's documentation for -details. +Storage capacity tracking is a beta feature and enabled by default in +a Kubernetes cluster since Kubernetes 1.21. In addition to having the +feature enabled in the cluster, a CSI driver also has to support +it. Please refer to the driver's documentation for details. ## {{% heading "whatsnext" %}} diff --git a/content/en/docs/reference/command-line-tools-reference/feature-gates.md b/content/en/docs/reference/command-line-tools-reference/feature-gates.md index 2e9db5fce0..91062f3895 100644 --- a/content/en/docs/reference/command-line-tools-reference/feature-gates.md +++ b/content/en/docs/reference/command-line-tools-reference/feature-gates.md @@ -85,7 +85,8 @@ different Kubernetes components. | `CSIMigrationvSphere` | `false` | Beta | 1.19 | | | `CSIMigrationvSphereComplete` | `false` | Beta | 1.19 | | | `CSIServiceAccountToken` | `false` | Alpha | 1.20 | | -| `CSIStorageCapacity` | `false` | Alpha | 1.19 | | +| `CSIStorageCapacity` | `false` | Alpha | 1.19 | 1.20 | +| `CSIStorageCapacity` | `true` | Beta | 1.21 | | | `CSIVolumeFSGroupPolicy` | `false` | Alpha | 1.19 | 1.19 | | `CSIVolumeFSGroupPolicy` | `true` | Beta | 1.20 | | | `ConfigurableFSGroupPolicy` | `false` | Alpha | 1.18 | 1.19 | From d7ea10e92c03d3c85ff7d7620b33882bf69346c3 Mon Sep 17 00:00:00 2001 From: TAKAHASHI Shuuji Date: Thu, 4 Mar 2021 19:19:25 +0900 Subject: [PATCH 091/788] Add a missing translation --- content/ja/docs/contribute/review/reviewing-prs.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/ja/docs/contribute/review/reviewing-prs.md b/content/ja/docs/contribute/review/reviewing-prs.md index 0ecb2951e0..b2f6936908 100644 --- a/content/ja/docs/contribute/review/reviewing-prs.md +++ b/content/ja/docs/contribute/review/reviewing-prs.md @@ -25,6 +25,7 @@ weight: 10 - [CNCFの行動規範](https://github.com/cncf/foundation/blob/master/code-of-conduct.md)を読み、いかなる時にも行動規範にしたがって行動するようにする。 - 礼儀正しく、思いやりを持ち、助け合う気持ちを持つ。 - 変更点だけでなく、PRのポジティブな側面についてもコメントする。 +- 相手の気持に共感して、自分のレビューが相手にどのように受け取られるのかをよく意識する。 - 相手の善意を前提として、疑問点を明確にする質問をする。 - 経験を積んだコントリビューターの場合、コンテンツに大幅な変更が必要な新規のコントリビューターとペアを組んで作業に取り組むことを考える。 From b349b61088926655d10d8d8f5b1b20dced406c1d Mon Sep 17 00:00:00 2001 From: TAKAHASHI Shuuji Date: Thu, 4 Mar 2021 19:21:36 +0900 Subject: [PATCH 092/788] Fix a typo --- content/ja/docs/contribute/review/reviewing-prs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/ja/docs/contribute/review/reviewing-prs.md b/content/ja/docs/contribute/review/reviewing-prs.md index b2f6936908..6659d46354 100644 --- a/content/ja/docs/contribute/review/reviewing-prs.md +++ b/content/ja/docs/contribute/review/reviewing-prs.md @@ -25,7 +25,7 @@ weight: 10 - [CNCFの行動規範](https://github.com/cncf/foundation/blob/master/code-of-conduct.md)を読み、いかなる時にも行動規範にしたがって行動するようにする。 - 礼儀正しく、思いやりを持ち、助け合う気持ちを持つ。 - 変更点だけでなく、PRのポジティブな側面についてもコメントする。 -- 相手の気持に共感して、自分のレビューが相手にどのように受け取られるのかをよく意識する。 +- 相手の気持ちに共感して、自分のレビューが相手にどのように受け取られるのかをよく意識する。 - 相手の善意を前提として、疑問点を明確にする質問をする。 - 経験を積んだコントリビューターの場合、コンテンツに大幅な変更が必要な新規のコントリビューターとペアを組んで作業に取り組むことを考える。 From bb9f8ebd77ed329fbf0c64517d60b24326dc8d44 Mon Sep 17 00:00:00 2001 From: Bridget Kromhout Date: Thu, 4 Mar 2021 08:02:59 -0600 Subject: [PATCH 093/788] Restoring alpha details with end date Signed-off-by: Bridget Kromhout --- .../docs/reference/command-line-tools-reference/feature-gates.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/en/docs/reference/command-line-tools-reference/feature-gates.md b/content/en/docs/reference/command-line-tools-reference/feature-gates.md index 835fb58d76..65a37a8a3f 100644 --- a/content/en/docs/reference/command-line-tools-reference/feature-gates.md +++ b/content/en/docs/reference/command-line-tools-reference/feature-gates.md @@ -123,6 +123,7 @@ different Kubernetes components. | `HPAScaleToZero` | `false` | Alpha | 1.16 | | | `HugePageStorageMediumSize` | `false` | Alpha | 1.18 | 1.18 | | `HugePageStorageMediumSize` | `true` | Beta | 1.19 | | +| `IPv6DualStack` | `false` | Alpha | 1.15 | 1.20 | | `IPv6DualStack` | `true` | Beta | 1.21 | | | `KubeletCredentialProviders` | `false` | Alpha | 1.20 | | | `KubeletPodResources` | `true` | Alpha | 1.13 | 1.14 | From 21b1e83147332372935e606adba9c6bc5bec5cdd Mon Sep 17 00:00:00 2001 From: Joe Marty Date: Thu, 4 Mar 2021 09:54:52 -0600 Subject: [PATCH 094/788] Clarify sources of voluntary disruptions See issue #22391 --- content/en/docs/concepts/workloads/pods/disruptions.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/content/en/docs/concepts/workloads/pods/disruptions.md b/content/en/docs/concepts/workloads/pods/disruptions.md index d0a8bbf5a9..04c35e0322 100644 --- a/content/en/docs/concepts/workloads/pods/disruptions.md +++ b/content/en/docs/concepts/workloads/pods/disruptions.md @@ -80,12 +80,14 @@ Here are some ways to mitigate involuntary disruptions: [multi-zone cluster](/docs/setup/multiple-zones).) The frequency of voluntary disruptions varies. On a basic Kubernetes cluster, there are -no voluntary disruptions at all. However, your cluster administrator or hosting provider +no automated voluntary disruptions (only user-triggered ones). However, your cluster administrator or hosting provider may run some additional services which cause voluntary disruptions. For example, rolling out node software updates can cause voluntary disruptions. Also, some implementations of cluster (node) autoscaling may cause voluntary disruptions to defragment and compact nodes. Your cluster administrator or hosting provider should have documented what level of voluntary -disruptions, if any, to expect. +disruptions, if any, to expect. Certain configuration options, such as +[using PriorityClasses](https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/) +in your pod spec can also cause voluntary (and involuntary) disruptions. ## Pod disruption budgets From 5829a5d9584640b727b9420967a0189c6862e5b3 Mon Sep 17 00:00:00 2001 From: Richard Li Date: Thu, 4 Mar 2021 14:48:45 -0500 Subject: [PATCH 095/788] Update content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md Co-authored-by: Kaitlyn Barnard --- content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md b/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md index a9a65c9dae..b81c13a7f0 100644 --- a/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md +++ b/content/en/blog/_posts/2021-02-27-annotating-k8s-for-humans.md @@ -89,7 +89,7 @@ Adopting a common convention for annotations ensures consistency and understanda As the number of microservices and annotations proliferate, running `kubectl describe` can get tedious. Moreover, using `kubectl describe` requires every developer to have some direct access to the Kubernetes cluster. Over the past few years, [service catalogs](https://www.getambassador.io/learn/kubernetes-glossary/service-catalog) have gained greater visibility in the Kubernetes ecosystem. Popularized by tools such as [Shopify's ServicesDB](https://shopify.engineering/scaling-mobile-development-by-treating-apps-as-services) and [Spotify's System Z](https://dzone.com/articles/modeling-microservices-at-spotify-with-petter-mari), service catalogs are internally-facing developer portals that present critical information about microservices. Note that these service catalogs should not be confused with the [Kubernetes Service Catalog project](https://svc-cat.io/). Built on the Open Service Broker API, the Kubernetes Service Catalog enables Kubernetes operators to plug in different services (e.g., databases) to their cluster. -Historically, service catalogs have not been a key piece of infrastructure, as applications consisted of a single monolith. Today, with distributed development and microservices the norm, service catalogs are increasingly being adopted as a best practice. Some popular options today include [Backstage]((https://backstage.io/) and [Ambassador Service Catalog](https://www.getambassador.io/products/service-catalog). Backstage is a highly flexible project ideal for organizations that wish to customize every aspect of their service catalog, while Ambassador Service Catalog provides a turnkey, cloud-hosted solution that can be set up quickly. +Historically, service catalogs have not been a key piece of infrastructure, as applications consisted of a single monolith. Today, with distributed development and microservices the norm, service catalogs are increasingly being adopted as a best practice. Some popular options today include [Backstage](https://backstage.io/) and [Ambassador Service Catalog](https://www.getambassador.io/products/service-catalog). Backstage is a highly flexible project ideal for organizations that wish to customize every aspect of their service catalog, while Ambassador Service Catalog provides a turnkey, cloud-hosted solution that can be set up quickly. ## Annotate your services now and thank yourself later Much like implementing observability within microservice systems, you often don’t realize that you need human service discovery until it’s too late. Don't wait until something is on fire in production to start wishing you had implemented better metrics and also documented how to get in touch with the part of your organization that looks after it. From d717167e8bc9d571e3b2650941ab2d1f0893d9bd Mon Sep 17 00:00:00 2001 From: Alan Cha Date: Thu, 4 Mar 2021 17:14:41 -0500 Subject: [PATCH 096/788] Fix GitHub capitalization --- .../docs/concepts/cluster-administration/manage-deployment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/concepts/cluster-administration/manage-deployment.md b/content/en/docs/concepts/cluster-administration/manage-deployment.md index fa31fbd35f..40320e4285 100644 --- a/content/en/docs/concepts/cluster-administration/manage-deployment.md +++ b/content/en/docs/concepts/cluster-administration/manage-deployment.md @@ -47,7 +47,7 @@ kubectl apply -f https://k8s.io/examples/application/nginx/ It is a recommended practice to put resources related to the same microservice or application tier into the same file, and to group all of the files associated with your application in the same directory. If the tiers of your application bind to each other using DNS, you can deploy all of the components of your stack together. -A URL can also be specified as a configuration source, which is handy for deploying directly from configuration files checked into github: +A URL can also be specified as a configuration source, which is handy for deploying directly from configuration files checked into GitHub: ```shell kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/master/content/en/examples/application/nginx/nginx-deployment.yaml From 235509450a5e88d83a69b789ecce434548729e9d Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Tue, 2 Mar 2021 00:34:50 +0200 Subject: [PATCH 097/788] kubeadm: add a new page - Add the new page "Configuring a cgroup driver" The page includes details on how to configure the cgroup driver using kubeadm. It also includes a migration guide for users to move to the "systemd" driver. - Link to the new page from install-kubeadm.md and container-runtimes.md --- .../container-runtimes.md | 7 +- .../tools/kubeadm/install-kubeadm.md | 34 ++--- .../kubeadm/configure-cgroup-driver.md | 127 ++++++++++++++++++ 3 files changed, 142 insertions(+), 26 deletions(-) create mode 100644 content/en/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver.md diff --git a/content/en/docs/setup/production-environment/container-runtimes.md b/content/en/docs/setup/production-environment/container-runtimes.md index 5aa4ac894e..3f022d191f 100644 --- a/content/en/docs/setup/production-environment/container-runtimes.md +++ b/content/en/docs/setup/production-environment/container-runtimes.md @@ -48,7 +48,7 @@ Changing the settings such that your container runtime and kubelet use `systemd` stabilized the system. To configure this for Docker, set `native.cgroupdriver=systemd`. {{< caution >}} -Changing the cgroup driver of a Node that has joined a cluster is strongly *not* recommended. +Changing the cgroup driver of a Node that has joined a cluster is a sensitive operation. If the kubelet has created Pods using the semantics of one cgroup driver, changing the container runtime to another cgroup driver can cause errors when trying to re-create the Pod sandbox for such existing Pods. Restarting the kubelet may not solve such errors. @@ -57,6 +57,11 @@ If you have automation that makes it feasible, replace the node with another usi configuration, or reinstall it using automation. {{< /caution >}} +### Migrating to the `systemd` driver in kubeadm managed clusters + +Follow this [Migration guide](/tasks/administer-cluster/kubeadm/configure-cgroup-driver) +if you wish to migrate to the `systemd` cgroup driver in existing kubeadm managed clusters. + ## Container runtimes {{% thirdparty-content %}} 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 394820324d..74d6a79dca 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 @@ -233,7 +233,7 @@ sudo mkdir -p /opt/cni/bin curl -L "https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-amd64-${CNI_VERSION}.tgz" | sudo tar -C /opt/cni/bin -xz ``` -Define the directory to download command files +Define the directory to download command files {{< note >}} The `DOWNLOAD_DIR` variable must be set to a writable directory. @@ -284,33 +284,17 @@ See the [Kubeadm Troubleshooting guide](/docs/setup/production-environment/tools The kubelet is now restarting every few seconds, as it waits in a crashloop for kubeadm to tell it what to do. -## Configure cgroup driver used by kubelet on control-plane node +## Configuring a cgroup driver -When using Docker, kubeadm will automatically detect the cgroup driver for the kubelet -and set it in the `/var/lib/kubelet/config.yaml` file during runtime. +Both the container runtime and the kubelet have a property called +["cgroup driver"](/docs/setup/production-environment/container-runtimes/), which is important +for the management of cgroups on Linux machines. -If you are using a different CRI, you must pass your `cgroupDriver` value to `kubeadm init`, like so: - -```yaml -apiVersion: kubelet.config.k8s.io/v1beta1 -kind: KubeletConfiguration -cgroupDriver: -``` - -For further details, please read [Using kubeadm init with a configuration file](/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file). - -Please mind, that you **only** have to do that if the cgroup driver of your CRI -is not `cgroupfs`, because that is the default value in the kubelet already. - -{{< note >}} -Since `--cgroup-driver` flag has been deprecated by the kubelet, if you have that in `/var/lib/kubelet/kubeadm-flags.env` -or `/etc/default/kubelet`(`/etc/sysconfig/kubelet` for RPMs), please remove it and use the KubeletConfiguration instead -(stored in `/var/lib/kubelet/config.yaml` by default). -{{< /note >}} - -The automatic detection of cgroup driver for other container runtimes -like CRI-O and containerd is work in progress. +{{< warning >}} +Matching the container runtime and kubelet cgroup drivers is required or otherwise the kubelet process will fail. +{{< warning >}} +See [Configuring a cgroup driver](/tasks/administer-cluster/kubeadm/configure-cgroup-driver) for more details. ## Troubleshooting diff --git a/content/en/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver.md b/content/en/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver.md new file mode 100644 index 0000000000..02fdc958fa --- /dev/null +++ b/content/en/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver.md @@ -0,0 +1,127 @@ +--- +title: Configuring a cgroup driver +content_type: task +weight: 10 +--- + + + +This page explains how to configure the kubelet cgroup driver to match the container +runtime cgroup driver for kubeadm clusters. + +## {{% heading "prerequisites" %}} + +You should be familiar with the Kubernetes +[container runtime requirements](/docs/setup/production-environment/container-runtimes). + + + +## Configuring the container runtime cgroup driver + +The [Container runtimes](/docs/setup/production-environment/container-runtimes) page +explains that the `systemd` driver is recommended for kubeadm based setups instead +of the `cgroupfs` driver, because kubeadm manages the kubelet as a systemd service. + +The page also provides details on how to setup a number of different container runtimes with the +`systemd` driver by default. + +## Configuring the kubelet cgroup driver + +kubeadm allows you to pass a `KubeletConfiguration` structure during `kubeadm init`. +This `KubeletConfiguration` can include the `cgroupDriver` field which controls the cgroup +driver of the kubelet. + +{{< note >}} + +{{< feature-state for_k8s_version="v1.21" state="stable" >}} + +If the user is not setting the `cgroupDriver` field under `KubeletConfiguration`, +`kubeadm init` will default it to `systemd`. +{{< /note >}} + +A minimal example of configuring the field explicitly: + +```yaml +# kubeadm-config.yaml +kind: ClusterConfiguration +apiVersion: kubeadm.k8s.io/v1beta2 +kubernetesVersion: v1.21 +--- +kind: KubeletConfiguration +apiVersion: kubelet.config.k8s.io/v1beta1 +cgroupDriver: systemd +``` + +Such a configuration file can then be passed to the kubeadm command: + +```shell +kubeadm init --config kubeadm-config.yaml +``` + +{{< note >}} +Kubeadm uses the same `KubeletConfiguration` for all nodes in the cluster. +The `KubeletConfiguration` is stored in a [ConfigMap](docs/concepts/configuration/configmap) +object under the `kube-system` namespace. + +Executing the sub commands `init`, `join` and `upgrade` would result in kubeadm +writing the `KubeletConfiguration` as a file under `/var/lib/kubelet/config.yaml` +and passing it to the local node kubelet. +{{< /note >}} + +## Using the `cgroupfs` driver + +As this guide explains using the `cgroupfs` driver with kubeadm is not recommended. + +To continue using `cgroupfs` and to prevent `kubeadm upgrade` from modifying the +`KubeletConfiguration` cgroup driver on existing setups, you must be explicit +about its value. This applies to a case where you do not wish future versions +of kubeadm to apply the `systemd` driver by default. + +See the below section on "Modify the kubelet ConfigMap" for details on +how to be explicit about the value. + +If you wish to configure a container runtime to use the `cgroupfs` driver, +you must refer to the documentation of the container runtime of your choice. + +## Migrating to the `systemd` driver + +To change the cgroup driver of an existing kubeadm cluster to `systemd` in-place, +a similar procedure to a kubelet upgrade is required. This must include both +steps outlined below. + +{{< note >}} +Alternatively, it is possible to replace the old nodes in the cluster with new ones +that use the `systemd` driver. This requires executing only the first step below +before joining the new nodes and ensuring the workloads can safely move to the new +nodes before deleting the old nodes. +{{< /note >}} + +### Modify the kubelet ConfigMap + +- Find the kubelet ConfigMap name using `kubectl get cm -n kube-system | grep kubelet-config`. +- Call `kubectl edit cm kubelet-config-x.yy -n kube-system` (replace `x.yy` with +the Kubernetes version). +- Either modify the existing `cgroupDriver` value or add a new field that looks like this: + + ```yaml + cgroupDriver: systemd + ``` + This field must be present under the `kubelet:` section of the ConfigMap. + +### Update the cgroup driver on all nodes + +For each node in the cluster: + +- [Drain the node](/docs/tasks/administer-cluster/safely-drain-node) using `kubectl drain --ignore-daemonsets` +- Stop the kubelet using `systemctl stop kubelet` +- Stop the container runtime +- Modify the container runtime cgroup driver to `systemd` +- Set `cgroupDriver: systemd` in `/var/lib/kubelet/config.yaml` +- Start the container runtime +- Start the kubelet using `systemctl start kubelet` +- [Uncordon the node](/docs/tasks/administer-cluster/safely-drain-node) using `kubectl uncordon ` + +Execute these steps on nodes one at a time to ensure workloads +have sufficient time to schedule on different nodes. + +Once the process is complete ensure that all nodes and workloads are healthy. From 7d5cd3207028a2dfebc37577aaa4952123ded825 Mon Sep 17 00:00:00 2001 From: Tim Bannister Date: Thu, 4 Mar 2021 23:01:53 +0000 Subject: [PATCH 098/788] Tidy documentation on NetworkPolicy endPort field --- .../docs/concepts/services-networking/network-policies.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/en/docs/concepts/services-networking/network-policies.md b/content/en/docs/concepts/services-networking/network-policies.md index 349fe84fbb..32421a0beb 100644 --- a/content/en/docs/concepts/services-networking/network-policies.md +++ b/content/en/docs/concepts/services-networking/network-policies.md @@ -227,7 +227,7 @@ You must be using a {{< glossary_tooltip text="CNI" term_id="cni" >}} plugin tha When writing a NetworkPolicy, you can target a range of ports instead of a single port. -This is achiveable with the usage of the `endPort` field, as the following example: +This is achievable with the usage of the `endPort` field, as the following example: ```yaml apiVersion: networking.k8s.io/v1 @@ -251,11 +251,11 @@ spec: endPort: 32768 ``` -The above rule will allow a Pod with label `db` on the namespace `default` to communicate with any IP within the range `10.0.0.0/24` if the target port is between the range 32000 and 32768. +The above rule allows any Pod with label `db` on the namespace `default` to communicate with any IP within the range `10.0.0.0/24` over TCP, provided that the target port is between the range 32000 and 32768. The following restrictions apply when using this field: -* As an alpha feature, this is disabled by default. To enable endPort field at a cluster level, you (or your cluster administrator) will need to enable the `NetworkPolicyEndPort` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/) for the API server with `--feature-gates=NetworkPolicyEndPort=true,…`. -* The `endPort` field must be equal than or greater to `port` field. +* As an alpha feature, this is disabled by default. To enable the `endPort` field at a cluster level, you (or your cluster administrator) need to enable the `NetworkPolicyEndPort` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/) for the API server with `--feature-gates=NetworkPolicyEndPort=true,…`. +* The `endPort` field must be equal than or greater to the `port` field. * `endPort` can only be defined if `port` is also defined. * Both ports must be numeric. From bb52543a98e3a755de48ed9b61ca06bba559b48f Mon Sep 17 00:00:00 2001 From: Qiming Teng Date: Fri, 5 Mar 2021 09:45:11 +0800 Subject: [PATCH 099/788] Add a missing feature gate entry The `EnableAggregatedDiscoveryTimeout` (deprecated) is not listed in the second table. This PR adds it back. --- .../docs/reference/command-line-tools-reference/feature-gates.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/en/docs/reference/command-line-tools-reference/feature-gates.md b/content/en/docs/reference/command-line-tools-reference/feature-gates.md index 033b38a112..229ac94099 100644 --- a/content/en/docs/reference/command-line-tools-reference/feature-gates.md +++ b/content/en/docs/reference/command-line-tools-reference/feature-gates.md @@ -242,6 +242,7 @@ different Kubernetes components. | `DynamicProvisioningScheduling` | - | Deprecated| 1.12 | - | | `DynamicVolumeProvisioning` | `true` | Alpha | 1.3 | 1.7 | | `DynamicVolumeProvisioning` | `true` | GA | 1.8 | - | +| `EnableAggregatedDiscoveryTimeout` | `true` | Deprecated | 1.16 | - | | `EnableEquivalenceClassCache` | `false` | Alpha | 1.8 | 1.14 | | `EnableEquivalenceClassCache` | - | Deprecated | 1.15 | - | | `ExperimentalCriticalPodAnnotation` | `false` | Alpha | 1.5 | 1.12 | From 6c44ad9f2dd412a29f24bdd8ad4fb6ab65fb1f67 Mon Sep 17 00:00:00 2001 From: HugoPfeffer Date: Thu, 4 Mar 2021 20:34:46 -0800 Subject: [PATCH 100/788] docs: Update /pt/docs/concepts/containers/images.md Fix typos Update the file according to devlware's suggestion --- content/pt/docs/concepts/containers/images.md | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/content/pt/docs/concepts/containers/images.md b/content/pt/docs/concepts/containers/images.md index 06dbe75cf5..eb85c5ed4b 100644 --- a/content/pt/docs/concepts/containers/images.md +++ b/content/pt/docs/concepts/containers/images.md @@ -26,14 +26,13 @@ e um possível número de porta; por exemplo: `exemplo.registro.ficticio:10443/n Se você não especificar um hostname de registro, o Kubernetes presumirá que você se refere ao registro público do Docker. -Após a parte do nome da imagem, você pode adicionar uma _tag_ (como também usar com comandos como -como `docker` e` podman`). +Após a parte do nome da imagem, você pode adicionar uma _tag_ (como também usar com comandos como `docker` e` podman`). As tags permitem identificar diferentes versões da mesma série de imagens. Tags de imagem consistem em letras maiúsculas e minúsculas, dígitos, sublinhados (`_`), pontos (`.`) e travessões (` -`). Existem regras adicionais sobre onde você pode colocar o separador -caracteres (`_`,` -` e `.`) dentro de uma tag de imagem. +caracteres (`_`,`-` e `.`) dentro de uma tag de imagem. Se você não especificar uma tag, o Kubernetes presumirá que você se refere à tag `latest` (mais recente). {{< caution >}} @@ -45,7 +44,7 @@ Em vez disso, especifique uma tag significativa, como `v1.42.0`. ## Atualizando imagens -A política de pull padrão é `IfNotPresent` que faz com que o +A política padrão de pull é `IfNotPresent` a qual faz com que o {{}} ignore o processo de *pull* da imagem, caso a mesma já exista. Se você prefere sempre forçar o processo de *pull*, você pode fazer como exemplo: @@ -59,9 +58,9 @@ Quando `imagePullPolicy` é definido sem um valor específico, ele também é de ## Multiarquitetura de imagens com índice de imagens -Além de fornecer o binário das imagens, um registro de contêiner também pode servir um [índice de imagem do contêiner](https://github.com/opencontainers/image-spec/blob/master/image-index.md). Um índice de imagem pode apontar para multiplos [manifestos da imagem](https://github.com/opencontainers/image-spec/blob/master/manifest.md) para versões específicas de arquitetura de um contêiner. A ideia é que você possa ter um nome para uma imagem (por exemplo: `pause`, `exemple/meuconteiner`, `kube-apiserver`) e permitir que diferentes sistemas busquem o binário da imagem correta para a arquitetura de máquina que estão usando. +Além de fornecer o binário das imagens, um registro de contêiner também pode servir um [índice de imagem do contêiner](https://github.com/opencontainers/image-spec/blob/master/image-index.md). Um índice de imagem pode apontar para múltiplos [manifestos da imagem](https://github.com/opencontainers/image-spec/blob/master/manifest.md) para versões específicas de arquitetura de um contêiner. A ideia é que você possa ter um nome para uma imagem (por exemplo: `pause`, `exemple/meuconteiner`, `kube-apiserver`) e permitir que diferentes sistemas busquem o binário da imagem correta para a arquitetura de máquina que estão usando. -O próprio Kubernetes normalmente nomeia as imagens de contêiner com o sufixo `- $ (ARCH)`. Para retrocompatibilidade, gere as imagens mais antigas com sufixos. A ideia é gerar a imagem `pause` que tem o manifesto para todas as arquiteturas e `pause-amd64` que é retrocompatível com as configurações anteriores ou arquivos YAML que podem ter codificado as imagens com sufixos. +O próprio Kubernetes normalmente nomeia as imagens de contêiner com o sufixo `-$(ARCH)`. Para retrocompatibilidade, gere as imagens mais antigas com sufixos. A ideia é gerar a imagem `pause` que tem o manifesto para todas as arquiteturas e `pause-amd64` que é retrocompatível com as configurações anteriores ou arquivos YAML que podem ter codificado as imagens com sufixos. ## Usando um registro privado @@ -165,8 +164,8 @@ Em caso de falha, a saída é semelhante a: Você deve garantir que todos os nós no cluster tenham o mesmo `.docker/config.json`. Caso contrário, os pods serão executados com sucesso em alguns nós e falharão em outros. Por exemplo, se você usar o escalonamento automático de nós, cada modelo de instância precisa incluir o `.docker/config.json` ou montar um drive que o contenha. -Todos os pods terão premissão de leitura às imagens em qualquer registro privado, uma vez privado -as chaves de registro são adicionadas ao `.docker/config.json`. +Todos os pods terão premissão de leitura às imagens em qualquer registro privado, uma vez que +as chaves privadas do registro são adicionadas ao `.docker/config.json`. ### Imagens pré-obtidas @@ -252,7 +251,7 @@ em um recurso de [ServiceAccount](/docs/tasks/configure-pod-container/configure- Verifique [Adicionar ImagePullSecrets a uma conta de serviço](/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account) para obter instruções detalhadas. Você pode usar isso em conjunto com um `.docker / config.json` por nó. As credenciais -será mesclado. +serão mescladas. ## Casos de uso @@ -274,10 +273,10 @@ casos de uso comuns e soluções sugeridas. - Funcionará melhor com o escalonamento automático do cluster do que com a configuração manual de nós. - Ou, em um cluster onde alterar a configuração do nó é inconveniente, use `imagePullSecrets`. 1. Cluster com imagens proprietárias, algumas das quais requerem controle de acesso mais rígido. - - Certifique-se de [controlador de admissão AlwaysPullImages] (/ docs / reference / access-authn-authz / admission-controllers / # alwayspullimages) está ativo. Caso contrário, todos os pods têm potencialmente acesso a todas as imagens. + - Certifique-se de que o [controlador de admissão AlwaysPullImages](/docs/reference/access-authn-authz/admission-controllers/#alwayspullimages) está ativo. Caso contrário, todos os pods têm potencialmente acesso a todas as imagens. - Mova dados confidenciais para um recurso "secreto", em vez de empacotá-los em uma imagem. 1. Um cluster multilocatário em que cada locatário precisa de seu próprio registro privado. - - Certifique-se de [controlador de admissão AlwaysPullImages](/docs/reference/access-authn-authz/admission-controllers/#alwayspullimages) está ativo. Caso contrário, todos os Pods de todos os locatários terão potencialmente acesso a todas as imagens. + - Certifique-se de que o [controlador de admissão AlwaysPullImages](/docs/reference/access-authn-authz/admission-controllers/#alwayspullimages) está ativo. Caso contrário, todos os Pods de todos os locatários terão potencialmente acesso a todas as imagens. - Execute um registro privado com autorização necessária. - Gere credenciais de registro para cada locatário, coloque em segredo e preencha o segredo para cada namespace de locatário. - O locatário adiciona esse segredo a imagePullSecrets de cada namespace. @@ -288,4 +287,4 @@ O Kubelet mesclará qualquer `imagePullSecrets` em um único `.docker/config.jso ## {{% heading "whatsnext" %}} -* Read the [OCI Image Manifest Specification](https://github.com/opencontainers/image-spec/blob/master/manifest.md) \ No newline at end of file +* Leia a [OCI Image Manifest Specification](https://github.com/opencontainers/image-spec/blob/master/manifest.md) \ No newline at end of file From 99e46a58b4c78db96ba52620e7a9a0912dd90665 Mon Sep 17 00:00:00 2001 From: Bridget Kromhout Date: Fri, 5 Mar 2021 03:49:15 -0600 Subject: [PATCH 101/788] Clarifying dual-stack as default in 1.21. Signed-off-by: Bridget Kromhout --- .../en/docs/concepts/services-networking/dual-stack.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/content/en/docs/concepts/services-networking/dual-stack.md b/content/en/docs/concepts/services-networking/dual-stack.md index 9bdc756b35..1fcaea4219 100644 --- a/content/en/docs/concepts/services-networking/dual-stack.md +++ b/content/en/docs/concepts/services-networking/dual-stack.md @@ -18,9 +18,9 @@ weight: 70 {{< feature-state for_k8s_version="v1.21" state="beta" >}} - IPv4/IPv6 dual-stack enables the allocation of both IPv4 and IPv6 addresses to {{< glossary_tooltip text="Pods" term_id="pod" >}} and {{< glossary_tooltip text="Services" term_id="service" >}}. +IPv4/IPv6 dual-stack networking enables the allocation of both IPv4 and IPv6 addresses to {{< glossary_tooltip text="Pods" term_id="pod" >}} and {{< glossary_tooltip text="Services" term_id="service" >}}. -If you enable IPv4/IPv6 dual-stack networking for your Kubernetes cluster, the cluster will support the simultaneous assignment of both IPv4 and IPv6 addresses. +IPv4/IPv6 dual-stack networking is enabled by default for your Kubernetes cluster starting in 1.21, allowing the simultaneous assignment of both IPv4 and IPv6 addresses. @@ -28,7 +28,7 @@ If you enable IPv4/IPv6 dual-stack networking for your Kubernetes cluster, the c ## Supported Features -Enabling IPv4/IPv6 dual-stack on your Kubernetes cluster provides the following features: +IPv4/IPv6 dual-stack on your Kubernetes cluster provides the following features: * Dual-stack Pod networking (a single IPv4 and IPv6 address assignment per Pod) * IPv4 and IPv6 enabled Services @@ -47,6 +47,8 @@ The following prerequisites are needed in order to utilize IPv4/IPv6 dual-stack ## Configure IPv4/IPv6 dual-stack +To use IPv4/IPv6 dual-stack, ensure the `IPv6DualStack` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/) is enabled for the relevant components of your cluster. (Starting in 1.21, IPv4/IPv6 dual-stack defaults to enabled.) + To configure IPv4/IPv6 dual-stack, set dual-stack cluster network assignments: * kube-apiserver: @@ -63,7 +65,7 @@ An example of an IPv4 CIDR: `10.244.0.0/16` (though you would supply your own ad An example of an IPv6 CIDR: `fdXY:IJKL:MNOP:15::/64` (this shows the format but is not a valid address - see [RFC 4193](https://tools.ietf.org/html/rfc4193)) -Starting in 1.21, IPv4/IPv6 dual-stack defaults to true. +Starting in 1.21, IPv4/IPv6 dual-stack defaults to enabled. You can disable it when necessary by specifying `--feature-gates="IPv6DualStack=false"` on the kube-apiserver, kube-controller-manager, kubelet, and kube-proxy command line. {{< /note >}} From b3ac1021a91c2db84a71527cb759820fa14281f7 Mon Sep 17 00:00:00 2001 From: timyinshi Date: Fri, 5 Mar 2021 22:29:24 +0800 Subject: [PATCH 102/788] modify the error chinese word Signed-off-by: timyinshi --- content/zh/docs/concepts/workloads/controllers/job.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/zh/docs/concepts/workloads/controllers/job.md b/content/zh/docs/concepts/workloads/controllers/job.md index 06853f27b7..6180d3bd28 100644 --- a/content/zh/docs/concepts/workloads/controllers/job.md +++ b/content/zh/docs/concepts/workloads/controllers/job.md @@ -169,7 +169,7 @@ A Job also needs a [`.spec` section](https://git.k8s.io/community/contributors/d ## 编写 Job 规约 与 Kubernetes 中其他资源的配置类似,Job 也需要 `apiVersion`、`kind` 和 `metadata` 字段。 -Job 的名字必须时合法的 [DNS 子域名](/zh/docs/concepts/overview/working-with-objects/names#dns-subdomain-names)。 +Job 的名字必须是合法的 [DNS 子域名](/zh/docs/concepts/overview/working-with-objects/names#dns-subdomain-names)。 Job 配置还需要一个[`.spec` 节](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status)。 @@ -565,7 +565,7 @@ more information, see the documentation for [TTL controller](/docs/concepts/workloads/controllers/ttlafterfinished/) for finished resources. --> -Job `pi-with-ttl` 在结束 100 秒之后,可以成为被自动删除的标的。 +Job `pi-with-ttl` 在结束 100 秒之后,可以成为被自动删除的对象。 如果该字段设置为 `0`,Job 在结束之后立即成为可被自动删除的对象。 如果该字段没有设置,Job 不会在结束之后被 TTL 控制器自动清除。 From e7a25a823cc8e537ee0518bb214a38e1493cea5c Mon Sep 17 00:00:00 2001 From: Kenichi Omichi Date: Fri, 5 Mar 2021 22:44:47 +0000 Subject: [PATCH 103/788] Replace redirect links of kubeadm /docs/reference/setup-tools/kubeadm/kubeadm/ is redirected to /docs/reference/setup-tools/kubeadm/ This replaces the redirect links of kubeadm with the direct links. --- .../2018-08-03-make-kubernetes-production-grade-anywhere.md | 2 +- .../2018-12-03-kubernetes-1-13-release-announcement.md | 2 +- content/en/docs/setup/best-practices/certificates.md | 6 +++--- .../tools/kubeadm/create-cluster-kubeadm.md | 2 +- .../en/docs/setup/production-environment/tools/kubespray.md | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/content/en/blog/_posts/2018-08-03-make-kubernetes-production-grade-anywhere.md b/content/en/blog/_posts/2018-08-03-make-kubernetes-production-grade-anywhere.md index 024506a2de..a28196d568 100644 --- a/content/en/blog/_posts/2018-08-03-make-kubernetes-production-grade-anywhere.md +++ b/content/en/blog/_posts/2018-08-03-make-kubernetes-production-grade-anywhere.md @@ -176,7 +176,7 @@ Cluster-distributed stateful services (e.g., Cassandra) can benefit from splitti [Logs](/docs/concepts/cluster-administration/logging/) and [metrics](/docs/tasks/debug-application-cluster/resource-usage-monitoring/) (if collected and persistently retained) are valuable to diagnose outages, but given the variety of technologies available it will not be addressed in this blog. If Internet connectivity is available, it may be desirable to retain logs and metrics externally at a central location. -Your production deployment should utilize an automated installation, configuration and update tool (e.g., [Ansible](https://github.com/kubernetes-incubator/kubespray), [BOSH](https://github.com/cloudfoundry-incubator/kubo-deployment), [Chef](https://github.com/chef-cookbooks/kubernetes), [Juju](/docs/getting-started-guides/ubuntu/installation/), [kubeadm](/docs/reference/setup-tools/kubeadm/kubeadm/), [Puppet](https://forge.puppet.com/puppetlabs/kubernetes), etc.). A manual process will have repeatability issues, be labor intensive, error prone, and difficult to scale. [Certified distributions](https://www.cncf.io/certification/software-conformance/#logos) are likely to include a facility for retaining configuration settings across updates, but if you implement your own install and config toolchain, then retention, backup and recovery of the configuration artifacts is essential. Consider keeping your deployment components and settings under a version control system such as Git. +Your production deployment should utilize an automated installation, configuration and update tool (e.g., [Ansible](https://github.com/kubernetes-incubator/kubespray), [BOSH](https://github.com/cloudfoundry-incubator/kubo-deployment), [Chef](https://github.com/chef-cookbooks/kubernetes), [Juju](/docs/getting-started-guides/ubuntu/installation/), [kubeadm](/docs/reference/setup-tools/kubeadm/), [Puppet](https://forge.puppet.com/puppetlabs/kubernetes), etc.). A manual process will have repeatability issues, be labor intensive, error prone, and difficult to scale. [Certified distributions](https://www.cncf.io/certification/software-conformance/#logos) are likely to include a facility for retaining configuration settings across updates, but if you implement your own install and config toolchain, then retention, backup and recovery of the configuration artifacts is essential. Consider keeping your deployment components and settings under a version control system such as Git. ## Outage recovery diff --git a/content/en/blog/_posts/2018-12-03-kubernetes-1-13-release-announcement.md b/content/en/blog/_posts/2018-12-03-kubernetes-1-13-release-announcement.md index 247bfa2c8d..8aba0dc232 100644 --- a/content/en/blog/_posts/2018-12-03-kubernetes-1-13-release-announcement.md +++ b/content/en/blog/_posts/2018-12-03-kubernetes-1-13-release-announcement.md @@ -17,7 +17,7 @@ Let’s dive into the key features of this release: ## Simplified Kubernetes Cluster Management with kubeadm in GA -Most people who have gotten hands-on with Kubernetes have at some point been hands-on with kubeadm. It's an essential tool for managing the cluster lifecycle, from creation to configuration to upgrade; and now kubeadm is officially GA. [kubeadm](/docs/reference/setup-tools/kubeadm/kubeadm/) handles the bootstrapping of production clusters on existing hardware and configuring the core Kubernetes components in a best-practice-manner to providing a secure yet easy joining flow for new nodes and supporting easy upgrades. What’s notable about this GA release are the now graduated advanced features, specifically around pluggability and configurability. The scope of kubeadm is to be a toolbox for both admins and automated, higher-level system and this release is a significant step in that direction. +Most people who have gotten hands-on with Kubernetes have at some point been hands-on with kubeadm. It's an essential tool for managing the cluster lifecycle, from creation to configuration to upgrade; and now kubeadm is officially GA. [kubeadm](/docs/reference/setup-tools/kubeadm/) handles the bootstrapping of production clusters on existing hardware and configuring the core Kubernetes components in a best-practice-manner to providing a secure yet easy joining flow for new nodes and supporting easy upgrades. What’s notable about this GA release are the now graduated advanced features, specifically around pluggability and configurability. The scope of kubeadm is to be a toolbox for both admins and automated, higher-level system and this release is a significant step in that direction. ## Container Storage Interface (CSI) Goes GA diff --git a/content/en/docs/setup/best-practices/certificates.md b/content/en/docs/setup/best-practices/certificates.md index a065462baf..1648cc4e9e 100644 --- a/content/en/docs/setup/best-practices/certificates.md +++ b/content/en/docs/setup/best-practices/certificates.md @@ -9,7 +9,7 @@ weight: 40 Kubernetes requires PKI certificates for authentication over TLS. -If you install Kubernetes with [kubeadm](/docs/reference/setup-tools/kubeadm/kubeadm/), the certificates that your cluster requires are automatically generated. +If you install Kubernetes with [kubeadm](/docs/reference/setup-tools/kubeadm/), the certificates that your cluster requires are automatically generated. You can also generate your own certificates -- for example, to keep your private keys more secure by not storing them on the API server. This page explains the certificates that your cluster requires. @@ -74,7 +74,7 @@ Required certificates: | kube-apiserver-kubelet-client | kubernetes-ca | system:masters | client | | | front-proxy-client | kubernetes-front-proxy-ca | | client | | -[1]: any other IP or DNS name you contact your cluster on (as used by [kubeadm](/docs/reference/setup-tools/kubeadm/kubeadm/) +[1]: any other IP or DNS name you contact your cluster on (as used by [kubeadm](/docs/reference/setup-tools/kubeadm/) the load balancer stable IP and/or DNS name, `kubernetes`, `kubernetes.default`, `kubernetes.default.svc`, `kubernetes.default.svc.cluster`, `kubernetes.default.svc.cluster.local`) @@ -100,7 +100,7 @@ For kubeadm users only: ### Certificate paths -Certificates should be placed in a recommended path (as used by [kubeadm](/docs/reference/setup-tools/kubeadm/kubeadm/)). +Certificates should be placed in a recommended path (as used by [kubeadm](/docs/reference/setup-tools/kubeadm/)). Paths should be specified using the given argument regardless of location. | Default CN | recommended key path | recommended cert path | command | key argument | cert argument | 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 6516a18825..a9b37e8167 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 @@ -137,7 +137,7 @@ is not supported by kubeadm. ### More information -For more information about `kubeadm init` arguments, see the [kubeadm reference guide](/docs/reference/setup-tools/kubeadm/kubeadm/). +For more information about `kubeadm init` arguments, see the [kubeadm reference guide](/docs/reference/setup-tools/kubeadm/). To configure `kubeadm init` with a configuration file see [Using kubeadm init with a configuration file](/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file). diff --git a/content/en/docs/setup/production-environment/tools/kubespray.md b/content/en/docs/setup/production-environment/tools/kubespray.md index ac635101a0..4fac65ab88 100644 --- a/content/en/docs/setup/production-environment/tools/kubespray.md +++ b/content/en/docs/setup/production-environment/tools/kubespray.md @@ -23,7 +23,7 @@ Kubespray is a composition of [Ansible](https://docs.ansible.com/) playbooks, [i * 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/reference/setup-tools/kubeadm/kubeadm/) and [kops](/docs/setup/production-environment/tools/kops/). +[kubeadm](/docs/reference/setup-tools/kubeadm/) and [kops](/docs/setup/production-environment/tools/kops/). From 6c60620ad437d1be284a194e2e950f2890a1c636 Mon Sep 17 00:00:00 2001 From: Sergey Kanzhelev Date: Sat, 6 Mar 2021 06:42:10 +0000 Subject: [PATCH 104/788] added note about the name being an identifier --- .../en/docs/concepts/overview/working-with-objects/names.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/content/en/docs/concepts/overview/working-with-objects/names.md b/content/en/docs/concepts/overview/working-with-objects/names.md index bc89d1c30a..a74b59c71a 100644 --- a/content/en/docs/concepts/overview/working-with-objects/names.md +++ b/content/en/docs/concepts/overview/working-with-objects/names.md @@ -24,6 +24,10 @@ For non-unique user-provided attributes, Kubernetes provides [labels](/docs/conc {{< glossary_definition term_id="name" length="all" >}} +{{< note >}} +In cases when objects represent a physical entity (like Node represent a physical host), when host is re-created under the same name without deleting and re-creating a Node, Kubernetes will treat it as a same thing, which may lead to inconsistencies. +{{< /note >}} + Below are three types of commonly used name constraints for resources. ### DNS Subdomain Names From 7a5da05b9569fe130fcc54c03e3c01b8029b4d5c Mon Sep 17 00:00:00 2001 From: Sergey Kanzhelev Date: Sat, 6 Mar 2021 07:15:20 +0000 Subject: [PATCH 105/788] add inconistency message to Nodes page as well --- content/en/docs/concepts/architecture/nodes.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/content/en/docs/concepts/architecture/nodes.md b/content/en/docs/concepts/architecture/nodes.md index 7bd4b355b6..cd2c2291c5 100644 --- a/content/en/docs/concepts/architecture/nodes.md +++ b/content/en/docs/concepts/architecture/nodes.md @@ -66,6 +66,15 @@ delete the Node object to stop that health checking. The name of a Node object must be a valid [DNS subdomain name](/docs/concepts/overview/working-with-objects/names#dns-subdomain-names). +{{< note >}} +The [name](/docs/concepts/overview/working-with-objects/names#names) identifies a Node. Two Nodes +cannot have the same name at the same time. Kubernetes also assumes that a resource with the same +name is the same object. In case of a Node, it is implicitly assumed that an instance using the +same name will have the same state (e.g. network settings, root disk contents). This may lead to +inconsistencies if instance was altered without the change of a name or deleting and re-creating the +Node object from API server. +{{< /note >}} + ### Self-registration of Nodes When the kubelet flag `--register-node` is true (the default), the kubelet will attempt to From 3d384aca2da39f5fb7649cd975c6e75ee8a4d7a5 Mon Sep 17 00:00:00 2001 From: Naoki Oketani Date: Sat, 6 Mar 2021 18:30:21 +0900 Subject: [PATCH 106/788] Translate docs/tasks/configmap-secret/managing-secret-using-kubectl/ into Japanese --- .../ja/docs/tasks/configmap-secret/_index.md | 6 + .../managing-secret-using-kubectl.md | 146 ++++++++++++++++++ 2 files changed, 152 insertions(+) create mode 100755 content/ja/docs/tasks/configmap-secret/_index.md create mode 100644 content/ja/docs/tasks/configmap-secret/managing-secret-using-kubectl.md diff --git a/content/ja/docs/tasks/configmap-secret/_index.md b/content/ja/docs/tasks/configmap-secret/_index.md new file mode 100755 index 0000000000..18a8018ce5 --- /dev/null +++ b/content/ja/docs/tasks/configmap-secret/_index.md @@ -0,0 +1,6 @@ +--- +title: "Secretの管理" +weight: 28 +description: Secretを使用した機密設定データの管理 +--- + diff --git a/content/ja/docs/tasks/configmap-secret/managing-secret-using-kubectl.md b/content/ja/docs/tasks/configmap-secret/managing-secret-using-kubectl.md new file mode 100644 index 0000000000..fb8c89c1e3 --- /dev/null +++ b/content/ja/docs/tasks/configmap-secret/managing-secret-using-kubectl.md @@ -0,0 +1,146 @@ +--- +title: kubectlを使用してSecretを管理する +content_type: task +weight: 10 +description: kubectlコマンドラインを使用してSecretを作成する +--- + + + +## {{% heading "prerequisites" %}} + +{{< include "task-tutorial-prereqs.md" >}} + + + +## Secretを作成する + +`Secret`はデータベースにアクセスするためにPodが必要とするユーザー資格情報を含めることができます。 +たとえば、データベース接続文字列はユーザー名とパスワードで構成されます。 +ユーザー名はローカルマシンの`./username.txt`に、パスワードは`./password.txt`に保存します。 + +```shell +echo -n 'admin' > ./username.txt +echo -n '1f2d1e2e67df' > ./password.txt +``` + +上記の2つのコマンドの`-n`フラグは、生成されたファイルにテキスト末尾の余分な改行文字が含まれないようにします。 +`kubectl`がファイルを読み取り、内容をbase64文字列にエンコードすると、余分な改行文字もエンコードされるため、これは重要です。 + +`kubectl create secret`コマンドはこれらのファイルをSecretにパッケージ化し、APIサーバー上にオブジェクトを作成します。 + +```shell +kubectl create secret generic db-user-pass \ + --from-file=./username.txt \ + --from-file=./password.txt +``` + +出力は次のようになります: + +``` +secret/db-user-pass created +``` + +ファイル名がデフォルトのキー名になります。オプションで`--from-file=[key=]source`を使用してキー名を設定できます。たとえば: + +```shell +kubectl create secret generic db-user-pass \ + --from-file=username=./username.txt \ + --from-file=password=./password.txt +``` + +`--from-file`に指定したファイルに含まれるパスワードの特殊文字をエスケープする必要はありません。 + +また、`--from-literal==`タグを使用してSecretデータを提供することもできます。 +このタグは、複数のキーと値のペアを提供するために複数回指定することができます。 +`$`、`\`、`*`、`=`、`!`などの特殊文字は[シェル](https://en.wikipedia.org/wiki/Shell_(computing))によって解釈されるため、エスケープを必要とすることに注意してください。 +ほとんどのシェルでは、パスワードをエスケープする最も簡単な方法は、シングルクォート(`'`)で囲むことです。 +たとえば、実際のパスワードが`S!B\*d$zDsb=`の場合、次のようにコマンドを実行します: + +```shell +kubectl create secret generic dev-db-secret \ + --from-literal=username=devuser \ + --from-literal=password='S!B\*d$zDsb=' +``` + +## Secretを検証する + +Secretが作成されたことを確認できます: + +```shell +kubectl get secrets +``` + +出力は次のようになります: + +``` +NAME TYPE DATA AGE +db-user-pass Opaque 2 51s +``` + +`Secret`の説明を参照できます: + +```shell +kubectl describe secrets/db-user-pass +``` + +出力は次のようになります: + +``` +Name: db-user-pass +Namespace: default +Labels: +Annotations: + +Type: Opaque + +Data +==== +password: 12 bytes +username: 5 bytes +``` + +`kubectl get`と`kubectl describe`コマンドはデフォルトでは`Secret`の内容を表示しません。 +これは、`Secret`が不用意に他人にさらされたり、ターミナルログに保存されたりしないようにするためです。 + +## Secretをデコードする {#decoding-secret} + +先ほど作成したSecretの内容を見るには、以下のコマンドを実行します: + +```shell +kubectl get secret db-user-pass -o jsonpath='{.data}' +``` + +出力は次のようになります: + +```json +{"password.txt":"MWYyZDFlMmU2N2Rm","username.txt":"YWRtaW4="} +``` + +`password.txt`のデータをデコードします: + +```shell +echo 'MWYyZDFlMmU2N2Rm' | base64 --decode +``` + +出力は次のようになります: + +``` +1f2d1e2e67df +``` + +## クリーンアップ + +作成したSecretを削除するには次のコマンドを実行します: + +```shell +kubectl delete secret db-user-pass +``` + + + +## {{% heading "whatsnext" %}} + +- [Secretのコンセプト](/ja/docs/concepts/configuration/secret/)を読む +- [設定ファイルを使用してSecretを管理する](/docs/tasks/configmap-secret/managing-secret-using-config-file/)方法を知る +- [kustomizeを使用してSecretを管理する](/docs/tasks/configmap-secret/managing-secret-using-kustomize/)方法を知る From 5e6da7d39712f0ead6cd36ca128e80ba28be9534 Mon Sep 17 00:00:00 2001 From: luzg Date: Wed, 3 Mar 2021 16:25:18 +0800 Subject: [PATCH 107/788] [zh] translate task certificates --- .../tasks/administer-cluster/certificates.md | 366 ++++++++++++++++++ 1 file changed, 366 insertions(+) create mode 100644 content/zh/docs/tasks/administer-cluster/certificates.md diff --git a/content/zh/docs/tasks/administer-cluster/certificates.md b/content/zh/docs/tasks/administer-cluster/certificates.md new file mode 100644 index 0000000000..a61ad671c0 --- /dev/null +++ b/content/zh/docs/tasks/administer-cluster/certificates.md @@ -0,0 +1,366 @@ +--- +title: 证书 +content_type: task +weight: 20 +--- + + + + + +在使用客户端证书认证的场景下,你可以通过 `easyrsa`、`openssl` 或 `cfssl` 等工具以手工方式生成证书。 + + + +### easyrsa + + +**easyrsa** 支持以手工方式为你的集群生成证书。 + + +1. 下载、解压、初始化打过补丁的 easyrsa3。 + + curl -LO https://storage.googleapis.com/kubernetes-release/easy-rsa/easy-rsa.tar.gz + tar xzf easy-rsa.tar.gz + cd easy-rsa-master/easyrsa3 + ./easyrsa init-pki + + +1. 生成新的证书颁发机构(CA)。参数 `--batch` 用于设置自动模式; + 参数 `--req-cn` 用于设置新的根证书的通用名称(CN)。 + + ./easyrsa --batch "--req-cn=${MASTER_IP}@`date +%s`" build-ca nopass + + +1. 生成服务器证书和秘钥。 + 参数 `--subject-alt-name` 设置 API 服务器的 IP 和 DNS 名称。 + `MASTER_CLUSTER_IP` 用于 API 服务器和控制管理器,通常取 CIDR 的第一个 IP,由 `--service-cluster-ip-range` 的参数提供。 + 参数 `--days` 用于设置证书的过期时间。 + 下面的示例假定你的默认 DNS 域名为 `cluster.local`。 + + ./easyrsa --subject-alt-name="IP:${MASTER_IP},"\ + "IP:${MASTER_CLUSTER_IP},"\ + "DNS:kubernetes,"\ + "DNS:kubernetes.default,"\ + "DNS:kubernetes.default.svc,"\ + "DNS:kubernetes.default.svc.cluster,"\ + "DNS:kubernetes.default.svc.cluster.local" \ + --days=10000 \ + build-server-full server nopass + + +1. 拷贝文件 `pki/ca.crt`、`pki/issued/server.crt` 和 `pki/private/server.key` 到你的目录中。 +1. 在 API 服务器的启动参数中添加以下参数: + + --client-ca-file=/yourdirectory/ca.crt + --tls-cert-file=/yourdirectory/server.crt + --tls-private-key-file=/yourdirectory/server.key + +### openssl + + +**openssl** 支持以手工方式为你的集群生成证书。 + + +1. 生成一个 2048 位的 ca.key 文件 + + openssl genrsa -out ca.key 2048 + + +1. 在 ca.key 文件的基础上,生成 ca.crt 文件(用参数 -days 设置证书有效期) + + openssl req -x509 -new -nodes -key ca.key -subj "/CN=${MASTER_IP}" -days 10000 -out ca.crt + + +1. 生成一个 2048 位的 server.key 文件: + + openssl genrsa -out server.key 2048 + + +1. 创建一个用于生成证书签名请求(CSR)的配置文件。 + 保存文件(例如:`csr.conf`)前,记得用真实值替换掉尖括号中的值(例如:``)。 + 注意:`MASTER_CLUSTER_IP` 就像前一小节所述,它的值是 API 服务器的服务集群 IP。 + 下面的例子假定你的默认 DNS 域名为 `cluster.local`。 + + [ req ] + default_bits = 2048 + prompt = no + default_md = sha256 + req_extensions = req_ext + distinguished_name = dn + + [ dn ] + C = + ST = + L = + O = + OU = + CN = + + [ req_ext ] + subjectAltName = @alt_names + + [ alt_names ] + DNS.1 = kubernetes + DNS.2 = kubernetes.default + DNS.3 = kubernetes.default.svc + DNS.4 = kubernetes.default.svc.cluster + DNS.5 = kubernetes.default.svc.cluster.local + IP.1 = + IP.2 = + + [ v3_ext ] + authorityKeyIdentifier=keyid,issuer:always + basicConstraints=CA:FALSE + keyUsage=keyEncipherment,dataEncipherment + extendedKeyUsage=serverAuth,clientAuth + subjectAltName=@alt_names + + +1. 基于上面的配置文件生成证书签名请求: + + openssl req -new -key server.key -out server.csr -config csr.conf + + +1. 基于 ca.key、ca.key 和 server.csr 等三个文件生成服务端证书: + + openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key \ + -CAcreateserial -out server.crt -days 10000 \ + -extensions v3_ext -extfile csr.conf + + +1. 查看证书: + + openssl x509 -noout -text -in ./server.crt + + +最后,为 API 服务器添加相同的启动参数。 + +### cfssl + + +**cfssl** 是另一个用于生成证书的工具。 + + +1. 下载、解压并准备如下所示的命令行工具。 + 注意:你可能需要根据所用的硬件体系架构和 cfssl 版本调整示例命令。 + + curl -L https://github.com/cloudflare/cfssl/releases/download/v1.5.0/cfssl_1.5.0_linux_amd64 -o cfssl + chmod +x cfssl + curl -L https://github.com/cloudflare/cfssl/releases/download/v1.5.0/cfssljson_1.5.0_linux_amd64 -o cfssljson + chmod +x cfssljson + curl -L https://github.com/cloudflare/cfssl/releases/download/v1.5.0/cfssl-certinfo_1.5.0_linux_amd64 -o cfssl-certinfo + chmod +x cfssl-certinfo + + +1. 创建一个目录,用它保存所生成的构件和初始化 cfssl: + + mkdir cert + cd cert + ../cfssl print-defaults config > config.json + ../cfssl print-defaults csr > csr.json + + +1. 创建一个 JSON 配置文件来生成 CA 文件,例如:`ca-config.json`: + + { + "signing": { + "default": { + "expiry": "8760h" + }, + "profiles": { + "kubernetes": { + "usages": [ + "signing", + "key encipherment", + "server auth", + "client auth" + ], + "expiry": "8760h" + } + } + } + } + + +1. 创建一个 JSON 配置文件,用于 CA 证书签名请求(CSR),例如:`ca-csr.json`。 + 确认用你需要的值替换掉尖括号中的值。 + + { + "CN": "kubernetes", + "key": { + "algo": "rsa", + "size": 2048 + }, + "names":[{ + "C": "", + "ST": "", + "L": "", + "O": "", + "OU": "" + }] + } + + +1. 生成 CA 秘钥文件(`ca-key.pem`)和证书文件(`ca.pem`): + + ../cfssl gencert -initca ca-csr.json | ../cfssljson -bare ca + + +1. 创建一个 JSON 配置文件,用来为 API 服务器生成秘钥和证书,例如:`server-csr.json`。 + 确认用你需要的值替换掉尖括号中的值。`MASTER_CLUSTER_IP` 是为 API 服务器 指定的服务集群 IP,就像前面小节描述的那样。 + 以下示例假定你的默认 DSN 域名为`cluster.local`。 + + { + "CN": "kubernetes", + "hosts": [ + "127.0.0.1", + "", + "", + "kubernetes", + "kubernetes.default", + "kubernetes.default.svc", + "kubernetes.default.svc.cluster", + "kubernetes.default.svc.cluster.local" + ], + "key": { + "algo": "rsa", + "size": 2048 + }, + "names": [{ + "C": "", + "ST": "", + "L": "", + "O": "", + "OU": "" + }] + } + + +1. 为 API 服务器生成秘钥和证书,默认会分别存储为`server-key.pem` 和 `server.pem` 两个文件。 + + ../cfssl gencert -ca=ca.pem -ca-key=ca-key.pem \ + --config=ca-config.json -profile=kubernetes \ + server-csr.json | ../cfssljson -bare server + + +## 分发自签名的 CA 证书 + + +客户端节点可能不认可自签名 CA 证书的有效性。 +对于非生产环境,或者运行在公司防火墙后的环境,你可以分发自签名的 CA 证书到所有客户节点,并刷新本地列表以使证书生效。 + +在每一个客户节点,执行以下操作: + +```bash +sudo cp ca.crt /usr/local/share/ca-certificates/kubernetes.crt +sudo update-ca-certificates +``` + +``` +Updating certificates in /etc/ssl/certs... +1 added, 0 removed; done. +Running hooks in /etc/ca-certificates/update.d.... +done. +``` + + +## 证书 API {#certificates-api} + + +你可以通过 `certificates.k8s.io` API 提供 x509 证书,用来做身份验证, +如[本](/zh/docs/tasks/tls/managing-tls-in-a-cluster)文档所述。 + From cffd9c7f3926c2823a73947c0b4695303c0164bc Mon Sep 17 00:00:00 2001 From: joao brito junior Date: Sat, 6 Mar 2021 13:49:42 -0300 Subject: [PATCH 108/788] Add Dont Panic blog post in pt language (#26758) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add Dont Panic blog post in pt language Add Dont Panic blog post in pt language. Partial fix for kubernetes #13939 * Update content/pt/blog/_posts/2020-12-02-dont-panic-kubernetes-and-docker.md Co-authored-by: Tim Bannister * Update content/pt/blog/_posts/2020-12-02-dont-panic-kubernetes-and-docker.md Co-authored-by: Tim Bannister * Update 2020-12-02-dont-panic-kubernetes-and-docker.md typo `:%s/\/Kubernetes/gc` and `:%s/é/e` * Update 2020-12-02-dont-panic-kubernetes-and-docker.md removendo depreciação e arrumando typos * remove enterprise name * Update content/pt/blog/_posts/2020-12-02-dont-panic-kubernetes-and-docker.md Co-authored-by: Tim Bannister Update content/pt/blog/_posts/2020-12-02-dont-panic-kubernetes-and-docker.md Co-authored-by: Tim Bannister Update 2020-12-02-dont-panic-kubernetes-and-docker.md typo `:%s/\/Kubernetes/gc` and `:%s/é/e` Update 2020-12-02-dont-panic-kubernetes-and-docker.md removendo depreciação e arrumando typos remove enterprise name Co-authored-by: Tim Bannister --- ...-12-02-dont-panic-kubernetes-and-docker.md | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 content/pt/blog/_posts/2020-12-02-dont-panic-kubernetes-and-docker.md diff --git a/content/pt/blog/_posts/2020-12-02-dont-panic-kubernetes-and-docker.md b/content/pt/blog/_posts/2020-12-02-dont-panic-kubernetes-and-docker.md new file mode 100644 index 0000000000..ada16762a0 --- /dev/null +++ b/content/pt/blog/_posts/2020-12-02-dont-panic-kubernetes-and-docker.md @@ -0,0 +1,45 @@ +--- +layout: blog +title: "Não entre em pânico: Kubernetes e Docker" +date: 2020-12-02 +slug: dont-panic-kubernetes-and-docker +--- + +**Autores / Autoras**: Jorge Castro, Duffie Cooley, Kat Cosgrove, Justin Garrison, Noah Kantrowitz, Bob Killen, Rey Lejano, Dan “POP” Papandrea, Jeffrey Sica, Davanum “Dims” Srinivas + +**Tradução:** João Brito + +Kubernetes está [deixando de usar Docker](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md#deprecation) como seu agente de execução após a versão v1.20. + +**Não entre em pânico. Não é tão dramático quanto parece.** + +TL;DR Docker como um agente de execução primário está sendo deixado de lado em favor de agentes de execução que utilizam a Interface de Agente de Execução de Containers (Container Runtime Interface "CRI") criada para o Kubernetes. As imagens criadas com o Docker continuarão a funcionar em seu cluster com os agentes atuais, como sempre estiveram. + +Se você é um usuário final de Kubernetes, quase nada mudará para você. Isso não significa a morte do Docker, e isso não significa que você não pode, ou não deva, usar ferramentas Docker em desenvolvimento mais. Docker ainda é uma ferramenta útil para a construção de containers, e as imagens resultantes de executar `docker build` ainda rodarão em seu cluster Kubernetes. + +Se você está usando um Kubernetes gerenciado como GKE, EKS, ou AKS (que usa como [padrão containerd](https://github.com/Azure/AKS/releases/tag/2020-11-16)) você precisará ter certeza que seus nós estão usando um agente de execução de container suportado antes que o suporte ao Docker seja removido nas versões futuras do Kubernetes. Se você tem mudanças em seus nós, talvez você precise atualizá-los baseado em seu ambiente e necessidades do agente de execução. + +Se você está rodando seus próprios clusters, você também precisa fazer mudanças para evitar quebras em seu cluster. Na versão v1.20, você terá o aviso de alerta da perda de suporte ao Docker. Quando o suporte ao agente de execução do Docker for removido em uma versão futura (atualmente planejado para a versão 1.22 no final de 2021) do Kubernetes ele não será mais suportado e você precisará trocar para um dos outros agentes de execução de container compatível, como o containerd ou CRI-O. Mas tenha certeza que esse agente de execução escolhido tenha suporte às configurações do daemon do Docker usadas atualmente (Ex.: logs) + +## Então porque a confusão e toda essa turma surtando? + +Estamos falando aqui de dois ambientes diferentes, e isso está criando essa confusão. Dentro do seu cluster Kubernetes, existe uma coisa chamada de agente de execução de container que é responsável por baixar e executar as imagens de seu container. Docker é a escolha popular para esse agente de execução (outras escolhas comuns incluem containerd e CRI-O), mas Docker não foi projetado para ser embutido no Kubernetes, e isso causa problemas. + +Se liga, o que chamamos de "Docker" não é exatamente uma coisa - é uma stack tecnológica inteira, e uma parte disso é chamado de "containerd", que é o agente de execução de container de alto-nível por si só. Docker é legal e útil porque ele possui muitas melhorias de experiência do usuário e isso o torna realmente fácil para humanos interagirem com ele enquanto estão desenvolvendo, mas essas melhorias para o usuário não são necessárias para o Kubernetes, pois ele não é humano. + +Como resultado dessa camada de abstração amigável aos humanos, seu cluster Kubernetes precisa usar outra ferramenta chamada Dockershim para ter o que ele realmente precisa, que é o containerd. Isso não é muito bom, porque adiciona outra coisa a ser mantida e que pode quebrar. O que está atualmente acontecendo aqui é que o Dockershim está sendo removido do Kubelet assim que que a versão v1.23 for lançada, que remove o suporte ao Docker como agente de execução de container como resultado. Você deve estar pensando, mas se o containerd está incluso na stack do Docker, porque o Kubernetes precisa do Dockershim? + +Docker não é compatível com CRI, a [Container Runtime Interface](https://kubernetes.io/blog/2016/12/container-runtime-interface-cri-in-kubernetes/) (interface do agente de execução de container). Se fosse, nós não precisaríamos do shim, e isso não seria nenhum problema. Mas isso não é o fim do mundo, e você não precisa entrar em pânico - você só precisa mudar seu agente de execução de container do Docker para um outro suportado. + +Uma coisa a ser notada: Se você está contando com o socket do Docker (`/var/run/docker.sock`) como parte do seu fluxo de trabalho em seu cluster hoje, mover para um agente de execução diferente acaba com sua habilidade de usá-lo. Esse modelo é conhecido como Docker em Docker. Existem diversas opções por aí para esse caso específico como o [kaniko](https://github.com/GoogleContainerTools/kaniko), [img](https://github.com/genuinetools/img), e [buildah](https://github.com/containers/buildah). + +## O que essa mudança representa para os desenvolvedores? Ainda escrevemos Dockerfiles? Ainda vamos fazer build com Docker? + +Essa mudança aborda um ambiente diferente do que a maioria das pessoas usa para interagir com Docker. A instalação do Docker que você está usando em desenvolvimento não tem relação com o agente de execução de Docker dentro de seu cluster Kubernetes. É confuso, dá pra entender. +Como desenvolvedor, Docker ainda é útil para você em todas as formas que era antes dessa mudança ser anunciada. A imagem que o Docker cria não é uma imagem específica para Docker e sim uma imagem que segue o padrão OCI ([Open Container Initiative](https://opencontainers.org/)). + +Qualquer imagem compatível com OCI, independente da ferramenta usada para construí-la será vista da mesma forma pelo Kubernetes. Ambos [containerd](https://containerd.io/) e [CRI-O](https://cri-o.io/) sabem como baixar e executá-las. Esse é o porque temos um padrão para containers. + +Então, essa mudança está chegando. Isso irá causar problemas para alguns, mas nada catastrófico, no geral é uma boa coisa. Dependendo de como você interage com o Kubernetes, isso tornará as coisas mais fáceis. Se isso ainda é confuso para você, tudo bem, tem muita coisa rolando aqui; Kubernetes tem um monte de partes móveis, e ninguém é 100% especialista nisso. Nós encorajamos toda e qualquer tipo de questão independente do nível de experiência ou de complexidade! Nosso objetivo é ter certeza que todos estão entendendo o máximo possível as mudanças que estão chegando. Esperamos que isso tenha respondido a maioria de suas questões e acalmado algumas ansiedades! ❤️ + +Procurando mais respostas? Dê uma olhada em nosso apanhado de [questões quanto ao desuso do Dockershim](/blog/2020/12/02/dockershim-faq/). From de87f4501b91374e4b5396c0d7344fde1b0caa2f Mon Sep 17 00:00:00 2001 From: edsoncelio Date: Sat, 6 Mar 2021 20:01:19 -0300 Subject: [PATCH 109/788] Add content/pt/docs/concepts/containers/container-environment.md --- .../concepts/containers/container-environment.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/content/pt/docs/concepts/containers/container-environment.md b/content/pt/docs/concepts/containers/container-environment.md index 2b879eeb12..8670f0fdc4 100644 --- a/content/pt/docs/concepts/containers/container-environment.md +++ b/content/pt/docs/concepts/containers/container-environment.md @@ -2,7 +2,7 @@ reviewers: - femrtnz - jcjesus -title: Ambiente de contêiner +title: Ambiente de Contêiner content_type: concept weight: 20 --- @@ -25,17 +25,17 @@ O ambiente de contêiner do Kubernetes fornece recursos importantes para contêi ### Informação de contêiner -O _hostname_ de um contêiner é o nome do pod em que o contîner está executando. -Isso é disponível através do comando `hostname` ou da função [`gethostname`](https://man7.org/linux/man-pages/man2/gethostname.2.html) chamada na libc. +O _hostname_ de um contêiner é o nome do Pod em que o contêiner está executando. +Isso é disponibilizado através do comando `hostname` ou da função [`gethostname`](https://man7.org/linux/man-pages/man2/gethostname.2.html) chamada na libc. -O nome do pod e o namespace sáo disponíveis como variáveis de ambiente atráves do [downward API](/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/). +O nome do Pod e o Namespace são disponibilizados como variáveis de ambiente através do [downward API](/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/). -Variáveis de ambiente definidas pelo usuário a partir da definição do pod também são disponíveis para o contêiner, assim como qualquer variável de ambiente especificada estáticamente na imagem Docker. +Variáveis de ambiente definidas pelo usuário a partir da definição do Pod também são disponíveis para o contêiner, assim como qualquer variável de ambiente especificada estáticamente na imagem Docker. ### Informação do cluster -Uma lista de todos os serviços que estáo executando quando um contêiner é criado é disponibilizada para o contêiner como variáveis de ambiente. -Essas variáveis de ambiente correspondem a sintaxa dos links Docker. +Uma lista de todos os serviços que estão executando quando um contêiner é criado é disponibilizada para o contêiner como variáveis de ambiente. +Essas variáveis de ambiente correspondem a sintaxe dos links Docker. Para um serviço nomeado *foo* que mapeia para um contêiner nomeado *bar*, as seguintes variáveis são definidas: @@ -45,7 +45,7 @@ FOO_SERVICE_PORT= ``` Serviços possuem endereço IP dedicado e são disponibilizados para o contêiner via DNS, -se possuirem [DNS addon](https://releases.k8s.io/{{< param "githubbranch" >}}/cluster/addons/dns/) habilitado. +se possuírem [DNS addon](https://releases.k8s.io/{{< param "githubbranch" >}}/cluster/addons/dns/) habilitado. From 7bc3a7d809c5c46b0451bc11447d59d029e2b324 Mon Sep 17 00:00:00 2001 From: colstuwjx Date: Sun, 7 Mar 2021 09:11:49 +0800 Subject: [PATCH 110/788] feat: add print directive allows print sections. --- config.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.toml b/config.toml index d77c315331..04329284d8 100644 --- a/config.toml +++ b/config.toml @@ -91,7 +91,7 @@ blog = "/:section/:year/:month/:day/:slug/" [outputs] home = [ "HTML", "RSS", "HEADERS" ] page = [ "HTML"] -section = [ "HTML"] +section = [ "HTML", "print" ] # Add a "text/netlify" media type for auto-generating the _headers file [mediaTypes] From ed5fd4a7e7d522ea2d9f2c93f326f48ff59547d1 Mon Sep 17 00:00:00 2001 From: ydFu Date: Sun, 7 Mar 2021 15:30:32 +0800 Subject: [PATCH 111/788] [zh] Sync setup pages for manage-kubernetes-objects\kustomization.md * Sync with english version in 'chore: fix an invalid location.hash (#26835)' Signed-off-by: ydFu --- .../zh/docs/tasks/manage-kubernetes-objects/kustomization.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/zh/docs/tasks/manage-kubernetes-objects/kustomization.md b/content/zh/docs/tasks/manage-kubernetes-objects/kustomization.md index e3093d64d9..07cda09588 100644 --- a/content/zh/docs/tasks/manage-kubernetes-objects/kustomization.md +++ b/content/zh/docs/tasks/manage-kubernetes-objects/kustomization.md @@ -13,10 +13,10 @@ weight: 20 [Kustomize](https://github.com/kubernetes-sigs/kustomize) 是一个独立的工具,用来通过 -[kustomization 文件](https://kubernetes-sigs.github.io/kustomize/api-reference/glossary/#kustomization) +[kustomization 文件](https://kubectl.docs.kubernetes.io/references/kustomize/glossary/#kustomization) 定制 Kubernetes 对象。 - `volumeHandle`:唯一标识卷的字符串值。 该值必须与 CSI 驱动在 `CreateVolumeResponse` 的 `volume_id` 字段中返回的值相对应; - 接口定义在 [CSI spec](https://github.com/container-storageinterface/spec/blob/master/spec.md#createvolume) 中。 + 接口定义在 [CSI spec](https://github.com/container-storage-interface/spec/blob/master/spec.md#createvolume) 中。 在所有对 CSI 卷驱动程序的调用中,引用该 CSI 卷时都使用此值作为 `volume_id` 参数。 + +{{< feature-state for_k8s_version="v1.14" state="stable" >}} + +[Pod](/docs/concepts/workloads/pods/)は _priority_(優先度)を持つことができます。 +優先度は他のPodに対する相対的なPodの重要度を示します。 +もしPodをスケジューリングできないときには、スケジューラーはそのPodをスケジューリングできるようにするため、優先度の低いPodをプリエンプトする(追い出す)ことを試みます。 + + + + + + +{{< warning >}} +クラスターの全てのユーザーが信用されていない場合、悪意のあるユーザーが可能な範囲で最も高い優先度のPodを作成することが可能です。これは他のPodが追い出されたりスケジューリングできない状態を招きます。 +管理者はResourceQuotaを使用して、ユーザーがPodを高い優先度で作成することを防ぐことができます。 + +詳細は[デフォルトで優先度クラスの消費を制限する](/docs/concepts/policy/resource-quotas/#limit-priority-class-consumption-by-default) +を参照してください。 +{{< /warning >}} + +## 優先度とプリエンプションを使う方法 + +優先度とプリエンプションを使うには、 + +1. 1つまたは複数の[PriorityClass](#priorityclass)を追加します + +1. 追加したPriorityClassを[`priorityClassName`](#pod-priority)に設定したPodを作成します。 + もちろんPodを直接作る必要はありません。 + 一般的には`priorityClassName`をDeploymentのようなコレクションオブジェクトのPodテンプレートに追加します。 + +これらの手順のより詳しい情報については、この先を読み進めてください。 + +{{< note >}} +Kubernetesには最初から既に2つのPriorityClassが設定された状態になっています。 +`system-cluster-critical`と`system-node-critical`です。 +これらは汎用のクラスであり、[重要なコンポーネントが常に最初にスケジュールされることを保証する](/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/)ために使われます。 +{{< /note >}} + +## PriorityClass + +PriorityClassはnamespaceによらないオブジェクトで、優先度クラスの名称から優先度を表す整数値への対応を定義します。 +PriorityClassオブジェクトのメタデータの`name`フィールドにて名称を指定します。 +値は`value`フィールドで指定し、必須です。 +値が大きいほど、高い優先度を示します。 +PriorityClassオブジェクトの名称は[DNSサブドメイン名](/docs/concepts/overview/working-with-objects/names#dns-subdomain-names)として適切であり、かつ`system-`から始まらないことが必要です。 + +PriorityClassオブジェクトは10億以下の任意の32ビットの整数値を持つことができます。 +それよりも大きな値は通常はプリエンプトや追い出すべきではない重要なシステム用のPodのために予約されています。 +クラスターの管理者は割り当てたい優先度に対して、PriorityClassオブジェクトを1つずつ作成すべきです。 + +PriorityClassは任意でフィールド`globalDefault`と`description`を設定可能です。 +`globalDefault`フィールドは`priorityClassName`が指定されないPodはこのPriorityClassを使うべきであることを示します。`globalDefault`が設定されたPriorityClassはシステムで一つのみ存在可能です。`globalDefault`が設定されたPriorityClassが存在しない場合は、`priorityClassName`が設定されていないPodの優先度は0に設定されます。 + +`description`フィールドは任意の文字列です。クラスターの利用者に対して、PriorityClassをどのような時に使うべきか示すことを意図しています。 + +### PodPriorityと既存のクラスターに関する注意 + +- もし既存のクラスターをこの機能がない状態でアップグレードすると、既存のPodの優先度は実質的に0になります。 + +- `globalDefault`が`true`に設定されたPriorityClassを追加しても、既存のPodの優先度は変わりません。PriorityClassのそのような値は、PriorityClassが追加された以後に作成されたPodのみに適用されます。 + +- PriorityClassを削除した場合、既存のPodは削除されたPriorityClassの名称を引き続き使用しますが、削除されたPriorityClassの名称を使うPodをそれ以上作成することはできなくなります。 + +### PriorityClassの例 + +```yaml +apiVersion: scheduling.k8s.io/v1 +kind: PriorityClass +metadata: + name: high-priority +value: 1000000 +globalDefault: false +description: "この優先度クラスはXYZサービスのPodに対してのみ使用すべきです。" +``` + +## 非プリエンプトのPriorityClass {#non-preempting-priority-class} + +{{< feature-state for_k8s_version="v1.19" state="beta" >}} + +`PreemptionPolicy: Never`と設定されたPodは、スケジューリングのキューにおいて他の優先度の低いPodよりも優先されますが、他のPodをプリエンプトすることはありません。 +スケジューリングされるのを待つ非プリエンプトのPodは、リソースが十分に利用可能になるまでスケジューリングキューに残ります。 +非プリエンプトのPodは、他のPodと同様に、スケジューラーのバックオフの対象になります。これは、スケジューラーがPodをスケジューリングしようと試みたものの失敗した場合、低い頻度で再試行するようにして、より優先度の低いPodが先にスケジューリングされることを許します。 + +非プリエンプトのPodは、他の優先度の高いPodにプリエンプトされる可能性はあります。 + +`PreemptionPolicy`はデフォルトでは`PreemptLowerPriority`に設定されており、これが設定されているPodは優先度の低いPodをプリエンプトすることを許容します。これは既存のデフォルトの挙動です。 +`PreemptionPolicy`を`Never`に設定すると、これが設定されたPodはプリエンプトを行わないようになります。 + +ユースケースの例として、データサイエンスの処理を挙げます。 +ユーザーは他の処理よりも優先度を高くしたいジョブを追加できますが、そのとき既存の実行中のPodの処理結果をプリエンプトによって捨てさせたくはありません。 +`PreemptionPolicy: Never`が設定された優先度の高いジョブは、他の既にキューイングされたPodよりも先に、クラスターのリソースが「自然に」開放されたときにスケジューリングされます。 + +### 非プリエンプトのPriorityClassの例 + +```yaml +apiVersion: scheduling.k8s.io/v1 +kind: PriorityClass +metadata: + name: high-priority-nonpreempting +value: 1000000 +preemptionPolicy: Never +globalDefault: false +description: "この優先度クラスは他のPodをプリエンプトさせません。" +``` + +## Podの優先度 + +一つ以上のPriorityClassがあれば、仕様にPriorityClassを指定したPodを作成することができるようになります。優先度のアドミッションコントローラーは`priorityClassName`フィールドを使用し、優先度の整数値を設定します。PriorityClassが見つからない場合、そのPodの作成は拒否されます。 + +下記のYAMLは上記の例で作成したPriorityClassを使用するPodの設定の例を示します。優先度のアドミッションコントローラーは仕様を確認し、このPodの優先度は1000000であると設定します。 + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: nginx + labels: + env: test +spec: + containers: + - name: nginx + image: nginx + imagePullPolicy: IfNotPresent + priorityClassName: high-priority +``` + +### スケジューリング順序におけるPodの優先度の効果 + +Podの優先度が有効な場合、スケジューラーは待機状態のPodをそれらの優先度順に並べ、スケジューリングキューにおいてより優先度の低いPodよりも前に来るようにします。その結果、その条件を満たしたときには優先度の高いPodは優先度の低いPodより早くスケジューリングされます。優先度の高いPodがスケジューリングできない場合は、スケジューラーは他の優先度の低いPodのスケジューリングも試みます。 + +## プリエンプション + +Podが作成されると、スケジューリング待ちのキューに入り待機状態になります。スケジューラーはキューからPodを取り出し、ノードへのスケジューリングを試みます。Podに指定された条件を全て満たすノードが見つからない場合は、待機状態のPodのためにプリエンプションロジックが発動します。待機状態のPodをPと呼ぶことにしましょう。プリエンプションロジックはPよりも優先度の低いPodを一つ以上追い出せばPをスケジューリングできるようになるノードを探します。そのようなノードがあれば、優先度の低いPodはノードから追い出されます。Podが追い出された後に、Pはノードへスケジューリング可能になります。 + +### ユーザーへ開示される情報 + +Pod PがノードNのPodをプリエンプトした場合、ノードNの名称がPのステータスの`nominatedNodeName`フィールドに設定されます。このフィールドはスケジューラーがPod Pのために予約しているリソースの追跡を助け、ユーザーにクラスターにおけるプリエンプトに関する情報を与えます。 + +Pod Pは「指名したノード」へスケジューリングされる必要はないことに注意してください。Podがプリエンプトされると、そのPodは猶予期間を得ます。スケジューラーがPodの終了を待つ間に他のノードが利用可能になると、スケジューラーは他のノードをPod Pのスケジューリング先にします。この結果、Podの`nominatedNodeName`と`nodeName`は必ずしも一致しません。また、スケジューラーがノードNのPodをプリエンプトさせた後に、Pod Pよりも優先度の高いPodが来た場合、スケジューラーはノードNをその新しい優先度の高いPodへ与えます。このような場合は、スケジューラーはPod Pの`nominatedNodeName`を消去します。これによって、スケジューラーはPod Pが他のノードのPodをプリエンプトさせられるようにします。 + +### プリエンプトの制限 + +#### プリエンプトされるPodの正常終了 + +Podがプリエンプトされると、[猶予期間](/ja/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination)が与えられます。 + +Podは作業を完了し、終了するために十分な時間が与えられます。仮にそうでない場合、強制終了されます。この猶予期間によって、スケジューラーがPodをプリエンプトした時刻と、待機状態のPod Pがノード Nにスケジュール可能になるまでの時刻の間に間が開きます。この間、スケジューラーは他の待機状態のPodをスケジュールしようと試みます。プリエンプトされたPodが終了したら、スケジューラーは待ち行列にあるPodをスケジューリングしようと試みます。そのため、Podがプリエンプトされる時刻と、Pがスケジュールされた時刻には間が開くことが一般的です。この間を最小にするには、優先度の低いPodの猶予期間を0または小さい値にする方法があります。 + +#### PodDisruptionBudgetは対応するが、保証されない + +[PodDisruptionBudget](/docs/concepts/workloads/pods/disruptions/) (PDB)は、アプリケーションのオーナーが冗長化されたアプリケーションのPodが意図的に中断される数の上限を設定できるようにするものです。KubernetesはPodをプリエンプトする際にPDBに対応しますが、PDBはベストエフォートで考慮します。スケジューラーはプリエンプトさせたとしてもPDBに違反しないPodを探します。そのようなPodが見つからない場合でもプリエンプションは実行され、PDBに反しますが優先度の低いPodが追い出されます。 + +#### 優先度の低いPodにおけるPod間のアフィニティ + +次の条件が真の場合のみ、ノードはプリエンプションの候補に入ります。 +「待機状態のPodよりも優先度の低いPodをノードから全て追い出したら、待機状態のPodをノードへスケジュールできるか」 + +{{< note >}} +プリエンプションは必ずしも優先度の低いPodを全て追い出しません。 +優先度の低いPodを全て追い出さなくても待機状態のPodがスケジューリングできる場合、一部のPodのみ追い出されます。 +このような場合であったとしても、上記の条件は真である必要があります。偽であれば、そのノードはプリエンプションの対象とはされません。 +{{< /note >}} + +待機状態のPodが、優先度の低いPodとの間でPod間のアフィニティを持つ場合、Pod間のアフィニティはそれらの優先度の低いPodがなければ満たされません。この場合、スケジューラーはノードのどのPodもプリエンプトしようとはせず、代わりに他のノードを探します。スケジューラーは適切なノードを探せる場合と探せない場合があります。この場合、待機状態のPodがスケジューリングされる保証はありません。 + +この問題に対して推奨される解決策は、優先度が同一または高いPodに対してのみPod間のアフィニティを作成することです。 + +#### 複数ノードに対するプリエンプション + +Pod PがノードNにスケジューリングできるよう、ノードNがプリエンプションの対象となったとします。 +他のノードのPodがプリエンプトされた場合のみPが実行可能になることもあります。下記に例を示します。 + +* Pod PをノードNに配置することを検討します。 +* Pod QはノードNと同じゾーンにある別のノードで実行中です。 +* Pod Pはゾーンに対するQへのアンチアフィニティを持ちます (`topologyKey: topology.kubernetes.io/zone`)。 +* Pod Pと、ゾーン内の他のPodに対しては他のアンチアフィニティはない状態です。 +* Pod PをノードNへスケジューリングするには、Pod Qをプリエンプトすることが考えられますが、スケジューラーは複数ノードにわたるプリエンプションは行いません。そのため、Pod PはノードNへはスケジューリングできないとみなされます。 + +Pod Qがそのノードから追い出されると、Podアンチアフィニティに違反しなくなるので、Pod PはノードNへスケジューリング可能になります。 + +複数ノードに対するプリエンプションに関しては、十分な需要があり、合理的な性能を持つアルゴリズムを見つけられた場合に、追加することを検討する可能性があります。 + +## トラブルシューティング + +Podの優先度とプリエンプションは望まない副作用をもたらす可能性があります。 +いくつかの起こりうる問題と、その対策について示します。 + +### Podが不必要にプリエンプトされる + +プリエンプションは、リソースが不足している場合に優先度の高い待機状態のPodのためにクラスターの既存のPodを追い出します。 +誤って高い優先度をPodに割り当てると、意図しない高い優先度のPodはクラスター内でプリエンプションを引き起こす可能性があります。Podの優先度はPodの仕様の`priorityClassName`フィールドにて指定されます。優先度を示す整数値へと変換された後、`podSpec`の`priority`へ設定されます。 + +この問題に対処するには、Podの`priorityClassName`をより低い優先度に変更するか、このフィールドを未設定にすることができます。`priorityClassName`が未設定の場合、デフォルトでは優先度は0とされます。 + +Podがプリエンプトされたとき、プリエンプトされたPodのイベントが記録されます。 +プリエンプションはPodに必要なリソースがクラスターにない場合のみ起こるべきです。 +このような場合、プリエンプションはプリエンプトされるPodよりも待機状態のPodの優先度が高い場合のみ発生します。 +プリエンプションは待機状態のPodがない場合や待機状態のPodがプリエンプト対象のPod以下の優先度を持つ場合には決して発生しません。そのような状況でプリエンプションが発生した場合、問題を報告してください。 + +### Podはプリエンプトされたが、プリエンプトさせたPodがスケジューリングされない + +Podがプリエンプトされると、それらのPodが要求した猶予期間が与えられます。そのデフォルトは30秒です。 +Podがその期間内に終了しない場合、強制終了されます。プリエンプトされたPodがなくなれば、プリエンプトさせたPodはスケジューリング可能です。 + +プリエンプトさせたPodがプリエンプトされたPodの終了を待っている間に、より優先度の高いPodが同じノードに対して作成されることもあります。この場合、スケジューラーはプリエンプトさせたPodの代わりに優先度の高いPodをスケジューリングします。 + +これは予期された挙動です。優先度の高いPodは優先度の低いPodに取って代わります。 + +### 優先度の高いPodが優先度の低いPodより先にプリエンプトされる + +スケジューラーは待機状態のPodが実行可能なノードを探します。ノードが見つからない場合、スケジューラーは任意のノードから優先度の低いPodを追い出し、待機状態のPodのためのリソースを確保しようとします。 +仮に優先度の低いPodが動いているノードが待機状態のPodを動かすために適切ではない場合、スケジューラーは他のノードで動いているPodと比べると、優先度の高いPodが動いているノードをプリエンプションの対象に選ぶことがあります。この場合もプリエンプトされるPodはプリエンプトを起こしたPodよりも優先度が低い必要があります。 + +複数のノードがプリエンプションの対象にできる場合、スケジューラーは優先度が最も低いPodのあるノードを選ぼうとします。しかし、そのようなPodがPodDisruptionBudgetを持っており、プリエンプトするとPDBに反する場合はスケジューラーは優先度の高いPodのあるノードを選ぶこともあります。 + +複数のノードがプリエンプションの対象として利用可能で、上記の状況に当てはまらない場合、スケジューラーは優先度の最も低いノードを選択します。 + +## Podの優先度とQoSの相互作用 {#interactions-of-pod-priority-and-qos} + +Podの優先度と{{< glossary_tooltip text="QoSクラス" term_id="qos-class" >}}は直交する機能で、わずかに相互作用がありますが、デフォルトではQoSクラスによる優先度の設定の制約はありません。スケジューラーのプリエンプションのロジックはプリエンプションの対象を決めるときにQoSクラスは考慮しません。 +プリエンプションはPodの優先度を考慮し、優先度が最も低いものを候補とします。より優先度の高いPodは優先度の低いPodを追い出すだけではプリエンプトを起こしたPodのスケジューリングに不十分な場合と、`PodDisruptionBudget`により優先度の低いPodが保護されている場合のみ対象になります。 + +QoSとPodの優先度の両方を考慮するコンポーネントは[リソース不足によりkubeletがPodを追い出す](/docs/tasks/administer-cluster/out-of-resource/)のみです。 +kubeletは追い出すPodの順位付けを次の順で行います。枯渇したリソースを要求以上に使用しているか、優先度、枯渇したリソースの消費量の複数のPodの要求に対する相対値。 +詳細は[エンドユーザーのPodの追い出し](/docs/tasks/administer-cluster/out-of-resource/#evicting-end-user-pods)を参照してください。 + + +kubeletによるリソース不足時のPodの追い出しでは、リソースの消費が要求を超えないPodは追い出されません。優先度の低いPodのリソースの利用量がその要求を超えていなければ、追い出されることはありません。より優先度が高く、要求を超えてリソースを使用しているPodが追い出されます。 + + +## {{% heading "whatsnext" %}} + +* PriorityClassと関連付けてResourceQuotaを使用することに関して [デフォルトで優先度クラスの消費を制限する](/ja/docs/concepts/policy/resource-quotas/#limit-priority-class-consumption-by-default) + From aabfd4d0a78958ffddd19cbad52660de830a882c Mon Sep 17 00:00:00 2001 From: Hugo Pfeffer Date: Sun, 7 Mar 2021 13:14:49 -0300 Subject: [PATCH 116/788] Update content/pt/docs/concepts/containers/images.md femrtnz's suggestion Co-authored-by: Felipe --- content/pt/docs/concepts/containers/images.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/pt/docs/concepts/containers/images.md b/content/pt/docs/concepts/containers/images.md index eb85c5ed4b..74e7566088 100644 --- a/content/pt/docs/concepts/containers/images.md +++ b/content/pt/docs/concepts/containers/images.md @@ -47,7 +47,7 @@ Em vez disso, especifique uma tag significativa, como `v1.42.0`. A política padrão de pull é `IfNotPresent` a qual faz com que o {{}} ignore o processo de *pull* da imagem, caso a mesma já exista. Se você prefere sempre forçar o processo de *pull*, -você pode fazer como exemplo: +você pode seguir uma da opções abaixo: - defina a `imagePullPolicy` do contêiner para` Always`. - omita `imagePullPolicy` e use`: latest` como a tag para a imagem a ser usada. @@ -287,4 +287,4 @@ O Kubelet mesclará qualquer `imagePullSecrets` em um único `.docker/config.jso ## {{% heading "whatsnext" %}} -* Leia a [OCI Image Manifest Specification](https://github.com/opencontainers/image-spec/blob/master/manifest.md) \ No newline at end of file +* Leia a [OCI Image Manifest Specification](https://github.com/opencontainers/image-spec/blob/master/manifest.md) From 52d347b53ecb6efba85305a555df9275ed9f0402 Mon Sep 17 00:00:00 2001 From: Hugo Pfeffer Date: Sun, 7 Mar 2021 15:15:41 -0300 Subject: [PATCH 117/788] Update images.md fixed typo at line 50 --- content/pt/docs/concepts/containers/images.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/pt/docs/concepts/containers/images.md b/content/pt/docs/concepts/containers/images.md index 74e7566088..01b45cb439 100644 --- a/content/pt/docs/concepts/containers/images.md +++ b/content/pt/docs/concepts/containers/images.md @@ -47,7 +47,7 @@ Em vez disso, especifique uma tag significativa, como `v1.42.0`. A política padrão de pull é `IfNotPresent` a qual faz com que o {{}} ignore o processo de *pull* da imagem, caso a mesma já exista. Se você prefere sempre forçar o processo de *pull*, -você pode seguir uma da opções abaixo: +você pode seguir uma das opções abaixo: - defina a `imagePullPolicy` do contêiner para` Always`. - omita `imagePullPolicy` e use`: latest` como a tag para a imagem a ser usada. From fb0fe10d2040ab9248a3c890a355297fd06520ce Mon Sep 17 00:00:00 2001 From: Felipe Date: Sun, 7 Mar 2021 21:44:21 +0000 Subject: [PATCH 118/788] Update content/pt/docs/concepts/containers/images.md Co-authored-by: Diego W. Antunes --- content/pt/docs/concepts/containers/images.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/pt/docs/concepts/containers/images.md b/content/pt/docs/concepts/containers/images.md index 01b45cb439..67c21e70f4 100644 --- a/content/pt/docs/concepts/containers/images.md +++ b/content/pt/docs/concepts/containers/images.md @@ -81,7 +81,7 @@ Essas opções são explicadas com mais detalhes abaixo. ### Configurando nós para autenticação em um registro privado -Se você executar o Docker em seus nós, poderá configurar o contêiner do Docker +Se você executar o Docker em seus nós, poderá configurar o contêiner runtime do Docker runtime para autenticação em um registro de contêiner privado. Essa abordagem é adequada se você puder controlar a configuração do nó. From 86da7892dbb8234327c8c763bdf23c1b1d4ecc02 Mon Sep 17 00:00:00 2001 From: Felipe Date: Sun, 7 Mar 2021 21:44:59 +0000 Subject: [PATCH 119/788] Update content/pt/docs/concepts/containers/images.md Co-authored-by: Diego W. Antunes --- content/pt/docs/concepts/containers/images.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/pt/docs/concepts/containers/images.md b/content/pt/docs/concepts/containers/images.md index 67c21e70f4..27222cf5a8 100644 --- a/content/pt/docs/concepts/containers/images.md +++ b/content/pt/docs/concepts/containers/images.md @@ -82,7 +82,7 @@ Essas opções são explicadas com mais detalhes abaixo. ### Configurando nós para autenticação em um registro privado Se você executar o Docker em seus nós, poderá configurar o contêiner runtime do Docker -runtime para autenticação em um registro de contêiner privado. +para autenticação em um registro de contêiner privado. Essa abordagem é adequada se você puder controlar a configuração do nó. From d2d6f7f3345b573f1abe5e4435fa61f9cb185d9c Mon Sep 17 00:00:00 2001 From: Felipe Date: Sun, 7 Mar 2021 21:45:11 +0000 Subject: [PATCH 120/788] Update content/pt/docs/concepts/containers/images.md Co-authored-by: Diego W. Antunes --- content/pt/docs/concepts/containers/images.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/pt/docs/concepts/containers/images.md b/content/pt/docs/concepts/containers/images.md index 27222cf5a8..6f8b81dd7c 100644 --- a/content/pt/docs/concepts/containers/images.md +++ b/content/pt/docs/concepts/containers/images.md @@ -119,7 +119,7 @@ exemplo, execute-os em seu desktop/laptop: {{< note >}} Para clusters de produção, use uma ferramenta de gerenciamento de configuração para que você possa aplicar esta -configuração para todos os nós onde você precisa. +configuração em todos os nós que você precisar. {{< /note >}} Verifique se está funcionando criando um pod que usa uma imagem privada; por exemplo: From 07c5dbcbca062313c3603c396470269d97be20dd Mon Sep 17 00:00:00 2001 From: Abdullah Gharaibeh Date: Wed, 3 Mar 2021 12:12:42 -0500 Subject: [PATCH 121/788] Docs for pod affinity namespace selector and pod affinity corss-namespace quota scope. --- .../docs/concepts/policy/resource-quotas.md | 58 +++++++++++++++++++ .../scheduling-eviction/assign-pod-node.md | 12 ++++ .../feature-gates.md | 3 + 3 files changed, 73 insertions(+) diff --git a/content/en/docs/concepts/policy/resource-quotas.md b/content/en/docs/concepts/policy/resource-quotas.md index bc5eca8754..034458b8e9 100644 --- a/content/en/docs/concepts/policy/resource-quotas.md +++ b/content/en/docs/concepts/policy/resource-quotas.md @@ -189,6 +189,7 @@ Resources specified on the quota outside of the allowed set results in a validat | `BestEffort` | Match pods that have best effort quality of service. | | `NotBestEffort` | Match pods that do not have best effort quality of service. | | `PriorityClass` | Match pods that references the specified [priority class](/docs/concepts/configuration/pod-priority-preemption). | +| `CrossNamespacePodAffinity` | Match pods that have cross-namespace pod [(anti)affinity terms](/docs/concepts/scheduling-eviction/assign-pod-node). | The `BestEffort` scope restricts a quota to tracking the following resource: @@ -429,6 +430,63 @@ memory 0 20Gi pods 0 10 ``` +### Cross-namespace Pod Affinity Quota + +{{< feature-state for_k8s_version="v1.21" state="alpha" >}} + +Operators can use `CrossNamespacePodAffinity` quota scope to limit which namespaces are allowed to +have pods with affinity terms that cross namespaces. Specifically, it controls which pods are allowed +to set `namespaces` or `namespaceSelector` fields in pod affinity terms. + +Preventing users from using cross-namespace affinity terms might be desired since a pod +with anti-affinity constraints can block pods from all other namespaces +from getting scheduled in a failure domain. + +Using this scope operators can prevent certain namespaces (`foo-ns` in the example below) +from having pods that use cross-namespace pod affinity by creating a resource quota object in +that namespace with `CrossNamespaceAffinity` scope and hard limit of 0: + +```yaml +apiVersion: v1 +kind: ResourceQuota +metadata: + name: disable-cross-namespace-affinity + namespace: foo-ns +spec: + hard: + pods: "0" + scopeSelector: + matchExpressions: + - scopeName: CrossNamespaceAffinity +``` + +If operators want to disallow using `namespaces` and `namespaceSelector` by default, and +only allow it for specific namespaces, they could configure `CrossNamespaceAffinity` +as a limited resource by setting the kube-apiserver flag --admission-control-config-file +to the path of the following configuration file: + +```yaml +apiVersion: apiserver.config.k8s.io/v1 +kind: AdmissionConfiguration +plugins: +- name: "ResourceQuota" + configuration: + apiVersion: apiserver.config.k8s.io/v1 + kind: ResourceQuotaConfiguration + limitedResources: + - resource: pods + matchScopes: + - scopeName: CrossNamespaceAffinity +``` + +With the above configuration, pods can use `namespaces` and `namespaceSelector` in pod affinity only +if the namespace where they are created have a resource quota object with +`CrossNamespaceAffinity` scope and a hard limit greater than or equal to the number of pods using those fields. + +This feature is alpha and disabled by default. You can enable it by setting the +[feature gate](/docs/reference/command-line-tools-reference/feature-gates/) +`PodAffinityNamespaceSelector` in both kube-apiserver and kube-scheduler. + ## Requests compared to Limits {#requests-vs-limits} When allocating compute resources, each container may specify a request and a limit value for either CPU or memory. diff --git a/content/en/docs/concepts/scheduling-eviction/assign-pod-node.md b/content/en/docs/concepts/scheduling-eviction/assign-pod-node.md index b6b2bd79a8..8b13ed3b45 100644 --- a/content/en/docs/concepts/scheduling-eviction/assign-pod-node.md +++ b/content/en/docs/concepts/scheduling-eviction/assign-pod-node.md @@ -271,6 +271,18 @@ If omitted or empty, it defaults to the namespace of the pod where the affinity/ All `matchExpressions` associated with `requiredDuringSchedulingIgnoredDuringExecution` affinity and anti-affinity must be satisfied for the pod to be scheduled onto a node. +#### Namespace selector +{{< feature-state for_k8s_version="v1.21" state="alpha" >}} + +Users can also select matching namespaces using `namespaceSelector`, which is a label query over the set of namespaces. +The affinity term is applied to the union of the namespaces selected by `namespaceSelector` and the ones listed in the `namespaces` field. +Note that an empty `namespaceSelector` ({}) matches all namespaces, while a null or empty `namespaces` list and +null `namespaceSelector` means "this pod's namespace". + +This feature is alpha and disabled by default. You can enable it by setting the +[feature gate](/docs/reference/command-line-tools-reference/feature-gates/) +`PodAffinityNamespaceSelector` in both kube-apiserver and kube-scheduler. + #### More Practical Use-cases Interpod Affinity and AntiAffinity can be even more useful when they are used with higher diff --git a/content/en/docs/reference/command-line-tools-reference/feature-gates.md b/content/en/docs/reference/command-line-tools-reference/feature-gates.md index 2e9db5fce0..82224cf6c6 100644 --- a/content/en/docs/reference/command-line-tools-reference/feature-gates.md +++ b/content/en/docs/reference/command-line-tools-reference/feature-gates.md @@ -139,6 +139,7 @@ different Kubernetes components. | `NonPreemptingPriority` | `true` | Beta | 1.19 | | | `PodDisruptionBudget` | `false` | Alpha | 1.3 | 1.4 | | `PodDisruptionBudget` | `true` | Beta | 1.5 | | +| `PodAffinityNamespaceSelector` | `false` | Alpha | 1.21 | | | `PodOverhead` | `false` | Alpha | 1.16 | 1.17 | | `PodOverhead` | `true` | Beta | 1.18 | | | `ProcMountType` | `false` | Alpha | 1.12 | | @@ -668,6 +669,8 @@ Each feature gate is designed for enabling/disabling a specific feature: - `PersistentLocalVolumes`: Enable the usage of `local` volume type in Pods. Pod affinity has to be specified if requesting a `local` volume. - `PodDisruptionBudget`: Enable the [PodDisruptionBudget](/docs/tasks/run-application/configure-pdb/) feature. +- `PodAffinityNamespaceSelector`: Enable the [Pod Affinity Namespace Selector](/docs/concepts/scheduling-eviction/assign-pod-node/#namespace-selector) + and [CrossNamespacePodAffinity](/docs/concepts/policy/resource-quotas/#cross-namespace-pod-affinity-quota) quota scope features. - `PodOverhead`: Enable the [PodOverhead](/docs/concepts/scheduling-eviction/pod-overhead/) feature to account for pod overheads. - `PodPriority`: Enable the descheduling and preemption of Pods based on their From 07d23cd0e5739b65143a4a3cd1884667784582c3 Mon Sep 17 00:00:00 2001 From: Jihoon Seo <46767780+jihoon-seo@users.noreply.github.com> Date: Mon, 8 Mar 2021 13:53:27 +0900 Subject: [PATCH 122/788] Fix typo (form -> from) in content/en/docs/setup/production-environment/container-runtimes.md --- .../en/docs/setup/production-environment/container-runtimes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/setup/production-environment/container-runtimes.md b/content/en/docs/setup/production-environment/container-runtimes.md index e59b497302..ccd1d9beb6 100644 --- a/content/en/docs/setup/production-environment/container-runtimes.md +++ b/content/en/docs/setup/production-environment/container-runtimes.md @@ -242,7 +242,7 @@ cd $Env:ProgramFiles\containerd\ # - cni bin_dir and conf_dir locations Get-Content config.toml -# (Optional - but highly recommended) Exclude containerd form Windows Defender Scans +# (Optional - but highly recommended) Exclude containerd from Windows Defender Scans Add-MpPreference -ExclusionProcess "$Env:ProgramFiles\containerd\containerd.exe" ``` From c4ded15afe73c233e000db2d13cb343b27f63856 Mon Sep 17 00:00:00 2001 From: Jihoon Seo <46767780+jihoon-seo@users.noreply.github.com> Date: Mon, 8 Mar 2021 14:21:34 +0900 Subject: [PATCH 123/788] Fix broken anchor in content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md --- .../windows/intro-windows-in-kubernetes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md b/content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md index 57f867d0db..3998b48501 100644 --- a/content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md +++ b/content/en/docs/setup/production-environment/windows/intro-windows-in-kubernetes.md @@ -237,7 +237,7 @@ Overlay (VXLAN) networks on Windows do not support dual-stack networking today. Windows is only supported as a worker node in the Kubernetes architecture and component matrix. This means that a Kubernetes cluster must always include Linux master nodes, zero or more Linux worker nodes, and zero or more Windows worker nodes. -#### Compute {compute-limitations} +#### Compute {#compute-limitations} ##### Resource management and process isolation @@ -297,7 +297,7 @@ As a result, the following storage functionality is not supported on Windows nod * NFS based storage/volume support * Expanding the mounted volume (resizefs) -#### Networking {networking-limitations} +#### Networking {#networking-limitations} Windows Container Networking differs in some important ways from Linux networking. The [Microsoft documentation for Windows Container Networking](https://docs.microsoft.com/en-us/virtualization/windowscontainers/container-networking/architecture) contains additional details and background. From 4af3585b05b7e13c8703962c2ddf3dc4fd30a2a7 Mon Sep 17 00:00:00 2001 From: Jihoon Seo <46767780+jihoon-seo@users.noreply.github.com> Date: Mon, 8 Mar 2021 15:56:59 +0900 Subject: [PATCH 124/788] Fix typo (Linux -> macOS) --- content/en/docs/tasks/tools/install-kubectl-macos.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/tasks/tools/install-kubectl-macos.md b/content/en/docs/tasks/tools/install-kubectl-macos.md index 605745c630..b4fa864985 100644 --- a/content/en/docs/tasks/tools/install-kubectl-macos.md +++ b/content/en/docs/tasks/tools/install-kubectl-macos.md @@ -23,7 +23,7 @@ The following methods exist for installing kubectl on macOS: - [Install kubectl binary with curl on macOS](#install-kubectl-binary-with-curl-on-macos) - [Install with Homebrew on macOS](#install-with-homebrew-on-macos) - [Install with Macports on macOS](#install-with-macports-on-macos) -- [Install on Linux as part of the Google Cloud SDK](#install-on-linux-as-part-of-the-google-cloud-sdk) +- [Install on macOS as part of the Google Cloud SDK](#install-on-macos-as-part-of-the-google-cloud-sdk) ### Install kubectl binary with curl on macOS @@ -157,4 +157,4 @@ Below are the procedures to set up autocompletion for Bash and Zsh. ## {{% heading "whatsnext" %}} -{{< include "included/kubectl-whats-next.md" >}} \ No newline at end of file +{{< include "included/kubectl-whats-next.md" >}} From c009ad84311c44556f4ec72aac6adec228a57615 Mon Sep 17 00:00:00 2001 From: Jihoon Seo <46767780+jihoon-seo@users.noreply.github.com> Date: Mon, 8 Mar 2021 16:17:09 +0900 Subject: [PATCH 125/788] Update href to the anchor in the same page --- content/en/docs/tutorials/hello-minikube.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/tutorials/hello-minikube.md b/content/en/docs/tutorials/hello-minikube.md index 4bd6a9a82c..ea447f0997 100644 --- a/content/en/docs/tutorials/hello-minikube.md +++ b/content/en/docs/tutorials/hello-minikube.md @@ -62,7 +62,7 @@ If you installed minikube locally, run `minikube start`. {{< note >}} The `dashboard` command enables the dashboard add-on and opens the proxy in the default web browser. You can create Kubernetes resources on the dashboard such as Deployment and Service. -If you are running in an environment as root, see [Open Dashboard with URL](/docs/tutorials/hello-minikube#open-dashboard-with-url). +If you are running in an environment as root, see [Open Dashboard with URL](#open-dashboard-with-url). To stop the proxy, run `Ctrl+C` to exit the process. The dashboard remains running. {{< /note >}} From c4fddf906cdaf35835e2286e219efb0589620a68 Mon Sep 17 00:00:00 2001 From: Henry Liu Date: Mon, 8 Mar 2021 16:13:22 +0800 Subject: [PATCH 126/788] [zh] add docs/tasks/run-application/access-api-from-pod.md zh version --- .../run-application/access-api-from-pod.md | 188 ++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 content/zh/docs/tasks/run-application/access-api-from-pod.md diff --git a/content/zh/docs/tasks/run-application/access-api-from-pod.md b/content/zh/docs/tasks/run-application/access-api-from-pod.md new file mode 100644 index 0000000000..ffcf869a42 --- /dev/null +++ b/content/zh/docs/tasks/run-application/access-api-from-pod.md @@ -0,0 +1,188 @@ +--- +title: 从 Pod 中访问 Kubernetes API +content_type: task +weight: 120 +--- + + + + + + +本指南演示了如何从 Pod 中访问 Kubernetes API。 + +## {{% heading "prerequisites" %}} + +{{< include "task-tutorial-prereqs.md" >}} + + + + +### 从 Pod 中访问 API {#accessing-the-api-from-within-a-pod} + +从 Pod 内部访问 API 时,定位 API 服务器和向服务器认证身份的操作 +与外部客户端场景不同。 + + +从 Pod 使用 Kubernetes API 的最简单的方法就是使用官方的 +[客户端库](/zh/docs/reference/using-api/client-libraries/)。 +这些库可以自动发现 API 服务器并进行身份验证。 + + +#### 使用官方客户端库 {#using-official-client-libraries} + +从一个 Pod 内部连接到 Kubernetes API 的推荐方式为: + +- 对于 Go 语言客户端,使用官方的 [Go 客户端库](https://github.com/kubernetes/client-go/)。 + 函数 `rest.InClusterConfig()` 自动处理 API 主机发现和身份认证。 + 参见[这里的一个例子](https://git.k8s.io/client-go/examples/in-cluster-client-configuration/main.go)。 + +- 对于 Python 客户端,使用官方的 [Python 客户端库](https://github.com/kubernetes-client/python/)。 + 函数 `config.load_incluster_config()` 自动处理 API 主机的发现和身份认证。 + 参见[这里的一个例子](https://github.com/kubernetes-client/python/blob/master/examples/in_cluster_config.py)。 + +- 还有一些其他可用的客户端库,请参阅[客户端库](/zh/docs/reference/using-api/client-libraries/)页面。 + +在以上场景中,客户端库都使用 Pod 的服务账号凭据来与 API 服务器安全地通信。 + + +#### 直接访问 REST API {#directly-accessing-the-rest-api} + +在运行在 Pod 中时,可以通过 `default` 命名空间中的名为 `kubernetes` 的服务访问 +Kubernetes API 服务器。也就是说,Pod 可以使用 `kubernetes.default.svc` 主机名 +来查询 API 服务器。官方客户端库自动完成这个工作。 + + +向 API 服务器进行身份认证的推荐做法是使用 +[服务账号](/zh/docs/tasks/configure-pod-container/configure-service-account/)凭据。 +默认情况下,每个 Pod 与一个服务账号关联,该服务账户的凭证(令牌)放置在此 Pod 中 +每个容器的文件系统树中的 `/var/run/secrets/kubernetes.io/serviceaccount/token` 处。 + + +如果由证书包可用,则凭证包被放入每个容器的文件系统树中的 +`/var/run/secrets/kubernetes.io/serviceaccount/ca.crt` 处, +且将被用于验证 API 服务器的服务证书。 + + +最后,用于命名空间域 API 操作的默认命名空间放置在每个容器中的 +`/var/run/secrets/kubernetes.io/serviceaccount/namespace` 文件中。 + + +#### 使用 kubectl proxy {#use-kubectl-proxy} + +如果你希望不实用官方客户端库就完成 API 查询,可以将 `kubectl proxy` 作为 +[command](/zh/docs/tasks/inject-data-application/define-command-argument-container/) +在 Pod 启动一个边车(Sidecar)容器。这样,`kubectl proxy` 自动完成对 API +的身份认证,并将其暴露到 Pod 的 `localhost` 接口,从而 Pod 中的其他容器可以 +直接使用 API。 + + +### 不使用代理 {#without-using-a-proxy} + +通过将认证令牌直接发送到 API 服务器,也可以避免运行 kubectl proxy 命令。 +内部的证书机制能够为链接提供保护。 + +```shell +# 指向内部 API 服务器的主机名 +APISERVER=https://kubernetes.default.svc + +# 服务账号令牌的路径 +SERVICEACCOUNT=/var/run/secrets/kubernetes.io/serviceaccount + +# 读取 Pod 的名字空间 +NAMESPACE=$(cat ${SERVICEACCOUNT}/namespace) + +# 读取服务账号的持有者令牌 +TOKEN=$(cat ${SERVICEACCOUNT}/token) + +# 引用内部证书机构(CA) +CACERT=${SERVICEACCOUNT}/ca.crt + +# 使用令牌访问 API +curl --cacert ${CACERT} --header "Authorization: Bearer ${TOKEN}" -X GET ${APISERVER}/api +``` + + +输出类似于: + +```json +{ + "kind": "APIVersions", + "versions": [ + "v1" + ], + "serverAddressByClientCIDRs": [ + { + "clientCIDR": "0.0.0.0/0", + "serverAddress": "10.0.1.149:443" + } + ] +} +``` From c148e61ba85dee2648a6f3b40418f12c89be2e31 Mon Sep 17 00:00:00 2001 From: Jihoon Seo Date: Mon, 8 Mar 2021 17:33:18 +0900 Subject: [PATCH 127/788] Reflect some changes to dev-1.20-ko.6 --- content/ko/docs/concepts/architecture/controller.md | 2 +- .../docs/tutorials/stateful-application/basic-stateful-set.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/ko/docs/concepts/architecture/controller.md b/content/ko/docs/concepts/architecture/controller.md index 29926d1435..e516dd9cc5 100644 --- a/content/ko/docs/concepts/architecture/controller.md +++ b/content/ko/docs/concepts/architecture/controller.md @@ -102,7 +102,7 @@ weight: 30 온도 조절기 예에서 방이 매우 추우면 다른 컨트롤러가 서리 방지 히터를 켤 수도 있다. 쿠버네티스 클러스터에서는 [쿠버네티스 확장](/ko/docs/concepts/extend-kubernetes/)을 통해 -IP 주소 관리 도구, 스토리지 서비스, 클라우드 제공자의 API들 및 +IP 주소 관리 도구, 스토리지 서비스, 클라우드 제공자의 API 및 기타 서비스 등과 간접적으로 연동하여 이를 구현한다. ## 의도한 상태와 현재 상태 {#desired-vs-current} diff --git a/content/ko/docs/tutorials/stateful-application/basic-stateful-set.md b/content/ko/docs/tutorials/stateful-application/basic-stateful-set.md index a2df8806a8..a17ae9f320 100644 --- a/content/ko/docs/tutorials/stateful-application/basic-stateful-set.md +++ b/content/ko/docs/tutorials/stateful-application/basic-stateful-set.md @@ -921,7 +921,7 @@ web-2 0/1 Terminating 0 3m `web` 스테이트풀셋이 다시 생성될 때 먼저 `web-0` 시작한다. `web-1`은 이미 Running과 Ready 상태이므로 `web-0`이 Running과 Ready 상태로 -전환될 때는 이 파드에 적용됬다. 스테이트풀셋에`replicas`를 2로 하고 +전환될 때는 이 파드에 적용됐다. 스테이트풀셋에 `replicas`를 2로 하고 `web-0`을 재생성했다면 `web-1`이 이미 Running과 Ready 상태이고, `web-2`은 종료되었을 것이다. From ddcdd0687e02fd3e6ae02443e94c2a4ecc8e56f3 Mon Sep 17 00:00:00 2001 From: Iceber Gu Date: Mon, 8 Mar 2021 10:42:43 +0800 Subject: [PATCH 128/788] [zh] fix using-api/_index.md Signed-off-by: Iceber Gu --- content/zh/docs/reference/using-api/_index.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/content/zh/docs/reference/using-api/_index.md b/content/zh/docs/reference/using-api/_index.md index 88b6bce641..303f2152ac 100644 --- a/content/zh/docs/reference/using-api/_index.md +++ b/content/zh/docs/reference/using-api/_index.md @@ -1,6 +1,10 @@ --- -title: 使用 Kubernetes API +title: API 概述 weight: 10 +no_list: true +card: + name: reference + weight: 50 --- @@ -68,7 +72,7 @@ can find more information about the criteria for each level in the [API Changes documentation](https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md#alpha-beta-and-stable-versions). --> 不同的 API 版本代表着不同的稳定性和支持级别。 -你可以在 [API 变更文档]https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md#alpha-beta-and-stable-versions) +你可以在 [API 变更文档](https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md#alpha-beta-and-stable-versions) 中查看到更多的不同级别的判定标准。 -## 启用或禁用 API 组 {#enabling-or-disabling} +## 启用或禁用 API 组 {#enabling-or-disabling} 资源和 API 组是在默认情况下被启用的。 你可以通过在 API 服务器上设置 `--runtime-config` 参数来启用或禁用它们。 `--runtime-config` 参数接受逗号分隔的 `[=]` 对, From 21382af32e8468abb3ceb469e369f4595f9cdb0f Mon Sep 17 00:00:00 2001 From: Terry Moschou Date: Mon, 8 Mar 2021 21:15:28 +1030 Subject: [PATCH 129/788] Update Ubuntu/Debian installation instructions to use Signed-By option (#26906) The use of `apt-key` to install has also been removed as it is now deprecated and will be last available in Debian 11 and Ubuntu 22.04. Also updates the Docker repository setup instructions in container-runtimes.md, to now refer to the respective instructions at https://docs.docker.com/engine/install/ which has already made the move to use the signed-by option. --- .../container-runtimes.md | 382 ++++++++---------- .../tools/kubeadm/install-kubeadm.md | 38 +- .../docs/tasks/tools/install-kubectl-linux.md | 36 +- 3 files changed, 219 insertions(+), 237 deletions(-) diff --git a/content/en/docs/setup/production-environment/container-runtimes.md b/content/en/docs/setup/production-environment/container-runtimes.md index ccd1d9beb6..d255780222 100644 --- a/content/en/docs/setup/production-environment/container-runtimes.md +++ b/content/en/docs/setup/production-environment/container-runtimes.md @@ -89,134 +89,102 @@ EOF sudo sysctl --system ``` -Install containerd: +Install `containerd`: {{< tabs name="tab-cri-containerd-installation" >}} {{% tab name="Ubuntu 16.04" %}} -```shell -# (Install containerd) -## Set up the repository -### Install packages to allow apt to use a repository over HTTPS -sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common -``` +1. Setup the [Docker Engine repository for Ubuntu](https://docs.docker.com/engine/install/ubuntu/#set-up-the-repository) -```shell -## Add Docker's official GPG key -curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key --keyring /etc/apt/trusted.gpg.d/docker.gpg add - -``` +2. Install `containerd`: -```shell -## Add Docker apt repository. -sudo add-apt-repository \ - "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ - $(lsb_release -cs) \ - stable" -``` + ```shell + sudo apt-get update && sudo apt-get install -y containerd.io + ``` -```shell -## Install containerd -sudo apt-get update && sudo apt-get install -y containerd.io -``` +3. Configure `containerd`: -```shell -# Configure containerd -sudo mkdir -p /etc/containerd -containerd config default | sudo tee /etc/containerd/config.toml -``` + ```shell + sudo mkdir -p /etc/containerd + containerd config default | sudo tee /etc/containerd/config.toml + ``` + +4. Restart `containerd`: + + ```shell + sudo systemctl restart containerd + ``` -```shell -# Restart containerd -sudo systemctl restart containerd -``` {{% /tab %}} {{% tab name="Ubuntu 18.04/20.04" %}} -```shell -# (Install containerd) -sudo apt-get update && sudo apt-get install -y containerd -``` +1. Install `containerd`: -```shell -# Configure containerd -sudo mkdir -p /etc/containerd -containerd config default | sudo tee /etc/containerd/config.toml -``` + ```shell + sudo apt-get update && sudo apt-get install -y containerd + ``` + +2. Configure `containerd`: + + ```shell + sudo mkdir -p /etc/containerd + containerd config default | sudo tee /etc/containerd/config.toml + ``` + +3. Restart `containerd`: + + ```shell + sudo systemctl restart containerd + ``` -```shell -# Restart containerd -sudo systemctl restart containerd -``` {{% /tab %}} {{% tab name="Debian 9+" %}} -```shell -# (Install containerd) -## Set up the repository -### Install packages to allow apt to use a repository over HTTPS -sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common -``` +1. Setup the [Docker Engine repository for Debian](https://docs.docker.com/engine/install/debian/#set-up-the-repository) -```shell -## Add Docker's official GPG key -curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key --keyring /etc/apt/trusted.gpg.d/docker.gpg add - -``` +2. Install `containerd`: -```shell -## Add Docker apt repository. -sudo add-apt-repository \ - "deb [arch=amd64] https://download.docker.com/linux/debian \ - $(lsb_release -cs) \ - stable" -``` + ```shell + sudo apt-get update && sudo apt-get install -y containerd.io + ``` -```shell -## Install containerd -sudo apt-get update && sudo apt-get install -y containerd.io -``` +3. Configure `containerd`: -```shell -# Set default containerd configuration -sudo mkdir -p /etc/containerd -containerd config default | sudo tee /etc/containerd/config.toml -``` + ```shell + sudo mkdir -p /etc/containerd + containerd config default | sudo tee /etc/containerd/config.toml + ``` + +4. Restart `containerd`: + + ```shell + sudo systemctl restart containerd + ``` -```shell -# Restart containerd -sudo systemctl restart containerd -``` {{% /tab %}} {{% tab name="CentOS/RHEL 7.4+" %}} -```shell -# (Install containerd) -## Set up the repository -### Install required packages -sudo yum install -y yum-utils device-mapper-persistent-data lvm2 -``` +1. Setup the [Docker Engine repository for CentOS/RHEL](https://docs.docker.com/engine/install/centos/#set-up-the-repository) -```shell -## Add docker repository -sudo yum-config-manager \ - --add-repo \ - https://download.docker.com/linux/centos/docker-ce.repo -``` +2. Install `containerd`: -```shell -## Install containerd -sudo yum update -y && sudo yum install -y containerd.io -``` + ```shell + sudo yum update -y && sudo yum install -y containerd.io + ``` -```shell -## Configure containerd -sudo mkdir -p /etc/containerd -containerd config default | sudo tee /etc/containerd/config.toml -``` +3. Configure `containerd`: + + ```shell + sudo mkdir -p /etc/containerd + containerd config default | sudo tee /etc/containerd/config.toml + ``` + +4. Restart `containerd`: + + ```shell + sudo systemctl restart containerd + ``` -```shell -# Restart containerd -sudo systemctl restart containerd -``` {{% /tab %}} {{% tab name="Windows (PowerShell)" %}} @@ -224,33 +192,35 @@ sudo systemctl restart containerd Start a Powershell session, set `$Version` to the desired version (ex: `$Version=1.4.3`), and then run the following commands:
    -```powershell -# (Install containerd) -# Download containerd -curl.exe -L https://github.com/containerd/containerd/releases/download/v$Version/containerd-$Version-windows-amd64.tar.gz -o containerd-windows-amd64.tar.gz -tar.exe xvf .\containerd-windows-amd64.tar.gz -``` +1. Download `containerd`: -```powershell -# Extract and configure -Copy-Item -Path ".\bin\" -Destination "$Env:ProgramFiles\containerd" -Recurse -Force -cd $Env:ProgramFiles\containerd\ -.\containerd.exe config default | Out-File config.toml -Encoding ascii + ```powershell + curl.exe -L https://github.com/containerd/containerd/releases/download/v$Version/containerd-$Version-windows-amd64.tar.gz -o containerd-windows-amd64.tar.gz + tar.exe xvf .\containerd-windows-amd64.tar.gz + ``` -# Review the configuration. Depending on setup you may want to adjust: -# - the sandbox_image (Kubernetes pause image) -# - cni bin_dir and conf_dir locations -Get-Content config.toml +2. Extract and configure: -# (Optional - but highly recommended) Exclude containerd from Windows Defender Scans -Add-MpPreference -ExclusionProcess "$Env:ProgramFiles\containerd\containerd.exe" -``` + ```powershell + Copy-Item -Path ".\bin\" -Destination "$Env:ProgramFiles\containerd" -Recurse -Force + cd $Env:ProgramFiles\containerd\ + .\containerd.exe config default | Out-File config.toml -Encoding ascii -```powershell -# Start containerd -.\containerd.exe --register-service -Start-Service containerd -``` + # Review the configuration. Depending on setup you may want to adjust: + # - the sandbox_image (Kubernetes pause image) + # - cni bin_dir and conf_dir locations + Get-Content config.toml + + # (Optional - but highly recommended) Exclude containerd from Windows Defender Scans + Add-MpPreference -ExclusionProcess "$Env:ProgramFiles\containerd\containerd.exe" + ``` + +3. Start `containerd`: + + ```powershell + .\containerd.exe --register-service + Start-Service containerd + ``` {{% /tab %}} {{< /tabs >}} @@ -465,120 +435,92 @@ Use the following commands to install Docker on your system: {{< tabs name="tab-cri-docker-installation" >}} {{% tab name="Ubuntu 16.04+" %}} -```shell -# (Install Docker CE) -## Set up the repository: -### Install packages to allow apt to use a repository over HTTPS -sudo apt-get update && sudo apt-get install -y \ - apt-transport-https ca-certificates curl software-properties-common gnupg2 -``` +1. Setup the [Docker Engine repository for Ubuntu](https://docs.docker.com/engine/install/ubuntu/#set-up-the-repository) -```shell -# Add Docker's official GPG key: -curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key --keyring /etc/apt/trusted.gpg.d/docker.gpg add - -``` +2. Install Docker CE: -```shell -# Add the Docker apt repository: -sudo add-apt-repository \ - "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ - $(lsb_release -cs) \ - stable" -``` + ```shell + sudo apt-get update && sudo apt-get install -y \ + containerd.io=1.2.13-2 \ + docker-ce=5:19.03.11~3-0~ubuntu-$(lsb_release -cs) \ + docker-ce-cli=5:19.03.11~3-0~ubuntu-$(lsb_release -cs) + ``` -```shell -# Install Docker CE -sudo apt-get update && sudo apt-get install -y \ - containerd.io=1.2.13-2 \ - docker-ce=5:19.03.11~3-0~ubuntu-$(lsb_release -cs) \ - docker-ce-cli=5:19.03.11~3-0~ubuntu-$(lsb_release -cs) -``` +3. Set up the Docker daemon: -```shell -## Create /etc/docker -sudo mkdir /etc/docker -``` + ```shell + sudo mkdir /etc/docker + cat <}} 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 3f6e991eac..86186d1713 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 @@ -175,16 +175,34 @@ For more information on version skews, see: {{< tabs name="k8s_install" >}} {{% tab name="Debian-based distributions" %}} -```bash -sudo apt-get update && sudo apt-get install -y apt-transport-https curl -curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - -cat <}} on Linux, type: ### Install using native package management {{< tabs name="kubectl_install" >}} -{{< tab name="Ubuntu, Debian or HypriotOS" codelang="bash" >}} -sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2 curl -curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - -echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list -sudo apt-get update -sudo apt-get install -y kubectl -{{< /tab >}} +{{% tab name="Ubuntu, Debian or HypriotOS" %}} + +1. Update the `apt` package index and install packages needed to use the Kubernetes `apt` repository: + + ```shell + sudo apt-get update + sudo apt-get install -y apt-transport-https ca-certificates wget + ``` + +2. Download the Google Cloud public signing key: + + ```shell + sudo wget -O /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg + ``` + +3. Add the Kubernetes `apt` repository: + + ```shell + echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list + ``` + +4. Update `apt` package index with the new repository and install `kubectl`: + + ```shell + 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] From 5f7439095e986d7583de856868b2c834d99c2789 Mon Sep 17 00:00:00 2001 From: Kappie37 <44774200+Kappie37@users.noreply.github.com> Date: Mon, 8 Mar 2021 13:53:16 +0100 Subject: [PATCH 130/788] Update access-cluster-api.md Update not working link to the correct one about Accessing the API from within a Pod --- content/en/docs/tasks/administer-cluster/access-cluster-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/tasks/administer-cluster/access-cluster-api.md b/content/en/docs/tasks/administer-cluster/access-cluster-api.md index 191ec0c2fe..bc9bbd101d 100644 --- a/content/en/docs/tasks/administer-cluster/access-cluster-api.md +++ b/content/en/docs/tasks/administer-cluster/access-cluster-api.md @@ -192,7 +192,7 @@ func main() { } ``` -If the application is deployed as a Pod in the cluster, see [Accessing the API from within a Pod](#accessing-the-api-from-within-a-pod). +If the application is deployed as a Pod in the cluster, see [Accessing the API from within a Pod](https://kubernetes.io/docs/tasks/access-application-cluster/access-cluster/#accessing-the-api-from-a-pod). #### Python client From 5fcc8b29614f7f72b563a61d9d75dac70c7e5c75 Mon Sep 17 00:00:00 2001 From: Sandeep Rajan Date: Thu, 4 Mar 2021 12:06:09 -0500 Subject: [PATCH 131/788] remove mentions of kube-dns in kubeadm docs --- .../kubeadm/implementation-details.md | 8 +++--- .../setup-tools/kubeadm/kubeadm-config.md | 4 --- .../setup-tools/kubeadm/kubeadm-init-phase.md | 19 -------------- .../setup-tools/kubeadm/kubeadm-init.md | 4 +-- .../setup-tools/kubeadm/kubeadm-upgrade.md | 2 -- .../tools/kubeadm/troubleshooting-kubeadm.md | 2 +- .../docs/tasks/administer-cluster/coredns.md | 26 +++---------------- .../dns-custom-nameservers.md | 14 ++-------- .../kubeadm/kubeadm-upgrade.md | 2 +- 9 files changed, 12 insertions(+), 69 deletions(-) diff --git a/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md b/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md index 5a321ec670..026e24f2ed 100644 --- a/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md +++ b/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md @@ -436,12 +436,12 @@ A ServiceAccount for `kube-proxy` is created in the `kube-system` namespace; the #### DNS -- In Kubernetes version 1.18 kube-dns usage with kubeadm is deprecated and will be removed in a future release +- In Kubernetes version 1.21 kube-dns usage with kubeadm has been removed - The CoreDNS service is named `kube-dns`. This is done to prevent any interruption -in service when the user is switching the cluster DNS from kube-dns to CoreDNS or vice-versa +in service when the user is switching the cluster DNS from kube-dns to CoreDNS the `--config` method described [here](/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/#cmd-phase-addon) -- A ServiceAccount for CoreDNS/kube-dns is created in the `kube-system` namespace. -- The `kube-dns` ServiceAccount is bound to the privileges in the `system:kube-dns` ClusterRole +- A ServiceAccount for CoreDNS is created in the `kube-system` namespace. +- The `coredns` ServiceAccount is bound to the privileges in the `system:coredns` ClusterRole ## kubeadm join phases internal design diff --git a/content/en/docs/reference/setup-tools/kubeadm/kubeadm-config.md b/content/en/docs/reference/setup-tools/kubeadm/kubeadm-config.md index 23dff658e9..93f89c594b 100644 --- a/content/en/docs/reference/setup-tools/kubeadm/kubeadm-config.md +++ b/content/en/docs/reference/setup-tools/kubeadm/kubeadm-config.md @@ -20,10 +20,6 @@ For more information navigate to [Using kubeadm init with a configuration file](/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file) or [Using kubeadm join with a configuration file](/docs/reference/setup-tools/kubeadm/kubeadm-join/#config-file). -In Kubernetes v1.13.0 and later to list/pull kube-dns images instead of the CoreDNS image -the `--config` method described [here](/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/#cmd-phase-addon) -has to be used. - ## kubeadm config view {#cmd-config-view} diff --git a/content/en/docs/reference/setup-tools/kubeadm/kubeadm-init-phase.md b/content/en/docs/reference/setup-tools/kubeadm/kubeadm-init-phase.md index 21ab7a863d..2b6939bac6 100644 --- a/content/en/docs/reference/setup-tools/kubeadm/kubeadm-init-phase.md +++ b/content/en/docs/reference/setup-tools/kubeadm/kubeadm-init-phase.md @@ -143,25 +143,6 @@ install them selectively. {{< tab name="kube-proxy" include="generated/kubeadm_init_phase_addon_kube-proxy.md" />}} {{< /tabs >}} -To use kube-dns instead of CoreDNS you have to pass a configuration file: - -```bash -# for installing a DNS addon only -kubeadm init phase addon coredns --config=someconfig.yaml -``` - -The file has to contain a [`dns`](https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2#DNS) field in[`ClusterConfiguration`](https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2#ClusterConfiguration) -and also a type for the addon - `kube-dns` (default value is `CoreDNS`). - -```yaml -apiVersion: kubeadm.k8s.io/v1beta2 -kind: ClusterConfiguration -dns: - type: "kube-dns" -``` - -Please note that kube-dns usage with kubeadm is deprecated as of v1.18 and will be removed in a future release. - For more details on each field in the `v1beta2` configuration you can navigate to our [API reference pages.] (https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2) diff --git a/content/en/docs/reference/setup-tools/kubeadm/kubeadm-init.md b/content/en/docs/reference/setup-tools/kubeadm/kubeadm-init.md index 3d4b977102..eb5fb20943 100644 --- a/content/en/docs/reference/setup-tools/kubeadm/kubeadm-init.md +++ b/content/en/docs/reference/setup-tools/kubeadm/kubeadm-init.md @@ -66,12 +66,10 @@ following steps: 1. Installs a DNS server (CoreDNS) and the kube-proxy addon components via the API server. In Kubernetes version 1.11 and later CoreDNS is the default DNS server. - To install kube-dns instead of CoreDNS, the DNS addon has to be configured in the kubeadm `ClusterConfiguration`. - For more information about the configuration see the section `Using kubeadm init with a configuration file` below. Please note that although the DNS server is deployed, it will not be scheduled until CNI is installed. {{< warning >}} - kube-dns usage with kubeadm is deprecated as of v1.18 and will be removed in a future release. + kube-dns usage with kubeadm is deprecated as of v1.18 and is removed in v1.21. {{< /warning >}} ### Using init phases with kubeadm {#init-phases} diff --git a/content/en/docs/reference/setup-tools/kubeadm/kubeadm-upgrade.md b/content/en/docs/reference/setup-tools/kubeadm/kubeadm-upgrade.md index 5796e7aec7..6a2c5f782f 100644 --- a/content/en/docs/reference/setup-tools/kubeadm/kubeadm-upgrade.md +++ b/content/en/docs/reference/setup-tools/kubeadm/kubeadm-upgrade.md @@ -20,8 +20,6 @@ For older versions of kubeadm, please refer to older documentation sets of the K You can use `kubeadm upgrade diff` to see the changes that would be applied to static pod manifests. -To use kube-dns with upgrades in Kubernetes v1.13.0 and later please follow [this guide](/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/#cmd-phase-addon). - In Kubernetes v1.15.0 and later, `kubeadm upgrade apply` and `kubeadm upgrade node` will also automatically renew the kubeadm managed certificates on this node, including those stored in kubeconfig files. To opt-out, it is possible to pass the flag `--certificate-renewal=false`. For more details about certificate diff --git a/content/en/docs/setup/production-environment/tools/kubeadm/troubleshooting-kubeadm.md b/content/en/docs/setup/production-environment/tools/kubeadm/troubleshooting-kubeadm.md index 28ef3d3038..aff03fb1ab 100644 --- a/content/en/docs/setup/production-environment/tools/kubeadm/troubleshooting-kubeadm.md +++ b/content/en/docs/setup/production-environment/tools/kubeadm/troubleshooting-kubeadm.md @@ -149,7 +149,7 @@ Right after `kubeadm init` there should not be any pods in these states. MountFlags can interfere with volumes mounted by Kubernetes, and put the Pods in `CrashLoopBackOff` state. The error happens when Kubernetes does not find `var/run/secrets/kubernetes.io/serviceaccount` files. -## `coredns` (or `kube-dns`) is stuck in the `Pending` state +## `coredns` is stuck in the `Pending` state This is **expected** and part of the design. kubeadm is network provider-agnostic, so the admin should [install the pod network add-on](/docs/concepts/cluster-administration/addons/) diff --git a/content/en/docs/tasks/administer-cluster/coredns.md b/content/en/docs/tasks/administer-cluster/coredns.md index 32d4f7d7ec..54163058c8 100644 --- a/content/en/docs/tasks/administer-cluster/coredns.md +++ b/content/en/docs/tasks/administer-cluster/coredns.md @@ -36,7 +36,7 @@ For manual deployment or replacement of kube-dns, see the documentation at the In Kubernetes version 1.10 and later, you can also move to CoreDNS when you use `kubeadm` to upgrade a cluster that is using `kube-dns`. In this case, `kubeadm` will generate the CoreDNS configuration -("Corefile") based upon the `kube-dns` ConfigMap, preserving configurations for federation, +("Corefile") based upon the `kube-dns` ConfigMap, preserving configurations for stub domains, and upstream name server. If you are moving from kube-dns to CoreDNS, make sure to set the `CoreDNS` feature gate to `true` @@ -46,8 +46,7 @@ kubeadm upgrade apply v1.11.0 --feature-gates=CoreDNS=true ``` In Kubernetes version 1.13 and later the `CoreDNS` feature gate is removed and CoreDNS -is used by default. Follow the guide outlined [here](/docs/reference/setup-tools/kubeadm/kubeadm-init-phase#cmd-phase-addon) if you want -your upgraded cluster to use kube-dns. +is used by default. In versions prior to 1.11 the Corefile will be **overwritten** by the one created during upgrade. **You should save your existing ConfigMap if you have customized it.** You may re-apply your @@ -56,26 +55,7 @@ customizations after the new ConfigMap is up and running. If you are running CoreDNS in Kubernetes version 1.11 and later, during upgrade, your existing Corefile will be retained. - -### Installing kube-dns instead of CoreDNS with kubeadm - -{{< note >}} -In Kubernetes 1.11, CoreDNS has graduated to General Availability (GA) -and is installed by default. -{{< /note >}} - -{{< warning >}} -In Kubernetes 1.18, kube-dns usage with kubeadm has been deprecated and will be removed in a future version. -{{< /warning >}} - -To install kube-dns on versions prior to 1.13, set the `CoreDNS` feature gate -value to `false`: - -``` -kubeadm init --feature-gates=CoreDNS=false -``` - -For versions 1.13 and later, follow the guide outlined [here](/docs/reference/setup-tools/kubeadm/kubeadm-init-phase#cmd-phase-addon). +In Kubernetes version 1.21, support for `kube-dns` is removed from kubeadm. ## Upgrading CoreDNS diff --git a/content/en/docs/tasks/administer-cluster/dns-custom-nameservers.md b/content/en/docs/tasks/administer-cluster/dns-custom-nameservers.md index 06de85b305..308b066651 100644 --- a/content/en/docs/tasks/administer-cluster/dns-custom-nameservers.md +++ b/content/en/docs/tasks/administer-cluster/dns-custom-nameservers.md @@ -34,7 +34,7 @@ As of Kubernetes v1.12, CoreDNS is the recommended DNS Server, replacing kube-dn originally used kube-dns, you may still have `kube-dns` deployed rather than CoreDNS. {{< note >}} -Both the CoreDNS and kube-dns Service are named `kube-dns` in the `metadata.name` field. +The CoreDNS Service is named `kube-dns` in the `metadata.name` field. This is so that there is greater interoperability with workloads that relied on the legacy `kube-dns` Service name to resolve addresses internal to the cluster. Using a Service named `kube-dns` abstracts away the implementation detail of which DNS provider is running behind that common name. {{< /note >}} @@ -179,17 +179,14 @@ During translation, all FQDN nameservers will be omitted from the CoreDNS config CoreDNS supports the features of kube-dns and more. A ConfigMap created for kube-dns to support `StubDomains`and `upstreamNameservers` translates to the `forward` plugin in CoreDNS. -Similarly, the `Federations` plugin in kube-dns translates to the `federation` plugin in CoreDNS. ### Example -This example ConfigMap for kube-dns specifies federations, stubdomains and upstreamnameservers: +This example ConfigMap for kube-dns specifies stubdomains and upstreamnameservers: ```yaml apiVersion: v1 data: - federations: | - {"foo" : "foo.feddomain.com"} stubDomains: | {"abc.com" : ["1.2.3.4"], "my.cluster.local" : ["2.3.4.5"]} upstreamNameservers: | @@ -199,13 +196,6 @@ kind: ConfigMap The equivalent configuration in CoreDNS creates a Corefile: -* For federations: -``` -federation cluster.local { - foo foo.feddomain.com -} -``` - * For stubDomains: ```yaml abc.com:53 { 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 5af9d27b82..45466a6b5c 100644 --- a/content/en/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade.md +++ b/content/en/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade.md @@ -328,7 +328,7 @@ and post-upgrade manifest file for a certain component, a backup file for it wil - Makes sure the control plane images are available or available to pull to the machine. - Generates replacements and/or uses user supplied overwrites if component configs require version upgrades. - Upgrades the control plane components or rollbacks if any of them fails to come up. -- Applies the new `kube-dns` and `kube-proxy` manifests and makes sure that all necessary RBAC rules are created. +- Applies the new `CoreDNS` and `kube-proxy` manifests and makes sure that all necessary RBAC rules are created. - Creates new certificate and key files of the API server and backs up old files if they're about to expire in 180 days. `kubeadm upgrade node` does the following on additional control plane nodes: From 3e9a73f7c28d76280c76d74dc3e58213715b99b4 Mon Sep 17 00:00:00 2001 From: Sandeep Rajan Date: Fri, 5 Mar 2021 12:12:27 -0500 Subject: [PATCH 132/788] move kube-dns remove statement to the end --- .../reference/setup-tools/kubeadm/implementation-details.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md b/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md index 026e24f2ed..420f6edcac 100644 --- a/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md +++ b/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md @@ -436,13 +436,15 @@ A ServiceAccount for `kube-proxy` is created in the `kube-system` namespace; the #### DNS -- In Kubernetes version 1.21 kube-dns usage with kubeadm has been removed - The CoreDNS service is named `kube-dns`. This is done to prevent any interruption in service when the user is switching the cluster DNS from kube-dns to CoreDNS the `--config` method described [here](/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/#cmd-phase-addon) - A ServiceAccount for CoreDNS is created in the `kube-system` namespace. - The `coredns` ServiceAccount is bound to the privileges in the `system:coredns` ClusterRole +- In Kubernetes version 1.21, support for using `kube-dns` with kubeadm is removed. +You can use CoreDNS with kubeadm even when the related Service is named `kube-dns`. + ## kubeadm join phases internal design Similarly to `kubeadm init`, also `kubeadm join` internal workflow consists of a sequence of atomic work tasks to perform. From b9576494e91fa4ed8d44f3df23db8031e06ea1f5 Mon Sep 17 00:00:00 2001 From: Sandeep Rajan Date: Mon, 8 Mar 2021 11:56:53 -0500 Subject: [PATCH 133/788] nit in tense --- .../reference/setup-tools/kubeadm/implementation-details.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md b/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md index 420f6edcac..670082a3fd 100644 --- a/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md +++ b/content/en/docs/reference/setup-tools/kubeadm/implementation-details.md @@ -442,7 +442,7 @@ the `--config` method described [here](/docs/reference/setup-tools/kubeadm/kubea - A ServiceAccount for CoreDNS is created in the `kube-system` namespace. - The `coredns` ServiceAccount is bound to the privileges in the `system:coredns` ClusterRole -- In Kubernetes version 1.21, support for using `kube-dns` with kubeadm is removed. +- In Kubernetes version 1.21, support for using `kube-dns` with kubeadm was removed. You can use CoreDNS with kubeadm even when the related Service is named `kube-dns`. ## kubeadm join phases internal design From dd2153d2dbde9b20560332252fdd1428229de372 Mon Sep 17 00:00:00 2001 From: Philippe Martin Date: Mon, 8 Mar 2021 18:59:39 +0100 Subject: [PATCH 134/788] Use consistent pluralization for API groupings in reference --- .../policies-resources/_index.md | 4 -- .../kubernetes-api/policy-resources/_index.md | 4 ++ .../limit-range-v1.md | 26 ++++----- .../network-policy-v1.md | 26 ++++----- .../pod-disruption-budget-v1beta1.md | 38 ++++++------- .../pod-security-policy-v1beta1.md | 28 +++++----- .../resource-quota-v1.md | 42 +++++++-------- .../service-resources/_index.md | 4 ++ .../endpoint-slice-v1beta1.md | 24 ++++----- .../endpoints-v1.md | 24 ++++----- .../ingress-class-v1.md | 24 ++++----- .../ingress-v1.md | 38 ++++++------- .../service-v1.md | 38 ++++++------- .../services-resources/_index.md | 4 -- .../workload-resources/_index.md | 4 ++ .../container.md | 0 .../controller-revision-v1.md | 24 ++++----- .../cron-job-v1beta1.md | 40 +++++++------- .../cron-job-v2alpha1.md | 40 +++++++------- .../daemon-set-v1.md | 40 +++++++------- .../deployment-v1.md | 40 +++++++------- .../ephemeral-container.md | 0 .../horizontal-pod-autoscaler-v1.md | 38 ++++++------- .../horizontal-pod-autoscaler-v2beta2.md | 38 ++++++------- .../job-v1.md | 40 +++++++------- .../pod-template-v1.md | 32 +++++------ .../pod-v1.md | 54 +++++++++---------- .../priority-class-v1.md | 22 ++++---- .../replica-set-v1.md | 40 +++++++------- .../replication-controller-v1.md | 40 +++++++------- .../stateful-set-v1.md | 40 +++++++------- .../workloads-resources/_index.md | 4 -- 32 files changed, 430 insertions(+), 430 deletions(-) delete mode 100644 content/en/docs/reference/kubernetes-api/policies-resources/_index.md create mode 100644 content/en/docs/reference/kubernetes-api/policy-resources/_index.md rename content/en/docs/reference/kubernetes-api/{policies-resources => policy-resources}/limit-range-v1.md (90%) rename content/en/docs/reference/kubernetes-api/{policies-resources => policy-resources}/network-policy-v1.md (93%) rename content/en/docs/reference/kubernetes-api/{policies-resources => policy-resources}/pod-disruption-budget-v1beta1.md (86%) rename content/en/docs/reference/kubernetes-api/{policies-resources => policy-resources}/pod-security-policy-v1beta1.md (91%) rename content/en/docs/reference/kubernetes-api/{policies-resources => policy-resources}/resource-quota-v1.md (86%) create mode 100644 content/en/docs/reference/kubernetes-api/service-resources/_index.md rename content/en/docs/reference/kubernetes-api/{services-resources => service-resources}/endpoint-slice-v1beta1.md (92%) rename content/en/docs/reference/kubernetes-api/{services-resources => service-resources}/endpoints-v1.md (92%) rename content/en/docs/reference/kubernetes-api/{services-resources => service-resources}/ingress-class-v1.md (87%) rename content/en/docs/reference/kubernetes-api/{services-resources => service-resources}/ingress-v1.md (93%) rename content/en/docs/reference/kubernetes-api/{services-resources => service-resources}/service-v1.md (94%) delete mode 100644 content/en/docs/reference/kubernetes-api/services-resources/_index.md create mode 100644 content/en/docs/reference/kubernetes-api/workload-resources/_index.md rename content/en/docs/reference/kubernetes-api/{workloads-resources => workload-resources}/container.md (100%) rename content/en/docs/reference/kubernetes-api/{workloads-resources => workload-resources}/controller-revision-v1.md (89%) rename content/en/docs/reference/kubernetes-api/{workloads-resources => workload-resources}/cron-job-v1beta1.md (88%) rename content/en/docs/reference/kubernetes-api/{workloads-resources => workload-resources}/cron-job-v2alpha1.md (88%) rename content/en/docs/reference/kubernetes-api/{workloads-resources => workload-resources}/daemon-set-v1.md (90%) rename content/en/docs/reference/kubernetes-api/{workloads-resources => workload-resources}/deployment-v1.md (90%) rename content/en/docs/reference/kubernetes-api/{workloads-resources => workload-resources}/ephemeral-container.md (100%) rename content/en/docs/reference/kubernetes-api/{workloads-resources => workload-resources}/horizontal-pod-autoscaler-v1.md (85%) rename content/en/docs/reference/kubernetes-api/{workloads-resources => workload-resources}/horizontal-pod-autoscaler-v2beta2.md (94%) rename content/en/docs/reference/kubernetes-api/{workloads-resources => workload-resources}/job-v1.md (91%) rename content/en/docs/reference/kubernetes-api/{workloads-resources => workload-resources}/pod-template-v1.md (86%) rename content/en/docs/reference/kubernetes-api/{workloads-resources => workload-resources}/pod-v1.md (94%) rename content/en/docs/reference/kubernetes-api/{workloads-resources => workload-resources}/priority-class-v1.md (88%) rename content/en/docs/reference/kubernetes-api/{workloads-resources => workload-resources}/replica-set-v1.md (88%) rename content/en/docs/reference/kubernetes-api/{workloads-resources => workload-resources}/replication-controller-v1.md (86%) rename content/en/docs/reference/kubernetes-api/{workloads-resources => workload-resources}/stateful-set-v1.md (89%) delete mode 100644 content/en/docs/reference/kubernetes-api/workloads-resources/_index.md diff --git a/content/en/docs/reference/kubernetes-api/policies-resources/_index.md b/content/en/docs/reference/kubernetes-api/policies-resources/_index.md deleted file mode 100644 index 251e411647..0000000000 --- a/content/en/docs/reference/kubernetes-api/policies-resources/_index.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "Policies Resources" -weight: 6 ---- diff --git a/content/en/docs/reference/kubernetes-api/policy-resources/_index.md b/content/en/docs/reference/kubernetes-api/policy-resources/_index.md new file mode 100644 index 0000000000..06a9e27fee --- /dev/null +++ b/content/en/docs/reference/kubernetes-api/policy-resources/_index.md @@ -0,0 +1,4 @@ +--- +title: "Policy Resources" +weight: 6 +--- diff --git a/content/en/docs/reference/kubernetes-api/policies-resources/limit-range-v1.md b/content/en/docs/reference/kubernetes-api/policy-resources/limit-range-v1.md similarity index 90% rename from content/en/docs/reference/kubernetes-api/policies-resources/limit-range-v1.md rename to content/en/docs/reference/kubernetes-api/policy-resources/limit-range-v1.md index d73c4d3630..00982c5ab8 100644 --- a/content/en/docs/reference/kubernetes-api/policies-resources/limit-range-v1.md +++ b/content/en/docs/reference/kubernetes-api/policy-resources/limit-range-v1.md @@ -30,7 +30,7 @@ LimitRange sets resource usage limits for each kind of resource in a Namespace. Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **spec** (
    }}">LimitRangeSpec) +- **spec** (}}">LimitRangeSpec) Spec defines the limits enforced. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status @@ -95,7 +95,7 @@ LimitRangeList is a list of LimitRange items. Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds -- **items** ([]}}">LimitRange), required +- **items** ([]}}">LimitRange), required Items is a list of LimitRange objects. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ @@ -142,7 +142,7 @@ GET /api/v1/namespaces/{namespace}/limitranges/{name} #### Response -200 (}}">LimitRange): OK +200 (}}">LimitRange): OK 401: Unauthorized @@ -215,7 +215,7 @@ GET /api/v1/namespaces/{namespace}/limitranges #### Response -200 (}}">LimitRangeList): OK +200 (}}">LimitRangeList): OK 401: Unauthorized @@ -283,7 +283,7 @@ GET /api/v1/limitranges #### Response -200 (}}">LimitRangeList): OK +200 (}}">LimitRangeList): OK 401: Unauthorized @@ -302,7 +302,7 @@ POST /api/v1/namespaces/{namespace}/limitranges }}">namespace -- **body**: }}">LimitRange, required +- **body**: }}">LimitRange, required @@ -326,11 +326,11 @@ POST /api/v1/namespaces/{namespace}/limitranges #### Response -200 (}}">LimitRange): OK +200 (}}">LimitRange): OK -201 (}}">LimitRange): Created +201 (}}">LimitRange): Created -202 (}}">LimitRange): Accepted +202 (}}">LimitRange): Accepted 401: Unauthorized @@ -354,7 +354,7 @@ PUT /api/v1/namespaces/{namespace}/limitranges/{name} }}">namespace -- **body**: }}">LimitRange, required +- **body**: }}">LimitRange, required @@ -378,9 +378,9 @@ PUT /api/v1/namespaces/{namespace}/limitranges/{name} #### Response -200 (}}">LimitRange): OK +200 (}}">LimitRange): OK -201 (}}">LimitRange): Created +201 (}}">LimitRange): Created 401: Unauthorized @@ -433,7 +433,7 @@ PATCH /api/v1/namespaces/{namespace}/limitranges/{name} #### Response -200 (}}">LimitRange): OK +200 (}}">LimitRange): OK 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/policies-resources/network-policy-v1.md b/content/en/docs/reference/kubernetes-api/policy-resources/network-policy-v1.md similarity index 93% rename from content/en/docs/reference/kubernetes-api/policies-resources/network-policy-v1.md rename to content/en/docs/reference/kubernetes-api/policy-resources/network-policy-v1.md index 798a3dc891..78e4868d94 100644 --- a/content/en/docs/reference/kubernetes-api/policies-resources/network-policy-v1.md +++ b/content/en/docs/reference/kubernetes-api/policy-resources/network-policy-v1.md @@ -30,7 +30,7 @@ NetworkPolicy describes what network traffic is allowed for a set of Pods Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **spec** (}}">NetworkPolicySpec) +- **spec** (}}">NetworkPolicySpec) Specification of the desired behavior for this NetworkPolicy. @@ -190,7 +190,7 @@ NetworkPolicyList is a list of NetworkPolicy objects. Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **items** ([]}}">NetworkPolicy), required +- **items** ([]}}">NetworkPolicy), required Items is a list of schema objects. @@ -237,7 +237,7 @@ GET /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name} #### Response -200 (}}">NetworkPolicy): OK +200 (}}">NetworkPolicy): OK 401: Unauthorized @@ -310,7 +310,7 @@ GET /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies #### Response -200 (}}">NetworkPolicyList): OK +200 (}}">NetworkPolicyList): OK 401: Unauthorized @@ -378,7 +378,7 @@ GET /apis/networking.k8s.io/v1/networkpolicies #### Response -200 (}}">NetworkPolicyList): OK +200 (}}">NetworkPolicyList): OK 401: Unauthorized @@ -397,7 +397,7 @@ POST /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies }}">namespace -- **body**: }}">NetworkPolicy, required +- **body**: }}">NetworkPolicy, required @@ -421,11 +421,11 @@ POST /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies #### Response -200 (}}">NetworkPolicy): OK +200 (}}">NetworkPolicy): OK -201 (}}">NetworkPolicy): Created +201 (}}">NetworkPolicy): Created -202 (}}">NetworkPolicy): Accepted +202 (}}">NetworkPolicy): Accepted 401: Unauthorized @@ -449,7 +449,7 @@ PUT /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name} }}">namespace -- **body**: }}">NetworkPolicy, required +- **body**: }}">NetworkPolicy, required @@ -473,9 +473,9 @@ PUT /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name} #### Response -200 (}}">NetworkPolicy): OK +200 (}}">NetworkPolicy): OK -201 (}}">NetworkPolicy): Created +201 (}}">NetworkPolicy): Created 401: Unauthorized @@ -528,7 +528,7 @@ PATCH /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name} #### Response -200 (}}">NetworkPolicy): OK +200 (}}">NetworkPolicy): OK 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/policies-resources/pod-disruption-budget-v1beta1.md b/content/en/docs/reference/kubernetes-api/policy-resources/pod-disruption-budget-v1beta1.md similarity index 86% rename from content/en/docs/reference/kubernetes-api/policies-resources/pod-disruption-budget-v1beta1.md rename to content/en/docs/reference/kubernetes-api/policy-resources/pod-disruption-budget-v1beta1.md index 47b9d83a7e..9120b19468 100644 --- a/content/en/docs/reference/kubernetes-api/policies-resources/pod-disruption-budget-v1beta1.md +++ b/content/en/docs/reference/kubernetes-api/policy-resources/pod-disruption-budget-v1beta1.md @@ -29,11 +29,11 @@ PodDisruptionBudget is an object to define the max disruption that can be caused - **metadata** (}}">ObjectMeta) -- **spec** (}}">PodDisruptionBudgetSpec) +- **spec** (}}">PodDisruptionBudgetSpec) Specification of the desired behavior of the PodDisruptionBudget. -- **status** (}}">PodDisruptionBudgetStatus) +- **status** (}}">PodDisruptionBudgetStatus) Most recently observed status of the PodDisruptionBudget. @@ -121,7 +121,7 @@ PodDisruptionBudgetList is a collection of PodDisruptionBudgets. - **metadata** (}}">ListMeta) -- **items** ([]}}">PodDisruptionBudget), required +- **items** ([]}}">PodDisruptionBudget), required @@ -167,7 +167,7 @@ GET /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name} #### Response -200 (}}">PodDisruptionBudget): OK +200 (}}">PodDisruptionBudget): OK 401: Unauthorized @@ -200,7 +200,7 @@ GET /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name}/stat #### Response -200 (}}">PodDisruptionBudget): OK +200 (}}">PodDisruptionBudget): OK 401: Unauthorized @@ -273,7 +273,7 @@ GET /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets #### Response -200 (}}">PodDisruptionBudgetList): OK +200 (}}">PodDisruptionBudgetList): OK 401: Unauthorized @@ -341,7 +341,7 @@ GET /apis/policy/v1beta1/poddisruptionbudgets #### Response -200 (}}">PodDisruptionBudgetList): OK +200 (}}">PodDisruptionBudgetList): OK 401: Unauthorized @@ -360,7 +360,7 @@ POST /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets }}">namespace -- **body**: }}">PodDisruptionBudget, required +- **body**: }}">PodDisruptionBudget, required @@ -384,11 +384,11 @@ POST /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets #### Response -200 (}}">PodDisruptionBudget): OK +200 (}}">PodDisruptionBudget): OK -201 (}}">PodDisruptionBudget): Created +201 (}}">PodDisruptionBudget): Created -202 (}}">PodDisruptionBudget): Accepted +202 (}}">PodDisruptionBudget): Accepted 401: Unauthorized @@ -412,7 +412,7 @@ PUT /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name} }}">namespace -- **body**: }}">PodDisruptionBudget, required +- **body**: }}">PodDisruptionBudget, required @@ -436,9 +436,9 @@ PUT /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name} #### Response -200 (}}">PodDisruptionBudget): OK +200 (}}">PodDisruptionBudget): OK -201 (}}">PodDisruptionBudget): Created +201 (}}">PodDisruptionBudget): Created 401: Unauthorized @@ -462,7 +462,7 @@ PUT /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name}/stat }}">namespace -- **body**: }}">PodDisruptionBudget, required +- **body**: }}">PodDisruptionBudget, required @@ -486,9 +486,9 @@ PUT /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name}/stat #### Response -200 (}}">PodDisruptionBudget): OK +200 (}}">PodDisruptionBudget): OK -201 (}}">PodDisruptionBudget): Created +201 (}}">PodDisruptionBudget): Created 401: Unauthorized @@ -541,7 +541,7 @@ PATCH /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name} #### Response -200 (}}">PodDisruptionBudget): OK +200 (}}">PodDisruptionBudget): OK 401: Unauthorized @@ -594,7 +594,7 @@ PATCH /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name}/st #### Response -200 (}}">PodDisruptionBudget): OK +200 (}}">PodDisruptionBudget): OK 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/policies-resources/pod-security-policy-v1beta1.md b/content/en/docs/reference/kubernetes-api/policy-resources/pod-security-policy-v1beta1.md similarity index 91% rename from content/en/docs/reference/kubernetes-api/policies-resources/pod-security-policy-v1beta1.md rename to content/en/docs/reference/kubernetes-api/policy-resources/pod-security-policy-v1beta1.md index 1d2eac8837..59444cbbcf 100644 --- a/content/en/docs/reference/kubernetes-api/policies-resources/pod-security-policy-v1beta1.md +++ b/content/en/docs/reference/kubernetes-api/policy-resources/pod-security-policy-v1beta1.md @@ -30,7 +30,7 @@ PodSecurityPolicy governs the ability to make requests that affect the Security Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **spec** (}}">PodSecurityPolicySpec) +- **spec** (}}">PodSecurityPolicySpec) spec defines the policy enforced. @@ -331,7 +331,7 @@ PodSecurityPolicyList is a list of PodSecurityPolicy objects. Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **items** ([]}}">PodSecurityPolicy), required +- **items** ([]}}">PodSecurityPolicy), required items is a list of schema objects. @@ -373,7 +373,7 @@ GET /apis/policy/v1beta1/podsecuritypolicies/{name} #### Response -200 (}}">PodSecurityPolicy): OK +200 (}}">PodSecurityPolicy): OK 401: Unauthorized @@ -441,7 +441,7 @@ GET /apis/policy/v1beta1/podsecuritypolicies #### Response -200 (}}">PodSecurityPolicyList): OK +200 (}}">PodSecurityPolicyList): OK 401: Unauthorized @@ -455,7 +455,7 @@ POST /apis/policy/v1beta1/podsecuritypolicies #### Parameters -- **body**: }}">PodSecurityPolicy, required +- **body**: }}">PodSecurityPolicy, required @@ -479,11 +479,11 @@ POST /apis/policy/v1beta1/podsecuritypolicies #### Response -200 (}}">PodSecurityPolicy): OK +200 (}}">PodSecurityPolicy): OK -201 (}}">PodSecurityPolicy): Created +201 (}}">PodSecurityPolicy): Created -202 (}}">PodSecurityPolicy): Accepted +202 (}}">PodSecurityPolicy): Accepted 401: Unauthorized @@ -502,7 +502,7 @@ PUT /apis/policy/v1beta1/podsecuritypolicies/{name} name of the PodSecurityPolicy -- **body**: }}">PodSecurityPolicy, required +- **body**: }}">PodSecurityPolicy, required @@ -526,9 +526,9 @@ PUT /apis/policy/v1beta1/podsecuritypolicies/{name} #### Response -200 (}}">PodSecurityPolicy): OK +200 (}}">PodSecurityPolicy): OK -201 (}}">PodSecurityPolicy): Created +201 (}}">PodSecurityPolicy): Created 401: Unauthorized @@ -576,7 +576,7 @@ PATCH /apis/policy/v1beta1/podsecuritypolicies/{name} #### Response -200 (}}">PodSecurityPolicy): OK +200 (}}">PodSecurityPolicy): OK 401: Unauthorized @@ -624,9 +624,9 @@ DELETE /apis/policy/v1beta1/podsecuritypolicies/{name} #### Response -200 (}}">PodSecurityPolicy): OK +200 (}}">PodSecurityPolicy): OK -202 (}}">PodSecurityPolicy): Accepted +202 (}}">PodSecurityPolicy): Accepted 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/policies-resources/resource-quota-v1.md b/content/en/docs/reference/kubernetes-api/policy-resources/resource-quota-v1.md similarity index 86% rename from content/en/docs/reference/kubernetes-api/policies-resources/resource-quota-v1.md rename to content/en/docs/reference/kubernetes-api/policy-resources/resource-quota-v1.md index 66b0451d2d..93b8cbc9e8 100644 --- a/content/en/docs/reference/kubernetes-api/policies-resources/resource-quota-v1.md +++ b/content/en/docs/reference/kubernetes-api/policy-resources/resource-quota-v1.md @@ -30,11 +30,11 @@ ResourceQuota sets aggregate quota restrictions enforced per namespace Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **spec** (}}">ResourceQuotaSpec) +- **spec** (}}">ResourceQuotaSpec) Spec defines the desired quota. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status -- **status** (}}">ResourceQuotaStatus) +- **status** (}}">ResourceQuotaStatus) Status defines the actual enforced quota and its current usage. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status @@ -120,7 +120,7 @@ ResourceQuotaList is a list of ResourceQuota items. Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds -- **items** ([]}}">ResourceQuota), required +- **items** ([]}}">ResourceQuota), required Items is a list of ResourceQuota objects. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/ @@ -167,7 +167,7 @@ GET /api/v1/namespaces/{namespace}/resourcequotas/{name} #### Response -200 (}}">ResourceQuota): OK +200 (}}">ResourceQuota): OK 401: Unauthorized @@ -200,7 +200,7 @@ GET /api/v1/namespaces/{namespace}/resourcequotas/{name}/status #### Response -200 (}}">ResourceQuota): OK +200 (}}">ResourceQuota): OK 401: Unauthorized @@ -273,7 +273,7 @@ GET /api/v1/namespaces/{namespace}/resourcequotas #### Response -200 (}}">ResourceQuotaList): OK +200 (}}">ResourceQuotaList): OK 401: Unauthorized @@ -341,7 +341,7 @@ GET /api/v1/resourcequotas #### Response -200 (}}">ResourceQuotaList): OK +200 (}}">ResourceQuotaList): OK 401: Unauthorized @@ -360,7 +360,7 @@ POST /api/v1/namespaces/{namespace}/resourcequotas }}">namespace -- **body**: }}">ResourceQuota, required +- **body**: }}">ResourceQuota, required @@ -384,11 +384,11 @@ POST /api/v1/namespaces/{namespace}/resourcequotas #### Response -200 (}}">ResourceQuota): OK +200 (}}">ResourceQuota): OK -201 (}}">ResourceQuota): Created +201 (}}">ResourceQuota): Created -202 (}}">ResourceQuota): Accepted +202 (}}">ResourceQuota): Accepted 401: Unauthorized @@ -412,7 +412,7 @@ PUT /api/v1/namespaces/{namespace}/resourcequotas/{name} }}">namespace -- **body**: }}">ResourceQuota, required +- **body**: }}">ResourceQuota, required @@ -436,9 +436,9 @@ PUT /api/v1/namespaces/{namespace}/resourcequotas/{name} #### Response -200 (}}">ResourceQuota): OK +200 (}}">ResourceQuota): OK -201 (}}">ResourceQuota): Created +201 (}}">ResourceQuota): Created 401: Unauthorized @@ -462,7 +462,7 @@ PUT /api/v1/namespaces/{namespace}/resourcequotas/{name}/status }}">namespace -- **body**: }}">ResourceQuota, required +- **body**: }}">ResourceQuota, required @@ -486,9 +486,9 @@ PUT /api/v1/namespaces/{namespace}/resourcequotas/{name}/status #### Response -200 (}}">ResourceQuota): OK +200 (}}">ResourceQuota): OK -201 (}}">ResourceQuota): Created +201 (}}">ResourceQuota): Created 401: Unauthorized @@ -541,7 +541,7 @@ PATCH /api/v1/namespaces/{namespace}/resourcequotas/{name} #### Response -200 (}}">ResourceQuota): OK +200 (}}">ResourceQuota): OK 401: Unauthorized @@ -594,7 +594,7 @@ PATCH /api/v1/namespaces/{namespace}/resourcequotas/{name}/status #### Response -200 (}}">ResourceQuota): OK +200 (}}">ResourceQuota): OK 401: Unauthorized @@ -647,9 +647,9 @@ DELETE /api/v1/namespaces/{namespace}/resourcequotas/{name} #### Response -200 (}}">ResourceQuota): OK +200 (}}">ResourceQuota): OK -202 (}}">ResourceQuota): Accepted +202 (}}">ResourceQuota): Accepted 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/service-resources/_index.md b/content/en/docs/reference/kubernetes-api/service-resources/_index.md new file mode 100644 index 0000000000..0ab511b5a4 --- /dev/null +++ b/content/en/docs/reference/kubernetes-api/service-resources/_index.md @@ -0,0 +1,4 @@ +--- +title: "Service Resources" +weight: 2 +--- diff --git a/content/en/docs/reference/kubernetes-api/services-resources/endpoint-slice-v1beta1.md b/content/en/docs/reference/kubernetes-api/service-resources/endpoint-slice-v1beta1.md similarity index 92% rename from content/en/docs/reference/kubernetes-api/services-resources/endpoint-slice-v1beta1.md rename to content/en/docs/reference/kubernetes-api/service-resources/endpoint-slice-v1beta1.md index bb8c7213bb..1ad467b022 100644 --- a/content/en/docs/reference/kubernetes-api/services-resources/endpoint-slice-v1beta1.md +++ b/content/en/docs/reference/kubernetes-api/service-resources/endpoint-slice-v1beta1.md @@ -136,7 +136,7 @@ EndpointSliceList represents a list of endpoint slices Standard list metadata. -- **items** ([]}}">EndpointSlice), required +- **items** ([]}}">EndpointSlice), required List of endpoint slices @@ -183,7 +183,7 @@ GET /apis/discovery.k8s.io/v1beta1/namespaces/{namespace}/endpointslices/{name} #### Response -200 (}}">EndpointSlice): OK +200 (}}">EndpointSlice): OK 401: Unauthorized @@ -256,7 +256,7 @@ GET /apis/discovery.k8s.io/v1beta1/namespaces/{namespace}/endpointslices #### Response -200 (}}">EndpointSliceList): OK +200 (}}">EndpointSliceList): OK 401: Unauthorized @@ -324,7 +324,7 @@ GET /apis/discovery.k8s.io/v1beta1/endpointslices #### Response -200 (}}">EndpointSliceList): OK +200 (}}">EndpointSliceList): OK 401: Unauthorized @@ -343,7 +343,7 @@ POST /apis/discovery.k8s.io/v1beta1/namespaces/{namespace}/endpointslices }}">namespace -- **body**: }}">EndpointSlice, required +- **body**: }}">EndpointSlice, required @@ -367,11 +367,11 @@ POST /apis/discovery.k8s.io/v1beta1/namespaces/{namespace}/endpointslices #### Response -200 (}}">EndpointSlice): OK +200 (}}">EndpointSlice): OK -201 (}}">EndpointSlice): Created +201 (}}">EndpointSlice): Created -202 (}}">EndpointSlice): Accepted +202 (}}">EndpointSlice): Accepted 401: Unauthorized @@ -395,7 +395,7 @@ PUT /apis/discovery.k8s.io/v1beta1/namespaces/{namespace}/endpointslices/{name} }}">namespace -- **body**: }}">EndpointSlice, required +- **body**: }}">EndpointSlice, required @@ -419,9 +419,9 @@ PUT /apis/discovery.k8s.io/v1beta1/namespaces/{namespace}/endpointslices/{name} #### Response -200 (}}">EndpointSlice): OK +200 (}}">EndpointSlice): OK -201 (}}">EndpointSlice): Created +201 (}}">EndpointSlice): Created 401: Unauthorized @@ -474,7 +474,7 @@ PATCH /apis/discovery.k8s.io/v1beta1/namespaces/{namespace}/endpointslices/{name #### Response -200 (}}">EndpointSlice): OK +200 (}}">EndpointSlice): OK 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/services-resources/endpoints-v1.md b/content/en/docs/reference/kubernetes-api/service-resources/endpoints-v1.md similarity index 92% rename from content/en/docs/reference/kubernetes-api/services-resources/endpoints-v1.md rename to content/en/docs/reference/kubernetes-api/service-resources/endpoints-v1.md index b0c73533f8..ce5c582b30 100644 --- a/content/en/docs/reference/kubernetes-api/services-resources/endpoints-v1.md +++ b/content/en/docs/reference/kubernetes-api/service-resources/endpoints-v1.md @@ -144,7 +144,7 @@ EndpointsList is a list of endpoints. Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds -- **items** ([]}}">Endpoints), required +- **items** ([]}}">Endpoints), required List of endpoints. @@ -191,7 +191,7 @@ GET /api/v1/namespaces/{namespace}/endpoints/{name} #### Response -200 (}}">Endpoints): OK +200 (}}">Endpoints): OK 401: Unauthorized @@ -264,7 +264,7 @@ GET /api/v1/namespaces/{namespace}/endpoints #### Response -200 (}}">EndpointsList): OK +200 (}}">EndpointsList): OK 401: Unauthorized @@ -332,7 +332,7 @@ GET /api/v1/endpoints #### Response -200 (}}">EndpointsList): OK +200 (}}">EndpointsList): OK 401: Unauthorized @@ -351,7 +351,7 @@ POST /api/v1/namespaces/{namespace}/endpoints }}">namespace -- **body**: }}">Endpoints, required +- **body**: }}">Endpoints, required @@ -375,11 +375,11 @@ POST /api/v1/namespaces/{namespace}/endpoints #### Response -200 (}}">Endpoints): OK +200 (}}">Endpoints): OK -201 (}}">Endpoints): Created +201 (}}">Endpoints): Created -202 (}}">Endpoints): Accepted +202 (}}">Endpoints): Accepted 401: Unauthorized @@ -403,7 +403,7 @@ PUT /api/v1/namespaces/{namespace}/endpoints/{name} }}">namespace -- **body**: }}">Endpoints, required +- **body**: }}">Endpoints, required @@ -427,9 +427,9 @@ PUT /api/v1/namespaces/{namespace}/endpoints/{name} #### Response -200 (}}">Endpoints): OK +200 (}}">Endpoints): OK -201 (}}">Endpoints): Created +201 (}}">Endpoints): Created 401: Unauthorized @@ -482,7 +482,7 @@ PATCH /api/v1/namespaces/{namespace}/endpoints/{name} #### Response -200 (}}">Endpoints): OK +200 (}}">Endpoints): OK 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/services-resources/ingress-class-v1.md b/content/en/docs/reference/kubernetes-api/service-resources/ingress-class-v1.md similarity index 87% rename from content/en/docs/reference/kubernetes-api/services-resources/ingress-class-v1.md rename to content/en/docs/reference/kubernetes-api/service-resources/ingress-class-v1.md index 121c9551eb..92ad085310 100644 --- a/content/en/docs/reference/kubernetes-api/services-resources/ingress-class-v1.md +++ b/content/en/docs/reference/kubernetes-api/service-resources/ingress-class-v1.md @@ -30,7 +30,7 @@ IngressClass represents the class of the Ingress, referenced by the Ingress Spec Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **spec** (}}">IngressClassSpec) +- **spec** (}}">IngressClassSpec) Spec is the desired state of the IngressClass. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status @@ -72,7 +72,7 @@ IngressClassList is a collection of IngressClasses. Standard list metadata. -- **items** ([]}}">IngressClass), required +- **items** ([]}}">IngressClass), required Items is the list of IngressClasses. @@ -114,7 +114,7 @@ GET /apis/networking.k8s.io/v1/ingressclasses/{name} #### Response -200 (}}">IngressClass): OK +200 (}}">IngressClass): OK 401: Unauthorized @@ -182,7 +182,7 @@ GET /apis/networking.k8s.io/v1/ingressclasses #### Response -200 (}}">IngressClassList): OK +200 (}}">IngressClassList): OK 401: Unauthorized @@ -196,7 +196,7 @@ POST /apis/networking.k8s.io/v1/ingressclasses #### Parameters -- **body**: }}">IngressClass, required +- **body**: }}">IngressClass, required @@ -220,11 +220,11 @@ POST /apis/networking.k8s.io/v1/ingressclasses #### Response -200 (}}">IngressClass): OK +200 (}}">IngressClass): OK -201 (}}">IngressClass): Created +201 (}}">IngressClass): Created -202 (}}">IngressClass): Accepted +202 (}}">IngressClass): Accepted 401: Unauthorized @@ -243,7 +243,7 @@ PUT /apis/networking.k8s.io/v1/ingressclasses/{name} name of the IngressClass -- **body**: }}">IngressClass, required +- **body**: }}">IngressClass, required @@ -267,9 +267,9 @@ PUT /apis/networking.k8s.io/v1/ingressclasses/{name} #### Response -200 (}}">IngressClass): OK +200 (}}">IngressClass): OK -201 (}}">IngressClass): Created +201 (}}">IngressClass): Created 401: Unauthorized @@ -317,7 +317,7 @@ PATCH /apis/networking.k8s.io/v1/ingressclasses/{name} #### Response -200 (}}">IngressClass): OK +200 (}}">IngressClass): OK 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/services-resources/ingress-v1.md b/content/en/docs/reference/kubernetes-api/service-resources/ingress-v1.md similarity index 93% rename from content/en/docs/reference/kubernetes-api/services-resources/ingress-v1.md rename to content/en/docs/reference/kubernetes-api/service-resources/ingress-v1.md index 003ad959ea..72a0383f96 100644 --- a/content/en/docs/reference/kubernetes-api/services-resources/ingress-v1.md +++ b/content/en/docs/reference/kubernetes-api/service-resources/ingress-v1.md @@ -30,11 +30,11 @@ Ingress is a collection of rules that allow inbound connections to reach the end Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **spec** (}}">IngressSpec) +- **spec** (}}">IngressSpec) Spec is the desired state of the Ingress. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status -- **status** (}}">IngressStatus) +- **status** (}}">IngressStatus) Status is the current state of the Ingress. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status @@ -274,7 +274,7 @@ IngressList is a collection of Ingress. Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **items** ([]}}">Ingress), required +- **items** ([]}}">Ingress), required Items is the list of Ingress. @@ -321,7 +321,7 @@ GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name} #### Response -200 (}}">Ingress): OK +200 (}}">Ingress): OK 401: Unauthorized @@ -354,7 +354,7 @@ GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status #### Response -200 (}}">Ingress): OK +200 (}}">Ingress): OK 401: Unauthorized @@ -427,7 +427,7 @@ GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses #### Response -200 (}}">IngressList): OK +200 (}}">IngressList): OK 401: Unauthorized @@ -495,7 +495,7 @@ GET /apis/networking.k8s.io/v1/ingresses #### Response -200 (}}">IngressList): OK +200 (}}">IngressList): OK 401: Unauthorized @@ -514,7 +514,7 @@ POST /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses }}">namespace -- **body**: }}">Ingress, required +- **body**: }}">Ingress, required @@ -538,11 +538,11 @@ POST /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses #### Response -200 (}}">Ingress): OK +200 (}}">Ingress): OK -201 (}}">Ingress): Created +201 (}}">Ingress): Created -202 (}}">Ingress): Accepted +202 (}}">Ingress): Accepted 401: Unauthorized @@ -566,7 +566,7 @@ PUT /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name} }}">namespace -- **body**: }}">Ingress, required +- **body**: }}">Ingress, required @@ -590,9 +590,9 @@ PUT /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name} #### Response -200 (}}">Ingress): OK +200 (}}">Ingress): OK -201 (}}">Ingress): Created +201 (}}">Ingress): Created 401: Unauthorized @@ -616,7 +616,7 @@ PUT /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status }}">namespace -- **body**: }}">Ingress, required +- **body**: }}">Ingress, required @@ -640,9 +640,9 @@ PUT /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status #### Response -200 (}}">Ingress): OK +200 (}}">Ingress): OK -201 (}}">Ingress): Created +201 (}}">Ingress): Created 401: Unauthorized @@ -695,7 +695,7 @@ PATCH /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name} #### Response -200 (}}">Ingress): OK +200 (}}">Ingress): OK 401: Unauthorized @@ -748,7 +748,7 @@ PATCH /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status #### Response -200 (}}">Ingress): OK +200 (}}">Ingress): OK 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/services-resources/service-v1.md b/content/en/docs/reference/kubernetes-api/service-resources/service-v1.md similarity index 94% rename from content/en/docs/reference/kubernetes-api/services-resources/service-v1.md rename to content/en/docs/reference/kubernetes-api/service-resources/service-v1.md index bfb2c819bd..3ed9e93d96 100644 --- a/content/en/docs/reference/kubernetes-api/services-resources/service-v1.md +++ b/content/en/docs/reference/kubernetes-api/service-resources/service-v1.md @@ -30,11 +30,11 @@ Service is a named abstraction of software service (for example, mysql) consisti Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **spec** (}}">ServiceSpec) +- **spec** (}}">ServiceSpec) Spec defines the behavior of a service. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status -- **status** (}}">ServiceStatus) +- **status** (}}">ServiceStatus) Most recently observed status of the service. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status @@ -290,7 +290,7 @@ ServiceList holds a list of services. Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds -- **items** ([]}}">Service), required +- **items** ([]}}">Service), required List of services @@ -337,7 +337,7 @@ GET /api/v1/namespaces/{namespace}/services/{name} #### Response -200 (}}">Service): OK +200 (}}">Service): OK 401: Unauthorized @@ -370,7 +370,7 @@ GET /api/v1/namespaces/{namespace}/services/{name}/status #### Response -200 (}}">Service): OK +200 (}}">Service): OK 401: Unauthorized @@ -443,7 +443,7 @@ GET /api/v1/namespaces/{namespace}/services #### Response -200 (}}">ServiceList): OK +200 (}}">ServiceList): OK 401: Unauthorized @@ -511,7 +511,7 @@ GET /api/v1/services #### Response -200 (}}">ServiceList): OK +200 (}}">ServiceList): OK 401: Unauthorized @@ -530,7 +530,7 @@ POST /api/v1/namespaces/{namespace}/services }}">namespace -- **body**: }}">Service, required +- **body**: }}">Service, required @@ -554,11 +554,11 @@ POST /api/v1/namespaces/{namespace}/services #### Response -200 (}}">Service): OK +200 (}}">Service): OK -201 (}}">Service): Created +201 (}}">Service): Created -202 (}}">Service): Accepted +202 (}}">Service): Accepted 401: Unauthorized @@ -582,7 +582,7 @@ PUT /api/v1/namespaces/{namespace}/services/{name} }}">namespace -- **body**: }}">Service, required +- **body**: }}">Service, required @@ -606,9 +606,9 @@ PUT /api/v1/namespaces/{namespace}/services/{name} #### Response -200 (}}">Service): OK +200 (}}">Service): OK -201 (}}">Service): Created +201 (}}">Service): Created 401: Unauthorized @@ -632,7 +632,7 @@ PUT /api/v1/namespaces/{namespace}/services/{name}/status }}">namespace -- **body**: }}">Service, required +- **body**: }}">Service, required @@ -656,9 +656,9 @@ PUT /api/v1/namespaces/{namespace}/services/{name}/status #### Response -200 (}}">Service): OK +200 (}}">Service): OK -201 (}}">Service): Created +201 (}}">Service): Created 401: Unauthorized @@ -711,7 +711,7 @@ PATCH /api/v1/namespaces/{namespace}/services/{name} #### Response -200 (}}">Service): OK +200 (}}">Service): OK 401: Unauthorized @@ -764,7 +764,7 @@ PATCH /api/v1/namespaces/{namespace}/services/{name}/status #### Response -200 (}}">Service): OK +200 (}}">Service): OK 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/services-resources/_index.md b/content/en/docs/reference/kubernetes-api/services-resources/_index.md deleted file mode 100644 index 1c4c64040d..0000000000 --- a/content/en/docs/reference/kubernetes-api/services-resources/_index.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "Services Resources" -weight: 2 ---- diff --git a/content/en/docs/reference/kubernetes-api/workload-resources/_index.md b/content/en/docs/reference/kubernetes-api/workload-resources/_index.md new file mode 100644 index 0000000000..85d1bfa44f --- /dev/null +++ b/content/en/docs/reference/kubernetes-api/workload-resources/_index.md @@ -0,0 +1,4 @@ +--- +title: "Workload Resources" +weight: 1 +--- diff --git a/content/en/docs/reference/kubernetes-api/workloads-resources/container.md b/content/en/docs/reference/kubernetes-api/workload-resources/container.md similarity index 100% rename from content/en/docs/reference/kubernetes-api/workloads-resources/container.md rename to content/en/docs/reference/kubernetes-api/workload-resources/container.md diff --git a/content/en/docs/reference/kubernetes-api/workloads-resources/controller-revision-v1.md b/content/en/docs/reference/kubernetes-api/workload-resources/controller-revision-v1.md similarity index 89% rename from content/en/docs/reference/kubernetes-api/workloads-resources/controller-revision-v1.md rename to content/en/docs/reference/kubernetes-api/workload-resources/controller-revision-v1.md index 950e9d729c..5caea2a5d9 100644 --- a/content/en/docs/reference/kubernetes-api/workloads-resources/controller-revision-v1.md +++ b/content/en/docs/reference/kubernetes-api/workload-resources/controller-revision-v1.md @@ -88,7 +88,7 @@ ControllerRevisionList is a resource containing a list of ControllerRevision obj More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **items** ([]}}">ControllerRevision), required +- **items** ([]}}">ControllerRevision), required Items is the list of ControllerRevisions @@ -135,7 +135,7 @@ GET /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name} #### Response -200 (}}">ControllerRevision): OK +200 (}}">ControllerRevision): OK 401: Unauthorized @@ -208,7 +208,7 @@ GET /apis/apps/v1/namespaces/{namespace}/controllerrevisions #### Response -200 (}}">ControllerRevisionList): OK +200 (}}">ControllerRevisionList): OK 401: Unauthorized @@ -276,7 +276,7 @@ GET /apis/apps/v1/controllerrevisions #### Response -200 (}}">ControllerRevisionList): OK +200 (}}">ControllerRevisionList): OK 401: Unauthorized @@ -295,7 +295,7 @@ POST /apis/apps/v1/namespaces/{namespace}/controllerrevisions }}">namespace -- **body**: }}">ControllerRevision, required +- **body**: }}">ControllerRevision, required @@ -319,11 +319,11 @@ POST /apis/apps/v1/namespaces/{namespace}/controllerrevisions #### Response -200 (}}">ControllerRevision): OK +200 (}}">ControllerRevision): OK -201 (}}">ControllerRevision): Created +201 (}}">ControllerRevision): Created -202 (}}">ControllerRevision): Accepted +202 (}}">ControllerRevision): Accepted 401: Unauthorized @@ -347,7 +347,7 @@ PUT /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name} }}">namespace -- **body**: }}">ControllerRevision, required +- **body**: }}">ControllerRevision, required @@ -371,9 +371,9 @@ PUT /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name} #### Response -200 (}}">ControllerRevision): OK +200 (}}">ControllerRevision): OK -201 (}}">ControllerRevision): Created +201 (}}">ControllerRevision): Created 401: Unauthorized @@ -426,7 +426,7 @@ PATCH /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name} #### Response -200 (}}">ControllerRevision): OK +200 (}}">ControllerRevision): OK 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/workloads-resources/cron-job-v1beta1.md b/content/en/docs/reference/kubernetes-api/workload-resources/cron-job-v1beta1.md similarity index 88% rename from content/en/docs/reference/kubernetes-api/workloads-resources/cron-job-v1beta1.md rename to content/en/docs/reference/kubernetes-api/workload-resources/cron-job-v1beta1.md index 22a0135bf8..c99aa57998 100644 --- a/content/en/docs/reference/kubernetes-api/workloads-resources/cron-job-v1beta1.md +++ b/content/en/docs/reference/kubernetes-api/workload-resources/cron-job-v1beta1.md @@ -30,11 +30,11 @@ CronJob represents the configuration of a single cron job. Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **spec** (}}">CronJobSpec) +- **spec** (}}">CronJobSpec) Specification of the desired behavior of a cron job, including the schedule. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status -- **status** (}}">CronJobStatus) +- **status** (}}">CronJobStatus) Current status of a cron job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status @@ -59,7 +59,7 @@ CronJobSpec describes how the job execution will look like and when it will actu Standard object's metadata of the jobs created from this template. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - - **jobTemplate.spec** (}}">JobSpec) + - **jobTemplate.spec** (}}">JobSpec) Specification of the desired behavior of the job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status @@ -128,7 +128,7 @@ CronJobList is a collection of cron jobs. Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **items** ([]}}">CronJob), required +- **items** ([]}}">CronJob), required items is the list of CronJobs. @@ -175,7 +175,7 @@ GET /apis/batch/v1beta1/namespaces/{namespace}/cronjobs/{name} #### Response -200 (}}">CronJob): OK +200 (}}">CronJob): OK 401: Unauthorized @@ -208,7 +208,7 @@ GET /apis/batch/v1beta1/namespaces/{namespace}/cronjobs/{name}/status #### Response -200 (}}">CronJob): OK +200 (}}">CronJob): OK 401: Unauthorized @@ -281,7 +281,7 @@ GET /apis/batch/v1beta1/namespaces/{namespace}/cronjobs #### Response -200 (}}">CronJobList): OK +200 (}}">CronJobList): OK 401: Unauthorized @@ -349,7 +349,7 @@ GET /apis/batch/v1beta1/cronjobs #### Response -200 (}}">CronJobList): OK +200 (}}">CronJobList): OK 401: Unauthorized @@ -368,7 +368,7 @@ POST /apis/batch/v1beta1/namespaces/{namespace}/cronjobs }}">namespace -- **body**: }}">CronJob, required +- **body**: }}">CronJob, required @@ -392,11 +392,11 @@ POST /apis/batch/v1beta1/namespaces/{namespace}/cronjobs #### Response -200 (}}">CronJob): OK +200 (}}">CronJob): OK -201 (}}">CronJob): Created +201 (}}">CronJob): Created -202 (}}">CronJob): Accepted +202 (}}">CronJob): Accepted 401: Unauthorized @@ -420,7 +420,7 @@ PUT /apis/batch/v1beta1/namespaces/{namespace}/cronjobs/{name} }}">namespace -- **body**: }}">CronJob, required +- **body**: }}">CronJob, required @@ -444,9 +444,9 @@ PUT /apis/batch/v1beta1/namespaces/{namespace}/cronjobs/{name} #### Response -200 (}}">CronJob): OK +200 (}}">CronJob): OK -201 (}}">CronJob): Created +201 (}}">CronJob): Created 401: Unauthorized @@ -470,7 +470,7 @@ PUT /apis/batch/v1beta1/namespaces/{namespace}/cronjobs/{name}/status }}">namespace -- **body**: }}">CronJob, required +- **body**: }}">CronJob, required @@ -494,9 +494,9 @@ PUT /apis/batch/v1beta1/namespaces/{namespace}/cronjobs/{name}/status #### Response -200 (}}">CronJob): OK +200 (}}">CronJob): OK -201 (}}">CronJob): Created +201 (}}">CronJob): Created 401: Unauthorized @@ -549,7 +549,7 @@ PATCH /apis/batch/v1beta1/namespaces/{namespace}/cronjobs/{name} #### Response -200 (}}">CronJob): OK +200 (}}">CronJob): OK 401: Unauthorized @@ -602,7 +602,7 @@ PATCH /apis/batch/v1beta1/namespaces/{namespace}/cronjobs/{name}/status #### Response -200 (}}">CronJob): OK +200 (}}">CronJob): OK 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/workloads-resources/cron-job-v2alpha1.md b/content/en/docs/reference/kubernetes-api/workload-resources/cron-job-v2alpha1.md similarity index 88% rename from content/en/docs/reference/kubernetes-api/workloads-resources/cron-job-v2alpha1.md rename to content/en/docs/reference/kubernetes-api/workload-resources/cron-job-v2alpha1.md index c7c2ba7a81..fc6a933131 100644 --- a/content/en/docs/reference/kubernetes-api/workloads-resources/cron-job-v2alpha1.md +++ b/content/en/docs/reference/kubernetes-api/workload-resources/cron-job-v2alpha1.md @@ -30,11 +30,11 @@ CronJob represents the configuration of a single cron job. Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **spec** (}}">CronJobSpec) +- **spec** (}}">CronJobSpec) Specification of the desired behavior of a cron job, including the schedule. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status -- **status** (}}">CronJobStatus) +- **status** (}}">CronJobStatus) Current status of a cron job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status @@ -59,7 +59,7 @@ CronJobSpec describes how the job execution will look like and when it will actu Standard object's metadata of the jobs created from this template. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - - **jobTemplate.spec** (}}">JobSpec) + - **jobTemplate.spec** (}}">JobSpec) Specification of the desired behavior of the job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status @@ -128,7 +128,7 @@ CronJobList is a collection of cron jobs. Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **items** ([]}}">CronJob), required +- **items** ([]}}">CronJob), required items is the list of CronJobs. @@ -175,7 +175,7 @@ GET /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name} #### Response -200 (}}">CronJob): OK +200 (}}">CronJob): OK 401: Unauthorized @@ -208,7 +208,7 @@ GET /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name}/status #### Response -200 (}}">CronJob): OK +200 (}}">CronJob): OK 401: Unauthorized @@ -281,7 +281,7 @@ GET /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs #### Response -200 (}}">CronJobList): OK +200 (}}">CronJobList): OK 401: Unauthorized @@ -349,7 +349,7 @@ GET /apis/batch/v2alpha1/cronjobs #### Response -200 (}}">CronJobList): OK +200 (}}">CronJobList): OK 401: Unauthorized @@ -368,7 +368,7 @@ POST /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs }}">namespace -- **body**: }}">CronJob, required +- **body**: }}">CronJob, required @@ -392,11 +392,11 @@ POST /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs #### Response -200 (}}">CronJob): OK +200 (}}">CronJob): OK -201 (}}">CronJob): Created +201 (}}">CronJob): Created -202 (}}">CronJob): Accepted +202 (}}">CronJob): Accepted 401: Unauthorized @@ -420,7 +420,7 @@ PUT /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name} }}">namespace -- **body**: }}">CronJob, required +- **body**: }}">CronJob, required @@ -444,9 +444,9 @@ PUT /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name} #### Response -200 (}}">CronJob): OK +200 (}}">CronJob): OK -201 (}}">CronJob): Created +201 (}}">CronJob): Created 401: Unauthorized @@ -470,7 +470,7 @@ PUT /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name}/status }}">namespace -- **body**: }}">CronJob, required +- **body**: }}">CronJob, required @@ -494,9 +494,9 @@ PUT /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name}/status #### Response -200 (}}">CronJob): OK +200 (}}">CronJob): OK -201 (}}">CronJob): Created +201 (}}">CronJob): Created 401: Unauthorized @@ -549,7 +549,7 @@ PATCH /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name} #### Response -200 (}}">CronJob): OK +200 (}}">CronJob): OK 401: Unauthorized @@ -602,7 +602,7 @@ PATCH /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name}/status #### Response -200 (}}">CronJob): OK +200 (}}">CronJob): OK 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/workloads-resources/daemon-set-v1.md b/content/en/docs/reference/kubernetes-api/workload-resources/daemon-set-v1.md similarity index 90% rename from content/en/docs/reference/kubernetes-api/workloads-resources/daemon-set-v1.md rename to content/en/docs/reference/kubernetes-api/workload-resources/daemon-set-v1.md index 95ae869be1..169d361c2a 100644 --- a/content/en/docs/reference/kubernetes-api/workloads-resources/daemon-set-v1.md +++ b/content/en/docs/reference/kubernetes-api/workload-resources/daemon-set-v1.md @@ -30,11 +30,11 @@ DaemonSet represents the configuration of a daemon set. Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **spec** (}}">DaemonSetSpec) +- **spec** (}}">DaemonSetSpec) The desired behavior of this daemon set. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status -- **status** (}}">DaemonSetStatus) +- **status** (}}">DaemonSetStatus) The current status of this daemon set. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status @@ -52,7 +52,7 @@ DaemonSetSpec is the specification of a daemon set. A label query over pods that are managed by the daemon set. Must match in order to be controlled. It must match the pod template's labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors -- **template** (}}">PodTemplateSpec), required +- **template** (}}">PodTemplateSpec), required An object that describes the pod that will be created. The DaemonSet will create exactly one copy of this pod on every node that matches the template's node selector (or on every node if no node selector is specified). More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template @@ -187,7 +187,7 @@ DaemonSetList is a collection of daemon sets. Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **items** ([]}}">DaemonSet), required +- **items** ([]}}">DaemonSet), required A list of daemon sets. @@ -234,7 +234,7 @@ GET /apis/apps/v1/namespaces/{namespace}/daemonsets/{name} #### Response -200 (}}">DaemonSet): OK +200 (}}">DaemonSet): OK 401: Unauthorized @@ -267,7 +267,7 @@ GET /apis/apps/v1/namespaces/{namespace}/daemonsets/{name}/status #### Response -200 (}}">DaemonSet): OK +200 (}}">DaemonSet): OK 401: Unauthorized @@ -340,7 +340,7 @@ GET /apis/apps/v1/namespaces/{namespace}/daemonsets #### Response -200 (}}">DaemonSetList): OK +200 (}}">DaemonSetList): OK 401: Unauthorized @@ -408,7 +408,7 @@ GET /apis/apps/v1/daemonsets #### Response -200 (}}">DaemonSetList): OK +200 (}}">DaemonSetList): OK 401: Unauthorized @@ -427,7 +427,7 @@ POST /apis/apps/v1/namespaces/{namespace}/daemonsets }}">namespace -- **body**: }}">DaemonSet, required +- **body**: }}">DaemonSet, required @@ -451,11 +451,11 @@ POST /apis/apps/v1/namespaces/{namespace}/daemonsets #### Response -200 (}}">DaemonSet): OK +200 (}}">DaemonSet): OK -201 (}}">DaemonSet): Created +201 (}}">DaemonSet): Created -202 (}}">DaemonSet): Accepted +202 (}}">DaemonSet): Accepted 401: Unauthorized @@ -479,7 +479,7 @@ PUT /apis/apps/v1/namespaces/{namespace}/daemonsets/{name} }}">namespace -- **body**: }}">DaemonSet, required +- **body**: }}">DaemonSet, required @@ -503,9 +503,9 @@ PUT /apis/apps/v1/namespaces/{namespace}/daemonsets/{name} #### Response -200 (}}">DaemonSet): OK +200 (}}">DaemonSet): OK -201 (}}">DaemonSet): Created +201 (}}">DaemonSet): Created 401: Unauthorized @@ -529,7 +529,7 @@ PUT /apis/apps/v1/namespaces/{namespace}/daemonsets/{name}/status }}">namespace -- **body**: }}">DaemonSet, required +- **body**: }}">DaemonSet, required @@ -553,9 +553,9 @@ PUT /apis/apps/v1/namespaces/{namespace}/daemonsets/{name}/status #### Response -200 (}}">DaemonSet): OK +200 (}}">DaemonSet): OK -201 (}}">DaemonSet): Created +201 (}}">DaemonSet): Created 401: Unauthorized @@ -608,7 +608,7 @@ PATCH /apis/apps/v1/namespaces/{namespace}/daemonsets/{name} #### Response -200 (}}">DaemonSet): OK +200 (}}">DaemonSet): OK 401: Unauthorized @@ -661,7 +661,7 @@ PATCH /apis/apps/v1/namespaces/{namespace}/daemonsets/{name}/status #### Response -200 (}}">DaemonSet): OK +200 (}}">DaemonSet): OK 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/workloads-resources/deployment-v1.md b/content/en/docs/reference/kubernetes-api/workload-resources/deployment-v1.md similarity index 90% rename from content/en/docs/reference/kubernetes-api/workloads-resources/deployment-v1.md rename to content/en/docs/reference/kubernetes-api/workload-resources/deployment-v1.md index 7e5b39c929..052a54bcc8 100644 --- a/content/en/docs/reference/kubernetes-api/workloads-resources/deployment-v1.md +++ b/content/en/docs/reference/kubernetes-api/workload-resources/deployment-v1.md @@ -30,11 +30,11 @@ Deployment enables declarative updates for Pods and ReplicaSets. Standard object metadata. -- **spec** (}}">DeploymentSpec) +- **spec** (}}">DeploymentSpec) Specification of the desired behavior of the Deployment. -- **status** (}}">DeploymentStatus) +- **status** (}}">DeploymentStatus) Most recently observed status of the Deployment. @@ -52,7 +52,7 @@ DeploymentSpec is the specification of the desired behavior of the Deployment. Label selector for pods. Existing ReplicaSets whose pods are selected by this will be the ones affected by this deployment. It must match the pod template's labels. -- **template** (}}">PodTemplateSpec), required +- **template** (}}">PodTemplateSpec), required Template describes the pods that will be created. @@ -207,7 +207,7 @@ DeploymentList is a list of Deployments. Standard list metadata. -- **items** ([]}}">Deployment), required +- **items** ([]}}">Deployment), required Items is the list of Deployments. @@ -254,7 +254,7 @@ GET /apis/apps/v1/namespaces/{namespace}/deployments/{name} #### Response -200 (}}">Deployment): OK +200 (}}">Deployment): OK 401: Unauthorized @@ -287,7 +287,7 @@ GET /apis/apps/v1/namespaces/{namespace}/deployments/{name}/status #### Response -200 (}}">Deployment): OK +200 (}}">Deployment): OK 401: Unauthorized @@ -360,7 +360,7 @@ GET /apis/apps/v1/namespaces/{namespace}/deployments #### Response -200 (}}">DeploymentList): OK +200 (}}">DeploymentList): OK 401: Unauthorized @@ -428,7 +428,7 @@ GET /apis/apps/v1/deployments #### Response -200 (}}">DeploymentList): OK +200 (}}">DeploymentList): OK 401: Unauthorized @@ -447,7 +447,7 @@ POST /apis/apps/v1/namespaces/{namespace}/deployments }}">namespace -- **body**: }}">Deployment, required +- **body**: }}">Deployment, required @@ -471,11 +471,11 @@ POST /apis/apps/v1/namespaces/{namespace}/deployments #### Response -200 (}}">Deployment): OK +200 (}}">Deployment): OK -201 (}}">Deployment): Created +201 (}}">Deployment): Created -202 (}}">Deployment): Accepted +202 (}}">Deployment): Accepted 401: Unauthorized @@ -499,7 +499,7 @@ PUT /apis/apps/v1/namespaces/{namespace}/deployments/{name} }}">namespace -- **body**: }}">Deployment, required +- **body**: }}">Deployment, required @@ -523,9 +523,9 @@ PUT /apis/apps/v1/namespaces/{namespace}/deployments/{name} #### Response -200 (}}">Deployment): OK +200 (}}">Deployment): OK -201 (}}">Deployment): Created +201 (}}">Deployment): Created 401: Unauthorized @@ -549,7 +549,7 @@ PUT /apis/apps/v1/namespaces/{namespace}/deployments/{name}/status }}">namespace -- **body**: }}">Deployment, required +- **body**: }}">Deployment, required @@ -573,9 +573,9 @@ PUT /apis/apps/v1/namespaces/{namespace}/deployments/{name}/status #### Response -200 (}}">Deployment): OK +200 (}}">Deployment): OK -201 (}}">Deployment): Created +201 (}}">Deployment): Created 401: Unauthorized @@ -628,7 +628,7 @@ PATCH /apis/apps/v1/namespaces/{namespace}/deployments/{name} #### Response -200 (}}">Deployment): OK +200 (}}">Deployment): OK 401: Unauthorized @@ -681,7 +681,7 @@ PATCH /apis/apps/v1/namespaces/{namespace}/deployments/{name}/status #### Response -200 (}}">Deployment): OK +200 (}}">Deployment): OK 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/workloads-resources/ephemeral-container.md b/content/en/docs/reference/kubernetes-api/workload-resources/ephemeral-container.md similarity index 100% rename from content/en/docs/reference/kubernetes-api/workloads-resources/ephemeral-container.md rename to content/en/docs/reference/kubernetes-api/workload-resources/ephemeral-container.md diff --git a/content/en/docs/reference/kubernetes-api/workloads-resources/horizontal-pod-autoscaler-v1.md b/content/en/docs/reference/kubernetes-api/workload-resources/horizontal-pod-autoscaler-v1.md similarity index 85% rename from content/en/docs/reference/kubernetes-api/workloads-resources/horizontal-pod-autoscaler-v1.md rename to content/en/docs/reference/kubernetes-api/workload-resources/horizontal-pod-autoscaler-v1.md index 5bb2f6e175..8ed1581cbe 100644 --- a/content/en/docs/reference/kubernetes-api/workloads-resources/horizontal-pod-autoscaler-v1.md +++ b/content/en/docs/reference/kubernetes-api/workload-resources/horizontal-pod-autoscaler-v1.md @@ -30,11 +30,11 @@ configuration of a horizontal pod autoscaler. Standard object metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **spec** (}}">HorizontalPodAutoscalerSpec) +- **spec** (}}">HorizontalPodAutoscalerSpec) behaviour of autoscaler. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. -- **status** (}}">HorizontalPodAutoscalerStatus) +- **status** (}}">HorizontalPodAutoscalerStatus) current information about the autoscaler. @@ -132,7 +132,7 @@ list of horizontal pod autoscaler objects. Standard list metadata. -- **items** ([]}}">HorizontalPodAutoscaler), required +- **items** ([]}}">HorizontalPodAutoscaler), required list of horizontal pod autoscaler objects. @@ -179,7 +179,7 @@ GET /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name} #### Response -200 (}}">HorizontalPodAutoscaler): OK +200 (}}">HorizontalPodAutoscaler): OK 401: Unauthorized @@ -212,7 +212,7 @@ GET /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}/ #### Response -200 (}}">HorizontalPodAutoscaler): OK +200 (}}">HorizontalPodAutoscaler): OK 401: Unauthorized @@ -285,7 +285,7 @@ GET /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers #### Response -200 (}}">HorizontalPodAutoscalerList): OK +200 (}}">HorizontalPodAutoscalerList): OK 401: Unauthorized @@ -353,7 +353,7 @@ GET /apis/autoscaling/v1/horizontalpodautoscalers #### Response -200 (}}">HorizontalPodAutoscalerList): OK +200 (}}">HorizontalPodAutoscalerList): OK 401: Unauthorized @@ -372,7 +372,7 @@ POST /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers }}">namespace -- **body**: }}">HorizontalPodAutoscaler, required +- **body**: }}">HorizontalPodAutoscaler, required @@ -396,11 +396,11 @@ POST /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers #### Response -200 (}}">HorizontalPodAutoscaler): OK +200 (}}">HorizontalPodAutoscaler): OK -201 (}}">HorizontalPodAutoscaler): Created +201 (}}">HorizontalPodAutoscaler): Created -202 (}}">HorizontalPodAutoscaler): Accepted +202 (}}">HorizontalPodAutoscaler): Accepted 401: Unauthorized @@ -424,7 +424,7 @@ PUT /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name} }}">namespace -- **body**: }}">HorizontalPodAutoscaler, required +- **body**: }}">HorizontalPodAutoscaler, required @@ -448,9 +448,9 @@ PUT /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name} #### Response -200 (}}">HorizontalPodAutoscaler): OK +200 (}}">HorizontalPodAutoscaler): OK -201 (}}">HorizontalPodAutoscaler): Created +201 (}}">HorizontalPodAutoscaler): Created 401: Unauthorized @@ -474,7 +474,7 @@ PUT /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}/ }}">namespace -- **body**: }}">HorizontalPodAutoscaler, required +- **body**: }}">HorizontalPodAutoscaler, required @@ -498,9 +498,9 @@ PUT /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}/ #### Response -200 (}}">HorizontalPodAutoscaler): OK +200 (}}">HorizontalPodAutoscaler): OK -201 (}}">HorizontalPodAutoscaler): Created +201 (}}">HorizontalPodAutoscaler): Created 401: Unauthorized @@ -553,7 +553,7 @@ PATCH /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name #### Response -200 (}}">HorizontalPodAutoscaler): OK +200 (}}">HorizontalPodAutoscaler): OK 401: Unauthorized @@ -606,7 +606,7 @@ PATCH /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name #### Response -200 (}}">HorizontalPodAutoscaler): OK +200 (}}">HorizontalPodAutoscaler): OK 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/workloads-resources/horizontal-pod-autoscaler-v2beta2.md b/content/en/docs/reference/kubernetes-api/workload-resources/horizontal-pod-autoscaler-v2beta2.md similarity index 94% rename from content/en/docs/reference/kubernetes-api/workloads-resources/horizontal-pod-autoscaler-v2beta2.md rename to content/en/docs/reference/kubernetes-api/workload-resources/horizontal-pod-autoscaler-v2beta2.md index 56fd55d24b..2f8f15d505 100644 --- a/content/en/docs/reference/kubernetes-api/workloads-resources/horizontal-pod-autoscaler-v2beta2.md +++ b/content/en/docs/reference/kubernetes-api/workload-resources/horizontal-pod-autoscaler-v2beta2.md @@ -30,11 +30,11 @@ HorizontalPodAutoscaler is the configuration for a horizontal pod autoscaler, wh metadata is the standard object metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **spec** (}}">HorizontalPodAutoscalerSpec) +- **spec** (}}">HorizontalPodAutoscalerSpec) spec is the specification for the behaviour of the autoscaler. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. -- **status** (}}">HorizontalPodAutoscalerStatus) +- **status** (}}">HorizontalPodAutoscalerStatus) status is the current information about the autoscaler. @@ -684,7 +684,7 @@ HorizontalPodAutoscalerList is a list of horizontal pod autoscaler objects. metadata is the standard list metadata. -- **items** ([]}}">HorizontalPodAutoscaler), required +- **items** ([]}}">HorizontalPodAutoscaler), required items is the list of horizontal pod autoscaler objects. @@ -731,7 +731,7 @@ GET /apis/autoscaling/v2beta2/namespaces/{namespace}/horizontalpodautoscalers/{n #### Response -200 (}}">HorizontalPodAutoscaler): OK +200 (}}">HorizontalPodAutoscaler): OK 401: Unauthorized @@ -764,7 +764,7 @@ GET /apis/autoscaling/v2beta2/namespaces/{namespace}/horizontalpodautoscalers/{n #### Response -200 (}}">HorizontalPodAutoscaler): OK +200 (}}">HorizontalPodAutoscaler): OK 401: Unauthorized @@ -837,7 +837,7 @@ GET /apis/autoscaling/v2beta2/namespaces/{namespace}/horizontalpodautoscalers #### Response -200 (}}">HorizontalPodAutoscalerList): OK +200 (}}">HorizontalPodAutoscalerList): OK 401: Unauthorized @@ -905,7 +905,7 @@ GET /apis/autoscaling/v2beta2/horizontalpodautoscalers #### Response -200 (}}">HorizontalPodAutoscalerList): OK +200 (}}">HorizontalPodAutoscalerList): OK 401: Unauthorized @@ -924,7 +924,7 @@ POST /apis/autoscaling/v2beta2/namespaces/{namespace}/horizontalpodautoscalers }}">namespace -- **body**: }}">HorizontalPodAutoscaler, required +- **body**: }}">HorizontalPodAutoscaler, required @@ -948,11 +948,11 @@ POST /apis/autoscaling/v2beta2/namespaces/{namespace}/horizontalpodautoscalers #### Response -200 (}}">HorizontalPodAutoscaler): OK +200 (}}">HorizontalPodAutoscaler): OK -201 (}}">HorizontalPodAutoscaler): Created +201 (}}">HorizontalPodAutoscaler): Created -202 (}}">HorizontalPodAutoscaler): Accepted +202 (}}">HorizontalPodAutoscaler): Accepted 401: Unauthorized @@ -976,7 +976,7 @@ PUT /apis/autoscaling/v2beta2/namespaces/{namespace}/horizontalpodautoscalers/{n }}">namespace -- **body**: }}">HorizontalPodAutoscaler, required +- **body**: }}">HorizontalPodAutoscaler, required @@ -1000,9 +1000,9 @@ PUT /apis/autoscaling/v2beta2/namespaces/{namespace}/horizontalpodautoscalers/{n #### Response -200 (}}">HorizontalPodAutoscaler): OK +200 (}}">HorizontalPodAutoscaler): OK -201 (}}">HorizontalPodAutoscaler): Created +201 (}}">HorizontalPodAutoscaler): Created 401: Unauthorized @@ -1026,7 +1026,7 @@ PUT /apis/autoscaling/v2beta2/namespaces/{namespace}/horizontalpodautoscalers/{n }}">namespace -- **body**: }}">HorizontalPodAutoscaler, required +- **body**: }}">HorizontalPodAutoscaler, required @@ -1050,9 +1050,9 @@ PUT /apis/autoscaling/v2beta2/namespaces/{namespace}/horizontalpodautoscalers/{n #### Response -200 (}}">HorizontalPodAutoscaler): OK +200 (}}">HorizontalPodAutoscaler): OK -201 (}}">HorizontalPodAutoscaler): Created +201 (}}">HorizontalPodAutoscaler): Created 401: Unauthorized @@ -1105,7 +1105,7 @@ PATCH /apis/autoscaling/v2beta2/namespaces/{namespace}/horizontalpodautoscalers/ #### Response -200 (}}">HorizontalPodAutoscaler): OK +200 (}}">HorizontalPodAutoscaler): OK 401: Unauthorized @@ -1158,7 +1158,7 @@ PATCH /apis/autoscaling/v2beta2/namespaces/{namespace}/horizontalpodautoscalers/ #### Response -200 (}}">HorizontalPodAutoscaler): OK +200 (}}">HorizontalPodAutoscaler): OK 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/workloads-resources/job-v1.md b/content/en/docs/reference/kubernetes-api/workload-resources/job-v1.md similarity index 91% rename from content/en/docs/reference/kubernetes-api/workloads-resources/job-v1.md rename to content/en/docs/reference/kubernetes-api/workload-resources/job-v1.md index 3deab1c4be..f01c257e45 100644 --- a/content/en/docs/reference/kubernetes-api/workloads-resources/job-v1.md +++ b/content/en/docs/reference/kubernetes-api/workload-resources/job-v1.md @@ -30,11 +30,11 @@ Job represents the configuration of a single job. Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **spec** (}}">JobSpec) +- **spec** (}}">JobSpec) Specification of the desired behavior of a job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status -- **status** (}}">JobStatus) +- **status** (}}">JobStatus) Current status of a job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status @@ -53,7 +53,7 @@ JobSpec describes how the job execution will look like. ### Replicas -- **template** (}}">PodTemplateSpec), required +- **template** (}}">PodTemplateSpec), required Describes the pod that will be created when executing a job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ @@ -184,7 +184,7 @@ JobList is a collection of jobs. Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **items** ([]}}">Job), required +- **items** ([]}}">Job), required items is the list of Jobs. @@ -231,7 +231,7 @@ GET /apis/batch/v1/namespaces/{namespace}/jobs/{name} #### Response -200 (}}">Job): OK +200 (}}">Job): OK 401: Unauthorized @@ -264,7 +264,7 @@ GET /apis/batch/v1/namespaces/{namespace}/jobs/{name}/status #### Response -200 (}}">Job): OK +200 (}}">Job): OK 401: Unauthorized @@ -337,7 +337,7 @@ GET /apis/batch/v1/namespaces/{namespace}/jobs #### Response -200 (}}">JobList): OK +200 (}}">JobList): OK 401: Unauthorized @@ -405,7 +405,7 @@ GET /apis/batch/v1/jobs #### Response -200 (}}">JobList): OK +200 (}}">JobList): OK 401: Unauthorized @@ -424,7 +424,7 @@ POST /apis/batch/v1/namespaces/{namespace}/jobs }}">namespace -- **body**: }}">Job, required +- **body**: }}">Job, required @@ -448,11 +448,11 @@ POST /apis/batch/v1/namespaces/{namespace}/jobs #### Response -200 (}}">Job): OK +200 (}}">Job): OK -201 (}}">Job): Created +201 (}}">Job): Created -202 (}}">Job): Accepted +202 (}}">Job): Accepted 401: Unauthorized @@ -476,7 +476,7 @@ PUT /apis/batch/v1/namespaces/{namespace}/jobs/{name} }}">namespace -- **body**: }}">Job, required +- **body**: }}">Job, required @@ -500,9 +500,9 @@ PUT /apis/batch/v1/namespaces/{namespace}/jobs/{name} #### Response -200 (}}">Job): OK +200 (}}">Job): OK -201 (}}">Job): Created +201 (}}">Job): Created 401: Unauthorized @@ -526,7 +526,7 @@ PUT /apis/batch/v1/namespaces/{namespace}/jobs/{name}/status }}">namespace -- **body**: }}">Job, required +- **body**: }}">Job, required @@ -550,9 +550,9 @@ PUT /apis/batch/v1/namespaces/{namespace}/jobs/{name}/status #### Response -200 (}}">Job): OK +200 (}}">Job): OK -201 (}}">Job): Created +201 (}}">Job): Created 401: Unauthorized @@ -605,7 +605,7 @@ PATCH /apis/batch/v1/namespaces/{namespace}/jobs/{name} #### Response -200 (}}">Job): OK +200 (}}">Job): OK 401: Unauthorized @@ -658,7 +658,7 @@ PATCH /apis/batch/v1/namespaces/{namespace}/jobs/{name}/status #### Response -200 (}}">Job): OK +200 (}}">Job): OK 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/workloads-resources/pod-template-v1.md b/content/en/docs/reference/kubernetes-api/workload-resources/pod-template-v1.md similarity index 86% rename from content/en/docs/reference/kubernetes-api/workloads-resources/pod-template-v1.md rename to content/en/docs/reference/kubernetes-api/workload-resources/pod-template-v1.md index fec34df19f..663ab6bea4 100644 --- a/content/en/docs/reference/kubernetes-api/workloads-resources/pod-template-v1.md +++ b/content/en/docs/reference/kubernetes-api/workload-resources/pod-template-v1.md @@ -30,7 +30,7 @@ PodTemplate describes a template for creating copies of a predefined pod. Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **template** (}}">PodTemplateSpec) +- **template** (}}">PodTemplateSpec) Template defines the pods that will be created from this pod template. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status @@ -48,7 +48,7 @@ PodTemplateSpec describes the data a pod should have when created from a templat Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **spec** (}}">PodSpec) +- **spec** (}}">PodSpec) Specification of the desired behavior of the pod. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status @@ -72,7 +72,7 @@ PodTemplateList is a list of PodTemplates. Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds -- **items** ([]}}">PodTemplate), required +- **items** ([]}}">PodTemplate), required List of pod templates @@ -119,7 +119,7 @@ GET /api/v1/namespaces/{namespace}/podtemplates/{name} #### Response -200 (}}">PodTemplate): OK +200 (}}">PodTemplate): OK 401: Unauthorized @@ -192,7 +192,7 @@ GET /api/v1/namespaces/{namespace}/podtemplates #### Response -200 (}}">PodTemplateList): OK +200 (}}">PodTemplateList): OK 401: Unauthorized @@ -260,7 +260,7 @@ GET /api/v1/podtemplates #### Response -200 (}}">PodTemplateList): OK +200 (}}">PodTemplateList): OK 401: Unauthorized @@ -279,7 +279,7 @@ POST /api/v1/namespaces/{namespace}/podtemplates }}">namespace -- **body**: }}">PodTemplate, required +- **body**: }}">PodTemplate, required @@ -303,11 +303,11 @@ POST /api/v1/namespaces/{namespace}/podtemplates #### Response -200 (}}">PodTemplate): OK +200 (}}">PodTemplate): OK -201 (}}">PodTemplate): Created +201 (}}">PodTemplate): Created -202 (}}">PodTemplate): Accepted +202 (}}">PodTemplate): Accepted 401: Unauthorized @@ -331,7 +331,7 @@ PUT /api/v1/namespaces/{namespace}/podtemplates/{name} }}">namespace -- **body**: }}">PodTemplate, required +- **body**: }}">PodTemplate, required @@ -355,9 +355,9 @@ PUT /api/v1/namespaces/{namespace}/podtemplates/{name} #### Response -200 (}}">PodTemplate): OK +200 (}}">PodTemplate): OK -201 (}}">PodTemplate): Created +201 (}}">PodTemplate): Created 401: Unauthorized @@ -410,7 +410,7 @@ PATCH /api/v1/namespaces/{namespace}/podtemplates/{name} #### Response -200 (}}">PodTemplate): OK +200 (}}">PodTemplate): OK 401: Unauthorized @@ -463,9 +463,9 @@ DELETE /api/v1/namespaces/{namespace}/podtemplates/{name} #### Response -200 (}}">PodTemplate): OK +200 (}}">PodTemplate): OK -202 (}}">PodTemplate): Accepted +202 (}}">PodTemplate): Accepted 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/workloads-resources/pod-v1.md b/content/en/docs/reference/kubernetes-api/workload-resources/pod-v1.md similarity index 94% rename from content/en/docs/reference/kubernetes-api/workloads-resources/pod-v1.md rename to content/en/docs/reference/kubernetes-api/workload-resources/pod-v1.md index 584c338172..4be3289e9f 100644 --- a/content/en/docs/reference/kubernetes-api/workloads-resources/pod-v1.md +++ b/content/en/docs/reference/kubernetes-api/workload-resources/pod-v1.md @@ -30,11 +30,11 @@ Pod is a collection of containers that can run on a host. This resource is creat Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **spec** (}}">PodSpec) +- **spec** (}}">PodSpec) Specification of the desired behavior of the pod. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status -- **status** (}}">PodStatus) +- **status** (}}">PodStatus) Most recently observed status of the pod. This data may not be up to date. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status @@ -53,13 +53,13 @@ PodSpec is a description of a pod. ### Containers -- **containers** ([]}}">Container), required +- **containers** ([]}}">Container), required *Patch strategy: merge on key `name`* List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated. -- **initContainers** ([]}}">Container) +- **initContainers** ([]}}">Container) *Patch strategy: merge on key `name`* @@ -430,7 +430,7 @@ PodSpec is a description of a pod. ### Alpha level -- **ephemeralContainers** ([]}}">EphemeralContainer) +- **ephemeralContainers** ([]}}">EphemeralContainer) *Patch strategy: merge on key `name`* @@ -547,15 +547,15 @@ PodStatus represents information about the status of a pod. Status may trail the The Quality of Service (QOS) classification assigned to the pod based on resource requirements See PodQOSClass type for available QOS classes More info: https://git.k8s.io/community/contributors/design-proposals/node/resource-qos.md -- **initContainerStatuses** ([]}}">ContainerStatus) +- **initContainerStatuses** ([]}}">ContainerStatus) The list has one entry per init container in the manifest. The most recent successful init container will have ready = true, the most recently started container will have startTime set. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status -- **containerStatuses** ([]}}">ContainerStatus) +- **containerStatuses** ([]}}">ContainerStatus) The list has one entry per container in the manifest. Each entry is currently the output of `docker inspect`. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status -- **ephemeralContainerStatuses** ([]}}">ContainerStatus) +- **ephemeralContainerStatuses** ([]}}">ContainerStatus) Status for any ephemeral containers that have run in this pod. This field is alpha-level and is only populated by servers that enable the EphemeralContainers feature. @@ -579,7 +579,7 @@ PodList is a list of Pods. Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds -- **items** ([]}}">Pod), required +- **items** ([]}}">Pod), required List of pods. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md @@ -626,7 +626,7 @@ GET /api/v1/namespaces/{namespace}/pods/{name} #### Response -200 (}}">Pod): OK +200 (}}">Pod): OK 401: Unauthorized @@ -732,7 +732,7 @@ GET /api/v1/namespaces/{namespace}/pods/{name}/status #### Response -200 (}}">Pod): OK +200 (}}">Pod): OK 401: Unauthorized @@ -805,7 +805,7 @@ GET /api/v1/namespaces/{namespace}/pods #### Response -200 (}}">PodList): OK +200 (}}">PodList): OK 401: Unauthorized @@ -873,7 +873,7 @@ GET /api/v1/pods #### Response -200 (}}">PodList): OK +200 (}}">PodList): OK 401: Unauthorized @@ -892,7 +892,7 @@ POST /api/v1/namespaces/{namespace}/pods }}">namespace -- **body**: }}">Pod, required +- **body**: }}">Pod, required @@ -916,11 +916,11 @@ POST /api/v1/namespaces/{namespace}/pods #### Response -200 (}}">Pod): OK +200 (}}">Pod): OK -201 (}}">Pod): Created +201 (}}">Pod): Created -202 (}}">Pod): Accepted +202 (}}">Pod): Accepted 401: Unauthorized @@ -944,7 +944,7 @@ PUT /api/v1/namespaces/{namespace}/pods/{name} }}">namespace -- **body**: }}">Pod, required +- **body**: }}">Pod, required @@ -968,9 +968,9 @@ PUT /api/v1/namespaces/{namespace}/pods/{name} #### Response -200 (}}">Pod): OK +200 (}}">Pod): OK -201 (}}">Pod): Created +201 (}}">Pod): Created 401: Unauthorized @@ -994,7 +994,7 @@ PUT /api/v1/namespaces/{namespace}/pods/{name}/status }}">namespace -- **body**: }}">Pod, required +- **body**: }}">Pod, required @@ -1018,9 +1018,9 @@ PUT /api/v1/namespaces/{namespace}/pods/{name}/status #### Response -200 (}}">Pod): OK +200 (}}">Pod): OK -201 (}}">Pod): Created +201 (}}">Pod): Created 401: Unauthorized @@ -1073,7 +1073,7 @@ PATCH /api/v1/namespaces/{namespace}/pods/{name} #### Response -200 (}}">Pod): OK +200 (}}">Pod): OK 401: Unauthorized @@ -1126,7 +1126,7 @@ PATCH /api/v1/namespaces/{namespace}/pods/{name}/status #### Response -200 (}}">Pod): OK +200 (}}">Pod): OK 401: Unauthorized @@ -1179,9 +1179,9 @@ DELETE /api/v1/namespaces/{namespace}/pods/{name} #### Response -200 (}}">Pod): OK +200 (}}">Pod): OK -202 (}}">Pod): Accepted +202 (}}">Pod): Accepted 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/workloads-resources/priority-class-v1.md b/content/en/docs/reference/kubernetes-api/workload-resources/priority-class-v1.md similarity index 88% rename from content/en/docs/reference/kubernetes-api/workloads-resources/priority-class-v1.md rename to content/en/docs/reference/kubernetes-api/workload-resources/priority-class-v1.md index 30b40e6840..28087807c1 100644 --- a/content/en/docs/reference/kubernetes-api/workloads-resources/priority-class-v1.md +++ b/content/en/docs/reference/kubernetes-api/workload-resources/priority-class-v1.md @@ -66,7 +66,7 @@ PriorityClassList is a collection of priority classes. Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **items** ([]}}">PriorityClass), required +- **items** ([]}}">PriorityClass), required items is the list of PriorityClasses @@ -108,7 +108,7 @@ GET /apis/scheduling.k8s.io/v1/priorityclasses/{name} #### Response -200 (}}">PriorityClass): OK +200 (}}">PriorityClass): OK 401: Unauthorized @@ -176,7 +176,7 @@ GET /apis/scheduling.k8s.io/v1/priorityclasses #### Response -200 (}}">PriorityClassList): OK +200 (}}">PriorityClassList): OK 401: Unauthorized @@ -190,7 +190,7 @@ POST /apis/scheduling.k8s.io/v1/priorityclasses #### Parameters -- **body**: }}">PriorityClass, required +- **body**: }}">PriorityClass, required @@ -214,11 +214,11 @@ POST /apis/scheduling.k8s.io/v1/priorityclasses #### Response -200 (}}">PriorityClass): OK +200 (}}">PriorityClass): OK -201 (}}">PriorityClass): Created +201 (}}">PriorityClass): Created -202 (}}">PriorityClass): Accepted +202 (}}">PriorityClass): Accepted 401: Unauthorized @@ -237,7 +237,7 @@ PUT /apis/scheduling.k8s.io/v1/priorityclasses/{name} name of the PriorityClass -- **body**: }}">PriorityClass, required +- **body**: }}">PriorityClass, required @@ -261,9 +261,9 @@ PUT /apis/scheduling.k8s.io/v1/priorityclasses/{name} #### Response -200 (}}">PriorityClass): OK +200 (}}">PriorityClass): OK -201 (}}">PriorityClass): Created +201 (}}">PriorityClass): Created 401: Unauthorized @@ -311,7 +311,7 @@ PATCH /apis/scheduling.k8s.io/v1/priorityclasses/{name} #### Response -200 (}}">PriorityClass): OK +200 (}}">PriorityClass): OK 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/workloads-resources/replica-set-v1.md b/content/en/docs/reference/kubernetes-api/workload-resources/replica-set-v1.md similarity index 88% rename from content/en/docs/reference/kubernetes-api/workloads-resources/replica-set-v1.md rename to content/en/docs/reference/kubernetes-api/workload-resources/replica-set-v1.md index 429a1bd5a2..708b0fd966 100644 --- a/content/en/docs/reference/kubernetes-api/workloads-resources/replica-set-v1.md +++ b/content/en/docs/reference/kubernetes-api/workload-resources/replica-set-v1.md @@ -30,11 +30,11 @@ ReplicaSet ensures that a specified number of pod replicas are running at any gi If the Labels of a ReplicaSet are empty, they are defaulted to be the same as the Pod(s) that the ReplicaSet manages. Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **spec** (}}">ReplicaSetSpec) +- **spec** (}}">ReplicaSetSpec) Spec defines the specification of the desired behavior of the ReplicaSet. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status -- **status** (}}">ReplicaSetStatus) +- **status** (}}">ReplicaSetStatus) Status is the most recently observed status of the ReplicaSet. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status @@ -52,7 +52,7 @@ ReplicaSetSpec is the specification of a ReplicaSet. Selector is a label query over pods that should match the replica count. Label keys and values that must match in order to be controlled by this replica set. It must match the pod template's labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors -- **template** (}}">PodTemplateSpec) +- **template** (}}">PodTemplateSpec) Template is the object that describes the pod that will be created if insufficient replicas are detected. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template @@ -146,7 +146,7 @@ ReplicaSetList is a collection of ReplicaSets. Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds -- **items** ([]}}">ReplicaSet), required +- **items** ([]}}">ReplicaSet), required List of ReplicaSets. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller @@ -193,7 +193,7 @@ GET /apis/apps/v1/namespaces/{namespace}/replicasets/{name} #### Response -200 (}}">ReplicaSet): OK +200 (}}">ReplicaSet): OK 401: Unauthorized @@ -226,7 +226,7 @@ GET /apis/apps/v1/namespaces/{namespace}/replicasets/{name}/status #### Response -200 (}}">ReplicaSet): OK +200 (}}">ReplicaSet): OK 401: Unauthorized @@ -299,7 +299,7 @@ GET /apis/apps/v1/namespaces/{namespace}/replicasets #### Response -200 (}}">ReplicaSetList): OK +200 (}}">ReplicaSetList): OK 401: Unauthorized @@ -367,7 +367,7 @@ GET /apis/apps/v1/replicasets #### Response -200 (}}">ReplicaSetList): OK +200 (}}">ReplicaSetList): OK 401: Unauthorized @@ -386,7 +386,7 @@ POST /apis/apps/v1/namespaces/{namespace}/replicasets }}">namespace -- **body**: }}">ReplicaSet, required +- **body**: }}">ReplicaSet, required @@ -410,11 +410,11 @@ POST /apis/apps/v1/namespaces/{namespace}/replicasets #### Response -200 (}}">ReplicaSet): OK +200 (}}">ReplicaSet): OK -201 (}}">ReplicaSet): Created +201 (}}">ReplicaSet): Created -202 (}}">ReplicaSet): Accepted +202 (}}">ReplicaSet): Accepted 401: Unauthorized @@ -438,7 +438,7 @@ PUT /apis/apps/v1/namespaces/{namespace}/replicasets/{name} }}">namespace -- **body**: }}">ReplicaSet, required +- **body**: }}">ReplicaSet, required @@ -462,9 +462,9 @@ PUT /apis/apps/v1/namespaces/{namespace}/replicasets/{name} #### Response -200 (}}">ReplicaSet): OK +200 (}}">ReplicaSet): OK -201 (}}">ReplicaSet): Created +201 (}}">ReplicaSet): Created 401: Unauthorized @@ -488,7 +488,7 @@ PUT /apis/apps/v1/namespaces/{namespace}/replicasets/{name}/status }}">namespace -- **body**: }}">ReplicaSet, required +- **body**: }}">ReplicaSet, required @@ -512,9 +512,9 @@ PUT /apis/apps/v1/namespaces/{namespace}/replicasets/{name}/status #### Response -200 (}}">ReplicaSet): OK +200 (}}">ReplicaSet): OK -201 (}}">ReplicaSet): Created +201 (}}">ReplicaSet): Created 401: Unauthorized @@ -567,7 +567,7 @@ PATCH /apis/apps/v1/namespaces/{namespace}/replicasets/{name} #### Response -200 (}}">ReplicaSet): OK +200 (}}">ReplicaSet): OK 401: Unauthorized @@ -620,7 +620,7 @@ PATCH /apis/apps/v1/namespaces/{namespace}/replicasets/{name}/status #### Response -200 (}}">ReplicaSet): OK +200 (}}">ReplicaSet): OK 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/workloads-resources/replication-controller-v1.md b/content/en/docs/reference/kubernetes-api/workload-resources/replication-controller-v1.md similarity index 86% rename from content/en/docs/reference/kubernetes-api/workloads-resources/replication-controller-v1.md rename to content/en/docs/reference/kubernetes-api/workload-resources/replication-controller-v1.md index 2970b6670c..1f7962ee96 100644 --- a/content/en/docs/reference/kubernetes-api/workloads-resources/replication-controller-v1.md +++ b/content/en/docs/reference/kubernetes-api/workload-resources/replication-controller-v1.md @@ -30,11 +30,11 @@ ReplicationController represents the configuration of a replication controller. If the Labels of a ReplicationController are empty, they are defaulted to be the same as the Pod(s) that the replication controller manages. Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -- **spec** (}}">ReplicationControllerSpec) +- **spec** (}}">ReplicationControllerSpec) Spec defines the specification of the desired behavior of the replication controller. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status -- **status** (}}">ReplicationControllerStatus) +- **status** (}}">ReplicationControllerStatus) Status is the most recently observed status of the replication controller. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status @@ -52,7 +52,7 @@ ReplicationControllerSpec is the specification of a replication controller. Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors -- **template** (}}">PodTemplateSpec) +- **template** (}}">PodTemplateSpec) Template is the object that describes the pod that will be created if insufficient replicas are detected. This takes precedence over a TemplateRef. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template @@ -146,7 +146,7 @@ ReplicationControllerList is a collection of replication controllers. Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds -- **items** ([]}}">ReplicationController), required +- **items** ([]}}">ReplicationController), required List of replication controllers. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller @@ -193,7 +193,7 @@ GET /api/v1/namespaces/{namespace}/replicationcontrollers/{name} #### Response -200 (}}">ReplicationController): OK +200 (}}">ReplicationController): OK 401: Unauthorized @@ -226,7 +226,7 @@ GET /api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status #### Response -200 (}}">ReplicationController): OK +200 (}}">ReplicationController): OK 401: Unauthorized @@ -299,7 +299,7 @@ GET /api/v1/namespaces/{namespace}/replicationcontrollers #### Response -200 (}}">ReplicationControllerList): OK +200 (}}">ReplicationControllerList): OK 401: Unauthorized @@ -367,7 +367,7 @@ GET /api/v1/replicationcontrollers #### Response -200 (}}">ReplicationControllerList): OK +200 (}}">ReplicationControllerList): OK 401: Unauthorized @@ -386,7 +386,7 @@ POST /api/v1/namespaces/{namespace}/replicationcontrollers }}">namespace -- **body**: }}">ReplicationController, required +- **body**: }}">ReplicationController, required @@ -410,11 +410,11 @@ POST /api/v1/namespaces/{namespace}/replicationcontrollers #### Response -200 (}}">ReplicationController): OK +200 (}}">ReplicationController): OK -201 (}}">ReplicationController): Created +201 (}}">ReplicationController): Created -202 (}}">ReplicationController): Accepted +202 (}}">ReplicationController): Accepted 401: Unauthorized @@ -438,7 +438,7 @@ PUT /api/v1/namespaces/{namespace}/replicationcontrollers/{name} }}">namespace -- **body**: }}">ReplicationController, required +- **body**: }}">ReplicationController, required @@ -462,9 +462,9 @@ PUT /api/v1/namespaces/{namespace}/replicationcontrollers/{name} #### Response -200 (}}">ReplicationController): OK +200 (}}">ReplicationController): OK -201 (}}">ReplicationController): Created +201 (}}">ReplicationController): Created 401: Unauthorized @@ -488,7 +488,7 @@ PUT /api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status }}">namespace -- **body**: }}">ReplicationController, required +- **body**: }}">ReplicationController, required @@ -512,9 +512,9 @@ PUT /api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status #### Response -200 (}}">ReplicationController): OK +200 (}}">ReplicationController): OK -201 (}}">ReplicationController): Created +201 (}}">ReplicationController): Created 401: Unauthorized @@ -567,7 +567,7 @@ PATCH /api/v1/namespaces/{namespace}/replicationcontrollers/{name} #### Response -200 (}}">ReplicationController): OK +200 (}}">ReplicationController): OK 401: Unauthorized @@ -620,7 +620,7 @@ PATCH /api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status #### Response -200 (}}">ReplicationController): OK +200 (}}">ReplicationController): OK 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/workloads-resources/stateful-set-v1.md b/content/en/docs/reference/kubernetes-api/workload-resources/stateful-set-v1.md similarity index 89% rename from content/en/docs/reference/kubernetes-api/workloads-resources/stateful-set-v1.md rename to content/en/docs/reference/kubernetes-api/workload-resources/stateful-set-v1.md index 1a55fa4c1d..17ea7755f2 100644 --- a/content/en/docs/reference/kubernetes-api/workloads-resources/stateful-set-v1.md +++ b/content/en/docs/reference/kubernetes-api/workload-resources/stateful-set-v1.md @@ -32,11 +32,11 @@ The StatefulSet guarantees that a given network identity will always map to the - **metadata** (}}">ObjectMeta) -- **spec** (}}">StatefulSetSpec) +- **spec** (}}">StatefulSetSpec) Spec defines the desired identities of pods in this set. -- **status** (}}">StatefulSetStatus) +- **status** (}}">StatefulSetStatus) Status is the current status of Pods in this StatefulSet. This data may be out of date by some window of time. @@ -58,7 +58,7 @@ A StatefulSetSpec is the specification of a StatefulSet. selector is a label query over pods that should match the replica count. It must match the pod template's labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors -- **template** (}}">PodTemplateSpec), required +- **template** (}}">PodTemplateSpec), required template is the object that describes the pod that will be created if insufficient replicas are detected. Each pod stamped out by the StatefulSet will fulfill this Template, but have a unique identity from the rest of the StatefulSet. @@ -193,7 +193,7 @@ StatefulSetList is a collection of StatefulSets. - **metadata** (}}">ListMeta) -- **items** ([]}}">StatefulSet), required +- **items** ([]}}">StatefulSet), required @@ -239,7 +239,7 @@ GET /apis/apps/v1/namespaces/{namespace}/statefulsets/{name} #### Response -200 (}}">StatefulSet): OK +200 (}}">StatefulSet): OK 401: Unauthorized @@ -272,7 +272,7 @@ GET /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status #### Response -200 (}}">StatefulSet): OK +200 (}}">StatefulSet): OK 401: Unauthorized @@ -345,7 +345,7 @@ GET /apis/apps/v1/namespaces/{namespace}/statefulsets #### Response -200 (}}">StatefulSetList): OK +200 (}}">StatefulSetList): OK 401: Unauthorized @@ -413,7 +413,7 @@ GET /apis/apps/v1/statefulsets #### Response -200 (}}">StatefulSetList): OK +200 (}}">StatefulSetList): OK 401: Unauthorized @@ -432,7 +432,7 @@ POST /apis/apps/v1/namespaces/{namespace}/statefulsets }}">namespace -- **body**: }}">StatefulSet, required +- **body**: }}">StatefulSet, required @@ -456,11 +456,11 @@ POST /apis/apps/v1/namespaces/{namespace}/statefulsets #### Response -200 (}}">StatefulSet): OK +200 (}}">StatefulSet): OK -201 (}}">StatefulSet): Created +201 (}}">StatefulSet): Created -202 (}}">StatefulSet): Accepted +202 (}}">StatefulSet): Accepted 401: Unauthorized @@ -484,7 +484,7 @@ PUT /apis/apps/v1/namespaces/{namespace}/statefulsets/{name} }}">namespace -- **body**: }}">StatefulSet, required +- **body**: }}">StatefulSet, required @@ -508,9 +508,9 @@ PUT /apis/apps/v1/namespaces/{namespace}/statefulsets/{name} #### Response -200 (}}">StatefulSet): OK +200 (}}">StatefulSet): OK -201 (}}">StatefulSet): Created +201 (}}">StatefulSet): Created 401: Unauthorized @@ -534,7 +534,7 @@ PUT /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status }}">namespace -- **body**: }}">StatefulSet, required +- **body**: }}">StatefulSet, required @@ -558,9 +558,9 @@ PUT /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status #### Response -200 (}}">StatefulSet): OK +200 (}}">StatefulSet): OK -201 (}}">StatefulSet): Created +201 (}}">StatefulSet): Created 401: Unauthorized @@ -613,7 +613,7 @@ PATCH /apis/apps/v1/namespaces/{namespace}/statefulsets/{name} #### Response -200 (}}">StatefulSet): OK +200 (}}">StatefulSet): OK 401: Unauthorized @@ -666,7 +666,7 @@ PATCH /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status #### Response -200 (}}">StatefulSet): OK +200 (}}">StatefulSet): OK 401: Unauthorized diff --git a/content/en/docs/reference/kubernetes-api/workloads-resources/_index.md b/content/en/docs/reference/kubernetes-api/workloads-resources/_index.md deleted file mode 100644 index 1b5aab3fba..0000000000 --- a/content/en/docs/reference/kubernetes-api/workloads-resources/_index.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "Workloads Resources" -weight: 1 ---- From 2edc0b8e5963862917d3543e48c3aaf36eb81048 Mon Sep 17 00:00:00 2001 From: k-wall Date: Mon, 8 Mar 2021 19:45:15 +0000 Subject: [PATCH 135/788] Document behaviour when optionally referenced configmap appears after the pod starts --- .../configure-pod-container/configure-pod-configmap.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/content/en/docs/tasks/configure-pod-container/configure-pod-configmap.md b/content/en/docs/tasks/configure-pod-container/configure-pod-configmap.md index 40987152e8..6432b10c93 100644 --- a/content/en/docs/tasks/configure-pod-container/configure-pod-configmap.md +++ b/content/en/docs/tasks/configure-pod-container/configure-pod-configmap.md @@ -624,9 +624,15 @@ Like before, all previous files in the `/etc/config/` directory will be deleted. You can project keys to specific paths and specific permissions on a per-file basis. The [Secrets](/docs/concepts/configuration/secret/#using-secrets-as-files-from-a-pod) user guide explains the syntax. +### Optional References + +A ConfigMap reference may be marked "optional". If the ConfigMap is non-existent, the mounted volume will be empty. If the ConfigMap exists, but the referenced key is non-existent the path will be absent beneath the mount point. + ### Mounted ConfigMaps are updated automatically -When a ConfigMap already being consumed in a volume is updated, projected keys are eventually updated as well. Kubelet is checking whether the mounted ConfigMap is fresh on every periodic sync. However, it is using its local ttl-based cache for getting the current value of the ConfigMap. As a result, the total delay from the moment when the ConfigMap is updated to the moment when new keys are projected to the pod can be as long as kubelet sync period (1 minute by default) + ttl of ConfigMaps cache (1 minute by default) in kubelet. You can trigger an immediate refresh by updating one of the pod's annotations. +When a mounted ConfigMap is updated, the projected content is eventually updated too. This applies in the case where an optionally referenced ConfigMap comes into existence after a pod has started. + +Kubelet is checking whether the mounted ConfigMap is fresh on every periodic sync. However, it is using its local ttl-based cache for getting the current value of the ConfigMap. As a result, the total delay from the moment when the ConfigMap is updated to the moment when new keys are projected to the pod can be as long as kubelet sync period (1 minute by default) + ttl of ConfigMaps cache (1 minute by default) in kubelet. You can trigger an immediate refresh by updating one of the pod's annotations. {{< note >}} A container using a ConfigMap as a [subPath](/docs/concepts/storage/volumes/#using-subpath) volume will not receive ConfigMap updates. From f2464dcc5fdcd666c3594f058647a9c669997008 Mon Sep 17 00:00:00 2001 From: Clayton Coleman Date: Tue, 2 Mar 2021 12:14:39 -0500 Subject: [PATCH 136/788] Mark scheduler pod resource metrics as beta They will be part of 1.21 as beta stability. --- .../en/docs/concepts/cluster-administration/system-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/concepts/cluster-administration/system-metrics.md b/content/en/docs/concepts/cluster-administration/system-metrics.md index 3c7e137ded..073e0c7236 100644 --- a/content/en/docs/concepts/cluster-administration/system-metrics.md +++ b/content/en/docs/concepts/cluster-administration/system-metrics.md @@ -134,7 +134,7 @@ cloudprovider_gce_api_request_duration_seconds { request = "list_disk"} ### kube-scheduler metrics -{{< feature-state for_k8s_version="v1.20" state="alpha" >}} +{{< feature-state for_k8s_version="v1.21" state="beta" >}} The scheduler exposes optional metrics that reports the requested resources and the desired limits of all running pods. These metrics can be used to build capacity planning dashboards, assess current or historical scheduling limits, quickly identify workloads that cannot schedule due to lack of resources, and compare actual usage to the pod's request. From da4074fa1f6831fa985d29a547e6f0ffaea55d01 Mon Sep 17 00:00:00 2001 From: Arhell Date: Tue, 9 Mar 2021 00:38:42 +0200 Subject: [PATCH 137/788] [zh] remove feature-state tag for categories for CRDs --- .../custom-resources/custom-resource-definitions.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/content/zh/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions.md b/content/zh/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions.md index c428192679..daa4f8829e 100644 --- a/content/zh/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions.md +++ b/content/zh/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions.md @@ -1788,8 +1788,6 @@ resources that have the scale subresource enabled. --> ### 分类 {#categories} -{{< feature-state state="beta" for_k8s_version="v1.10" >}} - + +{{< feature-state for_k8s_version="v1.20" state="stable" >}} + +Esta página describe el recurso RuntimeClass y el mecanismo de selección del +motor de ejecución. + +RuntimeClass es una característica que permite seleccionar la configuración del +motor de ejecución para los contenedores. La configuración del motor de ejecución para +los contenedores se utiliza para ejecutar los contenedores de un Pod. + + + + + + +## Motivación + +Se puede seleccionar un RuntimeClass diferente entre diferentes Pods para +proporcionar equilibrio entre rendimiento y seguridad. Por ejemplo, si parte de +la carga de trabajo requiere un alto nivel de garantía de seguridad, se podrían +planificar esos Pods para ejecutarse en un motor de ejecución que use +virtualización de hardware. Así se beneficiaría con un mayor aislamiento del motor +de ejecución alternativo, con el coste de alguna sobrecarga adicional. + +También se puede utilizar el RuntimeClass para ejecutar distintos Pods con el +mismo motor de ejecución pero con distintos parámetros. + +## Configuración + +1. Configurar la implementación del CRI en los nodos (depende del motor de + ejecución) +2. Crear los recursos RuntimeClass correspondientes. + +### 1. Configurar la implementación del CRI en los nodos + +La configuración disponible utilizando RuntimeClass dependen de la +implementación de la Interfaz del Motor de ejecución de Containers (CRI). Véase +la sección [Configuración del CRI](#cri-configuration) para más +información sobre cómo configurar la implementación del CRI. + +{{< note >}} +RuntimeClass por defecto asume una configuración de nodos homogénea para todo el +clúster (lo que significa que todos los nodos están configurados de la misma +forma para el motor de ejecución de los contenedores). Para soportar configuraciones +heterogéneas de nodos, véase [Planificación](#scheduling) más abajo. +{{< /note >}} + +Las configuraciones tienen un nombre de `handler` (manipulador) correspondiente, referenciado +por la RuntimeClass. El `handler` debe ser una etiqueta DNS 1123 válida +(alfanumérico + caracter `-`). + +### 2. Crear los recursos RuntimeClass correspondientes. + +Cada configuración establecida en el paso 1 tiene un nombre de `handler`, que +identifica a dicha configuración. Para cada `handler`, hay que crear un objeto +RuntimeClass correspondiente. + +Actualmente el recurso RuntimeClass sólo tiene dos campos significativos: el +nombre del RuntimeClass (`metadata.name`) y el `handler`. La +definición del objeto se parece a ésta: + +```yaml +apiVersion: node.k8s.io/v1 # La RuntimeClass se define en el grupo node.k8s.io +kind: RuntimeClass +metadata: + name: myclass # Nombre por el que se referenciará la RuntimeClass + # no contiene espacio de nombres +handler: myconfiguration # El nombre de la configuración CRI correspondiente +``` + +El nombre de un objeto RuntimeClass debe ser un [nombre de subdominio +DNS](/docs/concepts/overview/working-with-objects/names#dns-subdomain-names) +válido. + +{{< note >}} +Se recomienda que las operaciones de escritura de la RuntimeClass +(creación/modificación/parcheo/elimiación) se restrinjan al administrador del +clúster. Habitualmente es el valor por defecto. Véase [Visión general de la +Autorización](/docs/reference/access-authn-authz/authorization/) para más +detalles. +{{< /note >}} + +## Uso + +Una vez se han configurado las RuntimeClasses para el clúster, el utilizarlas es +muy sencillo. Solo se especifica un `runtimeClassName` en la especificación del Pod. +Por ejemplo: + + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: mypod +spec: + runtimeClassName: myclass + # ... +``` + +Así se informa a Kubelet del nombre de la RuntimeClass a utilizar para +este pod. Si dicha RuntimeClass no existe, o el CRI no puede ejecutar el +`handler` correspondiente, el pod entrará en la +[fase](/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase) final `Failed`. +Se puede buscar por el correspondiente +[evento](/docs/tasks/debug-application-cluster/debug-application-introspection/) +con el mensaje de error. + +Si no se especifica ninguna `runtimeClassName`, se usará el RuntimeHandler por +defecto, lo que equivale al comportamiento cuando la opción RuntimeClass está +deshabilitada. + +### Configuración del CRI + +Para más detalles sobre cómo configurar los motores de ejecución del CRI, véase +[instalación del CRI](/docs/setup/production-environment/container-runtimes/). + +#### dockershim + +El CRI dockershim incorporado por Kubernetes no soporta manejadores del motor de +ejecución. + +#### {{< glossary_tooltip term_id="containerd" >}} + +Los `handlers` del motor de ejecución se configuran mediante la configuración +de containerd en `/etc/containerd/config.toml`. Los `handlers` válidos se +configuran en la sección de motores de ejecución: + +``` +[plugins.cri.containerd.runtimes.${HANDLER_NAME}] +``` + +Véase la configuración de containerd para más detalles: +https://github.com/containerd/cri/blob/master/docs/config.md + +#### {{< glossary_tooltip term_id="cri-o" >}} + +Los `handlers` del motor de ejecución se configuran a través de la +configuración del CRI-O en `/etc/crio/crio.conf`. Los manejadores válidos se +configuran en la [tabla +crio.runtime](https://github.com/cri-o/cri-o/blob/master/docs/crio.conf.5.md#crioruntime-table) + +``` +[crio.runtime.runtimes.${HANDLER_NAME}] + runtime_path = "${PATH_TO_BINARY}" +``` + +Véase la [documentación de la +configuración](https://raw.githubusercontent.com/cri-o/cri-o/9f11d1d/docs/crio.conf.5.md) +de CRI-O para más detalles. + +## Planificación + +{{< feature-state for_k8s_version="v1.16" state="beta" >}} + +Especificando el campo `scheduling` en una RuntimeClass se pueden establecer +restricciones para asegurar que los Pods ejecutándose con dicha RuntimeClass se +planifican en los nodos que la soportan. + +Para asegurar que los pods sean asignados en nodos que soportan una RuntimeClass +determinada, ese conjunto de nodos debe tener una etiqueta común que se +selecciona en el campo `runtimeclass.scheduling.nodeSelector`. El nodeSelector +de la RuntimeClass se combina con el nodeSelector del pod durante la admisión, +haciéndose efectiva la intersección del conjunto de nodos seleccionados por +ambos. Si hay conflicto, el pod se rechazará. + +Si los nodos soportados se marcan para evitar que los pods con otra RuntimeClass +se ejecuten en el nodo, se pueden añadir `tolerations` al RuntimeClass. Igual +que con el `nodeSelector`, las tolerancias se mezclan con las tolerancias del +pod durante la admisión, haciéndose efectiva la unión del conjunto de nodos +tolerados por ambos. + +Para saber más sobre configurar el selector de nodos y las tolerancias, véase +[Asignando Pods a Nodos](/docs/concepts/scheduling-eviction/assign-pod-node/). + +### Sobrecarga del Pod + +{{< feature-state for_k8s_version="v1.18" state="beta" >}} + +Se pueden especificar recursos de _sobrecarga_ adicional que se asocian a los +Pods que estén ejecutándose. Declarar la sobrecarga permite al clúster (incluido +el planificador) contabilizarlo al tomar decisiones sobre los Pods y los +recursos. Para utilizar la sobrecarga de pods, se debe haber habilitado la +[feature gate](/docs/reference/command-line-tools-reference/feature-gates/) +PodOverhead (lo está por defecto). + +La sobrecarga de pods se define en la RuntimeClass a través del los campos de +`overhead`. Con estos campos se puede especificar la sobrecarga de los pods en +ejecución que utilizan esta RuntimeClass para asegurar que estas sobrecargas se +cuentan en Kubernetes. + +## {{% heading "whatsnext" %}} + + +- [Diseño de RuntimeClass](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/585-runtime-class/README.md) +- [Diseño de programación de RuntimeClass](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/585-runtime-class/README.md#runtimeclass-scheduling) +- Leer sobre el concepto de [Pod Overhead](/docs/concepts/scheduling-eviction/pod-overhead/) +- [Diseño de capacidad de PodOverhead](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/20190226-pod-overhead.md) From 285986acda7ea7e9b680831165ff53fc2e182843 Mon Sep 17 00:00:00 2001 From: Qiming Teng Date: Tue, 9 Mar 2021 09:07:30 +0800 Subject: [PATCH 139/788] Fix section order under scheduling-eviction --- content/en/docs/concepts/scheduling-eviction/assign-pod-node.md | 2 +- .../docs/concepts/scheduling-eviction/resource-bin-packing.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/concepts/scheduling-eviction/assign-pod-node.md b/content/en/docs/concepts/scheduling-eviction/assign-pod-node.md index b6b2bd79a8..f0437a9b8b 100644 --- a/content/en/docs/concepts/scheduling-eviction/assign-pod-node.md +++ b/content/en/docs/concepts/scheduling-eviction/assign-pod-node.md @@ -5,7 +5,7 @@ reviewers: - bsalamat title: Assigning Pods to Nodes content_type: concept -weight: 50 +weight: 20 --- diff --git a/content/en/docs/concepts/scheduling-eviction/resource-bin-packing.md b/content/en/docs/concepts/scheduling-eviction/resource-bin-packing.md index a327f1de24..94bfaa1280 100644 --- a/content/en/docs/concepts/scheduling-eviction/resource-bin-packing.md +++ b/content/en/docs/concepts/scheduling-eviction/resource-bin-packing.md @@ -5,7 +5,7 @@ reviewers: - ahg-g title: Resource Bin Packing for Extended Resources content_type: concept -weight: 50 +weight: 30 --- From b1686cc43a55986c3c460ecf62715a50c632c3ba Mon Sep 17 00:00:00 2001 From: Terry Moschou Date: Tue, 9 Mar 2021 11:47:15 +1030 Subject: [PATCH 140/788] Switch to curl, remove code formatting on the product names, use OS family name on tabs --- .../container-runtimes.md | 32 +++++++++---------- .../tools/kubeadm/install-kubeadm.md | 6 ++-- .../docs/tasks/tools/install-kubectl-linux.md | 11 ++++--- 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/content/en/docs/setup/production-environment/container-runtimes.md b/content/en/docs/setup/production-environment/container-runtimes.md index d255780222..a59ebbddaf 100644 --- a/content/en/docs/setup/production-environment/container-runtimes.md +++ b/content/en/docs/setup/production-environment/container-runtimes.md @@ -63,7 +63,7 @@ configuration, or reinstall it using automation. ### containerd -This section contains the necessary steps to use `containerd` as CRI runtime. +This section contains the necessary steps to use containerd as CRI runtime. Use the following commands to install Containerd on your system: @@ -89,27 +89,27 @@ EOF sudo sysctl --system ``` -Install `containerd`: +Install containerd: {{< tabs name="tab-cri-containerd-installation" >}} {{% tab name="Ubuntu 16.04" %}} 1. Setup the [Docker Engine repository for Ubuntu](https://docs.docker.com/engine/install/ubuntu/#set-up-the-repository) -2. Install `containerd`: +2. Install containerd: ```shell sudo apt-get update && sudo apt-get install -y containerd.io ``` -3. Configure `containerd`: +3. Configure containerd: ```shell sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml ``` -4. Restart `containerd`: +4. Restart containerd: ```shell sudo systemctl restart containerd @@ -118,20 +118,20 @@ Install `containerd`: {{% /tab %}} {{% tab name="Ubuntu 18.04/20.04" %}} -1. Install `containerd`: +1. Install containerd: ```shell sudo apt-get update && sudo apt-get install -y containerd ``` -2. Configure `containerd`: +2. Configure containerd: ```shell sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml ``` -3. Restart `containerd`: +3. Restart containerd: ```shell sudo systemctl restart containerd @@ -142,20 +142,20 @@ Install `containerd`: 1. Setup the [Docker Engine repository for Debian](https://docs.docker.com/engine/install/debian/#set-up-the-repository) -2. Install `containerd`: +2. Install containerd: ```shell sudo apt-get update && sudo apt-get install -y containerd.io ``` -3. Configure `containerd`: +3. Configure containerd: ```shell sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml ``` -4. Restart `containerd`: +4. Restart containerd: ```shell sudo systemctl restart containerd @@ -166,20 +166,20 @@ Install `containerd`: 1. Setup the [Docker Engine repository for CentOS/RHEL](https://docs.docker.com/engine/install/centos/#set-up-the-repository) -2. Install `containerd`: +2. Install containerd: ```shell sudo yum update -y && sudo yum install -y containerd.io ``` -3. Configure `containerd`: +3. Configure containerd: ```shell sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml ``` -4. Restart `containerd`: +4. Restart containerd: ```shell sudo systemctl restart containerd @@ -192,7 +192,7 @@ Install `containerd`: Start a Powershell session, set `$Version` to the desired version (ex: `$Version=1.4.3`), and then run the following commands:
    -1. Download `containerd`: +1. Download containerd: ```powershell curl.exe -L https://github.com/containerd/containerd/releases/download/v$Version/containerd-$Version-windows-amd64.tar.gz -o containerd-windows-amd64.tar.gz @@ -215,7 +215,7 @@ Start a Powershell session, set `$Version` to the desired version (ex: `$Version Add-MpPreference -ExclusionProcess "$Env:ProgramFiles\containerd\containerd.exe" ``` -3. Start `containerd`: +3. Start containerd: ```powershell .\containerd.exe --register-service 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 86186d1713..7d74a862f9 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 @@ -180,13 +180,13 @@ For more information on version skews, see: ```shell sudo apt-get update - sudo apt-get install -y apt-transport-https ca-certificates wget + sudo apt-get install -y apt-transport-https ca-certificates curl ``` 2. Download the Google Cloud public signing key: ```shell - sudo wget -O /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg + sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg ``` 3. Add the Kubernetes `apt` repository: @@ -195,7 +195,7 @@ For more information on version skews, see: echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list ``` -4. Update `apt` package index, install `kubelet`, `kubeadm` and `kubectl`, and pin their version: +4. Update `apt` package index, install kubelet, kubeadm and kubectl, and pin their version: ```shell sudo apt-get update diff --git a/content/en/docs/tasks/tools/install-kubectl-linux.md b/content/en/docs/tasks/tools/install-kubectl-linux.md index e18adbe1b3..243dbf4e0d 100644 --- a/content/en/docs/tasks/tools/install-kubectl-linux.md +++ b/content/en/docs/tasks/tools/install-kubectl-linux.md @@ -100,19 +100,19 @@ For example, to download version {{< param "fullversion" >}} on Linux, type: ### Install using native package management {{< tabs name="kubectl_install" >}} -{{% tab name="Ubuntu, Debian or HypriotOS" %}} +{{% tab name="Debian-based distributions" %}} 1. Update the `apt` package index and install packages needed to use the Kubernetes `apt` repository: ```shell sudo apt-get update - sudo apt-get install -y apt-transport-https ca-certificates wget + sudo apt-get install -y apt-transport-https ca-certificates curl ``` 2. Download the Google Cloud public signing key: ```shell - sudo wget -O /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg + sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg ``` 3. Add the Kubernetes `apt` repository: @@ -121,7 +121,7 @@ For example, to download version {{< param "fullversion" >}} on Linux, type: echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list ``` -4. Update `apt` package index with the new repository and install `kubectl`: +4. Update `apt` package index with the new repository and install kubectl: ```shell sudo apt-get update @@ -130,7 +130,8 @@ For example, to download version {{< param "fullversion" >}} on Linux, type: {{% /tab %}} -{{< tab name="CentOS, RHEL or Fedora" codelang="bash" >}}cat < /etc/yum.repos.d/kubernetes.repo +{{< tab name="Red Hat-based distributions" codelang="bash" >}} +cat < /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 From 71ca12a77deabb2bf68ce2366e52f3399191828b Mon Sep 17 00:00:00 2001 From: Henry Liu Date: Tue, 9 Mar 2021 09:23:12 +0800 Subject: [PATCH 141/788] fix typo and some translation error --- .../zh/docs/tasks/run-application/access-api-from-pod.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/zh/docs/tasks/run-application/access-api-from-pod.md b/content/zh/docs/tasks/run-application/access-api-from-pod.md index ffcf869a42..8bbe8d3ac4 100644 --- a/content/zh/docs/tasks/run-application/access-api-from-pod.md +++ b/content/zh/docs/tasks/run-application/access-api-from-pod.md @@ -108,7 +108,7 @@ If available, a certificate bundle is placed into the filesystem tree of each container at `/var/run/secrets/kubernetes.io/serviceaccount/ca.crt`, and should be used to verify the serving certificate of the API server. --> -如果由证书包可用,则凭证包被放入每个容器的文件系统树中的 +如果证书包可用,则凭证包被放入每个容器的文件系统树中的 `/var/run/secrets/kubernetes.io/serviceaccount/ca.crt` 处, 且将被用于验证 API 服务器的服务证书。 @@ -130,9 +130,9 @@ in the Pod can use it directly. --> #### 使用 kubectl proxy {#use-kubectl-proxy} -如果你希望不实用官方客户端库就完成 API 查询,可以将 `kubectl proxy` 作为 +如果你希望不使用官方客户端库就完成 API 查询,可以将 `kubectl proxy` 作为 [command](/zh/docs/tasks/inject-data-application/define-command-argument-container/) -在 Pod 启动一个边车(Sidecar)容器。这样,`kubectl proxy` 自动完成对 API +在 Pod 中启动一个边车(Sidecar)容器。这样,`kubectl proxy` 自动完成对 API 的身份认证,并将其暴露到 Pod 的 `localhost` 接口,从而 Pod 中的其他容器可以 直接使用 API。 From 7fdd756f8e8e0c456dade654f7f973e854012d5e Mon Sep 17 00:00:00 2001 From: REN Xiaolei Date: Tue, 9 Mar 2021 09:31:00 +0800 Subject: [PATCH 142/788] fix Chinese translation about reserved-cpus (#26927) * fix Chinese translation about reserved-cpus * fix translation about take precedence --- .../tasks/administer-cluster/reserve-compute-resources.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/content/zh/docs/tasks/administer-cluster/reserve-compute-resources.md b/content/zh/docs/tasks/administer-cluster/reserve-compute-resources.md index 7a93c9c932..381697d352 100644 --- a/content/zh/docs/tasks/administer-cluster/reserve-compute-resources.md +++ b/content/zh/docs/tasks/administer-cluster/reserve-compute-resources.md @@ -256,12 +256,11 @@ If the Kubelet **does not** have `--system-reserved-cgroup` and `--kube-reserved the explicit cpuset provided by `reserved-cpus` will take precedence over the CPUs defined by `--kube-reserved` and `--system-reserved` options. --> -`reserved-cpus` 旨在为操作系统守护程序和 kubernetes 系统守护程序定义一个显式 CPU -集合。`reserved-cpus` 适用于不打算针对 cpuset 资源为操作系统守护程序和 kubernetes +`reserved-cpus` 旨在为操作系统守护程序和 kubernetes 系统守护程序保留一组明确指定编号的 +CPU。`reserved-cpus` 适用于不打算针对 cpuset 资源为操作系统守护程序和 kubernetes 系统守护程序定义独立的顶级 cgroups 的系统。 如果 Kubelet **没有** 指定参数 `--system-reserved-cgroup` 和 `--kube-reserved-cgroup`, -则 `reserved-cpus` 提供的显式 cpuset 将优先于 `--kube-reserved` 和 `--system-reserved` -选项定义的 cpuset。 +则 `reserved-cpus` 的设置将优先于 `--kube-reserved` 和 `--system-reserved` 选项。 ## 클러스터 계획 @@ -41,7 +45,7 @@ no_list: true ## 클러스터 보안 -* [인증서](/ko/docs/concepts/cluster-administration/certificates/)는 다른 툴 체인을 사용하여 인증서를 생성하는 단계를 설명한다. +* [인증서 생성](/ko/docs/tasks/administer-cluster/certificates/)는 다른 툴 체인을 사용하여 인증서를 생성하는 단계를 설명한다. * [쿠버네티스 컨테이너 환경](/ko/docs/concepts/containers/container-environment/)은 쿠버네티스 노드에서 Kubelet으로 관리하는 컨테이너에 대한 환경을 설명한다. diff --git a/content/ko/docs/concepts/cluster-administration/certificates.md b/content/ko/docs/concepts/cluster-administration/certificates.md index 7b71b9c344..5acb75ea80 100644 --- a/content/ko/docs/concepts/cluster-administration/certificates.md +++ b/content/ko/docs/concepts/cluster-administration/certificates.md @@ -4,247 +4,6 @@ content_type: concept weight: 20 --- - -클라이언트 인증서로 인증을 사용하는 경우 `easyrsa`, `openssl` 또는 `cfssl` -을 통해 인증서를 수동으로 생성할 수 있다. - - - - - - -### easyrsa - -**easyrsa** 는 클러스터 인증서를 수동으로 생성할 수 있다. - -1. easyrsa3의 패치 버전을 다운로드하여 압축을 풀고, 초기화한다. - - curl -LO https://storage.googleapis.com/kubernetes-release/easy-rsa/easy-rsa.tar.gz - tar xzf easy-rsa.tar.gz - cd easy-rsa-master/easyrsa3 - ./easyrsa init-pki -1. 새로운 인증 기관(CA)을 생성한다. `--batch` 는 자동 모드를 설정한다. - `--req-cn` 는 CA의 새 루트 인증서에 대한 일반 이름(Common Name (CN))을 지정한다. - - ./easyrsa --batch "--req-cn=${MASTER_IP}@`date +%s`" build-ca nopass -1. 서버 인증서와 키를 생성한다. - `--subject-alt-name` 인수는 API 서버에 접근이 가능한 IP와 DNS - 이름을 설정한다. `MASTER_CLUSTER_IP` 는 일반적으로 API 서버와 - 컨트롤러 관리자 컴포넌트에 대해 `--service-cluster-ip-range` 인수로 - 지정된 서비스 CIDR의 첫 번째 IP이다. `--days` 인수는 인증서가 만료되는 - 일 수를 설정하는데 사용된다. - 또한, 아래 샘플은 기본 DNS 이름으로 `cluster.local` 을 - 사용한다고 가정한다. - - ./easyrsa --subject-alt-name="IP:${MASTER_IP},"\ - "IP:${MASTER_CLUSTER_IP},"\ - "DNS:kubernetes,"\ - "DNS:kubernetes.default,"\ - "DNS:kubernetes.default.svc,"\ - "DNS:kubernetes.default.svc.cluster,"\ - "DNS:kubernetes.default.svc.cluster.local" \ - --days=10000 \ - build-server-full server nopass -1. `pki/ca.crt`, `pki/issued/server.crt` 그리고 `pki/private/server.key` 를 디렉터리에 복사한다. -1. API 서버 시작 파라미터에 다음 파라미터를 채우고 추가한다. - - --client-ca-file=/yourdirectory/ca.crt - --tls-cert-file=/yourdirectory/server.crt - --tls-private-key-file=/yourdirectory/server.key - -### openssl - -**openssl** 은 클러스터 인증서를 수동으로 생성할 수 있다. - -1. ca.key를 2048bit로 생성한다. - - openssl genrsa -out ca.key 2048 -1. ca.key에 따라 ca.crt를 생성한다(인증서 유효 기간을 사용하려면 -days를 사용한다). - - openssl req -x509 -new -nodes -key ca.key -subj "/CN=${MASTER_IP}" -days 10000 -out ca.crt -1. server.key를 2048bit로 생성한다. - - openssl genrsa -out server.key 2048 -1. 인증서 서명 요청(Certificate Signing Request (CSR))을 생성하기 위한 설정 파일을 생성한다. - 파일에 저장하기 전에 꺾쇠 괄호(예: ``)로 - 표시된 값을 실제 값으로 대체한다(예: `csr.conf`). - `MASTER_CLUSTER_IP` 의 값은 이전 하위 섹션에서 - 설명한 대로 API 서버의 서비스 클러스터 IP이다. - 또한, 아래 샘플에서는 `cluster.local` 을 기본 DNS 도메인 - 이름으로 사용하고 있다고 가정한다. - - [ req ] - default_bits = 2048 - prompt = no - default_md = sha256 - req_extensions = req_ext - distinguished_name = dn - - [ dn ] - C = <국가(country)> - ST = <도(state)> - L = <시(city)> - O = <조직(organization)> - OU = <조직 단위(organization unit)> - CN = - - [ req_ext ] - subjectAltName = @alt_names - - [ alt_names ] - DNS.1 = kubernetes - DNS.2 = kubernetes.default - DNS.3 = kubernetes.default.svc - DNS.4 = kubernetes.default.svc.cluster - DNS.5 = kubernetes.default.svc.cluster.local - IP.1 = - IP.2 = - - [ v3_ext ] - authorityKeyIdentifier=keyid,issuer:always - basicConstraints=CA:FALSE - keyUsage=keyEncipherment,dataEncipherment - extendedKeyUsage=serverAuth,clientAuth - subjectAltName=@alt_names -1. 설정 파일을 기반으로 인증서 서명 요청을 생성한다. - - openssl req -new -key server.key -out server.csr -config csr.conf -1. ca.key, ca.crt 그리고 server.csr을 사용해서 서버 인증서를 생성한다. - - openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key \ - -CAcreateserial -out server.crt -days 10000 \ - -extensions v3_ext -extfile csr.conf -1. 인증서를 본다. - - openssl x509 -noout -text -in ./server.crt - -마지막으로, API 서버 시작 파라미터에 동일한 파라미터를 추가한다. - -### cfssl - -**cfssl** 은 인증서 생성을 위한 또 다른 도구이다. - -1. 아래에 표시된 대로 커맨드 라인 도구를 다운로드하여 압축을 풀고 준비한다. - 사용 중인 하드웨어 아키텍처 및 cfssl 버전에 따라 샘플 - 명령을 조정해야 할 수도 있다. - - curl -L https://github.com/cloudflare/cfssl/releases/download/v1.5.0/cfssl_1.5.0_linux_amd64 -o cfssl - chmod +x cfssl - curl -L https://github.com/cloudflare/cfssl/releases/download/v1.5.0/cfssljson_1.5.0_linux_amd64 -o cfssljson - chmod +x cfssljson - curl -L https://github.com/cloudflare/cfssl/releases/download/v1.5.0/cfssl-certinfo_1.5.0_linux_amd64 -o cfssl-certinfo - chmod +x cfssl-certinfo -1. 아티팩트(artifact)를 보유할 디렉터리를 생성하고 cfssl을 초기화한다. - - mkdir cert - cd cert - ../cfssl print-defaults config > config.json - ../cfssl print-defaults csr > csr.json -1. CA 파일을 생성하기 위한 JSON 설정 파일을 `ca-config.json` 예시와 같이 생성한다. - - { - "signing": { - "default": { - "expiry": "8760h" - }, - "profiles": { - "kubernetes": { - "usages": [ - "signing", - "key encipherment", - "server auth", - "client auth" - ], - "expiry": "8760h" - } - } - } - } -1. CA 인증서 서명 요청(CSR)을 위한 JSON 설정 파일을 - `ca-csr.json` 예시와 같이 생성한다. 꺾쇠 괄호로 표시된 - 값을 사용하려는 실제 값으로 변경한다. - - { - "CN": "kubernetes", - "key": { - "algo": "rsa", - "size": 2048 - }, - "names":[{ - "C": "<국가(country)>", - "ST": "<도(state)>", - "L": "<시(city)>", - "O": "<조직(organization)>", - "OU": "<조직 단위(organization unit)>" - }] - } -1. CA 키(`ca-key.pem`)와 인증서(`ca.pem`)을 생성한다. - - ../cfssl gencert -initca ca-csr.json | ../cfssljson -bare ca -1. API 서버의 키와 인증서를 생성하기 위한 JSON 구성파일을 - `server-csr.json` 예시와 같이 생성한다. 꺾쇠 괄호 안의 값을 - 사용하려는 실제 값으로 변경한다. `MASTER_CLUSTER_IP` 는 - 이전 하위 섹션에서 설명한 API 서버의 클러스터 IP이다. - 아래 샘플은 기본 DNS 도메인 이름으로 `cluster.local` 을 - 사용한다고 가정한다. - - { - "CN": "kubernetes", - "hosts": [ - "127.0.0.1", - "", - "", - "kubernetes", - "kubernetes.default", - "kubernetes.default.svc", - "kubernetes.default.svc.cluster", - "kubernetes.default.svc.cluster.local" - ], - "key": { - "algo": "rsa", - "size": 2048 - }, - "names": [{ - "C": "<국가(country)>", - "ST": "<도(state)>", - "L": "<시(city)>", - "O": "<조직(organization)>", - "OU": "<조직 단위(organization unit)>" - }] - } -1. API 서버 키와 인증서를 생성하면, 기본적으로 - `server-key.pem` 과 `server.pem` 파일에 각각 저장된다. - - ../cfssl gencert -ca=ca.pem -ca-key=ca-key.pem \ - --config=ca-config.json -profile=kubernetes \ - server-csr.json | ../cfssljson -bare server - - -## 자체 서명된 CA 인증서의 배포 - -클라이언트 노드는 자체 서명된 CA 인증서를 유효한 것으로 인식하지 않을 수 있다. -비-프로덕션 디플로이먼트 또는 회사 방화벽 뒤에서 실행되는 -디플로이먼트의 경우, 자체 서명된 CA 인증서를 모든 클라이언트에 -배포하고 유효한 인증서의 로컬 목록을 새로 고칠 수 있다. - -각 클라이언트에서, 다음 작업을 수행한다. - -```bash -sudo cp ca.crt /usr/local/share/ca-certificates/kubernetes.crt -sudo update-ca-certificates -``` - -``` -Updating certificates in /etc/ssl/certs... -1 added, 0 removed; done. -Running hooks in /etc/ca-certificates/update.d.... -done. -``` - -## 인증서 API - -`certificates.k8s.io` API를 사용해서 -[여기](/docs/tasks/tls/managing-tls-in-a-cluster)에 -설명된 대로 인증에 사용할 x509 인증서를 프로비전 할 수 있다. +클러스터를 위한 인증서를 생성하기 위해서는, [인증서](/ko/docs/tasks/administer-cluster/certificates/)를 참고한다. diff --git a/content/ko/docs/concepts/containers/container-environment.md b/content/ko/docs/concepts/containers/container-environment.md index c6cb09965a..58c106fdce 100644 --- a/content/ko/docs/concepts/containers/container-environment.md +++ b/content/ko/docs/concepts/containers/container-environment.md @@ -1,4 +1,7 @@ --- + + + title: 컨테이너 환경 변수 content_type: concept weight: 20 @@ -24,11 +27,11 @@ weight: 20 ### 컨테이너 정보 컨테이너의 *호스트네임* 은 컨테이너가 동작 중인 파드의 이름과 같다. -그것은 `hostname` 커맨드 또는 libc의 -[`gethostname`](https://man7.org/linux/man-pages/man2/gethostname.2.html) +그것은 `hostname` 커맨드 또는 libc의 +[`gethostname`](https://man7.org/linux/man-pages/man2/gethostname.2.html) 함수 호출을 통해서 구할 수 있다. -파드 이름과 네임스페이스는 +파드 이름과 네임스페이스는 [다운워드(Downward) API](/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/)를 통해 환경 변수로 구할 수 있다. Docker 이미지에 정적으로 명시된 환경 변수와 마찬가지로, @@ -36,11 +39,12 @@ Docker 이미지에 정적으로 명시된 환경 변수와 마찬가지로, ### 클러스터 정보 -컨테이너가 생성될 때 실행 중이던 모든 서비스의 목록은 환경 변수로 해당 컨테이너에서 사용할 수 +컨테이너가 생성될 때 실행 중이던 모든 서비스의 목록은 환경 변수로 해당 컨테이너에서 사용할 수 있다. +이 목록은 새로운 컨테이너의 파드 및 쿠버네티스 컨트롤 플레인 서비스와 동일한 네임스페이스 내에 있는 서비스로 한정된다. 이러한 환경 변수는 Docker 링크 구문과 일치한다. -*bar* 라는 이름의 컨테이너에 매핑되는 *foo* 라는 이름의 서비스에 대해서는, +*bar* 라는 이름의 컨테이너에 매핑되는 *foo* 라는 이름의 서비스에 대해서는, 다음의 형태로 변수가 정의된다. ```shell @@ -58,5 +62,3 @@ FOO_SERVICE_PORT=<서비스가 동작 중인 포트> * [컨테이너 라이프사이클 훅(hooks)](/ko/docs/concepts/containers/container-lifecycle-hooks/)에 대해 더 배워 보기. * [컨테이너 라이프사이클 이벤트에 핸들러 부착](/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/) 실제 경험 얻기. - - diff --git a/content/ko/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation.md b/content/ko/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation.md index 7e8a10e8b1..a2326c71dd 100644 --- a/content/ko/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation.md +++ b/content/ko/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation.md @@ -1,5 +1,9 @@ --- title: 애그리게이션 레이어(aggregation layer)로 쿠버네티스 API 확장하기 + + + + content_type: concept weight: 10 --- @@ -25,8 +29,6 @@ Extension-apiserver는 kube-apiserver로 오가는 연결의 레이턴시가 낮 kube-apiserver로 부터의 디스커버리 요청은 왕복 레이턴시가 5초 이내여야 한다. extention API server가 레이턴시 요구 사항을 달성할 수 없는 경우 이를 충족할 수 있도록 변경하는 것을 고려한다. -`EnableAggregatedDiscoveryTimeout=false` [기능 게이트](/ko/docs/reference/command-line-tools-reference/feature-gates/)를 설정해서 타임아웃 -제한을 비활성화 할 수 있다. 이 사용 중단(deprecated)된 기능 게이트는 향후 릴리스에서 제거될 예정이다. ## {{% heading "whatsnext" %}} diff --git a/content/ko/docs/concepts/extend-kubernetes/operator.md b/content/ko/docs/concepts/extend-kubernetes/operator.md index f6c80d8067..57a4f3d9d2 100644 --- a/content/ko/docs/concepts/extend-kubernetes/operator.md +++ b/content/ko/docs/concepts/extend-kubernetes/operator.md @@ -124,5 +124,5 @@ kubectl edit SampleDB/example-database # 일부 설정을 수동으로 변경하 사용하여 직접 구현하기 * [오퍼레이터 프레임워크](https://operatorframework.io) 사용하기 * 다른 사람들이 사용할 수 있도록 자신의 오퍼레이터를 [게시](https://operatorhub.io/)하기 -* 오퍼레이터 패턴을 소개한 [CoreOS 원본 기사](https://coreos.com/blog/introducing-operators.html) 읽기 +* 오퍼레이터 패턴을 소개한 [CoreOS 원본 글](https://web.archive.org/web/20170129131616/https://coreos.com/blog/introducing-operators.html) 읽기 (이 링크는 원본 글에 대한 보관 버전임) * 오퍼레이터 구축을 위한 모범 사례에 대한 구글 클라우드(Google Cloud)의 [기사](https://cloud.google.com/blog/products/containers-kubernetes/best-practices-for-building-kubernetes-operators-and-stateful-apps) 읽기 diff --git a/content/ko/docs/concepts/overview/working-with-objects/labels.md b/content/ko/docs/concepts/overview/working-with-objects/labels.md index 12f02ccee4..2044cf5135 100644 --- a/content/ko/docs/concepts/overview/working-with-objects/labels.md +++ b/content/ko/docs/concepts/overview/working-with-objects/labels.md @@ -52,6 +52,11 @@ _레이블_ 은 키와 값의 쌍이다. 유효한 레이블 키에는 슬래시 `kubernetes.io/`와 `k8s.io/` 접두사는 쿠버네티스의 핵심 컴포넌트로 예약되어있다. +유효한 레이블 값은 다음과 같다. +* 63 자 이하 여야 하고(공백이면 안 됨), +* 시작과 끝은 알파벳과 숫자(`[a-z0-9A-Z]`)이며, +* 알파벳과 숫자, 대시(`-`), 밑줄(`_`), 점(`.`)를 중간에 포함할 수 있다. + 유효한 레이블 값은 63자 미만 또는 공백이며 시작과 끝은 알파벳과 숫자(`[a-z0-9A-Z]`)이며, 대시(`-`), 밑줄(`_`), 점(`.`)과 함께 사용할 수 있다. 다음의 예시는 파드에 `environment: production` 과 `app: nginx` 2개의 레이블이 있는 구성 파일이다. diff --git a/content/ko/docs/concepts/policy/resource-quotas.md b/content/ko/docs/concepts/policy/resource-quotas.md index ff1f4a75c8..df23da5d57 100644 --- a/content/ko/docs/concepts/policy/resource-quotas.md +++ b/content/ko/docs/concepts/policy/resource-quotas.md @@ -58,7 +58,7 @@ weight: 20 ## 리소스 쿼터 활성화 많은 쿠버네티스 배포판에 기본적으로 리소스 쿼터 지원이 활성화되어 있다. -API 서버 `--enable-admission-plugins=` 플래그의 인수 중 하나로 +{{< glossary_tooltip text="API 서버" term_id="kube-apiserver" >}} `--enable-admission-plugins=` 플래그의 인수 중 하나로 `ResourceQuota`가 있는 경우 활성화된다. 해당 네임스페이스에 리소스쿼터가 있는 경우 특정 네임스페이스에 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 fc1074a86c..006ffba99c 100644 --- a/content/ko/docs/concepts/services-networking/dns-pod-service.md +++ b/content/ko/docs/concepts/services-networking/dns-pod-service.md @@ -1,11 +1,14 @@ --- + + + title: 서비스 및 파드용 DNS content_type: concept weight: 20 --- -이 페이지는 쿠버네티스의 DNS 지원에 대한 개요를 설명한다. - +쿠버네티스는 파드와 서비스를 위한 DNS 레코드를 생성한다. 사용자는 IP 주소 대신에 +일관된 DNS 네임을 통해서 서비스에 접속할 수 있다. @@ -15,23 +18,51 @@ weight: 20 개별 컨테이너들이 DNS 네임을 해석할 때 DNS 서비스의 IP를 사용하도록 kubelets를 구성한다. -### DNS 네임이 할당되는 것들 - 클러스터 내의 모든 서비스(DNS 서버 자신도 포함하여)에는 DNS 네임이 할당된다. 기본적으로 클라이언트 파드의 DNS 검색 리스트는 파드 자체의 네임스페이스와 클러스터의 기본 도메인을 포함한다. -이 예시는 다음과 같다. -쿠버네티스 네임스페이스 `bar`에 `foo`라는 서비스가 있다. 네임스페이스 `bar`에서 running 상태인 파드는 -단순하게 `foo`를 조회하는 DNS 쿼리를 통해서 서비스 `foo`를 찾을 수 있다. -네임스페이스 `quux`에서 실행 중인 파드는 -`foo.bar`를 조회하는 DNS 쿼리를 통해서 이 서비스를 찾을 수 있다. +### 서비스의 네임스페이스 -다음 절에서는 쿠버네티스 DNS에서 지원하는 레코드 유형과 레이아웃을 자세히 설명한다. -이 외에 동작하는 레이아웃, 네임 또는 쿼리는 구현 세부 정보로 간주하며 -경고 없이 변경될 수 있다. -최신 업데이트에 대한 자세한 설명은 다음 링크를 통해 참조할 수 있다. -[쿠버네티스 DNS 기반 서비스 디스커버리](https://github.com/kubernetes/dns/blob/master/docs/specification.md). +DNS 쿼리는 그것을 생성하는 파드의 네임스페이스에 따라 다른 결과를 반환할 수 +있다. 네임스페이스를 지정하지 않은 DNS 쿼리는 파드의 네임스페이스에 +국한된다. DNS 쿼리에 네임스페이스를 명시하여 다른 네임스페이스에 있는 서비스에 접속한다. + +예를 들어, `test` 네임스페이스에 있는 파드를 생각해보자. `data` 서비스는 +`prod` 네임스페이스에 있다. + +이 경우, `data` 에 대한 쿼리는 파드의 `test` 네임스페이스를 사용하기 때문에 결과를 반환하지 않을 것이다. + +`data.prod` 로 쿼리하면 의도한 결과를 반환할 것이다. 왜냐하면 +네임스페이스가 명시되어 있기 때문이다. + +DNS 쿼리는 파드의 `/etc/resolv.conf` 를 사용하여 확장될 수 있을 것이다. Kubelet은 +각 파드에 대해서 파일을 설정한다. 예를 들어, `data` 만을 위한 쿼리는 +`data.test.cluster.local` 로 확장된다. `search` 옵션의 값은 +쿼리를 확장하기 위해서 사용된다. DNS 쿼리에 대해 더 자세히 알고 싶은 경우, +[`resolv.conf` 설명 페이지.](https://www.man7.org/linux/man-pages/man5/resolv.conf.5.html)를 참고한다. + +``` +nameserver 10.32.0.10 +search .svc.cluster.local svc.cluster.local cluster.local +options ndots:5 +``` + +요약하면, _test_ 네임스페이스에 있는 파드는 `data.prod` 또는 +`data.prod.cluster.local` 중 하나를 통해 성공적으로 해석될 수 있다. + +### DNS 레코드 + +어떤 오브젝트가 DNS 레코드를 가지는가? + +1. 서비스 +2. 파드 + +다음 섹션은 지원되는 DNS 레코드의 종류 및 레이아웃에 대한 상세 +내용이다. 혹시 동작시킬 필요가 있는 다른 레이아웃, 네임, 또는 쿼리는 +구현 세부 사항으로 간주되며 경고 없이 변경될 수 있다. +최신 명세 확인을 위해서는, +[쿠버네티스 DNS-기반 서비스 디스커버리](https://github.com/kubernetes/dns/blob/master/docs/specification.md)를 본다. ## 서비스 diff --git a/content/ko/docs/tasks/administer-cluster/certificates.md b/content/ko/docs/tasks/administer-cluster/certificates.md new file mode 100644 index 0000000000..8c8f6a148b --- /dev/null +++ b/content/ko/docs/tasks/administer-cluster/certificates.md @@ -0,0 +1,250 @@ +--- +title: 인증서 +content_type: task +weight: 20 +--- + + + + +클라이언트 인증서로 인증을 사용하는 경우 `easyrsa`, `openssl` 또는 `cfssl` +을 통해 인증서를 수동으로 생성할 수 있다. + + + + + + +### easyrsa + +**easyrsa** 는 클러스터 인증서를 수동으로 생성할 수 있다. + +1. easyrsa3의 패치 버전을 다운로드하여 압축을 풀고, 초기화한다. + + curl -LO https://storage.googleapis.com/kubernetes-release/easy-rsa/easy-rsa.tar.gz + tar xzf easy-rsa.tar.gz + cd easy-rsa-master/easyrsa3 + ./easyrsa init-pki +1. 새로운 인증 기관(CA)을 생성한다. `--batch` 는 자동 모드를 설정한다. + `--req-cn` 는 CA의 새 루트 인증서에 대한 일반 이름(Common Name (CN))을 지정한다. + + ./easyrsa --batch "--req-cn=${MASTER_IP}@`date +%s`" build-ca nopass +1. 서버 인증서와 키를 생성한다. + `--subject-alt-name` 인수는 API 서버에 접근이 가능한 IP와 DNS + 이름을 설정한다. `MASTER_CLUSTER_IP` 는 일반적으로 API 서버와 + 컨트롤러 관리자 컴포넌트에 대해 `--service-cluster-ip-range` 인수로 + 지정된 서비스 CIDR의 첫 번째 IP이다. `--days` 인수는 인증서가 만료되는 + 일 수를 설정하는데 사용된다. + 또한, 아래 샘플은 기본 DNS 이름으로 `cluster.local` 을 + 사용한다고 가정한다. + + ./easyrsa --subject-alt-name="IP:${MASTER_IP},"\ + "IP:${MASTER_CLUSTER_IP},"\ + "DNS:kubernetes,"\ + "DNS:kubernetes.default,"\ + "DNS:kubernetes.default.svc,"\ + "DNS:kubernetes.default.svc.cluster,"\ + "DNS:kubernetes.default.svc.cluster.local" \ + --days=10000 \ + build-server-full server nopass +1. `pki/ca.crt`, `pki/issued/server.crt` 그리고 `pki/private/server.key` 를 디렉터리에 복사한다. +1. API 서버 시작 파라미터에 다음 파라미터를 채우고 추가한다. + + --client-ca-file=/yourdirectory/ca.crt + --tls-cert-file=/yourdirectory/server.crt + --tls-private-key-file=/yourdirectory/server.key + +### openssl + +**openssl** 은 클러스터 인증서를 수동으로 생성할 수 있다. + +1. ca.key를 2048bit로 생성한다. + + openssl genrsa -out ca.key 2048 +1. ca.key에 따라 ca.crt를 생성한다(인증서 유효 기간을 사용하려면 -days를 사용한다). + + openssl req -x509 -new -nodes -key ca.key -subj "/CN=${MASTER_IP}" -days 10000 -out ca.crt +1. server.key를 2048bit로 생성한다. + + openssl genrsa -out server.key 2048 +1. 인증서 서명 요청(Certificate Signing Request (CSR))을 생성하기 위한 설정 파일을 생성한다. + 파일에 저장하기 전에 꺾쇠 괄호(예: ``)로 + 표시된 값을 실제 값으로 대체한다(예: `csr.conf`). + `MASTER_CLUSTER_IP` 의 값은 이전 하위 섹션에서 + 설명한 대로 API 서버의 서비스 클러스터 IP이다. + 또한, 아래 샘플에서는 `cluster.local` 을 기본 DNS 도메인 + 이름으로 사용하고 있다고 가정한다. + + [ req ] + default_bits = 2048 + prompt = no + default_md = sha256 + req_extensions = req_ext + distinguished_name = dn + + [ dn ] + C = <국가(country)> + ST = <도(state)> + L = <시(city)> + O = <조직(organization)> + OU = <조직 단위(organization unit)> + CN = + + [ req_ext ] + subjectAltName = @alt_names + + [ alt_names ] + DNS.1 = kubernetes + DNS.2 = kubernetes.default + DNS.3 = kubernetes.default.svc + DNS.4 = kubernetes.default.svc.cluster + DNS.5 = kubernetes.default.svc.cluster.local + IP.1 = + IP.2 = + + [ v3_ext ] + authorityKeyIdentifier=keyid,issuer:always + basicConstraints=CA:FALSE + keyUsage=keyEncipherment,dataEncipherment + extendedKeyUsage=serverAuth,clientAuth + subjectAltName=@alt_names +1. 설정 파일을 기반으로 인증서 서명 요청을 생성한다. + + openssl req -new -key server.key -out server.csr -config csr.conf +1. ca.key, ca.crt 그리고 server.csr을 사용해서 서버 인증서를 생성한다. + + openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key \ + -CAcreateserial -out server.crt -days 10000 \ + -extensions v3_ext -extfile csr.conf +1. 인증서를 본다. + + openssl x509 -noout -text -in ./server.crt + +마지막으로, API 서버 시작 파라미터에 동일한 파라미터를 추가한다. + +### cfssl + +**cfssl** 은 인증서 생성을 위한 또 다른 도구이다. + +1. 아래에 표시된 대로 커맨드 라인 도구를 다운로드하여 압축을 풀고 준비한다. + 사용 중인 하드웨어 아키텍처 및 cfssl 버전에 따라 샘플 + 명령을 조정해야 할 수도 있다. + + curl -L https://github.com/cloudflare/cfssl/releases/download/v1.5.0/cfssl_1.5.0_linux_amd64 -o cfssl + chmod +x cfssl + curl -L https://github.com/cloudflare/cfssl/releases/download/v1.5.0/cfssljson_1.5.0_linux_amd64 -o cfssljson + chmod +x cfssljson + curl -L https://github.com/cloudflare/cfssl/releases/download/v1.5.0/cfssl-certinfo_1.5.0_linux_amd64 -o cfssl-certinfo + chmod +x cfssl-certinfo +1. 아티팩트(artifact)를 보유할 디렉터리를 생성하고 cfssl을 초기화한다. + + mkdir cert + cd cert + ../cfssl print-defaults config > config.json + ../cfssl print-defaults csr > csr.json +1. CA 파일을 생성하기 위한 JSON 설정 파일을 `ca-config.json` 예시와 같이 생성한다. + + { + "signing": { + "default": { + "expiry": "8760h" + }, + "profiles": { + "kubernetes": { + "usages": [ + "signing", + "key encipherment", + "server auth", + "client auth" + ], + "expiry": "8760h" + } + } + } + } +1. CA 인증서 서명 요청(CSR)을 위한 JSON 설정 파일을 + `ca-csr.json` 예시와 같이 생성한다. 꺾쇠 괄호로 표시된 + 값을 사용하려는 실제 값으로 변경한다. + + { + "CN": "kubernetes", + "key": { + "algo": "rsa", + "size": 2048 + }, + "names":[{ + "C": "<국가(country)>", + "ST": "<도(state)>", + "L": "<시(city)>", + "O": "<조직(organization)>", + "OU": "<조직 단위(organization unit)>" + }] + } +1. CA 키(`ca-key.pem`)와 인증서(`ca.pem`)을 생성한다. + + ../cfssl gencert -initca ca-csr.json | ../cfssljson -bare ca +1. API 서버의 키와 인증서를 생성하기 위한 JSON 구성파일을 + `server-csr.json` 예시와 같이 생성한다. 꺾쇠 괄호 안의 값을 + 사용하려는 실제 값으로 변경한다. `MASTER_CLUSTER_IP` 는 + 이전 하위 섹션에서 설명한 API 서버의 클러스터 IP이다. + 아래 샘플은 기본 DNS 도메인 이름으로 `cluster.local` 을 + 사용한다고 가정한다. + + { + "CN": "kubernetes", + "hosts": [ + "127.0.0.1", + "", + "", + "kubernetes", + "kubernetes.default", + "kubernetes.default.svc", + "kubernetes.default.svc.cluster", + "kubernetes.default.svc.cluster.local" + ], + "key": { + "algo": "rsa", + "size": 2048 + }, + "names": [{ + "C": "<국가(country)>", + "ST": "<도(state)>", + "L": "<시(city)>", + "O": "<조직(organization)>", + "OU": "<조직 단위(organization unit)>" + }] + } +1. API 서버 키와 인증서를 생성하면, 기본적으로 + `server-key.pem` 과 `server.pem` 파일에 각각 저장된다. + + ../cfssl gencert -ca=ca.pem -ca-key=ca-key.pem \ + --config=ca-config.json -profile=kubernetes \ + server-csr.json | ../cfssljson -bare server + + +## 자체 서명된 CA 인증서의 배포 + +클라이언트 노드는 자체 서명된 CA 인증서를 유효한 것으로 인식하지 않을 수 있다. +비-프로덕션 디플로이먼트 또는 회사 방화벽 뒤에서 실행되는 +디플로이먼트의 경우, 자체 서명된 CA 인증서를 모든 클라이언트에 +배포하고 유효한 인증서의 로컬 목록을 새로 고칠 수 있다. + +각 클라이언트에서, 다음 작업을 수행한다. + +```bash +sudo cp ca.crt /usr/local/share/ca-certificates/kubernetes.crt +sudo update-ca-certificates +``` + +``` +Updating certificates in /etc/ssl/certs... +1 added, 0 removed; done. +Running hooks in /etc/ca-certificates/update.d.... +done. +``` + +## 인증서 API + +`certificates.k8s.io` API를 사용해서 +[여기](/docs/tasks/tls/managing-tls-in-a-cluster)에 +설명된 대로 인증에 사용할 x509 인증서를 프로비전 할 수 있다. From cf19c5d74b5d86d0630915c5d927fe5329c065be Mon Sep 17 00:00:00 2001 From: CKchen0726 Date: Tue, 9 Mar 2021 12:30:35 +0800 Subject: [PATCH 144/788] modify some links in Kustomize Feature List --- .../tasks/manage-kubernetes-objects/kustomization.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/content/en/docs/tasks/manage-kubernetes-objects/kustomization.md b/content/en/docs/tasks/manage-kubernetes-objects/kustomization.md index 7c59052ffa..eb6d638603 100644 --- a/content/en/docs/tasks/manage-kubernetes-objects/kustomization.md +++ b/content/en/docs/tasks/manage-kubernetes-objects/kustomization.md @@ -815,14 +815,14 @@ deployment.apps "dev-my-nginx" deleted | commonLabels | map[string]string | labels to add to all resources and selectors | | commonAnnotations | map[string]string | annotations to add to all resources | | resources | []string | each entry in this list must resolve to an existing resource configuration file | -| configmapGenerator | [][ConfigMapArgs](https://github.com/kubernetes-sigs/kustomize/blob/release-kustomize-v4.0/api/types/kustomization.go#L99) | Each entry in this list generates a ConfigMap | -| secretGenerator | [][SecretArgs](https://github.com/kubernetes-sigs/kustomize/blob/release-kustomize-v4.0/api/types/kustomization.go#L106) | Each entry in this list generates a Secret | -| generatorOptions | [GeneratorOptions](https://github.com/kubernetes-sigs/kustomize/blob/release-kustomize-v4.0/api/types/kustomization.go#L109) | Modify behaviors of all ConfigMap and Secret generator | +| configMapGenerator | [][ConfigMapArgs](https://github.com/kubernetes-sigs/kustomize/blob/master/api/types/configmapargs.go#L7) | Each entry in this list generates a ConfigMap | +| secretGenerator | [][SecretArgs](https://github.com/kubernetes-sigs/kustomize/blob/master/api/types/secretargs.go#L7) | Each entry in this list generates a Secret | +| generatorOptions | [GeneratorOptions](https://github.com/kubernetes-sigs/kustomize/blob/master/api/types/generatoroptions.go#L7) | Modify behaviors of all ConfigMap and Secret generator | | bases | []string | Each entry in this list should resolve to a directory containing a kustomization.yaml file | | patchesStrategicMerge | []string | Each entry in this list should resolve a strategic merge patch of a Kubernetes object | -| patchesJson6902 | [][Json6902](https://github.com/kubernetes-sigs/kustomize/blob/release-kustomize-v4.0/api/types/patchjson6902.go#L8) | Each entry in this list should resolve to a Kubernetes object and a Json Patch | -| vars | [][Var](https://github.com/kubernetes-sigs/kustomize/blob/master/api/types/var.go#L31) | Each entry is to capture text from one resource's field | -| images | [][Image](https://github.com/kubernetes-sigs/kustomize/tree/master/api/types/image.go#L23) | Each entry is to modify the name, tags and/or digest for one image without creating patches | +| patchesJson6902 | [][Patch](https://github.com/kubernetes-sigs/kustomize/blob/master/api/types/patch.go#L10) | Each entry in this list should resolve to a Kubernetes object and a Json Patch | +| vars | [][Var](https://github.com/kubernetes-sigs/kustomize/blob/master/api/types/var.go#L19) | Each entry is to capture text from one resource's field | +| images | [][Image](https://github.com/kubernetes-sigs/kustomize/blob/master/api/types/image.go#L8) | Each entry is to modify the name, tags and/or digest for one image without creating patches | | configurations | []string | Each entry in this list should resolve to a file containing [Kustomize transformer configurations](https://github.com/kubernetes-sigs/kustomize/tree/master/examples/transformerconfigs) | | crds | []string | Each entry in this list should resolve to an OpenAPI definition file for Kubernetes types | From b4c11fecce7c0ed2463a127b19722276d86355ca Mon Sep 17 00:00:00 2001 From: Lapi <35304342+dragoneena12@users.noreply.github.com> Date: Tue, 9 Mar 2021 13:48:44 +0900 Subject: [PATCH 145/788] Update content/ja/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md Co-authored-by: Kei Ak --- .../run-application/horizontal-pod-autoscale-walkthrough.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/ja/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md b/content/ja/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md index 7cf4718f5c..68c75cfab2 100644 --- a/content/ja/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md +++ b/content/ja/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md @@ -13,7 +13,7 @@ Horizontal Pod Autoscalerは、Deployment、ReplicaSetまたはStatefulSetとい ## {{% heading "前提条件" %}} この例ではバージョン1.2以上の動作するKubernetesクラスターおよびkubectlが必要です。 -[Metrics server](https://github.com/kubernetes-sigs/metrics-server)によるモニタリングが[Metrics API](https://github.com/kubernetes/metrics)を通じてクラスター内にデプロイされている必要があります。 +[Metrics API](https://github.com/kubernetes/metrics)を介してメトリクスを提供するために、[Metrics server](https://github.com/kubernetes-sigs/metrics-server)によるモニタリングがクラスター内にデプロイされている必要があります。 Horizontal Pod Autoscalerはメトリクスを収集するためにこのAPIを利用します。metrics-serverをデプロイする方法を知りたい場合は[metrics-server ドキュメント](https://github.com/kubernetes-sigs/metrics-server#deployment)をご覧ください。 Horizontal Pod Autoscalerで複数のリソースメトリクスを利用するためには、バージョン1.6以上のKubernetesクラスターおよびkubectlが必要です。カスタムメトリクスを使えるようにするためには、あなたのクラスターがカスタムメトリクスAPIを提供するAPIサーバーと通信できる必要があります。 @@ -400,4 +400,4 @@ kubectl create -f https://k8s.io/examples/application/hpa/php-apache.yaml ``` horizontalpodautoscaler.autoscaling/php-apache created -``` \ No newline at end of file +``` From 94eca67736bf018052e9a9de1e01b3a17d0ce2e6 Mon Sep 17 00:00:00 2001 From: Lapi <35304342+dragoneena12@users.noreply.github.com> Date: Tue, 9 Mar 2021 13:49:43 +0900 Subject: [PATCH 146/788] Update content/ja/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md Co-authored-by: Kei Ak --- .../run-application/horizontal-pod-autoscale-walkthrough.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/ja/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md b/content/ja/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md index 68c75cfab2..445742e1d6 100644 --- a/content/ja/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md +++ b/content/ja/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md @@ -326,7 +326,7 @@ object: ### Kubernetesオブジェクトと関係ないメトリクスに基づいたオートスケーリング -Kubernetes上で動いているアプリケーションを、Kubernetes Namespaceと直接的な関係がないサービスを説明するメトリクスのようなKubernetesクラスター内のオブジェクトと明確な関係が無いメトリクスを基にオートスケールする必要があるかもしれません。Kubernetes 1.10以降では、このようなユースケースを*外部メトリクス*によって解決できます。 +Kubernetes上で動いているアプリケーションを、Kubernetes Namespaceと直接的な関係がないサービスを説明するメトリクスのような、Kubernetesクラスター内のオブジェクトと明確な関係が無いメトリクスを基にオートスケールする必要があるかもしれません。Kubernetes 1.10以降では、このようなユースケースを*外部メトリクス*によって解決できます。 外部メトリクスを使うにはあなたの監視システムについての知識が必要となります。この設定はカスタムメトリクスを使うときのものに似ています。外部メトリクスを使うとあなたの監視システムのあらゆる利用可能なメトリクスに基づいてクラスターをオートスケールできるようになります。上記のように`metric`ブロックで`name`と`selector`を設定し、`Object`のかわりに`External`メトリクスタイプを使います。 もし複数の時系列が`metricSelector`により一致した場合は、それらの値の合計がHorizontalPodAutoscalerに使われます。 From 52315175f12fa1bcbafeee33b9c7667dc4d327bd Mon Sep 17 00:00:00 2001 From: s-kawamura-w664 Date: Thu, 4 Mar 2021 07:53:35 +0000 Subject: [PATCH 147/788] delete some dirty code from several files in ja --- .../concepts/cluster-administration/manage-deployment.md | 2 +- content/ja/docs/concepts/overview/what-is-kubernetes.md | 2 +- content/ja/docs/concepts/policy/resource-quotas.md | 2 +- content/ja/docs/concepts/security/overview.md | 2 +- .../configure-access-multiple-clusters.md | 8 ++++---- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/content/ja/docs/concepts/cluster-administration/manage-deployment.md b/content/ja/docs/concepts/cluster-administration/manage-deployment.md index 90f96547d5..cb9c7c0fc3 100644 --- a/content/ja/docs/concepts/cluster-administration/manage-deployment.md +++ b/content/ja/docs/concepts/cluster-administration/manage-deployment.md @@ -237,7 +237,7 @@ guestbook-redis-slave-qgazl 1/1 Running 0 3m image: gb-frontend:v3 ``` -そして2つの異なるPodのセットを上書きしないようにするため、`track`ラベルに異なる値を持つ(例: `canary`)ようなguestbookフロントエンドの新しいリリースを作成できます。 +そして2つの異なるPodのセットを上書きしないようにするため、`track`ラベルに異なる値を持つ(例: `canary`)ようなguestbookフロントエンドの新しいリリースを作成できます。 ```yaml name: frontend-canary diff --git a/content/ja/docs/concepts/overview/what-is-kubernetes.md b/content/ja/docs/concepts/overview/what-is-kubernetes.md index 3ca8fa78fe..dab17c9b1b 100644 --- a/content/ja/docs/concepts/overview/what-is-kubernetes.md +++ b/content/ja/docs/concepts/overview/what-is-kubernetes.md @@ -17,7 +17,7 @@ card: Kubernetesは、宣言的な構成管理と自動化を促進し、コンテナ化されたワークロードやサービスを管理するための、ポータブルで拡張性のあるオープンソースのプラットフォームです。Kubernetesは巨大で急速に成長しているエコシステムを備えており、それらのサービス、サポート、ツールは幅広い形で利用可能です。 -Kubernetesの名称は、ギリシャ語に由来し、操舵手やパイロットを意味しています。Googleは2014年にKubernetesプロジェクトをオープンソース化しました。Kubernetesは、本番環境で大規模なワークロードを稼働させた[Googleの15年以上の経験](/blog/2015/04/borg-predecessor-to-kubernetes/)と、コミュニティからの最高のアイディアや実践を組み合わせています。 +Kubernetesの名称は、ギリシャ語に由来し、操舵手やパイロットを意味しています。Googleは2014年にKubernetesプロジェクトをオープンソース化しました。Kubernetesは、本番環境で大規模なワークロードを稼働させた[Googleの15年以上の経験](/blog/2015/04/borg-predecessor-to-kubernetes/)と、コミュニティからの最高のアイディアや実践を組み合わせています。 ## 過去を振り返ってみると diff --git a/content/ja/docs/concepts/policy/resource-quotas.md b/content/ja/docs/concepts/policy/resource-quotas.md index e7368a8f94..7b00056fcf 100644 --- a/content/ja/docs/concepts/policy/resource-quotas.md +++ b/content/ja/docs/concepts/policy/resource-quotas.md @@ -22,7 +22,7 @@ weight: 10 - 異なる名前空間で異なるチームが存在するとき。現時点ではこれは自主的なものですが、将来的にはACLsを介してリソースクォータの設定を強制するように計画されています。 - 管理者は各名前空間で1つの`ResourceQuota`を作成します。 - ユーザーが名前空間内でリソース(Pod、Serviceなど)を作成し、クォータシステムが`ResourceQuota`によって定義されたハードリソースリミットを超えないことを保証するために、リソースの使用量をトラッキングします。 -- リソースの作成や更新がクォータの制約に違反しているとき、そのリクエストはHTTPステータスコード`403 FORBIDDEN`で失敗し、違反した制約を説明するメッセージが表示されます。 +- リソースの作成や更新がクォータの制約に違反しているとき、そのリクエストはHTTPステータスコード`403 FORBIDDEN`で失敗し、違反した制約を説明するメッセージが表示されます。 - `cpu`や`memory`といったコンピューターリソースに対するクォータが名前空間内で有効になっているとき、ユーザーはそれらの値に対する`requests`や`limits`を設定する必要があります。設定しないとクォータシステムがPodの作成を拒否します。 ヒント: コンピュートリソースの要求を設定しないPodに対してデフォルト値を強制するために、`LimitRanger`アドミッションコントローラーを使用してください。この問題を解決する例は[walkthrough](/docs/tasks/administer-cluster/manage-resources/quota-memory-cpu-namespace/)で参照できます。 `ResourceQuota`のオブジェクト名は、有効な[DNSサブドメイン名](/ja/docs/concepts/overview/working-with-objects/names#dns-subdomain-names)である必要があります. diff --git a/content/ja/docs/concepts/security/overview.md b/content/ja/docs/concepts/security/overview.md index b50a4ea1a5..0157b28f78 100644 --- a/content/ja/docs/concepts/security/overview.md +++ b/content/ja/docs/concepts/security/overview.md @@ -77,7 +77,7 @@ Kubernetesを保護する為には2つの懸念事項があります。 ### クラスター内のコンポーネント(アプリケーション) {#cluster-applications} -アプリケーションを対象にした攻撃に応じて、セキュリティの特定側面に焦点をあてたい場合があります。例:他のリソースとの連携で重要なサービス(サービスA)と、リソース枯渇攻撃に対して脆弱な別のワークロード(サービスB)が実行されている場合、サービスBのリソースを制限していないとサービスAが危険にさらされるリスクが高くなります。次の表はセキュリティの懸念事項とKubernetesで実行されるワークロードを保護するための推奨事項を示しています。 +アプリケーションを対象にした攻撃に応じて、セキュリティの特定側面に焦点をあてたい場合があります。例:他のリソースとの連携で重要なサービス(サービスA)と、リソース枯渇攻撃に対して脆弱な別のワークロード(サービスB)が実行されている場合、サービスBのリソースを制限していないとサービスAが危険にさらされるリスクが高くなります。次の表はセキュリティの懸念事項とKubernetesで実行されるワークロードを保護するための推奨事項を示しています。 ワークロードセキュリティに関する懸念事項 | 推奨事項 | diff --git a/content/ja/docs/tasks/access-application-cluster/configure-access-multiple-clusters.md b/content/ja/docs/tasks/access-application-cluster/configure-access-multiple-clusters.md index b2ebc16d18..d5f6b72296 100644 --- a/content/ja/docs/tasks/access-application-cluster/configure-access-multiple-clusters.md +++ b/content/ja/docs/tasks/access-application-cluster/configure-access-multiple-clusters.md @@ -31,9 +31,9 @@ card: ## クラスター、ユーザー、コンテキストを設定する -例として、開発用のクラスターが一つ、実験用のクラスターが一つ、計二つのクラスターが存在する場合を考えます。`development`と呼ばれる開発用のクラスター内では、フロントエンドの開発者は`frontend`というnamespace内で、ストレージの開発者は`storage`というnamespace内で作業をします。`scratch`と呼ばれる実験用のクラスター内では、開発者はデフォルトのnamespaceで作業をするか、状況に応じて追加のnamespaceを作成します。開発用のクラスターは証明書を通しての認証を必要とします。実験用のクラスターはユーザーネームとパスワードを通しての認証を必要とします。 +例として、開発用のクラスターが一つ、実験用のクラスターが一つ、計二つのクラスターが存在する場合を考えます。`development`と呼ばれる開発用のクラスター内では、フロントエンドの開発者は`frontend`というnamespace内で、ストレージの開発者は`storage`というnamespace内で作業をします。`scratch`と呼ばれる実験用のクラスター内では、開発者はデフォルトのnamespaceで作業をするか、状況に応じて追加のnamespaceを作成します。開発用のクラスターは証明書を通しての認証を必要とします。実験用のクラスターはユーザーネームとパスワードを通しての認証を必要とします。 -`config-exercise`というディレクトリを作成してください。`config-exercise`ディレクトリ内に、以下を含む`config-demo`というファイルを作成してください: +`config-exercise`というディレクトリを作成してください。`config-exercise`ディレクトリ内に、以下を含む`config-demo`というファイルを作成してください: ```shell apiVersion: v1 @@ -61,7 +61,7 @@ contexts: 設定ファイルには、クラスター、ユーザー、コンテキストの情報が含まれています。上記の`config-demo`設定ファイルには、二つのクラスター、二人のユーザー、三つのコンテキストの情報が含まれています。 -`config-exercise`ディレクトリに移動してください。クラスター情報を設定ファイルに追加するために、以下のコマンドを実行してください: +`config-exercise`ディレクトリに移動してください。クラスター情報を設定ファイルに追加するために、以下のコマンドを実行してください: ```shell kubectl config --kubeconfig=config-demo set-cluster development --server=https://1.2.3.4 --certificate-authority=fake-ca-file @@ -89,7 +89,7 @@ kubectl config --kubeconfig=config-demo set-context dev-storage --cluster=develo kubectl config --kubeconfig=config-demo set-context exp-scratch --cluster=scratch --namespace=default --user=experimenter ``` -追加した情報を確認するために、`config-demo`ファイルを開いてください。`config-demo`ファイルを開く代わりに、`config view`のコマンドを使うこともできます。 +追加した情報を確認するために、`config-demo`ファイルを開いてください。`config-demo`ファイルを開く代わりに、`config view`のコマンドを使うこともできます。 ```shell kubectl config --kubeconfig=config-demo view From e317531fad108a8e0444f5df96b3d2a87d9710a8 Mon Sep 17 00:00:00 2001 From: Kappie37 <44774200+Kappie37@users.noreply.github.com> Date: Tue, 9 Mar 2021 09:57:28 +0100 Subject: [PATCH 148/788] Update content/en/docs/tasks/administer-cluster/access-cluster-api.md remove unnecessary 'https://kubernetes.io' from a link Co-authored-by: Qiming Teng --- content/en/docs/tasks/administer-cluster/access-cluster-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/tasks/administer-cluster/access-cluster-api.md b/content/en/docs/tasks/administer-cluster/access-cluster-api.md index bc9bbd101d..0275cadabf 100644 --- a/content/en/docs/tasks/administer-cluster/access-cluster-api.md +++ b/content/en/docs/tasks/administer-cluster/access-cluster-api.md @@ -192,7 +192,7 @@ func main() { } ``` -If the application is deployed as a Pod in the cluster, see [Accessing the API from within a Pod](https://kubernetes.io/docs/tasks/access-application-cluster/access-cluster/#accessing-the-api-from-a-pod). +If the application is deployed as a Pod in the cluster, see [Accessing the API from within a Pod](/docs/tasks/access-application-cluster/access-cluster/#accessing-the-api-from-a-pod). #### Python client From f8e39f247768137cf07e2286f7f7df1f9dd1c21c Mon Sep 17 00:00:00 2001 From: Sebastian Florek Date: Mon, 22 Feb 2021 15:22:12 +0100 Subject: [PATCH 149/788] Add the blog post about the Kubernetes Dashboard evolution" --- .../along-the-way-ui.png | Bin 0 -> 193956 bytes .../current-ui.png | Bin 0 -> 656592 bytes .../first-ui.png | Bin 0 -> 60664 bytes .../index.md | 69 ++++++++++++++++++ 4 files changed, 69 insertions(+) create mode 100644 content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/along-the-way-ui.png create mode 100644 content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/current-ui.png create mode 100644 content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/first-ui.png create mode 100644 content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/index.md diff --git a/content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/along-the-way-ui.png b/content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/along-the-way-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..c105d47ae42f4addd5d49bfcda07d96bf86fa6e2 GIT binary patch literal 193956 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%0ATYG>EH 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

    AyRhMkX;n-16gKk_-N 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 literal 0 HcmV?d00001 diff --git a/content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/index.md b/content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/index.md new file mode 100644 index 0000000000..62bebb89b5 --- /dev/null +++ b/content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/index.md @@ -0,0 +1,69 @@ +--- +layout: blog +title: "The Evolution of Kubernetes Dashboard" +date: 2021-03-09 +slug: the-evolution-of-kubernetes-dashboard +--- + +Authors: Marcin Maciaszczyk, Kubermatic & Sebastian Florek, Kubermatic + +In October 2020, the Kubernetes Dashboard officially turned five. As main project maintainers, we can barely believe that so much time has passed since our very first commits to the project. However, looking back with a bit of nostalgia, we realize that quite a lot has happened since then. Now it’s due time to celebrate “our baby” with a short recap. + +## How It All Began + +The initial idea behind the Kubernetes Dashboard project was to provide a web interface for Kubernetes. We wanted to reflect the kubectl functionality through an intuitive web UI. The main benefit from using the UI is to be able to quickly see things that do not work as expected (monitoring and troubleshooting). Also, the Kubernetes Dashboard is a great starting point for users that are new to the Kubernetes ecosystem. + +The very [first commit](https://github.com/kubernetes/dashboard/commit/5861187fa807ac1cc2d9b2ac786afeced065076c) to the Kubernetes Dashboard was made by Filip Grządkowski from Google on 16th October 2015 – just a few months from the initial commit to the Kubernetes repository. Our initial commits go back to November 2015 ([Sebastian committed on 16 November 2015](https://github.com/kubernetes/dashboard/commit/09e65b6bb08c49b926253de3621a73da05e400fd); [Marcin committed on 23 November 2015](https://github.com/kubernetes/dashboard/commit/1da4b1c25ef040818072c734f71333f9b4733f55)). Since that time, we’ve become regular contributors to the project. For the next two years, we worked closely with the Googlers, eventually becoming main project maintainers ourselves. + +{{< imgproc first-ui Fit "1000x900" >}} +The First Version of the User Interface +{{< /imgproc >}} + +{{< imgproc along-the-way-ui Fit "1000x900" >}} +Prototype of the New User Interface +{{< /imgproc >}} + +{{< imgproc current-ui Fit "1000x700" >}} +The Current User Interface +{{< /imgproc >}} + +As you can see, the initial look and feel of the project were completely different from the current one. We have changed the design multiple times. The same has happened with the code itself. + +## Growing Up - The Big Migration + +At [the beginning of 2018](https://github.com/kubernetes/dashboard/pull/2727), we reached a point where AngularJS was getting closer to the end of its life, while the new Angular versions were published quite often. A lot of the libraries and the modules that we were using were following the trend. That forced us to spend a lot of the time rewriting the frontend part of the project to make it work with newer technologies. + +The migration came with many benefits like being able to refactor a lot of the code, introduce design patterns, reduce code complexity, and benefit from the new modules. However, you can imagine that the scale of the migration was huge. Luckily, there were a number of contributions from the community helping us with the resource support, new Kubernetes version support, i18n, and much more. After many long days and nights, we finally released the [first beta version](https://github.com/kubernetes/dashboard/releases/tag/v2.0.0-beta1) in July 2019, followed by the [2.0 release](https://github.com/kubernetes/dashboard/releases/tag/v2.0.0) in April 2020 — our baby had grown up. + +## Where Are We Standing in 2021? + +Due to limited resources, unfortunately, we were not able to offer extensive support for many different Kubernetes versions. So, we’ve decided to always try and support the latest Kubernetes version available at the time of the Kubernetes Dashboard release. The latest release, [Dashboard v2.2.0](https://github.com/kubernetes/dashboard/releases/tag/v2.2.0) provides support for Kubernetes v1.20. + +On top of that, we put in a great deal of effort into [improving resource support](https://github.com/kubernetes/dashboard/issues/5232). Meanwhile, we do offer support for most of the Kubernetes resources. Also, the Kubernetes Dashboard supports multiple languages: English, German, French, Japanese, Korean, Chinese (Traditional, Simplified, Traditional Hong Kong). Persian and Russian localizations are currently in progress. Moreover, we are working on the support for 3rd party themes and the design of the app in general. As you can see, quite a lot of things are going on. + +Luckily, we do have regular contributors with domain knowledge who are taking care of the project, updating the Helm charts, translations, Go modules, and more. But as always, there could be many more hands on deck. So if you are thinking about contributing to Kubernetes, keep us in mind ;) + +## What’s Next + +The Kubernetes Dashboard has been growing and prospering for more than 5 years now. It provides the community with an intuitive Web UI, thereby decreasing the complexity of Kubernetes and increasing its accessibility to new community members. We are proud of what the project has achieved so far, but this is by far not the end. These are our priorities for the future: + +* Keep providing support for the new Kubernetes versions +* Keep improving the support for the existing resources +* Keep working on auth system improvements +* [Rewrite the API to use gRPC and shared informers](https://github.com/kubernetes/dashboard/pull/5449): This will allow us to improve the performance of the application but, most importantly, to support live updates coming from the Kubernetes project. It is one of the most requested features from the community. +* Split the application into two containers, one with the UI and the second with the API running inside. + +## The Kubernetes Dashboard in Numbers + +* Initial commit made on October 16, 2015 +* Over 100 million pulls from Dockerhub since the v2 release +* 8 supported languages and the next 2 in progress +* Over 3360 closed PRs +* Over 2260 closed issues +* 100% coverage of the supported core Kubernetes resources +* Over 9000 stars on GitHub +* Over 237 000 lines of code + +## Join Us + +As mentioned earlier, we are currently looking for more people to help us further develop and grow the project. We are open to contributions in multiple areas, i.e., [issues with help wanted label](https://github.com/kubernetes/dashboard/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22). Please feel free to reach out via GitHub or the #sig-ui channel in the [Kubernetes Slack](https://slack.k8s.io/). From 466b4bd8060291a2d1758de7ca30d29b4620a1a7 Mon Sep 17 00:00:00 2001 From: wasimj Date: Tue, 9 Mar 2021 14:17:05 +0000 Subject: [PATCH 150/788] Update server-side-apply.md Spelling mistake --- content/en/docs/reference/using-api/server-side-apply.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/reference/using-api/server-side-apply.md b/content/en/docs/reference/using-api/server-side-apply.md index d91497f8f2..0ef1c7a4c1 100644 --- a/content/en/docs/reference/using-api/server-side-apply.md +++ b/content/en/docs/reference/using-api/server-side-apply.md @@ -46,7 +46,7 @@ Server side apply is meant both as a replacement for the original `kubectl apply` and as a simpler mechanism for controllers to enact their changes. If you have Server Side Apply enabled, the control plane tracks managed fields -for all newlly created objects. +for all newly created objects. ## Field Management From 2dd9b3d4fdc44dabb868080b24473c9376978e0d Mon Sep 17 00:00:00 2001 From: Ricardo Pchevuzinske Katz Date: Tue, 9 Mar 2021 16:09:08 -0300 Subject: [PATCH 151/788] Add also Jailton to the pt reviewers --- OWNERS_ALIASES | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OWNERS_ALIASES b/OWNERS_ALIASES index 4883589bfa..2b5c02adb4 100644 --- a/OWNERS_ALIASES +++ b/OWNERS_ALIASES @@ -175,6 +175,7 @@ aliases: # zhangxiaoyu-zidif sig-docs-pt-owners: # Admins for Portuguese content - femrtnz + - jailton - jcjesus - devlware - jhonmike @@ -182,6 +183,7 @@ aliases: - yagonobre sig-docs-pt-reviews: # PR reviews for Portugese content - femrtnz + - jailton - jcjesus - devlware - jhonmike From fbff88f16a049484c5db9fccb6166bb2cd1e8296 Mon Sep 17 00:00:00 2001 From: Paulo Simoes Date: Tue, 9 Mar 2021 17:03:04 -0300 Subject: [PATCH 152/788] Add Concepts/Overview K8s and Components and some glossary itens in pt language (#26710) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add Concepts/Overview for Kubernetes and Components, and glossary itens in pt Modify Glossary/Control-Plane definition in pt Changes to be committed: new file: content/pt/docs/concepts/overview/_index.md new file: content/pt/docs/concepts/overview/components.md new file: content/pt/docs/concepts/overview/what-is-kubernetes.md new file: content/pt/docs/reference/glossary/cloud-controller-manager.md new file: content/pt/docs/reference/glossary/cncf.md new file: content/pt/docs/reference/glossary/container-runtime.md modified: content/pt/docs/reference/glossary/control-plane.md new file: content/pt/docs/reference/glossary/etcd.md new file: content/pt/docs/reference/glossary/kube-apiserver.md new file: content/pt/docs/reference/glossary/kube-controller-manager.md new file: content/pt/docs/reference/glossary/kube-proxy.md new file: content/pt/docs/reference/glossary/kube-scheduler.md modified: package-lock.json * Changes to be committed: modified: package-lock.json Untracked files: content/pt/docs/concepts/overview/kubernetes-api.md * Changes to be committed: modified: package-lock.json Untracked files: content/pt/docs/concepts/overview/kubernetes-api.md * --- reviewers: - lavalamp - rikatz title: Componentes do Kubernetes content_type: concept description: > Um cluster Kubernetes consiste de componentes que representam a camada de gerenciamento, e um conjunto de máquinas chamadas nós. weight: 20 card: name: concepts weight: 20 --- Ao implantar o Kubernetes, você obtém um cluster. {{< glossary_definition term_id="cluster" length="all" prepend="Um cluster Kubernetes consiste em">}} Este documento descreve os vários componentes que você precisa ter para implantar um cluster Kubernetes completo e funcional. Esse é o diagrama de um cluster Kubernetes com todos os componentes interligados. ![Componentes do Kubernetes](/images/docs/components-of-kubernetes.svg) ## Componentes da camada de gerenciamento Os componentes da camada de gerenciamento tomam decisões globais sobre o cluster (por exemplo, agendamento de _pods_), bem como detectam e respondem aos eventos do cluster (por exemplo, iniciando um novo _{{< glossary_tooltip text="pod" term_id="pod" >}}_ quando o campo `replicas` de um _Deployment_ não está atendido). Os componentes da camada de gerenciamento podem ser executados em qualquer máquina do cluster. Contudo, para simplificar, os _scripts_ de configuração normalmente iniciam todos os componentes da camada de gerenciamento na mesma máquina, e não executa contêineres de usuário nesta máquina. Veja [Construindo clusters de alta disponibilidade](/docs/admin/high-availability/) para um exemplo de configuração de múltiplas VMs para camada de gerenciamento (_multi-main-VM_). ### kube-apiserver {{< glossary_definition term_id="kube-apiserver" length="all" >}} ### etcd {{< glossary_definition term_id="etcd" length="all" >}} ### kube-scheduler {{< glossary_definition term_id="kube-scheduler" length="all" >}} ### kube-controller-manager {{< glossary_definition term_id="kube-controller-manager" length="all" >}} Alguns tipos desses controladores são: * Controlador de nó: responsável por perceber e responder quando os nós caem. * Controlador de _Job_: Observa os objetos _Job_ que representam tarefas únicas e, em seguida, cria _pods_ para executar essas tarefas até a conclusão. * Controlador de _endpoints_: preenche o objeto _Endpoints_ (ou seja, junta os Serviços e os _pods_). * Controladores de conta de serviço e de _token_: crie contas padrão e _tokens_ de acesso de API para novos _namespaces_. ### cloud-controller-manager {{< glossary_definition term_id="cloud-controller-manager" length="short" >}} O cloud-controller-manager executa apenas controladores que são específicos para seu provedor de nuvem. Se você estiver executando o Kubernetes em suas próprias instalações ou em um ambiente de aprendizagem dentro de seu próprio PC, o cluster não possui um gerenciador de controlador de nuvem. Tal como acontece com o kube-controller-manager, o cloud-controller-manager combina vários ciclos de controle logicamente independentes em um binário único que você executa como um processo único. Você pode escalar horizontalmente (exectuar mais de uma cópia) para melhorar o desempenho ou para auxiliar na tolerância a falhas. Os seguintes controladores podem ter dependências de provedor de nuvem: * Controlador de nó: para verificar junto ao provedor de nuvem para determinar se um nó foi excluído da nuvem após parar de responder. * Controlador de rota: para configurar rotas na infraestrutura de nuvem subjacente. * Controlador de serviço: Para criar, atualizar e excluir balanceadores de carga do provedor de nuvem. ## Node Components Os componentes de nó são executados em todos os nós, mantendo os _pods_ em execução e fornecendo o ambiente de execução do Kubernetes. ### kubelet {{< glossary_definition term_id="kubelet" length="all" >}} ### kube-proxy {{< glossary_definition term_id="kube-proxy" length="all" >}} ### Container runtime {{< glossary_definition term_id="container-runtime" length="all" >}} ## Addons Complementos (_addons_) usam recursos do Kubernetes ({{< glossary_tooltip term_id="daemonset" >}}, {{< glossary_tooltip term_id="deployment" >}}, etc) para implementar funcionalidades do cluster. Como fornecem funcionalidades em nível do cluster, recursos de _addons_ que necessitem ser criados dentro de um _namespace_ pertencem ao _namespace_ `kube-system`. Alguns _addons_ selecionados são descritos abaixo; para uma lista estendida dos _addons_ disponíveis, por favor consulte [Addons](/docs/concepts/cluster-administration/addons/). ### DNS Embora os outros complementos não sejam estritamente necessários, todos os clusters do Kubernetes devem ter um [DNS do cluster](/docs/concepts/services-networking/dns-pod-service/), já que muitos exemplos dependem disso. O DNS do cluster é um servidor DNS, além de outros servidores DNS em seu ambiente, que fornece registros DNS para serviços do Kubernetes. Os contêineres iniciados pelo Kubernetes incluem automaticamente esse servidor DNS em suas pesquisas DNS. ### Web UI (Dashboard) [Dashboard](/docs/tasks/access-application-cluster/web-ui-dashboard/) é uma interface de usuário Web, de uso geral, para clusters do Kubernetes. Ele permite que os usuários gerenciem e solucionem problemas de aplicações em execução no cluster, bem como o próprio cluster. ### Monitoramento de recursos do contêiner [Monitoramento de recursos do contêiner](/docs/tasks/debug-application-cluster/resource-usage-monitoring/) registra métricas de série temporal genéricas sobre os contêineres em um banco de dados central e fornece uma interface de usuário para navegar por esses dados. ### Logging a nivel do cluster Um mecanismo de [_logging_ a nível do cluster](/docs/concepts/cluster-administration/logging/) é responsável por guardar os _logs_ dos contêineres em um armazenamento central de _logs_ com um interface para navegação/pesquisa. ## {{% heading "whatsnext" %}} * Aprenda sobre [Nós](/docs/concepts/architecture/nodes/). * Aprenda sobre [Controladores](/docs/concepts/architecture/controller/). * Aprenda sobre [kube-scheduler](/docs/concepts/scheduling-eviction/kube-scheduler/). * Leia a [documentação](https://etcd.io/docs/) oficial do **etcd**. * --- reviewers: title: Componentes do Kubernetes content_type: concept description: > Um cluster Kubernetes consiste de componentes que representam a camada de gerenciamento, e um conjunto de máquinas chamadas nós. weight: 20 card: name: concepts weight: 20 --- Ao implantar o Kubernetes, você obtém um cluster. {{< glossary_definition term_id="cluster" length="all" prepend="Um cluster Kubernetes consiste em">}} Este documento descreve os vários componentes que você precisa ter para implantar um cluster Kubernetes completo e funcional. Esse é o diagrama de um cluster Kubernetes com todos os componentes interligados. ![Componentes do Kubernetes](/images/docs/components-of-kubernetes.svg) ## Componentes da camada de gerenciamento Os componentes da camada de gerenciamento tomam decisões globais sobre o cluster (por exemplo, agendamento de _pods_), bem como detectam e respondem aos eventos do cluster (por exemplo, iniciando um novo _{{< glossary_tooltip text="pod" term_id="pod" >}}_ quando o campo `replicas` de um _Deployment_ não está atendido). Os componentes da camada de gerenciamento podem ser executados em qualquer máquina do cluster. Contudo, para simplificar, os _scripts_ de configuração normalmente iniciam todos os componentes da camada de gerenciamento na mesma máquina, e não executa contêineres de usuário nesta máquina. Veja [Construindo clusters de alta disponibilidade](/docs/admin/high-availability/) para um exemplo de configuração de múltiplas VMs para camada de gerenciamento (_multi-main-VM_). ### kube-apiserver {{< glossary_definition term_id="kube-apiserver" length="all" >}} ### etcd {{< glossary_definition term_id="etcd" length="all" >}} ### kube-scheduler {{< glossary_definition term_id="kube-scheduler" length="all" >}} ### kube-controller-manager {{< glossary_definition term_id="kube-controller-manager" length="all" >}} Alguns tipos desses controladores são: * Controlador de nó: responsável por perceber e responder quando os nós caem. * Controlador de _Job_: Observa os objetos _Job_ que representam tarefas únicas e, em seguida, cria _pods_ para executar essas tarefas até a conclusão. * Controlador de _endpoints_: preenche o objeto _Endpoints_ (ou seja, junta os Serviços e os _pods_). * Controladores de conta de serviço e de _token_: crie contas padrão e _tokens_ de acesso de API para novos _namespaces_. ### cloud-controller-manager {{< glossary_definition term_id="cloud-controller-manager" length="short" >}} O cloud-controller-manager executa apenas controladores que são específicos para seu provedor de nuvem. Se você estiver executando o Kubernetes em suas próprias instalações ou em um ambiente de aprendizagem dentro de seu próprio PC, o cluster não possui um gerenciador de controlador de nuvem. Tal como acontece com o kube-controller-manager, o cloud-controller-manager combina vários ciclos de controle logicamente independentes em um binário único que você executa como um processo único. Você pode escalar horizontalmente (exectuar mais de uma cópia) para melhorar o desempenho ou para auxiliar na tolerância a falhas. Os seguintes controladores podem ter dependências de provedor de nuvem: * Controlador de nó: para verificar junto ao provedor de nuvem para determinar se um nó foi excluído da nuvem após parar de responder. * Controlador de rota: para configurar rotas na infraestrutura de nuvem subjacente. * Controlador de serviço: Para criar, atualizar e excluir balanceadores de carga do provedor de nuvem. ## Node Components Os componentes de nó são executados em todos os nós, mantendo os _pods_ em execução e fornecendo o ambiente de execução do Kubernetes. ### kubelet {{< glossary_definition term_id="kubelet" length="all" >}} ### kube-proxy {{< glossary_definition term_id="kube-proxy" length="all" >}} ### Container runtime {{< glossary_definition term_id="container-runtime" length="all" >}} ## Addons Complementos (_addons_) usam recursos do Kubernetes ({{< glossary_tooltip term_id="daemonset" >}}, {{< glossary_tooltip term_id="deployment" >}}, etc) para implementar funcionalidades do cluster. Como fornecem funcionalidades em nível do cluster, recursos de _addons_ que necessitem ser criados dentro de um _namespace_ pertencem ao _namespace_ `kube-system`. Alguns _addons_ selecionados são descritos abaixo; para uma lista estendida dos _addons_ disponíveis, por favor consulte [Addons](/docs/concepts/cluster-administration/addons/). ### DNS Embora os outros complementos não sejam estritamente necessários, todos os clusters do Kubernetes devem ter um [DNS do cluster](/docs/concepts/services-networking/dns-pod-service/), já que muitos exemplos dependem disso. O DNS do cluster é um servidor DNS, além de outros servidores DNS em seu ambiente, que fornece registros DNS para serviços do Kubernetes. Os contêineres iniciados pelo Kubernetes incluem automaticamente esse servidor DNS em suas pesquisas DNS. ### Web UI (Dashboard) [Dashboard](/docs/tasks/access-application-cluster/web-ui-dashboard/) é uma interface de usuário Web, de uso geral, para clusters do Kubernetes. Ele permite que os usuários gerenciem e solucionem problemas de aplicações em execução no cluster, bem como o próprio cluster. ### Monitoramento de recursos do contêiner [Monitoramento de recursos do contêiner](/docs/tasks/debug-application-cluster/resource-usage-monitoring/) registra métricas de série temporal genéricas sobre os contêineres em um banco de dados central e fornece uma interface de usuário para navegar por esses dados. ### Logging a nivel do cluster Um mecanismo de [_logging_ a nível do cluster](/docs/concepts/cluster-administration/logging/) é responsável por guardar os _logs_ dos contêineres em um armazenamento central de _logs_ com um interface para navegação/pesquisa. ## {{% heading "whatsnext" %}} * Aprenda sobre [Nós](/docs/concepts/architecture/nodes/). * Aprenda sobre [Controladores](/docs/concepts/architecture/controller/). * Aprenda sobre [kube-scheduler](/docs/concepts/scheduling-eviction/kube-scheduler/). * Leia a [documentação](https://etcd.io/docs/) oficial do **etcd**. * --- reviewers: title: O que é Kubernetes? description: > Kubernetes é um plataforma de código aberto, portável e extensiva para o gerenciamento de cargas de trabalho e serviços distribuídos em contêineres, que facilita tanto a configuração declarativa quanto a automação. Ele possui um ecossistema grande, e de rápido crescimento. Serviços, suporte, e ferramentas para Kubernetes estão amplamente disponíveis. content_type: concept weight: 10 card: name: concepts weight: 10 sitemap: priority: 0.9 --- Essa página é uma visão geral do Kubernetes. Kubernetes é um plataforma de código aberto, portável e extensiva para o gerenciamento de cargas de trabalho e serviços distribuídos em contêineres, que facilita tanto a configuração declarativa quanto a automação. Ele possui um ecossistema grande, e de rápido crescimento. Serviços, suporte, e ferramentas para Kubernetes estão amplamente disponíveis. O Google tornou Kubernetes um projeto de código-aberto em 2014. O Kubernetes combina [mais de 15 anos de experiência do Google](/blog/2015/04/borg-predecessor-to-kubernetes/) executando cargas de trabalho produtivas em escala, com as melhores idéias e práticas da comunidade. O nome **Kubernetes** tem origem no Grego, significando _timoneiro_ ou _piloto_. **K8s** é a abreviação derivada pela troca das oito letras "ubernete" por "8", se tornado _K"8"s_. ## Voltando no tempo Vamos dar uma olhada no porque o Kubernetes é tão útil, voltando no tempo. ![Evolução das implantações](/images/docs/Container_Evolution.svg) **Era da implantação tradicional:** No início, as organizações executavam aplicações em servidores físicos. Não havia como definir limites de recursos para aplicações em um mesmo servidor físico, e isso causava problemas de alocação de recursos. Por exemplo, se várias aplicações fossem executadas em um mesmo servidor físico, poderia haver situações em que uma aplicação ocupasse a maior parte dos recursos e, como resultado, o desempenho das outras aplicações seria inferior. Uma solução para isso seria executar cada aplicação em um servidor físico diferente. Mas isso não escalava, pois os recursos eram subutilizados, e se tornava custoso para as organizações manter muitos servidores físicos. **Era da implantação virtualizada:** Como solução, a virtualização foi introduzida. Esse modelo permite que você execute várias máquinas virtuais (VMs) em uma única CPU de um servidor físico. A virtualização permite que as aplicações sejam isoladas entre as VMs, e ainda fornece um nível de segurança, pois as informações de uma aplicação não podem ser acessadas livremente por outras aplicações. A virtualização permite melhor utilização de recursos em um servidor físico, e permite melhor escalabilidade porque uma aplicação pode ser adicionada ou atualizada facilmente, reduz os custos de hardware e muito mais. Com a virtualização, você pode apresentar um conjunto de recursos físicos como um cluster de máquinas virtuais descartáveis. Cada VM é uma máquina completa que executa todos os componentes, incluindo seu próprio sistema operacional, além do hardware virtualizado. **Era da implantação em contêineres:** Contêineres são semelhantes às VMs, mas têm propriedades de isolamento flexibilizados para compartilhar o sistema operacional (SO) entre as aplicações. Portanto, os contêineres são considerados leves. Semelhante a uma VM, um contêiner tem seu próprio sistema de arquivos, compartilhamento de CPU, memória, espaço de processo e muito mais. Como eles estão separados da infraestrutura subjacente, eles são portáveis entre nuvens e distribuições de sistema operacional. Contêineres se tornaram populares porque eles fornecem benefícios extra, tais como: * Criação e implantação ágil de aplicações: aumento da facilidade e eficiência na criação de imagem de contêiner comparado ao uso de imagem de VM. * Desenvolvimento, integração e implantação contínuos: fornece capacidade de criação e de implantação de imagens de contêiner de forma confiável e frequente, com a funcionalidade de efetuar reversões rápidas e eficientes (devido à imutabilidade da imagem). * Separação de interesses entre Desenvolvimento e Operações: crie imagens de contêineres de aplicações no momento de construção/liberação em vez de no momento de implantação, desacoplando as aplicações da infraestrutura. * A capacidade de observação (Observabilidade) não apenas apresenta informações e métricas no nível do sistema operacional, mas também a integridade da aplicação e outros sinais. * Consistência ambiental entre desenvolvimento, teste e produção: funciona da mesma forma em um laptop e na nuvem. * Portabilidade de distribuição de nuvem e sistema operacional: executa no Ubuntu, RHEL, CoreOS, localmente, nas principais nuvens públicas e em qualquer outro lugar. * Gerenciamento centrado em aplicações: eleva o nível de abstração da execução em um sistema operacional em hardware virtualizado à execução de uma aplicação em um sistema operacional usando recursos lógicos. * Microserviços fracamente acoplados, distribuídos, elásticos e livres: as aplicações são divididas em partes menores e independentes e podem ser implantados e gerenciados dinamicamente - não uma pilha monolítica em execução em uma grande máquina de propósito único. * Isolamento de recursos: desempenho previsível de aplicações. * Utilização de recursos: alta eficiência e densidade. ## Por que você precisa do Kubernetes e o que ele pode fazer{#why-you-need-kubernetes-and-what-can-it-do} Os contêineres são uma boa maneira de agrupar e executar suas aplicações. Em um ambiente de produção, você precisa gerenciar os contêineres que executam as aplicações e garantir que não haja tempo de inatividade. Por exemplo, se um contêiner cair, outro contêiner precisa ser iniciado. Não seria mais fácil se esse comportamento fosse controlado por um sistema? É assim que o Kubernetes vem ao resgate! O Kubernetes oferece uma estrutura para executar sistemas distribuídos de forma resiliente. Ele cuida do escalonamento e do recuperação à falha de sua aplicação, fornece padrões de implantação e muito mais. Por exemplo, o Kubernetes pode gerenciar facilmente uma implantação no método canário para seu sistema. O Kubernetes oferece a você: * **Descoberta de serviço e balanceamento de carga** O Kubernetes pode expor um contêiner usando o nome DNS ou seu próprio endereço IP. Se o tráfego para um contêiner for alto, o Kubernetes pode balancear a carga e distribuir o tráfego de rede para que a implantação seja estável. * **Orquestração de armazenamento** O Kubernetes permite que você monte automaticamente um sistema de armazenamento de sua escolha, como armazenamentos locais, provedores de nuvem pública e muito mais. * **Lançamentos e reversões automatizadas** Você pode descrever o estado desejado para seus contêineres implantados usando o Kubernetes, e ele pode alterar o estado real para o estado desejado em um ritmo controlada. Por exemplo, você pode automatizar o Kubernetes para criar novos contêineres para sua implantação, remover os contêineres existentes e adotar todos os seus recursos para o novo contêiner. * **Empacotamento binário automático** Você fornece ao Kubernetes um cluster de nós que pode ser usado para executar tarefas nos contêineres. Você informa ao Kubernetes de quanta CPU e memória (RAM) cada contêiner precisa. O Kubernetes pode encaixar contêineres em seus nós para fazer o melhor uso de seus recursos. * **Autocorreção** O Kubernetes reinicia os contêineres que falham, substitui os contêineres, elimina os contêineres que não respondem à verificação de integridade definida pelo usuário e não os anuncia aos clientes até que estejam prontos para servir. * **Gerenciamento de configuração e de segredos** O Kubernetes permite armazenar e gerenciar informações confidenciais, como senhas, tokens OAuth e chaves SSH. Você pode implantar e atualizar segredos e configuração de aplicações sem reconstruir suas imagens de contêiner e sem expor segredos em sua pilha de configuração. ## O que o Kubernetes não é O Kubernetes não é um sistema PaaS (plataforma como serviço) tradicional e completo. Como o Kubernetes opera no nível do contêiner, e não no nível do hardware, ele fornece alguns recursos geralmente aplicáveis comuns às ofertas de PaaS, como implantação, escalonamento, balanceamento de carga, e permite que os usuários integrem suas soluções de _logging_, monitoramento e alerta. No entanto, o Kubernetes não é monolítico, e essas soluções padrão são opcionais e conectáveis. O Kubernetes fornece os blocos de construção para a construção de plataformas de desenvolvimento, mas preserva a escolha e flexibilidade do usuário onde é importante. Kubernetes: * Não limita os tipos de aplicações suportadas. O Kubernetes visa oferecer suporte a uma variedade extremamente diversa de cargas de trabalho, incluindo cargas de trabalho sem estado, com estado e de processamento de dados. Se uma aplicação puder ser executada em um contêiner, ele deve ser executado perfeitamente no Kubernetes. * Não implanta código-fonte e não constrói sua aplicação. Os fluxos de trabalho de integração contínua, entrega e implantação (CI/CD) são determinados pelas culturas e preferências da organização, bem como pelos requisitos técnicos. * Não fornece serviços em nível de aplicação, tais como middleware (por exemplo, barramentos de mensagem), estruturas de processamento de dados (por exemplo, Spark), bancos de dados (por exemplo, MySQL), caches, nem sistemas de armazenamento em cluster (por exemplo, Ceph), como serviços integrados. Esses componentes podem ser executados no Kubernetes e/ou podem ser acessados por aplicações executadas no Kubernetes por meio de mecanismos portáteis, como o [Open Service Broker](https://openservicebrokerapi.org/). * Não dita soluções de _logging_, monitoramento ou alerta. Ele fornece algumas integrações como prova de conceito e mecanismos para coletar e exportar métricas. * Não fornece nem exige um sistema/idioma de configuração (por exemplo, Jsonnet). Ele fornece uma API declarativa que pode ser direcionada por formas arbitrárias de especificações declarativas. * Não fornece nem adota sistemas abrangentes de configuração de máquinas, manutenção, gerenciamento ou autocorreção. * Adicionalmente, o Kubernetes não é um mero sistema de orquestração. Na verdade, ele elimina a necessidade de orquestração. A definição técnica de orquestração é a execução de um fluxo de trabalho definido: primeiro faça A, depois B e depois C. Em contraste, o Kubernetes compreende um conjunto de processos de controle independentes e combináveis que conduzem continuamente o estado atual em direção ao estado desejado fornecido. Não importa como você vai de A para C. O controle centralizado também não é necessário. Isso resulta em um sistema que é mais fácil de usar e mais poderoso, robusto, resiliente e extensível. ## {{% heading "whatsnext" %}} * Dê uma olhada em [Componentes do Kubernetes](/docs/concepts/overview/components/). * Pronto para [Iniciar](/docs/setup/)? --- content/pt/docs/concepts/overview/_index.md | 7 ++ .../pt/docs/concepts/overview/components.md | 117 ++++++++++++++++++ .../concepts/overview/what-is-kubernetes.md | 94 ++++++++++++++ .../glossary/cloud-controller-manager.md | 21 ++++ content/pt/docs/reference/glossary/cncf.md | 20 +++ .../reference/glossary/container-runtime.md | 18 +++ .../docs/reference/glossary/control-plane.md | 6 +- content/pt/docs/reference/glossary/etcd.md | 19 +++ .../docs/reference/glossary/kube-apiserver.md | 22 ++++ .../glossary/kube-controller-manager.md | 18 +++ .../pt/docs/reference/glossary/kube-proxy.md | 22 ++++ .../docs/reference/glossary/kube-scheduler.md | 17 +++ 12 files changed, 378 insertions(+), 3 deletions(-) create mode 100644 content/pt/docs/concepts/overview/_index.md create mode 100644 content/pt/docs/concepts/overview/components.md create mode 100644 content/pt/docs/concepts/overview/what-is-kubernetes.md create mode 100644 content/pt/docs/reference/glossary/cloud-controller-manager.md create mode 100644 content/pt/docs/reference/glossary/cncf.md create mode 100644 content/pt/docs/reference/glossary/container-runtime.md create mode 100644 content/pt/docs/reference/glossary/etcd.md create mode 100644 content/pt/docs/reference/glossary/kube-apiserver.md create mode 100644 content/pt/docs/reference/glossary/kube-controller-manager.md create mode 100644 content/pt/docs/reference/glossary/kube-proxy.md create mode 100644 content/pt/docs/reference/glossary/kube-scheduler.md diff --git a/content/pt/docs/concepts/overview/_index.md b/content/pt/docs/concepts/overview/_index.md new file mode 100644 index 0000000000..f254849b77 --- /dev/null +++ b/content/pt/docs/concepts/overview/_index.md @@ -0,0 +1,7 @@ +--- +title: "Visão Geral" +weight: 20 +description: Obtenha uma visão em alto-nível do Kubernetes e dos componentes a partir dos quais ele é construído. +sitemap: + priority: 0.9 +--- diff --git a/content/pt/docs/concepts/overview/components.md b/content/pt/docs/concepts/overview/components.md new file mode 100644 index 0000000000..b03946c4ae --- /dev/null +++ b/content/pt/docs/concepts/overview/components.md @@ -0,0 +1,117 @@ +--- +reviewers: +title: Componentes do Kubernetes +content_type: concept +description: > + Um cluster Kubernetes consiste de componentes que representam a camada de gerenciamento, e um conjunto de máquinas chamadas nós. +weight: 20 +card: + name: concepts + weight: 20 +--- + + +Ao implantar o Kubernetes, você obtém um cluster. +{{< glossary_definition term_id="cluster" length="all" prepend="Um cluster Kubernetes consiste em">}} + +Este documento descreve os vários componentes que você precisa ter para implantar um cluster Kubernetes completo e funcional. + +Esse é o diagrama de um cluster Kubernetes com todos os componentes interligados. + +![Componentes do Kubernetes](/images/docs/components-of-kubernetes.svg) + + + +## Componentes da camada de gerenciamento + +Os componentes da camada de gerenciamento tomam decisões globais sobre o cluster (por exemplo, agendamento de _pods_), bem como detectam e respondem aos eventos do cluster (por exemplo, iniciando um novo _{{< glossary_tooltip text="pod" term_id="pod" >}}_ quando o campo `replicas` de um _Deployment_ não está atendido). + +Os componentes da camada de gerenciamento podem ser executados em qualquer máquina do cluster. Contudo, para simplificar, os _scripts_ de configuração normalmente iniciam todos os componentes da camada de gerenciamento na mesma máquina, e não executa contêineres de usuário nesta máquina. Veja [Construindo clusters de alta disponibilidade](/docs/admin/high-availability/) para um exemplo de configuração de múltiplas VMs para camada de gerenciamento (_multi-main-VM_). + +### kube-apiserver + +{{< glossary_definition term_id="kube-apiserver" length="all" >}} + +### etcd + +{{< glossary_definition term_id="etcd" length="all" >}} + +### kube-scheduler + +{{< glossary_definition term_id="kube-scheduler" length="all" >}} + +### kube-controller-manager + +{{< glossary_definition term_id="kube-controller-manager" length="all" >}} + +Alguns tipos desses controladores são: + + * Controlador de nó: responsável por perceber e responder quando os nós caem. + * Controlador de _Job_: Observa os objetos _Job_ que representam tarefas únicas e, em seguida, cria _pods_ para executar essas tarefas até a conclusão. + * Controlador de _endpoints_: preenche o objeto _Endpoints_ (ou seja, junta os Serviços e os _pods_). + * Controladores de conta de serviço e de _token_: crie contas padrão e _tokens_ de acesso de API para novos _namespaces_. + +### cloud-controller-manager + +{{< glossary_definition term_id="cloud-controller-manager" length="short" >}} + +O cloud-controller-manager executa apenas controladores que são específicos para seu provedor de nuvem. +Se você estiver executando o Kubernetes em suas próprias instalações ou em um ambiente de aprendizagem dentro de seu +próprio PC, o cluster não possui um gerenciador de controlador de nuvem. + +Tal como acontece com o kube-controller-manager, o cloud-controller-manager combina vários ciclos de controle logicamente independentes em um binário único que você executa como um processo único. Você pode escalar horizontalmente (exectuar mais de uma cópia) para melhorar o desempenho ou para auxiliar na tolerância a falhas. + +Os seguintes controladores podem ter dependências de provedor de nuvem: + + * Controlador de nó: para verificar junto ao provedor de nuvem para determinar se um nó foi excluído da nuvem após parar de responder. + * Controlador de rota: para configurar rotas na infraestrutura de nuvem subjacente. + * Controlador de serviço: Para criar, atualizar e excluir balanceadores de carga do provedor de nuvem. + +## Node Components + +Os componentes de nó são executados em todos os nós, mantendo os _pods_ em execução e fornecendo o ambiente de execução do Kubernetes. + +### kubelet + +{{< glossary_definition term_id="kubelet" length="all" >}} + +### kube-proxy + +{{< glossary_definition term_id="kube-proxy" length="all" >}} + +### Container runtime + +{{< glossary_definition term_id="container-runtime" length="all" >}} + +## Addons + +Complementos (_addons_) usam recursos do Kubernetes ({{< glossary_tooltip term_id="daemonset" >}}, {{< glossary_tooltip term_id="deployment" >}}, etc) para implementar funcionalidades do cluster. Como fornecem funcionalidades em nível do cluster, recursos de _addons_ que necessitem ser criados dentro de um _namespace_ pertencem ao _namespace_ `kube-system`. + +Alguns _addons_ selecionados são descritos abaixo; para uma lista estendida dos _addons_ disponíveis, por favor consulte [Addons](/docs/concepts/cluster-administration/addons/). + +### DNS + +Embora os outros complementos não sejam estritamente necessários, todos os clusters do Kubernetes devem ter um [DNS do cluster](/docs/concepts/services-networking/dns-pod-service/), já que muitos exemplos dependem disso. + +O DNS do cluster é um servidor DNS, além de outros servidores DNS em seu ambiente, que fornece registros DNS para serviços do Kubernetes. + +Os contêineres iniciados pelo Kubernetes incluem automaticamente esse servidor DNS em suas pesquisas DNS. + +### Web UI (Dashboard) + +[Dashboard](/docs/tasks/access-application-cluster/web-ui-dashboard/) é uma interface de usuário Web, de uso geral, para clusters do Kubernetes. Ele permite que os usuários gerenciem e solucionem problemas de aplicações em execução no cluster, bem como o próprio cluster. + +### Monitoramento de recursos do contêiner + +[Monitoramento de recursos do contêiner](/docs/tasks/debug-application-cluster/resource-usage-monitoring/) registra métricas de série temporal genéricas sobre os contêineres em um banco de dados central e fornece uma interface de usuário para navegar por esses dados. + +### Logging a nivel do cluster + +Um mecanismo de [_logging_ a nível do cluster](/docs/concepts/cluster-administration/logging/) é responsável por guardar os _logs_ dos contêineres em um armazenamento central de _logs_ com um interface para navegação/pesquisa. + +## {{% heading "whatsnext" %}} + +* Aprenda sobre [Nós](/docs/concepts/architecture/nodes/). +* Aprenda sobre [Controladores](/docs/concepts/architecture/controller/). +* Aprenda sobre [kube-scheduler](/docs/concepts/scheduling-eviction/kube-scheduler/). +* Leia a [documentação](https://etcd.io/docs/) oficial do **etcd**. diff --git a/content/pt/docs/concepts/overview/what-is-kubernetes.md b/content/pt/docs/concepts/overview/what-is-kubernetes.md new file mode 100644 index 0000000000..29473a7f75 --- /dev/null +++ b/content/pt/docs/concepts/overview/what-is-kubernetes.md @@ -0,0 +1,94 @@ +--- +reviewers: +title: O que é Kubernetes? +description: > + Kubernetes é um plataforma de código aberto, portável e extensiva para o gerenciamento de cargas de trabalho e serviços distribuídos em contêineres, que facilita tanto a configuração declarativa quanto a automação. Ele possui um ecossistema grande, e de rápido crescimento. Serviços, suporte, e ferramentas para Kubernetes estão amplamente disponíveis. +content_type: concept +weight: 10 +card: + name: concepts + weight: 10 +sitemap: + priority: 0.9 +--- + + +Essa página é uma visão geral do Kubernetes. + + + +Kubernetes é um plataforma de código aberto, portável e extensiva para o gerenciamento de cargas de trabalho e serviços distribuídos em contêineres, que facilita tanto a configuração declarativa quanto a automação. Ele possui um ecossistema grande, e de rápido crescimento. Serviços, suporte, e ferramentas para Kubernetes estão amplamente disponíveis. + +O Google tornou Kubernetes um projeto de código-aberto em 2014. O Kubernetes combina [mais de 15 anos de experiência do Google](/blog/2015/04/borg-predecessor-to-kubernetes/) executando cargas de trabalho produtivas em escala, com as melhores idéias e práticas da comunidade. + +O nome **Kubernetes** tem origem no Grego, significando _timoneiro_ ou _piloto_. **K8s** é a abreviação derivada pela troca das oito letras "ubernete" por "8", se tornado _K"8"s_. + +## Voltando no tempo + +Vamos dar uma olhada no porque o Kubernetes é tão útil, voltando no tempo. + +![Evolução das implantações](/images/docs/Container_Evolution.svg) + +**Era da implantação tradicional:** No início, as organizações executavam aplicações em servidores físicos. Não havia como definir limites de recursos para aplicações em um mesmo servidor físico, e isso causava problemas de alocação de recursos. Por exemplo, se várias aplicações fossem executadas em um mesmo servidor físico, poderia haver situações em que uma aplicação ocupasse a maior parte dos recursos e, como resultado, o desempenho das outras aplicações seria inferior. Uma solução para isso seria executar cada aplicação em um servidor físico diferente. Mas isso não escalava, pois os recursos eram subutilizados, e se tornava custoso para as organizações manter muitos servidores físicos. + +**Era da implantação virtualizada:** Como solução, a virtualização foi introduzida. Esse modelo permite que você execute várias máquinas virtuais (VMs) em uma única CPU de um servidor físico. A virtualização permite que as aplicações sejam isoladas entre as VMs, e ainda fornece um nível de segurança, pois as informações de uma aplicação não podem ser acessadas livremente por outras aplicações. + +A virtualização permite melhor utilização de recursos em um servidor físico, e permite melhor escalabilidade porque uma aplicação pode ser adicionada ou atualizada facilmente, reduz os custos de hardware e muito mais. Com a virtualização, você pode apresentar um conjunto de recursos físicos como um cluster de máquinas virtuais descartáveis. + +Cada VM é uma máquina completa que executa todos os componentes, incluindo seu próprio sistema operacional, além do hardware virtualizado. + +**Era da implantação em contêineres:** Contêineres são semelhantes às VMs, mas têm propriedades de isolamento flexibilizados para compartilhar o sistema operacional (SO) entre as aplicações. Portanto, os contêineres são considerados leves. Semelhante a uma VM, um contêiner tem seu próprio sistema de arquivos, compartilhamento de CPU, memória, espaço de processo e muito mais. Como eles estão separados da infraestrutura subjacente, eles são portáveis entre nuvens e distribuições de sistema operacional. + +Contêineres se tornaram populares porque eles fornecem benefícios extra, tais como: + +* Criação e implantação ágil de aplicações: aumento da facilidade e eficiência na criação de imagem de contêiner comparado ao uso de imagem de VM. +* Desenvolvimento, integração e implantação contínuos: fornece capacidade de criação e de implantação de imagens de contêiner de forma confiável e frequente, com a funcionalidade de efetuar reversões rápidas e eficientes (devido à imutabilidade da imagem). +* Separação de interesses entre Desenvolvimento e Operações: crie imagens de contêineres de aplicações no momento de construção/liberação em vez de no momento de implantação, desacoplando as aplicações da infraestrutura. +* A capacidade de observação (Observabilidade) não apenas apresenta informações e métricas no nível do sistema operacional, mas também a integridade da aplicação e outros sinais. +* Consistência ambiental entre desenvolvimento, teste e produção: funciona da mesma forma em um laptop e na nuvem. +* Portabilidade de distribuição de nuvem e sistema operacional: executa no Ubuntu, RHEL, CoreOS, localmente, nas principais nuvens públicas e em qualquer outro lugar. +* Gerenciamento centrado em aplicações: eleva o nível de abstração da execução em um sistema operacional em hardware virtualizado à execução de uma aplicação em um sistema operacional usando recursos lógicos. +* Microserviços fracamente acoplados, distribuídos, elásticos e livres: as aplicações são divididas em partes menores e independentes e podem ser implantados e gerenciados dinamicamente - não uma pilha monolítica em execução em uma grande máquina de propósito único. +* Isolamento de recursos: desempenho previsível de aplicações. +* Utilização de recursos: alta eficiência e densidade. + +## Por que você precisa do Kubernetes e o que ele pode fazer{#why-you-need-kubernetes-and-what-can-it-do} + +Os contêineres são uma boa maneira de agrupar e executar suas aplicações. Em um ambiente de produção, você precisa gerenciar os contêineres que executam as aplicações e garantir que não haja tempo de inatividade. Por exemplo, se um contêiner cair, outro contêiner precisa ser iniciado. Não seria mais fácil se esse comportamento fosse controlado por um sistema? + +É assim que o Kubernetes vem ao resgate! O Kubernetes oferece uma estrutura para executar sistemas distribuídos de forma resiliente. Ele cuida do escalonamento e do recuperação à falha de sua aplicação, fornece padrões de implantação e muito mais. Por exemplo, o Kubernetes pode gerenciar facilmente uma implantação no método canário para seu sistema. + +O Kubernetes oferece a você: + +* **Descoberta de serviço e balanceamento de carga** +O Kubernetes pode expor um contêiner usando o nome DNS ou seu próprio endereço IP. Se o tráfego para um contêiner for alto, o Kubernetes pode balancear a carga e distribuir o tráfego de rede para que a implantação seja estável. +* **Orquestração de armazenamento** +O Kubernetes permite que você monte automaticamente um sistema de armazenamento de sua escolha, como armazenamentos locais, provedores de nuvem pública e muito mais. +* **Lançamentos e reversões automatizadas** +Você pode descrever o estado desejado para seus contêineres implantados usando o Kubernetes, e ele pode alterar o estado real para o estado desejado em um ritmo controlada. Por exemplo, você pode automatizar o Kubernetes para criar novos contêineres para sua implantação, remover os contêineres existentes e adotar todos os seus recursos para o novo contêiner. +* **Empacotamento binário automático** +Você fornece ao Kubernetes um cluster de nós que pode ser usado para executar tarefas nos contêineres. Você informa ao Kubernetes de quanta CPU e memória (RAM) cada contêiner precisa. O Kubernetes pode encaixar contêineres em seus nós para fazer o melhor uso de seus recursos. +* **Autocorreção** +O Kubernetes reinicia os contêineres que falham, substitui os contêineres, elimina os contêineres que não respondem à verificação de integridade definida pelo usuário e não os anuncia aos clientes até que estejam prontos para servir. +* **Gerenciamento de configuração e de segredos** +O Kubernetes permite armazenar e gerenciar informações confidenciais, como senhas, tokens OAuth e chaves SSH. Você pode implantar e atualizar segredos e configuração de aplicações sem reconstruir suas imagens de contêiner e sem expor segredos em sua pilha de configuração. + +## O que o Kubernetes não é + +O Kubernetes não é um sistema PaaS (plataforma como serviço) tradicional e completo. Como o Kubernetes opera no nível do contêiner, e não no nível do hardware, ele fornece alguns recursos geralmente aplicáveis comuns às ofertas de PaaS, como implantação, escalonamento, balanceamento de carga, e permite que os usuários integrem suas soluções de _logging_, monitoramento e alerta. No entanto, o Kubernetes não é monolítico, e essas soluções padrão são opcionais e conectáveis. O Kubernetes fornece os blocos de construção para a construção de plataformas de desenvolvimento, mas preserva a escolha e flexibilidade do usuário onde é importante. + +Kubernetes: + +* Não limita os tipos de aplicações suportadas. O Kubernetes visa oferecer suporte a uma variedade extremamente diversa de cargas de trabalho, incluindo cargas de trabalho sem estado, com estado e de processamento de dados. Se uma aplicação puder ser executada em um contêiner, ele deve ser executado perfeitamente no Kubernetes. +* Não implanta código-fonte e não constrói sua aplicação. Os fluxos de trabalho de integração contínua, entrega e implantação (CI/CD) são determinados pelas culturas e preferências da organização, bem como pelos requisitos técnicos. +* Não fornece serviços em nível de aplicação, tais como middleware (por exemplo, barramentos de mensagem), estruturas de processamento de dados (por exemplo, Spark), bancos de dados (por exemplo, MySQL), caches, nem sistemas de armazenamento em cluster (por exemplo, Ceph), como serviços integrados. Esses componentes podem ser executados no Kubernetes e/ou podem ser acessados por aplicações executadas no Kubernetes por meio de mecanismos portáteis, como o [Open Service Broker](https://openservicebrokerapi.org/). +* Não dita soluções de _logging_, monitoramento ou alerta. Ele fornece algumas integrações como prova de conceito e mecanismos para coletar e exportar métricas. +* Não fornece nem exige um sistema/idioma de configuração (por exemplo, Jsonnet). Ele fornece uma API declarativa que pode ser direcionada por formas arbitrárias de especificações declarativas. +* Não fornece nem adota sistemas abrangentes de configuração de máquinas, manutenção, gerenciamento ou autocorreção. +* Adicionalmente, o Kubernetes não é um mero sistema de orquestração. Na verdade, ele elimina a necessidade de orquestração. A definição técnica de orquestração é a execução de um fluxo de trabalho definido: primeiro faça A, depois B e depois C. Em contraste, o Kubernetes compreende um conjunto de processos de controle independentes e combináveis que conduzem continuamente o estado atual em direção ao estado desejado fornecido. Não importa como você vai de A para C. O controle centralizado também não é necessário. Isso resulta em um sistema que é mais fácil de usar e mais poderoso, robusto, resiliente e extensível. + + +## {{% heading "whatsnext" %}} + +* Dê uma olhada em [Componentes do Kubernetes](/docs/concepts/overview/components/). +* Pronto para [Iniciar](/docs/setup/)? diff --git a/content/pt/docs/reference/glossary/cloud-controller-manager.md b/content/pt/docs/reference/glossary/cloud-controller-manager.md new file mode 100644 index 0000000000..622d3f842e --- /dev/null +++ b/content/pt/docs/reference/glossary/cloud-controller-manager.md @@ -0,0 +1,21 @@ +--- +title: Gerenciador de controle de nuvem +id: cloud-controller-manager +date: 2018-04-12 +full_link: /docs/concepts/architecture/cloud-controller/ +short_description: > + Componente da camada de gerenciamento que integra Kubernetes com provedores de nuvem de terceiros. +aka: +tags: +- core-object +- architecture +- operation +--- + + Um componente da {{< glossary_tooltip text="camada de gerenciamento" term_id="control-plane" >}} do Kubernetes + que incorpora a lógica de controle específica da nuvem. O gerenciador de controle de nuvem permite que você vincule seu + _cluster_ na API do seu provedor de nuvem, e separar os componentes que interagem com essa plataforma de nuvem a partir de componentes que apenas interagem com seu cluster. + + + +Desassociando a lógica de interoperabilidade entre o Kubernetes e a infraestrutura de nuvem subjacente, o componente gerenciador de controle de nuvem permite que os provedores de nuvem desenvolvam e disponibilizem recursos em um ritmo diferente em comparação com o projeto principal do Kubernetes. diff --git a/content/pt/docs/reference/glossary/cncf.md b/content/pt/docs/reference/glossary/cncf.md new file mode 100644 index 0000000000..f9ad249547 --- /dev/null +++ b/content/pt/docs/reference/glossary/cncf.md @@ -0,0 +1,20 @@ +--- +title: Cloud Native Computing Foundation (CNCF) +id: cncf +date: 2019-05-26 +full_link: https://cncf.io/ +short_description: > + Cloud Native Computing Foundation + +aka: +tags: +- community +--- + A **Cloud Native Computing Foundation (CNCF)** constrói um ecossistema sustentável e promove uma comunidade no entorno dos [projetos](https://www.cncf.io/projects/) que orquestram contêineres como parte de uma arquitetura de microserviços. + +**Kubernetes** é um projeto CNCF. + + + +A **CNCF** é uma sub-fundação da [Linux Foundation](https://www.linuxfoundation.org/). +Sua missão é tornar a computação nativa em nuvem onipresente. diff --git a/content/pt/docs/reference/glossary/container-runtime.md b/content/pt/docs/reference/glossary/container-runtime.md new file mode 100644 index 0000000000..8c1cb808ef --- /dev/null +++ b/content/pt/docs/reference/glossary/container-runtime.md @@ -0,0 +1,18 @@ +--- +title: Agente de execução de contêiner +id: container-runtime +date: 2019-06-05 +full_link: /docs/setup/production-environment/container-runtimes +short_description: > + O agente de execução de contêiner é o software responsável por executar os contêineres. + +aka: +tags: +- fundamental +- workload +--- + O agente de execução (_runtime_) de contêiner é o software responsável por executar os contêineres. + + + +O Kubernetes suporta diversos agentes de execução de contêineres: {{< glossary_tooltip term_id="docker">}}, {{< glossary_tooltip term_id="containerd" >}}, {{< glossary_tooltip term_id="cri-o" >}}, e qualquer implementação do [Kubernetes CRI (Container Runtime Interface)](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-node/container-runtime-interface.md). diff --git a/content/pt/docs/reference/glossary/control-plane.md b/content/pt/docs/reference/glossary/control-plane.md index 0465d5a2b8..c65759b83b 100644 --- a/content/pt/docs/reference/glossary/control-plane.md +++ b/content/pt/docs/reference/glossary/control-plane.md @@ -1,13 +1,13 @@ --- -title: Ambiente de gerenciamento +title: Camada de gerenciamento id: control-plane date: 2020-04-19 full_link: short_description: > - A camada de orquestração de contêiner que expõe a API e as interfaces para definir, implantar e gerenciar o ciclo de vida dos contêineres. + A camada de gerenciamento de contêiner que expõe a API e as interfaces para definir, implantar e gerenciar o ciclo de vida dos contêineres. aka: tags: - fundamental --- - A camada de orquestração de contêiner que expõe a API e as interfaces para definir, implantar e gerenciar o ciclo de vida dos contêineres. + A camada de gerenciamento de contêiner que expõe a API e as interfaces para definir, implantar e gerenciar o ciclo de vida dos contêineres. diff --git a/content/pt/docs/reference/glossary/etcd.md b/content/pt/docs/reference/glossary/etcd.md new file mode 100644 index 0000000000..0761a53865 --- /dev/null +++ b/content/pt/docs/reference/glossary/etcd.md @@ -0,0 +1,19 @@ +--- +title: etcd +id: etcd +date: 2018-04-12 +full_link: /docs/tasks/administer-cluster/configure-upgrade-etcd/ +short_description: > + Armazenamento do tipo Chave-Valor consistente e em alta-disponibilidade usado como repositório de apoio do Kubernetes para todos os dados do cluster. +aka: +tags: +- architecture +- storage +--- + Armazenamento do tipo Chave-Valor consistente e em alta-disponibilidade usado como repositório de apoio do Kubernetes para todos os dados do cluster. + + + +Se o seu cluster Kubernetes usa **etcd** como seu armazenamento de apoio, certifique-se de ter um plano de [back up](/docs/tasks/administer-cluster/configure-upgrade-etcd/#backing-up-an-etcd-cluster) para seus dados. + +Você pode encontrar informações detalhadas sobre o etcd na seção oficial da [documentação](https://etcd.io/docs/). diff --git a/content/pt/docs/reference/glossary/kube-apiserver.md b/content/pt/docs/reference/glossary/kube-apiserver.md new file mode 100644 index 0000000000..f5ce3dba1a --- /dev/null +++ b/content/pt/docs/reference/glossary/kube-apiserver.md @@ -0,0 +1,22 @@ +--- +title: API server +id: kube-apiserver +date: 2018-04-12 +full_link: /docs/concepts/overview/components/#kube-apiserver +short_description: > + O componente da camada de gerenciamento que serve a API do Kubernetes. + +aka: +- kube-apiserver +tags: +- architecture +- fundamental +--- + O servidor de API é um componente da {{< glossary_tooltip text="Camada de gerenciamento" term_id="control-plane" >}} do Kubernetes que expõe a API do Kubernetes. +O servidor de API é o _front end_ para a camada de gerenciamento do Kubernetes. + + + +A principal implementação de um servidor de API do Kubernetes é [kube-apiserver](/docs/reference/generated/kube-apiserver/). +O kube-apiserver foi projetado para ser escalonado horizontalmente — ou seja, ele pode ser escalado com a implantação de mais instâncias. +Você pode executar várias instâncias do kube-apiserver e balancear (balanceamento de carga, etc) o tráfego entre essas instâncias. diff --git a/content/pt/docs/reference/glossary/kube-controller-manager.md b/content/pt/docs/reference/glossary/kube-controller-manager.md new file mode 100644 index 0000000000..0a52ec27ea --- /dev/null +++ b/content/pt/docs/reference/glossary/kube-controller-manager.md @@ -0,0 +1,18 @@ +--- +title: kube-controller-manager +id: kube-controller-manager +date: 2018-04-12 +full_link: /docs/reference/command-line-tools-reference/kube-controller-manager/ +short_description: > + Componente da camada de gerenciamento que executa os processos de controle. + +aka: +tags: +- architecture +- fundamental +--- + Componente da camada de gerenciamento que executa os processos de {{< glossary_tooltip text="controlador" term_id="controller" >}}. + + + +Logicamente, cada _{{< glossary_tooltip text="controlador" term_id="controller" >}}_ está em um processo separado, mas para reduzir a complexidade, eles todos são compilados num único binário e executam em um processo único. diff --git a/content/pt/docs/reference/glossary/kube-proxy.md b/content/pt/docs/reference/glossary/kube-proxy.md new file mode 100644 index 0000000000..1f9a075bd6 --- /dev/null +++ b/content/pt/docs/reference/glossary/kube-proxy.md @@ -0,0 +1,22 @@ +--- +title: kube-proxy +id: kube-proxy +date: 2018-04-12 +full_link: /docs/reference/command-line-tools-reference/kube-proxy/ +short_description: > + `kube-proxy` é um _proxy_ de rede executado em cada nó do _cluster_. + +aka: +tags: +- fundamental +- networking +--- + kube-proxy é um _proxy_ de rede executado em cada {{< glossary_tooltip text="nó" term_id="node" >}} no seu _cluster_, +implementando parte do conceito de {{< glossary_tooltip text="serviço" term_id="service">}} do Kubernetes. + + + +[kube-proxy](/docs/reference/command-line-tools-reference/kube-proxy/) +mantém regras de rede nos nós. Estas regras de rede permitem a comunicação de rede com seus _pods_ a partir de sessões de rede dentro ou fora de seu _cluster_. + +kube-proxy usa a camada de filtragem de pacotes do sistema operacional se houver uma e estiver disponível. Caso contrário, o kube-proxy encaminha o tráfego ele mesmo. diff --git a/content/pt/docs/reference/glossary/kube-scheduler.md b/content/pt/docs/reference/glossary/kube-scheduler.md new file mode 100644 index 0000000000..1030d27853 --- /dev/null +++ b/content/pt/docs/reference/glossary/kube-scheduler.md @@ -0,0 +1,17 @@ +--- +title: kube-scheduler +id: kube-scheduler +date: 2018-04-12 +full_link: /docs/reference/generated/kube-scheduler/ +short_description: > + Componente da camada de gerenciamento que observa os _pods_ recém-criados sem nenhum nó atribuído, e seleciona um nó para executá-los. +aka: +tags: +- architecture +--- +Componente da camada de gerenciamento que observa os _{{< glossary_tooltip term_id="pod" text="pods" >}}_ recém-criados sem nenhum {{< glossary_tooltip term_id="node" text="nó">}} atribuído, e seleciona um nó para executá-los. + + + +Os fatores levados em consideração para as decisões de agendamento incluem: +requisitos de recursos individuais e coletivos, hardware/software/política de restrições, especificações de afinidade e antiafinidade, localidade de dados, interferência entre cargas de trabalho, e prazos. From 54daf2e5586496edc599174b091c9e2027226415 Mon Sep 17 00:00:00 2001 From: Karen Bradshaw Date: Tue, 9 Mar 2021 20:17:42 -0500 Subject: [PATCH 153/788] test blog page --- .../index.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/index.md b/content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/index.md index 62bebb89b5..b40c827448 100644 --- a/content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/index.md +++ b/content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/index.md @@ -15,6 +15,7 @@ The initial idea behind the Kubernetes Dashboard project was to provide a web in The very [first commit](https://github.com/kubernetes/dashboard/commit/5861187fa807ac1cc2d9b2ac786afeced065076c) to the Kubernetes Dashboard was made by Filip Grządkowski from Google on 16th October 2015 – just a few months from the initial commit to the Kubernetes repository. Our initial commits go back to November 2015 ([Sebastian committed on 16 November 2015](https://github.com/kubernetes/dashboard/commit/09e65b6bb08c49b926253de3621a73da05e400fd); [Marcin committed on 23 November 2015](https://github.com/kubernetes/dashboard/commit/1da4b1c25ef040818072c734f71333f9b4733f55)). Since that time, we’ve become regular contributors to the project. For the next two years, we worked closely with the Googlers, eventually becoming main project maintainers ourselves. + As you can see, the initial look and feel of the project were completely different from the current one. We have changed the design multiple times. The same has happened with the code itself. @@ -55,14 +57,14 @@ The Kubernetes Dashboard has been growing and prospering for more than 5 years n ## The Kubernetes Dashboard in Numbers -* Initial commit made on October 16, 2015 -* Over 100 million pulls from Dockerhub since the v2 release -* 8 supported languages and the next 2 in progress -* Over 3360 closed PRs -* Over 2260 closed issues -* 100% coverage of the supported core Kubernetes resources -* Over 9000 stars on GitHub -* Over 237 000 lines of code +* Initial commit made on October 16, 2015 +* Over 100 million pulls from Dockerhub since the v2 release +* 8 supported languages and the next 2 in progress +* Over 3360 closed PRs +* Over 2260 closed issues +* 100% coverage of the supported core Kubernetes resources +* Over 9000 stars on GitHub +* Over 237 000 lines of code ## Join Us From 4c75e0cb8bcc8e41832c41ce445d3d9fd267d3f0 Mon Sep 17 00:00:00 2001 From: Karen Bradshaw Date: Tue, 9 Mar 2021 20:27:09 -0500 Subject: [PATCH 154/788] remove imageProc --- .../index.md | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/index.md b/content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/index.md index b40c827448..ffa029a73f 100644 --- a/content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/index.md +++ b/content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/index.md @@ -15,19 +15,6 @@ The initial idea behind the Kubernetes Dashboard project was to provide a web in The very [first commit](https://github.com/kubernetes/dashboard/commit/5861187fa807ac1cc2d9b2ac786afeced065076c) to the Kubernetes Dashboard was made by Filip Grządkowski from Google on 16th October 2015 – just a few months from the initial commit to the Kubernetes repository. Our initial commits go back to November 2015 ([Sebastian committed on 16 November 2015](https://github.com/kubernetes/dashboard/commit/09e65b6bb08c49b926253de3621a73da05e400fd); [Marcin committed on 23 November 2015](https://github.com/kubernetes/dashboard/commit/1da4b1c25ef040818072c734f71333f9b4733f55)). Since that time, we’ve become regular contributors to the project. For the next two years, we worked closely with the Googlers, eventually becoming main project maintainers ourselves. - As you can see, the initial look and feel of the project were completely different from the current one. We have changed the design multiple times. The same has happened with the code itself. From fa183e46a68c7cc48c0adbb319698d7aad216465 Mon Sep 17 00:00:00 2001 From: Qiming Teng Date: Wed, 10 Mar 2021 10:26:20 +0800 Subject: [PATCH 155/788] Update data type presentation in component reference Instead of putting "stringSlice" or "mapStringString" as data type for flag data type, we can show more user friendly data type description that is not GoLang specific. --- .../kube-apiserver.md | 385 +++++++++--------- .../kube-controller-manager.md | 331 +++++++-------- .../kube-proxy.md | 111 ++--- .../kube-scheduler.md | 185 +++++---- 4 files changed, 532 insertions(+), 480 deletions(-) diff --git a/content/en/docs/reference/command-line-tools-reference/kube-apiserver.md b/content/en/docs/reference/command-line-tools-reference/kube-apiserver.md index 6e87bff44c..edf25ad835 100644 --- a/content/en/docs/reference/command-line-tools-reference/kube-apiserver.md +++ b/content/en/docs/reference/command-line-tools-reference/kube-apiserver.md @@ -2,8 +2,21 @@ title: kube-apiserver content_type: tool-reference weight: 30 +auto_generated: true --- + + + ## {{% heading "synopsis" %}} @@ -29,1099 +42,1099 @@ kube-apiserver [flags]

    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/content/en/docs/reference/command-line-tools-reference/kube-controller-manager.md b/content/en/docs/reference/command-line-tools-reference/kube-controller-manager.md index 79af1bc81a..a7ad248e94 100644 --- a/content/en/docs/reference/command-line-tools-reference/kube-controller-manager.md +++ b/content/en/docs/reference/command-line-tools-reference/kube-controller-manager.md @@ -2,8 +2,21 @@ title: kube-controller-manager content_type: tool-reference weight: 30 +auto_generated: true --- + + + ## {{% heading "synopsis" %}} @@ -33,980 +46,980 @@ kube-controller-manager [flags] - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/content/en/docs/reference/command-line-tools-reference/kube-proxy.md b/content/en/docs/reference/command-line-tools-reference/kube-proxy.md index a13368ed01..ad9d8b022d 100644 --- a/content/en/docs/reference/command-line-tools-reference/kube-proxy.md +++ b/content/en/docs/reference/command-line-tools-reference/kube-proxy.md @@ -2,8 +2,21 @@ title: kube-proxy content_type: tool-reference weight: 30 +auto_generated: true --- + + + ## {{% heading "synopsis" %}} @@ -32,308 +45,308 @@ kube-proxy [flags] - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/content/en/docs/reference/command-line-tools-reference/kube-scheduler.md b/content/en/docs/reference/command-line-tools-reference/kube-scheduler.md index 7aa8ccf5d0..913d7eb925 100644 --- a/content/en/docs/reference/command-line-tools-reference/kube-scheduler.md +++ b/content/en/docs/reference/command-line-tools-reference/kube-scheduler.md @@ -2,8 +2,21 @@ title: kube-scheduler content_type: tool-reference weight: 30 +auto_generated: true --- + + + ## {{% heading "synopsis" %}} @@ -33,504 +46,504 @@ kube-scheduler [flags] - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + From e7e5f0c912a7cc504703e087178a39a2a645c8ea Mon Sep 17 00:00:00 2001 From: Terry Moschou Date: Wed, 10 Mar 2021 15:45:33 +1030 Subject: [PATCH 156/788] Remove some tabs on container-runtimes.md docs This simplifies the containerd installation instructions. All Linux distros will now download from Docker repos, including Ubuntu 18.04 which previously installed from Ubuntu repos. The Docker runtime instructions have also been simplified. The RHEL/CentOS specific option overlay2.override_kernel_check=true option has been removed. It seems Docker will now autodetect overlay2 support on older Linux kernels <4.0.0,>=3.10.0-514, which have back-ported overlay2 support on RHEL/CentOS 7.4+ See moby/moby#34368 --- .../container-runtimes.md | 180 ++---------------- 1 file changed, 15 insertions(+), 165 deletions(-) diff --git a/content/en/docs/setup/production-environment/container-runtimes.md b/content/en/docs/setup/production-environment/container-runtimes.md index a59ebbddaf..15f3e3a9b6 100644 --- a/content/en/docs/setup/production-environment/container-runtimes.md +++ b/content/en/docs/setup/production-environment/container-runtimes.md @@ -92,37 +92,9 @@ sudo sysctl --system Install containerd: {{< tabs name="tab-cri-containerd-installation" >}} -{{% tab name="Ubuntu 16.04" %}} +{{% tab name="Linux" %}} -1. Setup the [Docker Engine repository for Ubuntu](https://docs.docker.com/engine/install/ubuntu/#set-up-the-repository) - -2. Install containerd: - - ```shell - sudo apt-get update && sudo apt-get install -y containerd.io - ``` - -3. Configure containerd: - - ```shell - sudo mkdir -p /etc/containerd - containerd config default | sudo tee /etc/containerd/config.toml - ``` - -4. Restart containerd: - - ```shell - sudo systemctl restart containerd - ``` - -{{% /tab %}} -{{% tab name="Ubuntu 18.04/20.04" %}} - -1. Install containerd: - - ```shell - sudo apt-get update && sudo apt-get install -y containerd - ``` +1. Install the `containerd.io` package from the official Docker repositories. Instructions for setting up the Docker repository for your respective Linux distribution and installing the `containerd.io` package can be found at [Install Docker Engine](https://docs.docker.com/engine/install/#server). 2. Configure containerd: @@ -137,60 +109,10 @@ Install containerd: sudo systemctl restart containerd ``` -{{% /tab %}} -{{% tab name="Debian 9+" %}} - -1. Setup the [Docker Engine repository for Debian](https://docs.docker.com/engine/install/debian/#set-up-the-repository) - -2. Install containerd: - - ```shell - sudo apt-get update && sudo apt-get install -y containerd.io - ``` - -3. Configure containerd: - - ```shell - sudo mkdir -p /etc/containerd - containerd config default | sudo tee /etc/containerd/config.toml - ``` - -4. Restart containerd: - - ```shell - sudo systemctl restart containerd - ``` - -{{% /tab %}} -{{% tab name="CentOS/RHEL 7.4+" %}} - -1. Setup the [Docker Engine repository for CentOS/RHEL](https://docs.docker.com/engine/install/centos/#set-up-the-repository) - -2. Install containerd: - - ```shell - sudo yum update -y && sudo yum install -y containerd.io - ``` - -3. Configure containerd: - - ```shell - sudo mkdir -p /etc/containerd - containerd config default | sudo tee /etc/containerd/config.toml - ``` - -4. Restart containerd: - - ```shell - sudo systemctl restart containerd - ``` - {{% /tab %}} {{% tab name="Windows (PowerShell)" %}} -
    Start a Powershell session, set `$Version` to the desired version (ex: `$Version=1.4.3`), and then run the following commands: -
    1. Download containerd: @@ -425,28 +347,9 @@ in sync. ### Docker -On each of your nodes, install Docker CE. +1. On each of your nodes, install the Docker for your Linux distribution as per [Install Docker Engine](https://docs.docker.com/engine/install/#server) -The Kubernetes release notes list which versions of Docker are compatible -with that version of Kubernetes. - -Use the following commands to install Docker on your system: - -{{< tabs name="tab-cri-docker-installation" >}} -{{% tab name="Ubuntu 16.04+" %}} - -1. Setup the [Docker Engine repository for Ubuntu](https://docs.docker.com/engine/install/ubuntu/#set-up-the-repository) - -2. Install Docker CE: - - ```shell - sudo apt-get update && sudo apt-get install -y \ - containerd.io=1.2.13-2 \ - docker-ce=5:19.03.11~3-0~ubuntu-$(lsb_release -cs) \ - docker-ce-cli=5:19.03.11~3-0~ubuntu-$(lsb_release -cs) - ``` - -3. Set up the Docker daemon: +2. Configure the Docker daemon, in particular to use systemd for the management of the container’s cgroups. ```shell sudo mkdir /etc/docker @@ -462,73 +365,20 @@ Use the following commands to install Docker on your system: EOF ``` -4. Create `/etc/systemd/system/docker.service.d`: - - ```shell - sudo mkdir -p /etc/systemd/system/docker.service.d - ``` - -5. Restart Docker: + {{< note >}} + `overlay2` is the preferred storage driver for systems running Linux kernel version 4.0 or higher, or RHEL or CentOS using version 3.10.0-514 and above. + {{< /note >}} + +3. Restart Docker and enable on boot: ```shell + sudo systemctl enable docker sudo systemctl daemon-reload sudo systemctl restart docker ``` -{{% /tab %}} -{{% tab name="CentOS/RHEL 7.4+" %}} - -1. Setup the [Docker Engine repository for CentOS/RHEL](https://docs.docker.com/engine/install/centos/#set-up-the-repository) - -2. Install Docker CE: - - ```shell - sudo yum update -y && sudo yum install -y \ - containerd.io-1.2.13 \ - docker-ce-19.03.11 \ - docker-ce-cli-19.03.11 - ``` - -3. Set up the Docker daemon: - - ```shell - sudo mkdir /etc/docker - cat <}} - -If you want the `docker` service to start on boot, run the following command: - -```shell -sudo systemctl enable docker -``` - -Refer to the [official Docker installation guides](https://docs.docker.com/engine/installation/) -for more information. +{{< note >}} +For more information refer to + - [Configure the Docker daemon](https://docs.docker.com/config/daemon/) + - [Control Docker with systemd](https://docs.docker.com/config/daemon/systemd/) +{{< /note >}} From a9254a983674a905c854f10c0d69975cdb02b967 Mon Sep 17 00:00:00 2001 From: Yuiko Mouri Date: Wed, 10 Mar 2021 15:01:58 +0900 Subject: [PATCH 157/788] Replace redirect links of labels-annotations-taints --- content/en/docs/setup/best-practices/multiple-zones.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/setup/best-practices/multiple-zones.md b/content/en/docs/setup/best-practices/multiple-zones.md index 107ee2d0f7..8f51a3bd06 100644 --- a/content/en/docs/setup/best-practices/multiple-zones.md +++ b/content/en/docs/setup/best-practices/multiple-zones.md @@ -59,7 +59,7 @@ When nodes start up, the kubelet on each node automatically adds {{< glossary_tooltip text="labels" term_id="label" >}} to the Node object that represents that specific kubelet in the Kubernetes API. These labels can include -[zone information](/docs/reference/kubernetes-api/labels-annotations-taints/#topologykubernetesiozone). +[zone information](/docs/reference/labels-annotations-taints/#topologykubernetesiozone). If your cluster spans multiple zones or regions, you can use node labels in conjunction with From dc508bd396da844a697b87dd074f2812b40071b4 Mon Sep 17 00:00:00 2001 From: illidan Date: Wed, 10 Mar 2021 14:58:24 +0800 Subject: [PATCH 158/788] Update connect-applications-service.md There is an extra space before the field 'type', so to create a secret failed. The message is "error: error parsing nginxsecret.yaml: error converting YAML to JSON: yaml: line 5: did not find expected key". --- .../services-networking/connect-applications-service.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/docs/concepts/services-networking/connect-applications-service.md b/content/zh/docs/concepts/services-networking/connect-applications-service.md index 236c03f910..afa2a2ca20 100644 --- a/content/zh/docs/concepts/services-networking/connect-applications-service.md +++ b/content/zh/docs/concepts/services-networking/connect-applications-service.md @@ -438,7 +438,7 @@ kind: "Secret" metadata: name: "nginxsecret" namespace: "default" - type: kubernetes.io/tls +type: kubernetes.io/tls data: tls.crt: "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURIekNDQWdlZ0F3SUJBZ0lKQUp5M3lQK0pzMlpJTUEwR0NTcUdTSWIzRFFFQkJRVUFNQ1l4RVRBUEJnTlYKQkFNVENHNW5hVzU0YzNaak1SRXdEd1lEVlFRS0V3aHVaMmx1ZUhOMll6QWVGdzB4TnpFd01qWXdOekEzTVRKYQpGdzB4T0RFd01qWXdOekEzTVRKYU1DWXhFVEFQQmdOVkJBTVRDRzVuYVc1NGMzWmpNUkV3RHdZRFZRUUtFd2h1CloybHVlSE4yWXpDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBSjFxSU1SOVdWM0IKMlZIQlRMRmtobDRONXljMEJxYUhIQktMSnJMcy8vdzZhU3hRS29GbHlJSU94NGUrMlN5ajBFcndCLzlYTnBwbQppeW1CL3JkRldkOXg5UWhBQUxCZkVaTmNiV3NsTVFVcnhBZW50VWt1dk1vLzgvMHRpbGhjc3paenJEYVJ4NEo5Ci82UVRtVVI3a0ZTWUpOWTVQZkR3cGc3dlVvaDZmZ1Voam92VG42eHNVR0M2QURVODBpNXFlZWhNeVI1N2lmU2YKNHZpaXdIY3hnL3lZR1JBRS9mRTRqakxCdmdONjc2SU90S01rZXV3R0ljNDFhd05tNnNTSzRqYUNGeGpYSnZaZQp2by9kTlEybHhHWCtKT2l3SEhXbXNhdGp4WTRaNVk3R1ZoK0QrWnYvcW1mMFgvbVY0Rmo1NzV3ajFMWVBocWtsCmdhSXZYRyt4U1FVQ0F3RUFBYU5RTUU0d0hRWURWUjBPQkJZRUZPNG9OWkI3YXc1OUlsYkROMzhIYkduYnhFVjcKTUI4R0ExVWRJd1FZTUJhQUZPNG9OWkI3YXc1OUlsYkROMzhIYkduYnhFVjdNQXdHQTFVZEV3UUZNQU1CQWY4dwpEUVlKS29aSWh2Y05BUUVGQlFBRGdnRUJBRVhTMW9FU0lFaXdyMDhWcVA0K2NwTHI3TW5FMTducDBvMm14alFvCjRGb0RvRjdRZnZqeE04Tzd2TjB0clcxb2pGSW0vWDE4ZnZaL3k4ZzVaWG40Vm8zc3hKVmRBcStNZC9jTStzUGEKNmJjTkNUekZqeFpUV0UrKzE5NS9zb2dmOUZ3VDVDK3U2Q3B5N0M3MTZvUXRUakViV05VdEt4cXI0Nk1OZWNCMApwRFhWZmdWQTRadkR4NFo3S2RiZDY5eXM3OVFHYmg5ZW1PZ05NZFlsSUswSGt0ejF5WU4vbVpmK3FqTkJqbWZjCkNnMnlwbGQ0Wi8rUUNQZjl3SkoybFIrY2FnT0R4elBWcGxNSEcybzgvTHFDdnh6elZPUDUxeXdLZEtxaUMwSVEKQ0I5T2wwWW5scE9UNEh1b2hSUzBPOStlMm9KdFZsNUIyczRpbDlhZ3RTVXFxUlU9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" tls.key: "LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRQ2RhaURFZlZsZHdkbFIKd1V5eFpJWmVEZWNuTkFhbWh4d1NpeWF5N1AvOE9ta3NVQ3FCWmNpQ0RzZUh2dGtzbzlCSzhBZi9WemFhWm9zcApnZjYzUlZuZmNmVUlRQUN3WHhHVFhHMXJKVEVGSzhRSHA3VkpMcnpLUC9QOUxZcFlYTE0yYzZ3MmtjZUNmZitrCkU1bEVlNUJVbUNUV09UM3c4S1lPNzFLSWVuNEZJWTZMMDUrc2JGQmd1Z0ExUE5JdWFubm9UTWtlZTRuMG4rTDQKb3NCM01ZUDhtQmtRQlAzeE9JNHl3YjREZXUraURyU2pKSHJzQmlIT05Xc0RadXJFaXVJMmdoY1kxeWIyWHI2UAozVFVOcGNSbC9pVG9zQngxcHJHclk4V09HZVdPeGxZZmcvbWIvNnBuOUYvNWxlQlkrZStjSTlTMkQ0YXBKWUdpCkwxeHZzVWtGQWdNQkFBRUNnZ0VBZFhCK0xkbk8ySElOTGo5bWRsb25IUGlHWWVzZ294RGQwci9hQ1Zkank4dlEKTjIwL3FQWkUxek1yall6Ry9kVGhTMmMwc0QxaTBXSjdwR1lGb0xtdXlWTjltY0FXUTM5SjM0VHZaU2FFSWZWNgo5TE1jUHhNTmFsNjRLMFRVbUFQZytGam9QSFlhUUxLOERLOUtnNXNrSE5pOWNzMlY5ckd6VWlVZWtBL0RBUlBTClI3L2ZjUFBacDRuRWVBZmI3WTk1R1llb1p5V21SU3VKdlNyblBESGtUdW1vVlVWdkxMRHRzaG9reUxiTWVtN3oKMmJzVmpwSW1GTHJqbGtmQXlpNHg0WjJrV3YyMFRrdWtsZU1jaVlMbjk4QWxiRi9DSmRLM3QraTRoMTVlR2ZQegpoTnh3bk9QdlVTaDR2Q0o3c2Q5TmtEUGJvS2JneVVHOXBYamZhRGR2UVFLQmdRRFFLM01nUkhkQ1pKNVFqZWFKClFGdXF4cHdnNzhZTjQyL1NwenlUYmtGcVFoQWtyczJxWGx1MDZBRzhrZzIzQkswaHkzaE9zSGgxcXRVK3NHZVAKOWRERHBsUWV0ODZsY2FlR3hoc0V0L1R6cEdtNGFKSm5oNzVVaTVGZk9QTDhPTm1FZ3MxMVRhUldhNzZxelRyMgphRlpjQ2pWV1g0YnRSTHVwSkgrMjZnY0FhUUtCZ1FEQmxVSUUzTnNVOFBBZEYvL25sQVB5VWs1T3lDdWc3dmVyClUycXlrdXFzYnBkSi9hODViT1JhM05IVmpVM25uRGpHVHBWaE9JeXg5TEFrc2RwZEFjVmxvcG9HODhXYk9lMTAKMUdqbnkySmdDK3JVWUZiRGtpUGx1K09IYnRnOXFYcGJMSHBzUVpsMGhucDBYSFNYVm9CMUliQndnMGEyOFVadApCbFBtWmc2d1BRS0JnRHVIUVV2SDZHYTNDVUsxNFdmOFhIcFFnMU16M2VvWTBPQm5iSDRvZUZKZmcraEppSXlnCm9RN3hqWldVR3BIc3AyblRtcHErQWlSNzdyRVhsdlhtOElVU2FsbkNiRGlKY01Pc29RdFBZNS9NczJMRm5LQTQKaENmL0pWb2FtZm1nZEN0ZGtFMXNINE9MR2lJVHdEbTRpb0dWZGIwMllnbzFyb2htNUpLMUI3MkpBb0dBUW01UQpHNDhXOTVhL0w1eSt5dCsyZ3YvUHM2VnBvMjZlTzRNQ3lJazJVem9ZWE9IYnNkODJkaC8xT2sybGdHZlI2K3VuCnc1YytZUXRSTHlhQmd3MUtpbGhFZDBKTWU3cGpUSVpnQWJ0LzVPbnlDak9OVXN2aDJjS2lrQ1Z2dTZsZlBjNkQKckliT2ZIaHhxV0RZK2Q1TGN1YSt2NzJ0RkxhenJsSlBsRzlOZHhrQ2dZRUF5elIzT3UyMDNRVVV6bUlCRkwzZAp4Wm5XZ0JLSEo3TnNxcGFWb2RjL0d5aGVycjFDZzE2MmJaSjJDV2RsZkI0VEdtUjZZdmxTZEFOOFRwUWhFbUtKCnFBLzVzdHdxNWd0WGVLOVJmMWxXK29xNThRNTBxMmk1NVdUTThoSDZhTjlaMTltZ0FGdE5VdGNqQUx2dFYxdEYKWSs4WFJkSHJaRnBIWll2NWkwVW1VbGc9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K" From a82eef93bdce71ca8a0fc9fc7b306a8f608b75e9 Mon Sep 17 00:00:00 2001 From: vaibhav Date: Wed, 10 Mar 2021 13:07:09 +0530 Subject: [PATCH 159/788] Fix-hyperlink in feature gate list --- .../reference/command-line-tools-reference/feature-gates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/reference/command-line-tools-reference/feature-gates.md b/content/en/docs/reference/command-line-tools-reference/feature-gates.md index 229ac94099..daf525c781 100644 --- a/content/en/docs/reference/command-line-tools-reference/feature-gates.md +++ b/content/en/docs/reference/command-line-tools-reference/feature-gates.md @@ -729,7 +729,7 @@ Each feature gate is designed for enabling/disabling a specific feature: [ServiceTopology](/docs/concepts/services-networking/service-topology/) for more details. - `SizeMemoryBackedVolumes`: Enables kubelet support to size memory backed volumes. - See [volumes](docs/concepts/storage/volumes) for more details. + See [volumes](/docs/concepts/storage/volumes) for more details. - `SetHostnameAsFQDN`: Enable the ability of setting Fully Qualified Domain Name(FQDN) as the hostname of a pod. See [Pod's `setHostnameAsFQDN` field](/docs/concepts/services-networking/dns-pod-service/#pod-sethostnameasfqdn-field). From 58c9ddd24e1518f64036fb5d78ceff2040d79d79 Mon Sep 17 00:00:00 2001 From: pacoxu Date: Wed, 10 Mar 2021 17:09:01 +0800 Subject: [PATCH 160/788] Disable CAdvisor Json Metrics completed --- .../command-line-tools-reference/kubelet.md | 7 ------- .../command-line-tools-reference/kubelet.md | 13 ------------- 2 files changed, 20 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 fdd85997eb..7b28336293 100644 --- a/content/en/docs/reference/command-line-tools-reference/kubelet.md +++ b/content/en/docs/reference/command-line-tools-reference/kubelet.md @@ -298,13 +298,6 @@ kubelet [flags]
    - - - - - - - diff --git a/content/zh/docs/reference/command-line-tools-reference/kubelet.md b/content/zh/docs/reference/command-line-tools-reference/kubelet.md index 317a3a581e..6d7d2e757a 100644 --- a/content/zh/docs/reference/command-line-tools-reference/kubelet.md +++ b/content/zh/docs/reference/command-line-tools-reference/kubelet.md @@ -584,19 +584,6 @@ kubelet 使用此目录来保存所下载的配置,跟踪配置运行状况。 - - - - - - - From 4919d66afcb45765728d6221c23758cf045bbfc3 Mon Sep 17 00:00:00 2001 From: Andrei Artemov Date: Wed, 10 Mar 2021 15:58:10 +0200 Subject: [PATCH 161/788] Update the note ragarding matchLabels vs matchExpressions in the Deployment document --- content/en/docs/concepts/workloads/controllers/deployment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/concepts/workloads/controllers/deployment.md b/content/en/docs/concepts/workloads/controllers/deployment.md index 9ba746c2ad..0380889414 100644 --- a/content/en/docs/concepts/workloads/controllers/deployment.md +++ b/content/en/docs/concepts/workloads/controllers/deployment.md @@ -54,7 +54,7 @@ In this example: {{< 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". + 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 >}} From f7e5f7cae04b704a1095264d7213ecab6cc85cf6 Mon Sep 17 00:00:00 2001 From: Jan Safranek Date: Wed, 10 Mar 2021 17:28:01 +0100 Subject: [PATCH 162/788] CSI migration of Cinder volume plugin is on by default Document that OpenStack Cinder CSI migration is enabled by default in Kubernetes 1.21 and that corresponding CSI driver must be installed. --- content/en/docs/concepts/storage/volumes.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/content/en/docs/concepts/storage/volumes.md b/content/en/docs/concepts/storage/volumes.md index 8d84a519c0..d56ac1f99c 100644 --- a/content/en/docs/concepts/storage/volumes.md +++ b/content/en/docs/concepts/storage/volumes.md @@ -208,14 +208,16 @@ spec: #### OpenStack CSI migration -{{< feature-state for_k8s_version="v1.18" state="beta" >}} +{{< feature-state for_k8s_version="v1.21" state="beta" >}} -The `CSIMigration` feature for Cinder, when enabled, redirects 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/cinder-csi-plugin/using-cinder-csi-plugin.md) -must be installed on the cluster and the `CSIMigration` and `CSIMigrationOpenStack` -beta features must be enabled. +The `CSIMigration` feature for Cinder is enabled by default in Kubernetes 1.21. +It redirects all plugin operations from the existing in-tree plugin to the +`cinder.csi.openstack.org` Container Storage Interface (CSI) Driver. +[OpenStack Cinder CSI Driver](https://github.com/kubernetes/cloud-provider-openstack/blob/master/docs/cinder-csi-plugin/using-cinder-csi-plugin.md) +must be installed on the cluster. +The feature can be disabled by un-setting `CSIMigrationOpenStack` beta feature +gate. When disabled, in-tree Cinder volume plugin will be responsible for +all storage related tasks, as it was in the previous Kubernetes releases. ### configMap From 3dbb61e149a966ba1679dfa33b2fe70c1650a56d Mon Sep 17 00:00:00 2001 From: Arhell Date: Thu, 11 Mar 2021 00:45:36 +0200 Subject: [PATCH 163/788] [zh] fixed name spelling mistake --- .../access/certificate-signing-request/clusterrole-sign.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/examples/access/certificate-signing-request/clusterrole-sign.yaml b/content/zh/examples/access/certificate-signing-request/clusterrole-sign.yaml index 29bbc6a9cd..6d1a2f7882 100644 --- a/content/zh/examples/access/certificate-signing-request/clusterrole-sign.yaml +++ b/content/zh/examples/access/certificate-signing-request/clusterrole-sign.yaml @@ -21,7 +21,7 @@ rules: - certificates.k8s.io resources: - signers - resourceName: + resourceNames: - example.com/my-signer-name # example.com/* can be used to authorize for all signers in the 'example.com' domain verbs: - sign From 817b03624b482114ed4594b2fb902abdaa1786f8 Mon Sep 17 00:00:00 2001 From: edsoncelio Date: Wed, 10 Mar 2021 22:35:54 -0300 Subject: [PATCH 164/788] Add _index.md with upstream updated --- content/pt/docs/concepts/containers/_index.md | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 content/pt/docs/concepts/containers/_index.md diff --git a/content/pt/docs/concepts/containers/_index.md b/content/pt/docs/concepts/containers/_index.md new file mode 100644 index 0000000000..6ce26043c5 --- /dev/null +++ b/content/pt/docs/concepts/containers/_index.md @@ -0,0 +1,34 @@ +--- +title: Contêineres +weight: 40 +description: Tecnologia para empacotar aplicações com suas dependências em tempo de execução +content_type: concept +no_list: true +--- + + + +Cada contêiner executado é repetível; a padronização de ter +dependências incluídas significa que você obtém o mesmo comportamento onde quer que você execute. + +Os contêineres separam os aplicativos da infraestrutura de _host_ subjacente. +Isso torna a implantação mais fácil em diferentes ambientes de nuvem ou sistema operacional. + + + + +## Imagem de contêiner +Uma [imagem de contêiner](/docs/concepts/containers/images/) é um pacote de software pronto para executar, contendo tudo que é preciso para executar uma aplicação: +o código e o agente de execução necessário, aplicação, bibliotecas do sistema e valores padrões para qualquer configuração essencial. + +Por _design_, um contêiner é imutável: você não pode mudar o código de um contêiner que já está executando. Se você tem uma aplicação conteinerizada e quer fazer mudanças, você precisa construir uma nova imagem que inclui a mudança, e recriar o contêiner para iniciar a partir da imagem atualizada. + +## Agente de execução de contêiner + +{{< glossary_definition term_id="container-runtime" length="all" >}} + +## {{% heading "whatsnext" %}} + +* [Imagens de contêineres](/docs/concepts/containers/images/) +* [Pods](/docs/concepts/workloads/pods/) + From df56f19051cf0f8e63af2e125f6a37b3b72e9e1e Mon Sep 17 00:00:00 2001 From: CKchen0726 Date: Thu, 11 Mar 2021 11:14:48 +0800 Subject: [PATCH 165/788] fix spelling mistake in content/ja/***/user-guide-windows-containers.md --- .../windows/user-guide-windows-containers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/ja/docs/setup/production-environment/windows/user-guide-windows-containers.md b/content/ja/docs/setup/production-environment/windows/user-guide-windows-containers.md index e1a23cadfd..6f1ed4558e 100644 --- a/content/ja/docs/setup/production-environment/windows/user-guide-windows-containers.md +++ b/content/ja/docs/setup/production-environment/windows/user-guide-windows-containers.md @@ -96,7 +96,7 @@ spec: * ネットワークを介したノードとPod間通信、LinuxマスターからのPod IPのポート80に向けて`curl`して、ウェブサーバーの応答をチェックします * docker execまたはkubectl execを使用したPod間通信、Pod間(および複数のWindowsノードがある場合はホスト間)へのpingします * ServiceからPodへの通信、Linuxマスターおよび個々のPodからの仮想Service IP(`kubectl get services`で表示される)に`curl`します - * サービスディスカバリ、Kuberntesの[default DNS suffix](/ja/docs/concepts/services-networking/dns-pod-service/#services)と共にService名に`curl`します + * サービスディスカバリ、Kubernetesの[default DNS suffix](/ja/docs/concepts/services-networking/dns-pod-service/#services)と共にService名に`curl`します * Inbound connectivity, `curl` the NodePort from the Linux master or machines outside of the cluster * インバウンド接続、Linuxマスターまたはクラスター外のマシンからNodePortに`curl`します * アウトバウンド接続、kubectl execを使用したPod内からの外部IPに`curl`します From 4d989b9a673ced800149418582dba3339a65769b Mon Sep 17 00:00:00 2001 From: CKchen0726 Date: Thu, 11 Mar 2021 11:18:25 +0800 Subject: [PATCH 166/788] fix spelling mistake in ./content/zh/***/connect-applications-service.md --- .../services-networking/connect-applications-service.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/docs/concepts/services-networking/connect-applications-service.md b/content/zh/docs/concepts/services-networking/connect-applications-service.md index 236c03f910..6f04ea1194 100644 --- a/content/zh/docs/concepts/services-networking/connect-applications-service.md +++ b/content/zh/docs/concepts/services-networking/connect-applications-service.md @@ -462,7 +462,7 @@ nginxsecret kubernetes.io/tls 2 1m -现在修改 nginx 副本,启动一个使用在秘钥中的证书的 HTTPS 服务器和 Servcie,暴露端口(80 和 443): +现在修改 nginx 副本,启动一个使用在秘钥中的证书的 HTTPS 服务器和 Service,暴露端口(80 和 443): {{< codenew file="service/networking/nginx-secure-app.yaml" >}} From 22f104c6c329dca97901ec1b453da0cba6147504 Mon Sep 17 00:00:00 2001 From: luzg Date: Wed, 10 Mar 2021 11:14:58 +0800 Subject: [PATCH 167/788] [zh] translate task/install kubectl on macOS --- .../tools/included/install-kubectl-gcloud.md | 37 +++ .../tools/included/kubectl-whats-next.md | 27 ++ .../optional-kubectl-configs-bash-mac.md | 173 ++++++++++++ .../included/optional-kubectl-configs-zsh.md | 50 ++++ .../tasks/tools/included/verify-kubectl.md | 62 +++++ .../docs/tasks/tools/install-kubectl-macos.md | 263 ++++++++++++++++++ 6 files changed, 612 insertions(+) create mode 100644 content/zh/docs/tasks/tools/included/install-kubectl-gcloud.md create mode 100644 content/zh/docs/tasks/tools/included/kubectl-whats-next.md create mode 100644 content/zh/docs/tasks/tools/included/optional-kubectl-configs-bash-mac.md create mode 100644 content/zh/docs/tasks/tools/included/optional-kubectl-configs-zsh.md create mode 100644 content/zh/docs/tasks/tools/included/verify-kubectl.md create mode 100644 content/zh/docs/tasks/tools/install-kubectl-macos.md diff --git a/content/zh/docs/tasks/tools/included/install-kubectl-gcloud.md b/content/zh/docs/tasks/tools/included/install-kubectl-gcloud.md new file mode 100644 index 0000000000..e73932851d --- /dev/null +++ b/content/zh/docs/tasks/tools/included/install-kubectl-gcloud.md @@ -0,0 +1,37 @@ +--- +title: "通过 gcloud 安装 kubectl" +description: "用各个特定操作系统标签页中包含的 gcloud 指令片段安装 kubectl。" +headless: true +--- + + + +kubectl 可以作为 Google Cloud SDK 的一部分被安装。 + + +1. 安装 [Google Cloud SDK](https://cloud.google.com/sdk/)。 +1. 运行安装 `kubectl` 的命令: + + ```shell + gcloud components install kubectl + ``` + + +1. 验证一下,确保安装的是最新的版本: + + ```shell + kubectl version --client + ``` \ No newline at end of file diff --git a/content/zh/docs/tasks/tools/included/kubectl-whats-next.md b/content/zh/docs/tasks/tools/included/kubectl-whats-next.md new file mode 100644 index 0000000000..3990922e0e --- /dev/null +++ b/content/zh/docs/tasks/tools/included/kubectl-whats-next.md @@ -0,0 +1,27 @@ +--- +title: "后续内容" +description: "安装 kubectl 之后,还可以做些什么?" +headless: true +--- + + + +* [安装 Minikube](https://minikube.sigs.k8s.io/docs/start/) +* 有关创建集群的更多信息,请参阅[入门指南](/zh/docs/setup/). +* [学习如何启动并对外公开你的应用程序。](/zh/docs/tasks/access-application-cluster/service-access-application-cluster/) +* 如果你需要访问其他人创建的集群,请参阅 + [共享集群接入文档](/zh/docs/tasks/access-application-cluster/configure-access-multiple-clusters/). +* 阅读 [kubectl 参考文档](/zh/docs/reference/kubectl/kubectl/) diff --git a/content/zh/docs/tasks/tools/included/optional-kubectl-configs-bash-mac.md b/content/zh/docs/tasks/tools/included/optional-kubectl-configs-bash-mac.md new file mode 100644 index 0000000000..d92055f6a3 --- /dev/null +++ b/content/zh/docs/tasks/tools/included/optional-kubectl-configs-bash-mac.md @@ -0,0 +1,173 @@ +--- +title: "macOS 系统上的 bash 自动补全" +description: "在 macOS 上实现 Bash 自动补全的一些可选配置。" +headless: true +--- + + + +### 简介 + + +kubectl 的 Bash 补全脚本可以通过 `kubectl completion bash` 命令生成。 +在你的 shell 中导入(Sourcing)这个脚本即可启用补全功能。 + +此外,kubectl 补全脚本依赖于工具 [**bash-completion**](https://github.com/scop/bash-completion), +所以你必须先安装它。 + +{{< warning>}} + +bash-completion 有两个版本:v1 和 v2。v1 对应 Bash3.2(也是 macOS 的默认安装版本),v2 对应 Bash 4.1+。 +kubectl 的补全脚本**无法适配** bash-completion v1 和 Bash 3.2。 +必须为它配备 **bash-completion v2** 和 **Bash 4.1+**。 +有鉴于此,为了在 macOS 上使用 kubectl 补全功能,你必须要安装和使用 Bash 4.1+ +([*说明*](https://itnext.io/upgrading-bash-on-macos-7138bd1066ba))。 +后续说明假定你用的是 Bash 4.1+(也就是 Bash 4.1 或更新的版本) +{{< /warning >}} + + +### 升级 Bash + + +后续说明假定你已使用 Bash 4.1+。你可以运行以下命令检查 Bash 版本: + +```bash +echo $BASH_VERSION +``` + + +如果版本太旧,可以用 Homebrew 安装/升级: + +```bash +brew install bash +``` + + +重新加载 shell,并验证所需的版本已经生效: + +```bash +echo $BASH_VERSION $SHELL +``` + + +Homebrew 通常把它安装为 `/usr/local/bin/bash`。 + + +### 安装 bash-completion + + +{{< note >}} + +如前所述,本说明假定你使用的 Bash 版本为 4.1+,这意味着你要安装 bash-completion v2 +(不同于 Bash 3.2 和 bash-completion v1,kubectl 的补全功能在该场景下无法工作)。 +{{< /note >}} + + +你可以用命令 `type _init_completion` 测试 bash-completion v2 是否已经安装。 +如未安装,用 Homebrew 来安装它: + +```bash +brew install bash-completion@2 +``` + + +如命令的输出信息所显示的,将如下内容添加到文件 `~/.bash_profile` 中: + +```bash +export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d" +[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh" +``` + + +重新加载 shell,并用命令 `type _init_completion` 验证 bash-completion v2 已经恰当的安装。 + + +### 启用 kubectl 自动补全功能 + + +你现在需要确保在所有的 shell 环境中均已导入(sourced) kubectl 的补全脚本, +有若干种方法可以实现这一点: + +- 在文件 `~/.bash_profile` 中导入(Source)补全脚本: + + ```bash + echo 'source <(kubectl completion bash)' >>~/.bash_profile + ``` + + +- 将补全脚本添加到目录 `/usr/local/etc/bash_completion.d` 中: + + ```bash + kubectl completion bash >/usr/local/etc/bash_completion.d/kubectl + ``` + + +- 如果你为 kubectl 定义了别名,则可以扩展 shell 补全来兼容该别名: + + ```bash + echo 'alias k=kubectl' >>~/.bash_profile + echo 'complete -F __start_kubectl k' >>~/.bash_profile + ``` + + +- 如果你是用 Homebrew 安装的 kubectl([如上所述](#install-with-homebrew-on-macos)), + 那么 kubectl 补全脚本应该已经安装到目录 `/usr/local/etc/bash_completion.d/kubectl` 中了。 + 这种情况下,你什么都不需要做。 + + {{< note >}} + + 用 Hommbrew 安装的 bash-completion v2 会初始化 目录 `BASH_COMPLETION_COMPAT_DIR` 中的所有文件,这就是后两种方法能正常工作的原因。 + {{< /note >}} + + +总之,重新加载 shell 之后,kubectl 补全功能将立即生效。 diff --git a/content/zh/docs/tasks/tools/included/optional-kubectl-configs-zsh.md b/content/zh/docs/tasks/tools/included/optional-kubectl-configs-zsh.md new file mode 100644 index 0000000000..0f32593d55 --- /dev/null +++ b/content/zh/docs/tasks/tools/included/optional-kubectl-configs-zsh.md @@ -0,0 +1,50 @@ +--- +title: "zsh 自动补全" +description: "zsh 自动补全的一些可选配置" +headless: true +--- + + + +kubectl 通过命令 `kubectl completion zsh` 生成 Zsh 自动补全脚本。 +在 shell 中导入(Sourcing)该自动补全脚本,将启动 kubectl 自动补全功能。 + +为了在所有的 shell 会话中实现此功能,请将下面内容加入到文件 `~/.zshrc` 中。 + +```zsh +source <(kubectl completion zsh) +``` + + +如果你为 kubectl 定义了别名,可以扩展脚本补全,以兼容该别名。 + +```zsh +echo 'alias k=kubectl' >>~/.zshrc +echo 'complete -F __start_kubectl k' >>~/.zshrc +``` + + +重新加载 shell 后,kubectl 自动补全功能将立即生效。 + +如果你收到 `complete:13: command not found: compdef` 这样的错误提示,那请将下面内容添加到 `~/.zshrc` 文件的开头: + +```zsh +autoload -Uz compinit +compinit +``` diff --git a/content/zh/docs/tasks/tools/included/verify-kubectl.md b/content/zh/docs/tasks/tools/included/verify-kubectl.md new file mode 100644 index 0000000000..a587e26cd0 --- /dev/null +++ b/content/zh/docs/tasks/tools/included/verify-kubectl.md @@ -0,0 +1,62 @@ +--- +title: "验证 kubectl 的安装效果" +description: "如何验证 kubectl。" +headless: true +--- + + + +为了让 kubectl 能发现并访问 Kubernetes 集群,你需要一个 +[kubeconfig 文件](/docs/zh/concepts/configuration/organize-cluster-access-kubeconfig/), +该文件在 +[kube-up.sh](https://github.com/kubernetes/kubernetes/blob/master/cluster/kube-up.sh) +创建集群时,或成功部署一个 Miniube 集群时,均会自动生成。 +通常,kubectl 的配置信息存放于文件 `~/.kube/config` 中。 + +通过获取集群状态的方法,检查是否已恰当的配置了 kubectl: + +```shell +kubectl cluster-info +``` + + +如果返回一个 URL,则意味着 kubectl 成功的访问到了你的集群。 + +如果你看到如下所示的消息,则代表 kubectl 配置出了问题,或无法连接到 Kubernetes 集群。 + +``` +The connection to the server was refused - did you specify the right host or port? +(访问 被拒绝 - 你指定的主机和端口是否有误?) +``` + + +例如,如果你想在自己的笔记本上(本地)运行 Kubernetes 集群,你需要先安装一个 Minikube 这样的工具,然后再重新运行上面的命令。 + +如果命令 `kubectl cluster-info` 返回了 url,但你还不能访问集群,那可以用以下命令来检查配置是否妥当: + +```shell +kubectl cluster-info dump +``` \ No newline at end of file diff --git a/content/zh/docs/tasks/tools/install-kubectl-macos.md b/content/zh/docs/tasks/tools/install-kubectl-macos.md new file mode 100644 index 0000000000..bd5e670e86 --- /dev/null +++ b/content/zh/docs/tasks/tools/install-kubectl-macos.md @@ -0,0 +1,263 @@ +--- +title: 在 macOS 系统上安装和设置 kubectl +content_type: task +weight: 10 +card: + name: tasks + weight: 20 + title: 在 macOS 系统上安装 kubectl +--- + + +## {{% heading "prerequisites" %}} + + +kubectl 版本和集群之间的差异必须在一个小版本号之内。 +例如:v1.2 版本的客户端只能与 v1.1、v1.2 和 v1.3 版本的集群一起工作。 +用最新版本的 kubectl 有助于避免不可预见的问题。 + + +## 在 macOS 系统上安装 kubectl {#install-kubectl-on-macos} + + +在 macOS 系统上安装 kubectl 有如下方法: + +- [{{% heading "prerequisites" %}}](#{{% heading "prerequisites" %}}) +- [在 macOS 系统上安装 kubectl](#install-kubectl-on-macos) + - [用 curl 在 macOS 系统上安装 kubectl](#install-kubectl-binary-with-curl-on-macos) + - [用 Homebrew 在 macOS 系统上安装](#install-with-homebrew-on-macos) + - [用 Macports 在 macOS 上安装](#install-with-macports-on-macos) + - [作为谷歌云 SDK 的一部分,在 macOS 上安装](#install-on-macos-as-part-of-the-google-cloud-sdk) +- [验证 kubectl 配置](#verify-kubectl-configuration) +- [可选的 kubectl 配置](#optional-kubectl-configurations) + - [启用 shell 自动补全功能](#enable-shell-autocompletion) +- [{{% heading "whatsnext" %}}](#{{% heading "whatsnext" %}}) + + +### 用 curl 在 macOS 系统上安装 kubectl {#install-kubectl-binary-with-curl-on-macos} + + +1. 下载最新的发行版: + + ```bash + curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl" + ``` + + {{< note >}} + + 如果需要下载某个指定的版本,用该指定版本号替换掉命令的这个部分:`$(curl -L -s https://dl.k8s.io/release/stable.txt)`。 + 例如:要在 macOS 系统中下载 {{< param "fullversion" >}} 版本,则输入: + + ```bash + curl -LO https://dl.k8s.io/release/{{< param "fullversion" >}}/bin/darwin/amd64/kubectl + ``` + + {{< /note >}} + + +1. 验证可执行文件(可选操作) + + 下载 kubectl 的校验和文件: + + ```bash + curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl.sha256" + ``` + + + 根据校验和文件,验证 kubectl: + + ```bash + echo "$( + 验证通过时,输出如下: + + ```console + kubectl: OK + ``` + + + 验证失败时,`shasum` 将以非零值退出,并打印如下输出: + + ``` + kubectl: FAILED + shasum: WARNING: 1 computed checksum did NOT match + ``` + + {{< note >}} + + 下载的 kubectl 与校验和文件版本要相同。 + {{< /note >}} + + +1. 将 kubectl 置为可执行文件: + + ```bash + chmod +x ./kubectl + ``` + + +1. 将可执行文件 kubectl 移动到系统可寻址路径 `PATH` 内的一个位置: + + ```bash + sudo mv ./kubectl /usr/local/bin/kubectl + sudo chown root: /usr/local/bin/kubectl + ``` + + +1. 测试一下,确保你安装的是最新的版本: + + ```bash + kubectl version --client + ``` + + +### 用 Homebrew 在 macOS 系统上安装 {#install-with-homebrew-on-macos} + + +如果你是 macOS 系统,且用的是 [Homebrew](https://brew.sh/) 包管理工具, +则可以用 Homebrew 安装 kubectl。 + + +1. 运行安装命令: + + ```bash + brew install kubectl + ``` + + 或 + + ```bash + brew install kubernetes-cli + ``` + + +1. 测试一下,确保你安装的是最新的版本: + + ```bash + kubectl version --client + ``` + + +### 用 Macports 在 macOS 上安装 {#install-with-macports-on-macos} + + +如果你用的是 macOS,且用 [Macports](https://macports.org/) 包管理工具,则你可以用 Macports 安装kubectl。 + + +1. 运行安装命令: + + ```bash + sudo port selfupdate + sudo port install kubectl + ``` + + +1. 测试一下,确保你安装的是最新的版本: + + ```bash + kubectl version --client + ``` + + +### 作为谷歌云 SDK 的一部分,在 macOS 上安装 {#install-on-macos-as-part-of-the-google-cloud-sdk} + +{{< include "included/install-kubectl-gcloud.md" >}} + + +## 验证 kubectl 配置 {#verify-kubectl-configuration} + +{{< include "included/verify-kubectl.md" >}} + + +## 可选的 kubectl 配置 {#optional-kubectl-configurations} + +### 启用 shell 自动补全功能 {#enable-shell-autocompletion} + + +kubectl 为 Bash 和 Zsh 提供自动补全功能,这可以节省许多输入的麻烦。 + +下面是为 Bash 和 Zsh 设置自动补全功能的操作步骤。 + +{{< tabs name="kubectl_autocompletion" >}} +{{< tab name="Bash" include="included/optional-kubectl-configs-bash-mac.md" />}} +{{< tab name="Zsh" include="included/optional-kubectl-configs-zsh.md" />}} +{{< /tabs >}} + +## {{% heading "whatsnext" %}} + +{{< include "included/kubectl-whats-next.md" >}} \ No newline at end of file From 1ea5f5ee3168b0574cf4eac957fded24967c409d Mon Sep 17 00:00:00 2001 From: buptliuwei Date: Thu, 11 Mar 2021 11:58:00 +0800 Subject: [PATCH 168/788] fixed demo deployment create command when use `kubectl run source-ip-app --image=k8s.gcr.io/echoserver:1.4` . it will be create a pod, the output is: `pod/source-ip-app created`, but the svc will find `deployment` when use `kubectl expose deployment source-ip-app --name=clusterip --port=80 --target-port=8080` --- content/zh/docs/tutorials/services/source-ip.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/docs/tutorials/services/source-ip.md b/content/zh/docs/tutorials/services/source-ip.md index 93c4711363..f989e93c70 100644 --- a/content/zh/docs/tutorials/services/source-ip.md +++ b/content/zh/docs/tutorials/services/source-ip.md @@ -35,7 +35,7 @@ Kubernetes 集群中运行的应用通过 Service 抽象来互相查找、通信 你必须拥有一个正常工作的 Kubernetes 1.5 集群来运行此文档中的示例。该示例使用一个简单的 nginx webserver,通过一个HTTP消息头返回它接收到请求的源IP。你可以像下面这样创建它: ```console -kubectl run source-ip-app --image=k8s.gcr.io/echoserver:1.4 +kubectl create deployment source-ip-app --image=k8s.gcr.io/echoserver:1.4 ``` 输出结果为 ``` From ff2da14763cc2c9985faa0faadeb33a2d257c24c Mon Sep 17 00:00:00 2001 From: jralmaraz Date: Sun, 7 Mar 2021 18:31:32 +1100 Subject: [PATCH 169/788] Update README-pt.md - Adding OOM to troubleshooting section --- README-pt.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README-pt.md b/README-pt.md index 0992f6c045..458c1e492a 100644 --- a/README-pt.md +++ b/README-pt.md @@ -144,6 +144,15 @@ sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist Esta solução funciona tanto para o MacOS Catalina quanto para o MacOS Mojave. +### Troubleshooting for Out of Memory + +Se você executar o comando `make container-serve` e retornar o seguinte erro: +``` +make: *** [container-serve] Error 137 +``` + +Verifique a quantidade de memória disponível para o executor/runtime de container. No caso de Docker Desktop para macOS, abra o menu "Preferences..." -> "Resources..." e tente disponibilizar mais memória. + # Comunidade, discussão, contribuição e apoio Saiba mais sobre a comunidade Kubernetes SIG Docs e reuniões na [página da comunidade](http://kubernetes.io/community/). From 863aa080dcf0bb947459176cc21438a5ff49fdd6 Mon Sep 17 00:00:00 2001 From: jralmaraz Date: Wed, 10 Mar 2021 13:17:56 +1100 Subject: [PATCH 170/788] corrections for OOM --- README-pt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-pt.md b/README-pt.md index 458c1e492a..3525302e8b 100644 --- a/README-pt.md +++ b/README-pt.md @@ -151,7 +151,7 @@ Se você executar o comando `make container-serve` e retornar o seguinte erro: make: *** [container-serve] Error 137 ``` -Verifique a quantidade de memória disponível para o executor/runtime de container. No caso de Docker Desktop para macOS, abra o menu "Preferences..." -> "Resources..." e tente disponibilizar mais memória. +Verifique a quantidade de memória disponível para o agente de execução de contêiner. No caso do Docker Desktop para macOS, abra o menu "Preferences..." -> "Resources..." e tente disponibilizar mais memória. # Comunidade, discussão, contribuição e apoio From d65300986f6773d304f84943137f9b437c02058d Mon Sep 17 00:00:00 2001 From: CKchen0726 Date: Thu, 11 Mar 2021 11:11:39 +0800 Subject: [PATCH 171/788] fix spelling mistake in ./data/announcements/scheduled.yaml --- data/announcements/scheduled.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data/announcements/scheduled.yaml b/data/announcements/scheduled.yaml index 1d5b330ac4..2eec2c1777 100644 --- a/data/announcements/scheduled.yaml +++ b/data/announcements/scheduled.yaml @@ -18,7 +18,7 @@ # title: "Sample 1 announcement" # # title is optional # message: | -# Message *one*. +# Message *one*. # [Hyperlink](https://en.wikipedia.org/wiki/Hyperlink). # # message is required. You can use Markdown. # - name: Sample 2 @@ -36,7 +36,7 @@ announcements: style: "background: #3d4cb7" title: | - KubeCon + CloudNativeCon NA 2020 virtual. + KubeCon + CloudNativeCon NA 2020 virtual. message: | 4 days of incredible opportunities to collaborate, learn, and share with the entire community!
    November 17 – 20, 2020 @@ -47,7 +47,7 @@ announcements: style: "background: #3f0374" title: | - KubeCon + CloudNativeCon EU 2020 virtual. + KubeCon + CloudNativeCon EU 2020 virtual. message: | 4 days of incredible opportunities to collaborate, learn + share with the entire community!
    August 17 – 20, 2020. From e83eb6ae2b66c62aa152273fad1621b3587bc673 Mon Sep 17 00:00:00 2001 From: Marcin Maciaszczyk Date: Thu, 11 Mar 2021 13:15:15 +0100 Subject: [PATCH 172/788] Restore images in Kubernetes Dashboard blog post --- .../along-the-way-ui.png | Bin 193956 -> 185770 bytes .../current-ui.png | Bin 656592 -> 156166 bytes .../first-ui.png | Bin 60664 -> 44374 bytes .../index.md | 5 +++++ 4 files changed, 5 insertions(+) diff --git a/content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/along-the-way-ui.png b/content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/along-the-way-ui.png index c105d47ae42f4addd5d49bfcda07d96bf86fa6e2..e83656a624b22db66ef9f3c196f112583ad474d3 100644 GIT binary patch literal 185770 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 ARR910 literal 193956 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%0ATYG>EH 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

    AyRhMkX;n-16gKk_-N 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 literal 60664 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 diff --git a/content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/index.md b/content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/index.md index ffa029a73f..345394f809 100644 --- a/content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/index.md +++ b/content/en/blog/_posts/2021-03-09-The-Evolution-of-Kubernetes-Dashboard/index.md @@ -15,6 +15,11 @@ The initial idea behind the Kubernetes Dashboard project was to provide a web in The very [first commit](https://github.com/kubernetes/dashboard/commit/5861187fa807ac1cc2d9b2ac786afeced065076c) to the Kubernetes Dashboard was made by Filip Grządkowski from Google on 16th October 2015 – just a few months from the initial commit to the Kubernetes repository. Our initial commits go back to November 2015 ([Sebastian committed on 16 November 2015](https://github.com/kubernetes/dashboard/commit/09e65b6bb08c49b926253de3621a73da05e400fd); [Marcin committed on 23 November 2015](https://github.com/kubernetes/dashboard/commit/1da4b1c25ef040818072c734f71333f9b4733f55)). Since that time, we’ve become regular contributors to the project. For the next two years, we worked closely with the Googlers, eventually becoming main project maintainers ourselves. +{{< figure src="first-ui.png" caption="The First Version of the User Interface" >}} + +{{< figure src="along-the-way-ui.png" caption="Prototype of the New User Interface" >}} + +{{< figure src="current-ui.png" caption="The Current User Interface" >}} As you can see, the initial look and feel of the project were completely different from the current one. We have changed the design multiple times. The same has happened with the code itself. From d13a76989f5567204fbcc4ce8ea8418d4006170e Mon Sep 17 00:00:00 2001 From: "Edson (aka tuxpilgrim)" Date: Thu, 11 Mar 2021 10:15:46 -0300 Subject: [PATCH 173/788] Small fixes * Remove reviewers * Add suggestions by code review --- .../docs/concepts/containers/container-environment.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/content/pt/docs/concepts/containers/container-environment.md b/content/pt/docs/concepts/containers/container-environment.md index 8670f0fdc4..af28e2dd3f 100644 --- a/content/pt/docs/concepts/containers/container-environment.md +++ b/content/pt/docs/concepts/containers/container-environment.md @@ -1,7 +1,4 @@ --- -reviewers: - - femrtnz - - jcjesus title: Ambiente de Contêiner content_type: concept weight: 20 @@ -28,14 +25,14 @@ O ambiente de contêiner do Kubernetes fornece recursos importantes para contêi O _hostname_ de um contêiner é o nome do Pod em que o contêiner está executando. Isso é disponibilizado através do comando `hostname` ou da função [`gethostname`](https://man7.org/linux/man-pages/man2/gethostname.2.html) chamada na libc. -O nome do Pod e o Namespace são disponibilizados como variáveis de ambiente através do [downward API](/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/). +O nome do Pod e o Namespace são expostos como variáveis de ambiente através de um mecanismo chamado [downward API](/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/). Variáveis de ambiente definidas pelo usuário a partir da definição do Pod também são disponíveis para o contêiner, assim como qualquer variável de ambiente especificada estáticamente na imagem Docker. ### Informação do cluster -Uma lista de todos os serviços que estão executando quando um contêiner é criado é disponibilizada para o contêiner como variáveis de ambiente. -Essas variáveis de ambiente correspondem a sintaxe dos links Docker. +Uma lista de todos os serviços que estão executando quando um contêiner foi criado é disponibilizada para o contêiner como variáveis de ambiente. +Essas variáveis de ambiente são compatíveis com a funcionalidade _docker link_ do Docker. Para um serviço nomeado *foo* que mapeia para um contêiner nomeado *bar*, as seguintes variáveis são definidas: @@ -52,7 +49,7 @@ se possuírem [DNS addon](https://releases.k8s.io/{{< param "githubbranch" >}}/c ## {{% heading "whatsnext" %}} -* Aprenda mais sobre [container lifecycle hooks](/docs/concepts/containers/container-lifecycle-hooks/). +* Aprenda mais sobre [hooks de ciclo de vida do contêiner](/docs/concepts/containers/container-lifecycle-hooks/). * Obtenha experiência prática [anexando manipuladores a eventos de ciclo de vida do contêiner](/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/). From 9517a9ab0117e18015bfc07e60398977e3cf3f02 Mon Sep 17 00:00:00 2001 From: Jason Gilmore Date: Thu, 11 Mar 2021 11:22:49 -0500 Subject: [PATCH 174/788] Corrected port designation in get service output Port 6379 was errantly identified as the mongo service port however mongo-service.yaml defines port 27017. I've updated the service command output to reflect that. --- content/en/docs/tutorials/stateless-application/guestbook.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/tutorials/stateless-application/guestbook.md b/content/en/docs/tutorials/stateless-application/guestbook.md index 0a84483716..36772253f6 100644 --- a/content/en/docs/tutorials/stateless-application/guestbook.md +++ b/content/en/docs/tutorials/stateless-application/guestbook.md @@ -104,7 +104,7 @@ kubectl apply -f ./content/en/examples/application/guestbook/mongo-service.yaml ```shell NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.0.0.1 443/TCP 1m - mongo ClusterIP 10.0.0.151 6379/TCP 8s + mongo ClusterIP 10.0.0.151 27017/TCP 8s ``` {{< note >}} From 2df5a5226b3ea44e3032e6e4e0ff63760eab20ba Mon Sep 17 00:00:00 2001 From: Enyinna Ochulor Date: Tue, 9 Mar 2021 01:05:56 -0800 Subject: [PATCH 175/788] Remove Docker Version Pinning This commit fixes the packages not found error during Docker installation. The packages containerd.io 1.2.13-2, docker-ce 19.03.11, and docker-cs-cli 19.03.11 are currently not in Ubuntu 20.10. This commit instead points users to validated versions of Docker. fixes https://github.com/kubernetes/kubernetes/issues/99831 Signed-off-by: Enyinna Ochulor --- .../en/docs/setup/production-environment/container-runtimes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/setup/production-environment/container-runtimes.md b/content/en/docs/setup/production-environment/container-runtimes.md index 15f3e3a9b6..9875ee8fd9 100644 --- a/content/en/docs/setup/production-environment/container-runtimes.md +++ b/content/en/docs/setup/production-environment/container-runtimes.md @@ -347,7 +347,7 @@ in sync. ### Docker -1. On each of your nodes, install the Docker for your Linux distribution as per [Install Docker Engine](https://docs.docker.com/engine/install/#server) +1. On each of your nodes, install the Docker for your Linux distribution as per [Install Docker Engine](https://docs.docker.com/engine/install/#server). You can find the latest validated version of Docker in this [dependencies](https://git.k8s.io/kubernetes/build/dependencies.yaml) file. 2. Configure the Docker daemon, in particular to use systemd for the management of the container’s cgroups. From 3ae3c7c7e7c1b6740869cc11702fff66919d6302 Mon Sep 17 00:00:00 2001 From: Federico Gallo Date: Thu, 11 Mar 2021 18:18:18 -0300 Subject: [PATCH 176/788] [es] Add content/es/docs/concepts/policy/limit-range.md (#26816) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * README.md Added description/suggestion to install git submodules. Created _index.md for es/docs/concept/policy. Created limit-range.md, content-type:concept for es/docs/concepts/policy * Changes to the README-es.md file discarded to apply a separate commit for it * Fast fix, missed word * Update content/es/docs/concepts/policy/limit-range.md Suggestion, Remove "en" (fix). Personal note: I'm not sure if the suggested change makes clear that the system administrator can force the users to follow specifications with new politics.. Not always the user have control on the cluster Co-authored-by: Rael Garcia * Update content/es/docs/concepts/policy/limit-range.md Co-authored-by: Rael Garcia * Update content/es/docs/concepts/policy/limit-range.md lgtm Co-authored-by: Rael Garcia * Update content/es/docs/concepts/policy/limit-range.md Nice Co-authored-by: Rael Garcia * Update content/es/docs/concepts/policy/limit-range.md Co-authored-by: Rael Garcia * Update content/es/docs/concepts/policy/limit-range.md look at that trained eye! Good job thnaks Co-authored-by: Rael Garcia * Update content/es/docs/concepts/policy/limit-range.md lgtm Co-authored-by: Rael Garcia * Update content/es/docs/concepts/policy/limit-range.md Not sure about the translation, it sound better but it should be clear with terminology. A pod or container request resources it's not a requirement. But the same time we have [this definition](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/)) "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value." Co-authored-by: Rael Garcia * Update content/es/docs/concepts/policy/limit-range.md Co-authored-by: Rael Garcia * Update content/es/docs/concepts/policy/limit-range.md Lgtm Co-authored-by: Rael Garcia * Suggested change discarded, reason: Contenedores is not defined * Sorry my bad, Contenedores definition was there but as a singular noun not plural. Fiexed (line 51).. as well as pods (line 53 * Apply suggestions from code review Wrong button last time. Added suggestions (as single commit) Co-authored-by: Rael Garcia Co-authored-by: Victor Morales * · Added: description/overview, file: content/es/docs/concepts/policy/_index.md · Added: description, file: content/es/docs/concepts/policy/limit-range.md · Midified: structure and dreafting, file: content/es/docs/concepts/policy/limit-range.md · Added: term to glossary (es), file: content/es/docs/reference/glossary/limitrange.md * Added Container word I deleted earlier today, lines 25,26,27. Unnecessary repeated tooltip were removed allowing only once possible new concept per paragraph. Too many tooltip * Fixed weight property commited by mistake previously. * Added Suggested change manually * Fixed Last suggested change * All right I found the suggested change. Done * Update content/es/docs/concepts/policy/limit-range.md Co-authored-by: Rael Garcia * Update content/es/docs/concepts/policy/limit-range.md Co-authored-by: Rael Garcia * Replaced occurrences of "Peticiones" by "Solicitudes" as it was suggested previously for line 29 Co-authored-by: Rael Garcia Co-authored-by: Victor Morales --- content/es/docs/concepts/policy/_index.md | 6 +- .../es/docs/concepts/policy/limit-range.md | 70 +++++++++++++++++++ .../es/docs/reference/glossary/limitrange.md | 23 ++++++ 3 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 content/es/docs/concepts/policy/limit-range.md create mode 100755 content/es/docs/reference/glossary/limitrange.md diff --git a/content/es/docs/concepts/policy/_index.md b/content/es/docs/concepts/policy/_index.md index 3182c94f7d..d5ebfed4f5 100755 --- a/content/es/docs/concepts/policy/_index.md +++ b/content/es/docs/concepts/policy/_index.md @@ -1,4 +1,6 @@ --- -title: "Políticas" +title: Políticas weight: 90 ---- \ No newline at end of file +--- + +La sección de Políticas describe las diferentes políticas configurables que se aplican a grupos de recursos: diff --git a/content/es/docs/concepts/policy/limit-range.md b/content/es/docs/concepts/policy/limit-range.md new file mode 100644 index 0000000000..22d4c74f51 --- /dev/null +++ b/content/es/docs/concepts/policy/limit-range.md @@ -0,0 +1,70 @@ +--- +reviewers: +- raelga +title: Rangos de límites (Limit Ranges) +description: > + Aplica límites de recursos a un Namespace para restringir y garantizar la asignación y consumo de recursos informáticos. +content_type: concept +weight: 10 +--- + + + +### Contexto + +Por defecto, los contenedores se ejecutan sin restricciones sobre los [recursos informáticos disponibles en un clúster de Kubernetes](/docs/concepts/configuration/manage-resources-containers/). +Si el {{< glossary_tooltip text="Nodo" term_id="node" >}} dispone de los recursos informáticos, un {{< glossary_tooltip text="Pod" term_id="pod" >}} o sus {{< glossary_tooltip text="Contenedores" term_id="container" >}} tienen permitido consumir por encima de la cuota solicitada si no superan el límite establecido en su especificación. +Existe la preocupación de que un Pod o Contenedor pueda monopolizar todos los recursos disponibles. + +### Utilidad + +Aplicando restricciones de asignación de recursos, los administradores de clústeres se aseguran del cumplimiento del consumo de recursos por espacio de nombre ({{< glossary_tooltip text="Namespace" term_id="namespace" >}}). + +Un **{{< glossary_tooltip text="LimitRange" term_id="limitrange" >}}** es la política que permite: + +- Imponer restricciones de requisitos de recursos a {{< glossary_tooltip text="Pods" term_id="pod" >}} o {{< glossary_tooltip text="Contenedores" term_id="container" >}} por Namespace. +- Imponer las limitaciones de recursos mínimas/máximas para Pods o Contenedores dentro de un Namespace. +- Especificar requisitos y límites de recursos predeterminados para Pods o Contenedores de un Namespace. +- Imponer una relación de proporción entre los requisitos y el límite de un recurso. +- Imponer el cumplimiento de las demandas de almacenamiento mínimo/máximo para {{< glossary_tooltip text="Solicitudes de Volúmenes Persistentes" term_id="persistent-volume-claim" >}}. + +### Habilitar el LimitRange + +La compatibilidad con LimitRange está habilitada por defecto en Kubernetes desde la versión 1.10. + +Para que un LimitRange se active en un {{< glossary_tooltip text="Namespace" term_id="namespace" >}} en particular, el LimitRange debe definirse con el Namespace, o aplicarse a éste. + +El nombre de recurso de un objeto LimitRange debe ser un +[nombre de subdominio DNS](/docs/concepts/overview/working-with-objects/names#dns-subdomain-names) válido. + +### Aplicando LimitRanges + +- El administrador crea un LimitRange en un {{< glossary_tooltip text="Namespace" term_id="namespace" >}}. +- Los usuarios crean recursos como {{< glossary_tooltip text="Pods" term_id="pod" >}}, {{< glossary_tooltip text="Contenedores" term_id="container" >}} o {{< glossary_tooltip text="Solicitudes de Volúmenes Persistentes" term_id="persistent-volume-claim" >}} en el Namespace. +- El controlador de admisión `LimitRanger` aplicará valores predeterminados y límites, para todos los Pods o Contenedores que no establezcan requisitos de recursos informáticos. Y realizará un seguimiento del uso para garantizar que no excedan el mínimo, el máximo, y la proporción de ningún LimitRange definido en el Namespace. +- Si al crear o actualizar un recurso del ejemplo (Pods, Contenedores, {{< glossary_tooltip text="Solicitudes de Volúmenes Persistentes" term_id="persistent-volume-claim" >}}) se viola una restricción al LimitRange, la solicitud al servidor API fallará con un código de estado HTTP "403 FORBIDDEN" y un mensaje que explica la restricción que se ha violado. +- En caso de que en se active un LimitRange para recursos de cómputos como `cpu` y `memory`, los usuarios deberán especificar los requisitos y/o límites de recursos a dichos valores. De lo contrario, el sistema puede rechazar la creación del Pod. +- Las validaciones de LimitRange ocurren solo en la etapa de Admisión de Pod, no en Pods que ya se han iniciado (Running {{< glossary_tooltip text="Pods" term_id="pod" >}}). + +Algunos ejemplos de políticas que se pueden crear utilizando rangos de límites son: + +- En un clúster de 2 nodos con una capacidad de 8 GiB de RAM y 16 núcleos, podría restringirse los {{< glossary_tooltip text="Pods" term_id="pod" >}} en un {{< glossary_tooltip text="Namespace" term_id="namespace" >}} a requerir `100m` de CPU con un límite máximo de `500m` para CPU y requerir `200Mi` de memoria con un límite máximo de `600Mi` de memoria. +- Definir el valor por defecto de límite y requisitos de CPU a `150m` y el valor por defecto de requisito de memoria a `300Mi` {{< glossary_tooltip text="Contenedores" term_id="container" >}} que se iniciaron sin requisitos de CPU y memoria en sus especificaciones. + +En el caso de que los límites totales del {{< glossary_tooltip text="Namespace" term_id="namespace" >}} sean menores que la suma de los límites de los {{< glossary_tooltip text="Pods" term_id="pod" >}}, +puede haber contienda por los recursos. En este caso, los contenedores o pods no seran creados. + +Ni la contención ni los cambios en un LimitRange afectarán a los recursos ya creados. + +## {{% heading "whatsnext" %}} + +Consulte el [documento de diseño del LimitRanger](https://git.k8s.io/community/contributors/design-proposals/resource-management/admission_control_limit_range.md) para más información. + +Los siguientes ejemplos utilizan límites y están pendientes de su traducción: + +- [how to configure minimum and maximum CPU constraints per namespace](/docs/tasks/administer-cluster/manage-resources/cpu-constraint-namespace/). +- [how to configure minimum and maximum Memory constraints per namespace](/docs/tasks/administer-cluster/manage-resources/memory-constraint-namespace/). +- [how to configure default CPU Requests and Limits per namespace](/docs/tasks/administer-cluster/manage-resources/cpu-default-namespace/). +- [how to configure default Memory Requests and Limits per namespace](/docs/tasks/administer-cluster/manage-resources/memory-default-namespace/). +- [how to configure minimum and maximum Storage consumption per namespace](/docs/tasks/administer-cluster/limit-storage-consumption/#limitrange-to-limit-requests-for-storage). +- [a detailed example on configuring quota per namespace](/docs/tasks/administer-cluster/manage-resources/quota-memory-cpu-namespace/). diff --git a/content/es/docs/reference/glossary/limitrange.md b/content/es/docs/reference/glossary/limitrange.md new file mode 100755 index 0000000000..9311ddc557 --- /dev/null +++ b/content/es/docs/reference/glossary/limitrange.md @@ -0,0 +1,23 @@ +--- +title: LimitRange +id: limitrange +date: 2019-04-15 +full_link: /docs/concepts/policy/limit-range/ +short_description: > + Proporciona restricciones para limitar el consumo de recursos por Contenedores o Pods en un espacio de nombres + +aka: +tags: + - core-object + - fundamental + - architecture +related: + - pod + - container +--- + +Proporciona restricciones para limitar el consumo de recursos por {{< glossary_tooltip text="Contenedores" term_id="container" >}} o {{< glossary_tooltip text="Pods" term_id="pod" >}} en un espacio de nombres ({{< glossary_tooltip text="Namespace" term_id="namespace" >}}) + + + +LimitRange limita la cantidad de objetos que se pueden crear por su tipo (vease {{< glossary_tooltip text="Workloads" term_id="workload" >}}), así como la cantidad de recursos informáticos que pueden ser requeridos/consumidos por {{< glossary_tooltip text="Pods" term_id="pod" >}} individuales en un espacio de nombres. From 3c204eddf93b0632a2d144aedcbc1bdca3a6eef8 Mon Sep 17 00:00:00 2001 From: Kenichi Omichi Date: Thu, 11 Mar 2021 23:53:58 +0000 Subject: [PATCH 177/788] id: Replace redirect links of kubeadm /docs/reference/setup-tools/kubeadm/kubeadm/ is redirected to /docs/reference/setup-tools/kubeadm/ This replaces the redirect links of kubeadm with the direct links. --- .../docs/concepts/cluster-administration/cloud-providers.md | 4 ++-- .../tools/kubeadm/create-cluster-kubeadm.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/content/id/docs/concepts/cluster-administration/cloud-providers.md b/content/id/docs/concepts/cluster-administration/cloud-providers.md index 9a32af1eb8..4eb6a474b8 100644 --- a/content/id/docs/concepts/cluster-administration/cloud-providers.md +++ b/content/id/docs/concepts/cluster-administration/cloud-providers.md @@ -11,7 +11,7 @@ Laman ini akan menjelaskan bagaimana cara mengelola Kubernetes yang berjalan pad ### Kubeadm -[Kubeadm](/docs/reference/setup-tools/kubeadm/kubeadm/) merupakan salah satu cara yang banyak digunakan untuk membuat klaster Kubernetes. +[Kubeadm](/docs/reference/setup-tools/kubeadm/) merupakan salah satu cara yang banyak digunakan untuk membuat klaster Kubernetes. Kubeadm memiliki beragam opsi untuk mengatur konfigurasi spesifik untuk penyedia layanan cloud. Salah satu contoh yang biasa digunakan pada penyedia cloud *in-tree* yang dapat diatur dengan kubeadm adalah sebagai berikut: ```yaml @@ -347,4 +347,4 @@ Penyedia layanan IBM Cloud Kubernetes Service memanfaatkan Kubernetes-native *pe ### Nama Node Penyedia layanan cloud Baidu menggunakan alamat IP privat dari *node* (yang ditentukan oleh kubelet atau menggunakan `--hostname-override`) sebagai nama dari objek Kubernetes Node. -Perlu diperhatikan bahwa nama Kubernetes Node harus sesuai dengan alamat IP privat dari Baidu VM. \ No newline at end of file +Perlu diperhatikan bahwa nama Kubernetes Node harus sesuai dengan alamat IP privat dari Baidu VM. diff --git a/content/id/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm.md b/content/id/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm.md index 8a345296a3..6bbf23b53e 100644 --- a/content/id/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm.md +++ b/content/id/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm.md @@ -134,7 +134,7 @@ tidak didukung oleh kubeadm. ### Informasi lebih lanjut -Untuk informasi lebih lanjut mengenai argumen-argumen `kubeadm init`, lihat [panduan referensi kubeadm](/docs/reference/setup-tools/kubeadm/kubeadm/). +Untuk informasi lebih lanjut mengenai argumen-argumen `kubeadm init`, lihat [panduan referensi kubeadm](/docs/reference/setup-tools/kubeadm/). Untuk daftar pengaturan konfigurasi yang lengkap, lihat [dokumentasi berkas konfigurasi](/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file). @@ -569,7 +569,7 @@ opsinya. * Pastikan klaster berjalan dengan benar menggunakan [Sonobuoy](https://github.com/heptio/sonobuoy) * Lihat [Memperbaharui klaster kubeadm](/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/) untuk detail mengenai pembaruan klaster menggunakan `kubeadm`. -* Pelajari penggunaan `kubeadm` lebih lanjut pada [dokumentasi referensi kubeadm](/docs/reference/setup-tools/kubeadm/kubeadm) +* Pelajari penggunaan `kubeadm` lebih lanjut pada [dokumentasi referensi kubeadm](/docs/reference/setup-tools/kubeadm) * Pelajari lebih lanjut mengenai [konsep-konsep](/docs/concepts/) Kubernetes dan [`kubectl`](/docs/user-guide/kubectl-overview/). * Lihat halaman [Cluster Networking](/id/docs/concepts/cluster-administration/networking/) untuk daftar _add-on_ jaringan Pod yang lebih banyak. From 4062beca2d10d6485766a248e507f36eb21c8568 Mon Sep 17 00:00:00 2001 From: Jose Almaraz Date: Fri, 12 Mar 2021 11:29:57 +1100 Subject: [PATCH 178/788] addressing section title content afer review --- README-pt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-pt.md b/README-pt.md index 3525302e8b..e27bf544d1 100644 --- a/README-pt.md +++ b/README-pt.md @@ -144,7 +144,7 @@ sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist Esta solução funciona tanto para o MacOS Catalina quanto para o MacOS Mojave. -### Troubleshooting for Out of Memory +### Erro de "Out of Memory" Se você executar o comando `make container-serve` e retornar o seguinte erro: ``` From 40950997bee0d673f46cb810902ea8d09373324a Mon Sep 17 00:00:00 2001 From: Sergey Kanzhelev Date: Thu, 11 Mar 2021 17:19:23 -0800 Subject: [PATCH 179/788] Update content/en/docs/concepts/architecture/nodes.md Co-authored-by: Tim Bannister --- content/en/docs/concepts/architecture/nodes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/concepts/architecture/nodes.md b/content/en/docs/concepts/architecture/nodes.md index cd2c2291c5..11343a2d8a 100644 --- a/content/en/docs/concepts/architecture/nodes.md +++ b/content/en/docs/concepts/architecture/nodes.md @@ -71,7 +71,8 @@ The [name](/docs/concepts/overview/working-with-objects/names#names) identifies cannot have the same name at the same time. Kubernetes also assumes that a resource with the same name is the same object. In case of a Node, it is implicitly assumed that an instance using the same name will have the same state (e.g. network settings, root disk contents). This may lead to -inconsistencies if instance was altered without the change of a name or deleting and re-creating the +inconsistencies if you modify an instance without changing its name. If you want to replace a node, you should +make sure to remove the existing Node object from API server. {{< /note >}} @@ -367,4 +368,3 @@ For example, if `ShutdownGracePeriod=30s`, and `ShutdownGracePeriodCriticalPods= * Read the [Node](https://git.k8s.io/community/contributors/design-proposals/architecture/architecture.md#the-kubernetes-node) section of the architecture design document. * Read about [taints and tolerations](/docs/concepts/scheduling-eviction/taint-and-toleration/). - From 465d5dcd7a81bd5fcd50b357958aeda2da0beb96 Mon Sep 17 00:00:00 2001 From: edsoncelio Date: Thu, 11 Mar 2021 22:54:11 -0300 Subject: [PATCH 180/788] Starting translation to pt --- .../containers/container-lifecycle-hooks.md | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 content/pt/docs/concepts/containers/container-lifecycle-hooks.md diff --git a/content/pt/docs/concepts/containers/container-lifecycle-hooks.md b/content/pt/docs/concepts/containers/container-lifecycle-hooks.md new file mode 100644 index 0000000000..fab8e4cd86 --- /dev/null +++ b/content/pt/docs/concepts/containers/container-lifecycle-hooks.md @@ -0,0 +1,128 @@ +--- +title: Ciclos de Vida do Contêiner +content_type: concept +weight: 30 +--- + + + +Essa página descreve como os contêineres gerenciados pelo _kubelet_ podem usar a estrutura de _hook_ de ciclo de vida do contêiner para executar código acionado por eventos durante seu ciclo de vida de gerenciamento. + + + + +## Visão Geral + +Análogo a muitas estruturas de linguagem de programação que tem _hooks_ de ciclo de vida de componentes, como angular, +o Kubernetes fornece aos contêineres _hooks_ de ciclo de vida. +Os _hooks_ permitem que os contêineres estejam cientes dos eventos em seu ciclo de vida de gerenciamento +e executem código implementado em um manipulador quando o _hook_ de ciclo de vida correspondente é executado. + +## Hooks do contêiner + +Existem dois _hooks_ que são expostos para os contêiners: + +`PostStart` + +This hook is executed immediately after a container is created. +However, there is no guarantee that the hook will execute before the container ENTRYPOINT. +No parameters are passed to the handler. + +`PreStop` + +This hook is called immediately before a container is terminated due to an API request or management +event such as a liveness/startup probe failure, preemption, resource contention and others. A call +to the `PreStop` hook fails if the container is already in a terminated or completed state and the +hook must complete before the TERM signal to stop the container can be sent. The Pod's termination +grace period countdown begins before the `PreStop` hook is executed, so regardless of the outcome of +the handler, the container will eventually terminate within the Pod's termination grace period. No +parameters are passed to the handler. + +A more detailed description of the termination behavior can be found in +[Termination of Pods](/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination). + +### Hook handler implementations + +Containers can access a hook by implementing and registering a handler for that hook. +There are two types of hook handlers that can be implemented for Containers: + +* Exec - Executes a specific command, such as `pre-stop.sh`, inside the cgroups and namespaces of the Container. +Resources consumed by the command are counted against the Container. +* HTTP - Executes an HTTP request against a specific endpoint on the Container. + +### Hook handler execution + +When a Container lifecycle management hook is called, +the Kubernetes management system execute the handler according to the hook action, +`httpGet` and `tcpSocket` are executed by the kubelet process, and `exec` is executed in the container. + +Hook handler calls are synchronous within the context of the Pod containing the Container. +This means that for a `PostStart` hook, +the Container ENTRYPOINT and hook fire asynchronously. +However, if the hook takes too long to run or hangs, +the Container cannot reach a `running` state. + +`PreStop` hooks are not executed asynchronously from the signal to stop the Container; the hook must +complete its execution before the TERM signal can be sent. If a `PreStop` hook hangs during +execution, the Pod's phase will be `Terminating` and remain there until the Pod is killed after its +`terminationGracePeriodSeconds` expires. This grace period applies to the total time it takes for +both the `PreStop` hook to execute and for the Container to stop normally. If, for example, +`terminationGracePeriodSeconds` is 60, and the hook takes 55 seconds to complete, and the Container +takes 10 seconds to stop normally after receiving the signal, then the Container will be killed +before it can stop normally, since `terminationGracePeriodSeconds` is less than the total time +(55+10) it takes for these two things to happen. + +If either a `PostStart` or `PreStop` hook fails, +it kills the Container. + +Users should make their hook handlers as lightweight as possible. +There are cases, however, when long running commands make sense, +such as when saving state prior to stopping a Container. + +### Hook delivery guarantees + +Hook delivery is intended to be *at least once*, +which means that a hook may be called multiple times for any given event, +such as for `PostStart` or `PreStop`. +It is up to the hook implementation to handle this correctly. + +Generally, only single deliveries are made. +If, for example, an HTTP hook receiver is down and is unable to take traffic, +there is no attempt to resend. +In some rare cases, however, double delivery may occur. +For instance, if a kubelet restarts in the middle of sending a hook, +the hook might be resent after the kubelet comes back up. + +### Debugging Hook handlers + +The logs for a Hook handler are not exposed in Pod events. +If a handler fails for some reason, it broadcasts an event. +For `PostStart`, this is the `FailedPostStartHook` event, +and for `PreStop`, this is the `FailedPreStopHook` event. +You can see these events by running `kubectl describe pod `. +Here is some example output of events from running this command: + +``` +Events: + FirstSeen LastSeen Count From SubObjectPath Type Reason Message + --------- -------- ----- ---- ------------- -------- ------ ------- + 1m 1m 1 {default-scheduler } Normal Scheduled Successfully assigned test-1730497541-cq1d2 to gke-test-cluster-default-pool-a07e5d30-siqd + 1m 1m 1 {kubelet gke-test-cluster-default-pool-a07e5d30-siqd} spec.containers{main} Normal Pulling pulling image "test:1.0" + 1m 1m 1 {kubelet gke-test-cluster-default-pool-a07e5d30-siqd} spec.containers{main} Normal Created Created container with docker id 5c6a256a2567; Security:[seccomp=unconfined] + 1m 1m 1 {kubelet gke-test-cluster-default-pool-a07e5d30-siqd} spec.containers{main} Normal Pulled Successfully pulled image "test:1.0" + 1m 1m 1 {kubelet gke-test-cluster-default-pool-a07e5d30-siqd} spec.containers{main} Normal Started Started container with docker id 5c6a256a2567 + 38s 38s 1 {kubelet gke-test-cluster-default-pool-a07e5d30-siqd} spec.containers{main} Normal Killing Killing container with docker id 5c6a256a2567: PostStart handler: Error executing in Docker Container: 1 + 37s 37s 1 {kubelet gke-test-cluster-default-pool-a07e5d30-siqd} spec.containers{main} Normal Killing Killing container with docker id 8df9fdfd7054: PostStart handler: Error executing in Docker Container: 1 + 38s 37s 2 {kubelet gke-test-cluster-default-pool-a07e5d30-siqd} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "main" with RunContainerError: "PostStart handler: Error executing in Docker Container: 1" + 1m 22s 2 {kubelet gke-test-cluster-default-pool-a07e5d30-siqd} spec.containers{main} Warning FailedPostStartHook +``` + + + +## {{% heading "whatsnext" %}} + + +* Learn more about the [Container environment](/docs/concepts/containers/container-environment/). +* Get hands-on experience + [attaching handlers to Container lifecycle events](/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/). + From 51f72c50ff04a85f3dc9f29bdcdfa2ae364d8717 Mon Sep 17 00:00:00 2001 From: Akihito INOH Date: Fri, 12 Mar 2021 14:47:43 +0900 Subject: [PATCH 181/788] Fix transferring-ownership link This commit fixes transferring-ownership link on `/docs/setup/release/notes/`. --- content/en/docs/setup/release/notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/setup/release/notes.md b/content/en/docs/setup/release/notes.md index adbdb7c48e..54146007a0 100644 --- a/content/en/docs/setup/release/notes.md +++ b/content/en/docs/setup/release/notes.md @@ -1906,7 +1906,7 @@ filename | sha512 hash - Promote SupportNodePidsLimit to GA to provide node to pod pid isolation Promote SupportPodPidsLimit to GA to provide ability to limit pids per pod ([#94140](https://github.com/kubernetes/kubernetes/pull/94140), [@derekwaynecarr](https://github.com/derekwaynecarr)) [SIG Node and Testing] - Rename pod_preemption_metrics to preemption_metrics. ([#93256](https://github.com/kubernetes/kubernetes/pull/93256), [@ahg-g](https://github.com/ahg-g)) [SIG Instrumentation and Scheduling] -- Server-side apply behavior has been regularized in the case where a field is removed from the applied configuration. Removed fields which have no other owners are deleted from the live object, or reset to their default value if they have one. Safe ownership transfers, such as the transfer of a `replicas` field from a user to an HPA without resetting to the default value are documented in [Transferring Ownership](https://kubernetes.io/docs/reference/using-api/api-concepts/#transferring-ownership) ([#92661](https://github.com/kubernetes/kubernetes/pull/92661), [@jpbetz](https://github.com/jpbetz)) [SIG API Machinery, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation and Testing] +- Server-side apply behavior has been regularized in the case where a field is removed from the applied configuration. Removed fields which have no other owners are deleted from the live object, or reset to their default value if they have one. Safe ownership transfers, such as the transfer of a `replicas` field from a user to an HPA without resetting to the default value are documented in [Transferring Ownership](/docs/reference/using-api/server-side-apply/#transferring-ownership) ([#92661](https://github.com/kubernetes/kubernetes/pull/92661), [@jpbetz](https://github.com/jpbetz)) [SIG API Machinery, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation and Testing] - Set CSIMigrationvSphere feature gates to beta. Users should enable CSIMigration + CSIMigrationvSphere features and install the vSphere CSI Driver (https://github.com/kubernetes-sigs/vsphere-csi-driver) to move workload from the in-tree vSphere plugin "kubernetes.io/vsphere-volume" to vSphere CSI Driver. From d1025ef5abdb1e7bc18ebf79861e7c8090b6f4aa Mon Sep 17 00:00:00 2001 From: Iceber Gu Date: Mon, 8 Mar 2021 11:14:14 +0800 Subject: [PATCH 182/788] [zh] update access-cluster-api.md Signed-off-by: Iceber Gu --- .../administer-cluster/access-cluster-api.md | 179 +----------------- 1 file changed, 10 insertions(+), 169 deletions(-) diff --git a/content/zh/docs/tasks/administer-cluster/access-cluster-api.md b/content/zh/docs/tasks/administer-cluster/access-cluster-api.md index 59b4fa758f..4f2ee3b05a 100644 --- a/content/zh/docs/tasks/administer-cluster/access-cluster-api.md +++ b/content/zh/docs/tasks/administer-cluster/access-cluster-api.md @@ -251,11 +251,12 @@ Kubernetes 官方支持 [Go](#go-client)、[Python](#python-client)、[Java](#ja #### Go 客户端 {#go-client} +* To get the library, run the following command: `go get k8s.io/client-go@kubernetes-` See [https://github.com/kubernetes/client-go/releases](https://github.com/kubernetes/client-go/releases) to see which versions are supported. +* Write an application atop of the client-go clients. +--> -* 要获取库,运行下列命令:`go get k8s.io/client-go/<版本号>/kubernetes`, - 参见 [https://github.com/kubernetes/client-go](https://github.com/kubernetes/client-go) 查看受支持的版本。 +* 要获取库,运行下列命令:`go get k8s.io/client-go/kubernetes-`, + 参见 [https://github.com/kubernetes/client-go/releases](https://github.com/kubernetes/client-go/releases) 查看受支持的版本。 * 基于 client-go 客户端编写应用程序。 -* 要安装 [Java 客户端](https://github.com/kubernetes-client/java),只需执行: +要安装 [Java 客户端](https://github.com/kubernetes-client/java),运行: ```shell # 克隆 Java 库 @@ -522,168 +523,8 @@ exampleWithKubeConfig = do >>= print ``` - +## {{% heading "whatsnext" %}} -### 从 Pod 中访问 API - -从 Pod 内部访问 API 时,定位 API 服务器和向服务器认证身份的操作 -与上面描述的外部客户场景不同。 - - -从 Pod 使用 Kubernetes API 的最简单的方法就是使用官方的 -[客户端库](/zh/docs/reference/using-api/client-libraries/)。 -这些库可以自动发现 API 服务器并进行身份验证。 - - -#### 使用官方客户端库 - -从一个 Pod 内部连接到 Kubernetes API 的推荐方式为: - -- 对于 Go 语言客户端,使用官方的 [Go 客户端库](https://github.com/kubernetes/client-go/)。 - 函数 `rest.InClusterConfig()` 自动处理 API 主机发现和身份认证。 - 参见[这里的一个例子](https://git.k8s.io/client-go/examples/in-cluster-client-configuration/main.go)。 - -- 对于 Python 客户端,使用官方的 [Python 客户端库](https://github.com/kubernetes-client/python/)。 - 函数 `config.load_incluster_config()` 自动处理 API 主机的发现和身份认证。 - 参见[这里的一个例子](https://github.com/kubernetes-client/python/blob/master/examples/in_cluster_config.py)。 - -- 还有一些其他可用的客户端库,请参阅[客户端库](/zh/docs/reference/using-api/client-libraries/)页面。 - -在以上场景中,客户端库都使用 Pod 的服务账号凭据来与 API 服务器安全地通信。 - - -#### 直接访问 REST API - -在运行在 Pod 中时,可以通过 `default` 命名空间中的名为 `kubernetes` 的服务访问 -Kubernetes API 服务器。也就是说,Pod 可以使用 `kubernetes.default.svc` 主机名 -来查询 API 服务器。官方客户端库自动完成这个工作。 - - -向 API 服务器进行身份认证的推荐做法是使用 -[服务账号](/zh/docs/tasks/configure-pod-container/configure-service-account/)凭据。 -默认情况下,每个 Pod 与一个服务账号关联,该服务账户的凭证(令牌)放置在此 Pod 中 -每个容器的文件系统树中的 `/var/run/secrets/kubernetes.io/serviceaccount/token` 处。 - - -如果由证书包可用,则凭证包被放入每个容器的文件系统树中的 -`/var/run/secrets/kubernetes.io/serviceaccount/ca.crt` 处, -且将被用于验证 API 服务器的服务证书。 - - -最后,用于命名空间域 API 操作的默认命名空间放置在每个容器中的 -`/var/run/secrets/kubernetes.io/serviceaccount/namespace` 文件中。 - - -#### 使用 kubectl proxy {#use-kubectl-proxy} - -如果你希望不实用官方客户端库就完成 API 查询,可以将 `kubectl proxy` 作为 -[command](/zh/docs/tasks/inject-data-application/define-command-argument-container/) -在 Pod 启动一个边车(Sidecar)容器。这样,`kubectl proxy` 自动完成对 API -的身份认证,并将其暴露到 Pod 的 `localhost` 接口,从而 Pod 中的其他容器可以 -直接使用 API。 - - -#### 不使用代理 {#without-using-a-proxy} - -通过将认证令牌直接发送到 API 服务器,也可以避免运行 kubectl proxy 命令。 -内部的证书机制能够为链接提供保护。 - -```shell -# 指向内部 API 服务器的主机名 -APISERVER=https://kubernetes.default.svc - -# 服务账号令牌的路径 -SERVICEACCOUNT=/var/run/secrets/kubernetes.io/serviceaccount - -# 读取 Pod 的名字空间 -NAMESPACE=$(cat ${SERVICEACCOUNT}/namespace) - -# 读取服务账号的持有者令牌 -TOKEN=$(cat ${SERVICEACCOUNT}/token) - -# 引用内部整数机构(CA) -CACERT=${SERVICEACCOUNT}/ca.crt - -# 使用令牌访问 API -curl --cacert ${CACERT} --header "Authorization: Bearer ${TOKEN}" -X GET ${APISERVER}/api -``` - - -输出类似于: - -```json -{ - "kind": "APIVersions", - "versions": [ - "v1" - ], - "serverAddressByClientCIDRs": [ - { - "clientCIDR": "0.0.0.0/0", - "serverAddress": "10.0.1.149:443" - } - ] -} -``` - +* [从 Pod 中访问 API](/zh/docs/tasks/run-application/access-api-from-pod/) From ba4cf5f99e7c559071a7f3c5bdf05d2366046ec6 Mon Sep 17 00:00:00 2001 From: "Edson (aka tuxpilgrim)" Date: Fri, 12 Mar 2021 10:08:18 -0300 Subject: [PATCH 183/788] Update content/pt/docs/concepts/scheduling-eviction/ (#26924) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Move pod-overhead.md to schedulling-eviction * Add pod-overhead.md translation * Update content/pt/docs/concepts/scheduling-eviction/pod-overhead.md * Fix name: test-Pod to name: test-pod * Small fixes * remove reviewers * change 'fonte' to 'código fonte' * Add the suggestion by code review * Update the references with the original doc * Update the _index.md --- .../concepts/scheduling-eviction/_index.md | 8 ++ .../kube-scheduler.md | 5 +- .../pod-overhead.md | 87 +++++++++---------- content/pt/docs/concepts/scheduling/_index.md | 5 -- 4 files changed, 53 insertions(+), 52 deletions(-) create mode 100644 content/pt/docs/concepts/scheduling-eviction/_index.md rename content/pt/docs/concepts/{scheduling => scheduling-eviction}/kube-scheduler.md (93%) rename content/pt/docs/concepts/{configuration => scheduling-eviction}/pod-overhead.md (54%) delete mode 100644 content/pt/docs/concepts/scheduling/_index.md diff --git a/content/pt/docs/concepts/scheduling-eviction/_index.md b/content/pt/docs/concepts/scheduling-eviction/_index.md new file mode 100644 index 0000000000..e9e036f0c3 --- /dev/null +++ b/content/pt/docs/concepts/scheduling-eviction/_index.md @@ -0,0 +1,8 @@ +--- +title: "Escalonamento" +weight: 90 +description: > + No Kubernetes, agendamento refere-se a garantia de que os pods correspondam aos nós para que o kubelet possa executá-los. + Remoção é o processo de falha proativa de um ou mais pods em nós com falta de recursos. +--- + diff --git a/content/pt/docs/concepts/scheduling/kube-scheduler.md b/content/pt/docs/concepts/scheduling-eviction/kube-scheduler.md similarity index 93% rename from content/pt/docs/concepts/scheduling/kube-scheduler.md rename to content/pt/docs/concepts/scheduling-eviction/kube-scheduler.md index 575a8e7839..8c8b0ec39a 100644 --- a/content/pt/docs/concepts/scheduling/kube-scheduler.md +++ b/content/pt/docs/concepts/scheduling-eviction/kube-scheduler.md @@ -91,4 +91,7 @@ do escalonador: * Aprenda como [configurar vários escalonadores](/docs/tasks/administer-cluster/configure-multiple-schedulers/) * Aprenda sobre [políticas de gerenciamento de topologia](/docs/tasks/administer-cluster/topology-manager/) * Aprenda sobre [Pod Overhead](/docs/concepts/configuration/pod-overhead/) - +* Saiba mais sobre o agendamento de pods que usam volumes em: + * [Suporte de topologia de volume](/docs/concepts/storage/storage-classes/#volume-binding-mode) + * [Rastreamento de capacidade de armazenamento](/docs/concepts/storage/storage-capacity/) + * [Limites de volumes específicos do nó](/docs/concepts/storage/storage-limits/) \ No newline at end of file diff --git a/content/pt/docs/concepts/configuration/pod-overhead.md b/content/pt/docs/concepts/scheduling-eviction/pod-overhead.md similarity index 54% rename from content/pt/docs/concepts/configuration/pod-overhead.md rename to content/pt/docs/concepts/scheduling-eviction/pod-overhead.md index 78ba1d6ffd..c3788b22fa 100644 --- a/content/pt/docs/concepts/configuration/pod-overhead.md +++ b/content/pt/docs/concepts/scheduling-eviction/pod-overhead.md @@ -1,9 +1,5 @@ --- -reviewers: -- dchen1107 -- egernst -- tallclair -title: Pod Overhead +title: Sobrecarga de Pod content_type: concept weight: 50 --- @@ -12,10 +8,10 @@ weight: 50 {{< feature-state for_k8s_version="v1.18" state="beta" >}} -Quando executa um Pod num nó, o próprio Pod usa uma quantidade de recursos do sistema. Estes -recursos são adicionais aos recursos necessários para executar o(s) _container(s)_ dentro do Pod. +Quando você executa um Pod num nó, o próprio Pod usa uma quantidade de recursos do sistema. Estes +recursos são adicionais aos recursos necessários para executar o(s) contêiner(s) dentro do Pod. Sobrecarga de Pod, do inglês _Pod Overhead_, é uma funcionalidade que serve para contabilizar os recursos consumidos pela -infraestrutura do Pod para além das solicitações e limites do _container_. +infraestrutura do Pod para além das solicitações e limites do contêiner. @@ -23,27 +19,27 @@ infraestrutura do Pod para além das solicitações e limites do _container_. -No Kubernetes, a sobrecarga de _Pods_ é definido no tempo de +No Kubernetes, a sobrecarga de Pods é definido no tempo de [admissão](/docs/reference/access-authn-authz/extensible-admission-controllers/#what-are-admission-webhooks) de acordo com a sobrecarga associada à -[RuntimeClass](/docs/concepts/containers/runtime-class/) do _Pod_. +[RuntimeClass](/docs/concepts/containers/runtime-class/) do Pod. Quando é ativada a Sobrecarga de Pod, a sobrecarga é considerada adicionalmente à soma das -solicitações de recursos do _container_ ao agendar um Pod. Semelhantemente, o _kubelet_ +solicitações de recursos do contêiner ao agendar um Pod. Semelhantemente, o _kubelet_ incluirá a sobrecarga do Pod ao dimensionar o cgroup do Pod e ao -executar a classificação de despejo do Pod. +executar a classificação de prioridade de migração do Pod em caso de _drain_ do Node. -## Possibilitando a Sobrecarga do Pod {#set-up} +## Habilitando a Sobrecarga de Pod {#set-up} -Terá de garantir que o [portão de funcionalidade](/docs/reference/command-line-tools-reference/feature-gates/) -`PodOverhead` está ativo (está ativo por defeito a partir da versão 1.18) -por todo o cluster, e uma `RuntimeClass` é utilizada que defina o campo `overhead`. +Terá de garantir que o [Feature Gate](/docs/reference/command-line-tools-reference/feature-gates/) +`PodOverhead` esteja ativo (está ativo por padrão a partir da versão 1.18) +em todo o cluster, e uma `RuntimeClass` utilizada que defina o campo `overhead`. ## Exemplo de uso Para usar a funcionalidade PodOverhead, é necessário uma RuntimeClass que define o campo `overhead`. -Por exemplo, poderia usar a definição da RuntimeClass abaixo com um _container runtime_ virtualizado -que usa cerca de 120MiB por Pod para a máquina virtual e o sistema operativo convidado: +Por exemplo, poderia usar a definição da RuntimeClass abaixo com um agente de execução de contêiner virtualizado +que use cerca de 120MiB por Pod para a máquina virtual e o sistema operacional convidado: ```yaml --- @@ -88,9 +84,9 @@ spec: memory: 100Mi ``` -Na altura de admissão o [controlador de admissão](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/) RuntimeClass +No tempo de admissão o [controlador de admissão](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/) RuntimeClass atualiza o _PodSpec_ da carga de trabalho de forma a incluir o `overhead` como descrito na RuntimeClass. Se o _PodSpec_ já tiver este campo definido -o _Pod_ será rejeitado. No exemplo dado, como apenas o nome do RuntimeClass é especificado, o controlador de admissão muda o _Pod_ de forma a +o Pod será rejeitado. No exemplo dado, como apenas o nome do RuntimeClass é especificado, o controlador de admissão muda o Pod de forma a incluir um `overhead`. Depois do controlador de admissão RuntimeClass, pode verificar o _PodSpec_ atualizado: @@ -99,44 +95,43 @@ Depois do controlador de admissão RuntimeClass, pode verificar o _PodSpec_ atua kubectl get pod test-pod -o jsonpath='{.spec.overhead}' ``` -O output é: +A saída é: ``` map[cpu:250m memory:120Mi] ``` -Se for definido um _ResourceQuota_, a soma dos pedidos dos _containers_ assim como o campo `overhead` são contados. +Se for definido um _ResourceQuota_, a soma das requisições dos contêineres assim como o campo `overhead` são contados. -Quando o kube-scheduler está a decidir que nó deve executar um novo _Pod_, o agendador considera o `overhead` do _Pod_, -assim como a soma de pedidos aos _containers_ para esse _Pod_. Para este exemplo, o agendador adiciona os -pedidos e a sobrecarga, depois procura um nó com 2.25 CPU e 320 MiB de memória disponível. +Quando o kube-scheduler está decidindo que nó deve executar um novo Pod, o agendador considera o `overhead` do pod, +assim como a soma de pedidos aos contêineres para esse _Pod_. Para este exemplo, o agendador adiciona as requisições e a sobrecarga, depois procura um nó com 2.25 CPU e 320 MiB de memória disponível. -Assim que um _Pod_ é agendado a um nó, o kubelet nesse nó cria um novo {{< glossary_tooltip text="cgroup" term_id="cgroup" >}} -para o _Pod_. É dentro deste _pod_ que o _container runtime_ subjacente vai criar _containers_. +Assim que um Pod é agendado a um nó, o kubelet nesse nó cria um novo {{< glossary_tooltip text="cgroup" term_id="cgroup" >}} +para o Pod. É dentro deste Pod que o agente de execução de contêiners subjacente vai criar contêineres. -Se o recurso tiver um limite definido para cada _container_ (_QoS_ garantida ou _Burstrable QoS_ com limites definidos), -o kubelet definirá um limite superior para o cgroup do _pod_ associado a esse recurso (cpu.cfs_quota_us para CPU -e memory.limit_in_bytes de memória). Este limite superior é baseado na soma dos limites do _container_ mais o `overhead` +Se o recurso tiver um limite definido para cada contêiner (_QoS_ garantida ou _Burstrable QoS_ com limites definidos), +o kubelet definirá um limite superior para o cgroup do Pod associado a esse recurso (cpu.cfs_quota_us para CPU +e memory.limit_in_bytes de memória). Este limite superior é baseado na soma dos limites do contêiner mais o `overhead` definido no _PodSpec_. -Para o CPU, se o _Pod_ for QoS garantida ou _Burstrable QoS_, o kubelet vai definir `cpu.shares` baseado na soma dos -pedidos ao _container_ mais o `overhead` definido no _PodSpec_. +Para CPU, se o Pod for QoS garantida ou _Burstrable QoS_, o kubelet vai definir `cpu.shares` baseado na soma dos +pedidos ao contêiner mais o `overhead` definido no _PodSpec_. -Olhando para o nosso exemplo, verifique os pedidos ao _container_ para a carga de trabalho: +Olhando para o nosso exemplo, verifique as requisições ao contêiner para a carga de trabalho: ```bash kubectl get pod test-pod -o jsonpath='{.spec.containers[*].resources.limits}' ``` -O total de pedidos ao _container_ são 2000m CPU e 200MiB de memória: +O total de requisições ao contêiner são 2000m CPU e 200MiB de memória: ``` map[cpu: 500m memory:100Mi] map[cpu:1500m memory:100Mi] ``` -Verifique isto contra o que é observado pelo nó: +Verifique isto comparado ao que é observado pelo nó: ```bash kubectl describe node | grep test-pod -B2 ``` -O output mostra que 2250m CPU e 320MiB de memória são solicitados, que inclui _PodOverhead_: +A saída mostra que 2250m CPU e 320MiB de memória são solicitados, que inclui _PodOverhead_: ``` Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits AGE --------- ---- ------------ ---------- --------------- ------------- --- @@ -145,12 +140,12 @@ O output mostra que 2250m CPU e 320MiB de memória são solicitados, que inclui ## Verificar os limites cgroup do Pod -Verifique os cgroups de memória do Pod no nó onde a carga de trabalho está em execução. No seguinte exemplo, [`crictl`] (https://github.com/kubernetes-sigs/cri-tools/blob/master/docs/crictl.md) -é usado no nó, que fornece uma CLI para _container runtimes_ compatíveis com CRI. Isto é um -exemplo avançado para mostrar o comportamento do _PodOverhead_, e não é esperado que os utilizadores precisem de verificar +Verifique os cgroups de memória do Pod no nó onde a carga de trabalho está em execução. No seguinte exemplo, [`crictl`](https://github.com/kubernetes-sigs/cri-tools/blob/master/docs/crictl.md) +é usado no nó, que fornece uma CLI para agentes de execução compatíveis com CRI. Isto é um +exemplo avançado para mostrar o comportamento do _PodOverhead_, e não é esperado que os usuários precisem verificar cgroups diretamente no nó. -Primeiro, no nó em particular, determine o identificador do _Pod_: +Primeiro, no nó em particular, determine o identificador do Pod: ```bash # Execute no nó onde o Pod está agendado @@ -163,15 +158,15 @@ A partir disto, pode determinar o caminho do cgroup para o _Pod_: sudo crictl inspectp -o=json $POD_ID | grep cgroupsPath ``` -O caminho do cgroup resultante inclui o _container_ `pause` do _Pod_. O cgroup no nível do _Pod_ está um diretório acima. +O caminho do cgroup resultante inclui o contêiner `pause` do Pod. O cgroup no nível do Pod está um diretório acima. ``` "cgroupsPath": "/kubepods/podd7f4b509-cf94-4951-9417-d1087c92a5b2/7ccf55aee35dd16aca4189c952d83487297f3cd760f1bbf09620e206e7d0c27a" ``` -Neste caso especifico, o caminho do cgroup do pod é `kubepods/podd7f4b509-cf94-4951-9417-d1087c92a5b2`. Verifique a configuração cgroup de nível do _Pod_ para a memória: +Neste caso especifico, o caminho do cgroup do Pod é `kubepods/podd7f4b509-cf94-4951-9417-d1087c92a5b2`. Verifique a configuração cgroup de nível do Pod para a memória: ```bash # Execute no nó onde o Pod está agendado -# Mude também o nome do cgroup de forma a combinar com o cgroup alocado ao pod. +# Mude também o nome do cgroup para combinar com o cgroup alocado ao Pod. cat /sys/fs/cgroup/memory/kubepods/podd7f4b509-cf94-4951-9417-d1087c92a5b2/memory.limit_in_bytes ``` @@ -182,10 +177,10 @@ Isto é 320 MiB, como esperado: ### Observabilidade -Uma métrica `kube_pod_overhead` está disponível em [kube-state-metrics] (https://github.com/kubernetes/kube-state-metrics) -para ajudar a identificar quando o _PodOverhead_ está a ser utilizado e para ajudar a observar a estabilidade das cargas de trabalho +Uma métrica `kube_pod_overhead` está disponível em [kube-state-metrics](https://github.com/kubernetes/kube-state-metrics) +para ajudar a identificar quando o _PodOverhead_ está sendo utilizado e para ajudar a observar a estabilidade das cargas de trabalho em execução com uma sobrecarga (_Overhead_) definida. Esta funcionalidade não está disponível na versão 1.9 do kube-state-metrics, -mas é esperado num próximo _release_. Os utilizadores necessitarão entretanto de construir kube-state-metrics a partir da fonte. +mas é esperado em uma próxima versão. Os usuários necessitarão entretanto construir o kube-state-metrics a partir do código fonte. diff --git a/content/pt/docs/concepts/scheduling/_index.md b/content/pt/docs/concepts/scheduling/_index.md deleted file mode 100644 index 577dbb8c87..0000000000 --- a/content/pt/docs/concepts/scheduling/_index.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Escalonamento" -weight: 90 ---- - From a8634b88c5c1aa14ea20be2ffd02e393db6030b0 Mon Sep 17 00:00:00 2001 From: wardenlym Date: Fri, 12 Mar 2021 17:47:19 +0800 Subject: [PATCH 184/788] fix format mistake in zh/docs/setup/production-environment/tools/kubeadm/kubelet-integration.md --- .../production-environment/tools/kubeadm/kubelet-integration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/docs/setup/production-environment/tools/kubeadm/kubelet-integration.md b/content/zh/docs/setup/production-environment/tools/kubeadm/kubelet-integration.md index 8eeb160775..4dd6304c6d 100644 --- a/content/zh/docs/setup/production-environment/tools/kubeadm/kubelet-integration.md +++ b/content/zh/docs/setup/production-environment/tools/kubeadm/kubelet-integration.md @@ -150,7 +150,7 @@ such as systemd. 由于硬件、操作系统、网络或者其他主机特定参数的差异。某些主机需要特定的 kubelet 配置。 以下列表提供了一些示例。 -- 由 kubelet 配置标志 `--resolv-confkubelet` 指定的 DNS 解析文件的路径在操作系统之间可能有所不同, +- 由 kubelet 配置标志 `--resolv-conf` 指定的 DNS 解析文件的路径在操作系统之间可能有所不同, 它取决于你是否使用 `systemd-resolved`。 如果此路径错误,则在其 kubelet 配置错误的节点上 DNS 解析也将失败。 From b87508b7fbfabff3af59fa75ae1b944279664643 Mon Sep 17 00:00:00 2001 From: vaibhav Date: Fri, 12 Mar 2021 21:31:00 +0530 Subject: [PATCH 185/788] Linking a page --- .../tasks/extend-kubernetes/configure-multiple-schedulers.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/en/docs/tasks/extend-kubernetes/configure-multiple-schedulers.md b/content/en/docs/tasks/extend-kubernetes/configure-multiple-schedulers.md index b0e272afa0..3f75467f96 100644 --- a/content/en/docs/tasks/extend-kubernetes/configure-multiple-schedulers.md +++ b/content/en/docs/tasks/extend-kubernetes/configure-multiple-schedulers.md @@ -202,4 +202,6 @@ verify that the pods were scheduled by the desired schedulers. ```shell kubectl get events ``` +You can also use a [custom scheduler configuration,](https://kubernetes.io/docs/reference/scheduling/config/#multiple-profiles) or custom container image, for the cluster's main scheduler by modifying its static pod manifest on the relevant control plane host. + From 70db6c1fcb7238d87e2115741c68ce77adeaf6e4 Mon Sep 17 00:00:00 2001 From: Kenichi Omichi Date: Fri, 12 Mar 2021 22:10:58 +0000 Subject: [PATCH 186/788] zh: Replace redirect links of kubeadm /docs/reference/setup-tools/kubeadm/kubeadm/ is redirected to /docs/reference/setup-tools/kubeadm/ This replaces the redirect links of kubeadm with the direct links. NOTE: The pull request for `en` language has been already merged as https://github.com/kubernetes/website/pull/26919 --- content/zh/docs/setup/best-practices/certificates.md | 12 ++++++------ .../tools/kubeadm/create-cluster-kubeadm.md | 8 ++++---- .../setup/production-environment/tools/kubespray.md | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/content/zh/docs/setup/best-practices/certificates.md b/content/zh/docs/setup/best-practices/certificates.md index 3a72705416..f8a79245c0 100644 --- a/content/zh/docs/setup/best-practices/certificates.md +++ b/content/zh/docs/setup/best-practices/certificates.md @@ -17,12 +17,12 @@ weight: 40 Kubernetes 需要 PKI 证书才能进行基于 TLS 的身份验证。如果你是使用 -[kubeadm](/zh/docs/reference/setup-tools/kubeadm/kubeadm/) 安装的 Kubernetes, +[kubeadm](/zh/docs/reference/setup-tools/kubeadm/) 安装的 Kubernetes, 则会自动生成集群所需的证书。你还可以生成自己的证书。 例如,不将私钥存储在 API 服务器上,可以让私钥更加安全。此页面说明了集群必需的证书。 @@ -144,13 +144,13 @@ Required certificates: | front-proxy-client | kubernetes-front-proxy-ca | | client | | [1]: 用来连接到集群的不同 IP 或 DNS 名 -(就像 [kubeadm](/zh/docs/reference/setup-tools/kubeadm/kubeadm/) 为负载均衡所使用的固定 +(就像 [kubeadm](/zh/docs/reference/setup-tools/kubeadm/) 为负载均衡所使用的固定 IP 或 DNS 名,`kubernetes`、`kubernetes.default`、`kubernetes.default.svc`、 `kubernetes.default.svc.cluster`、`kubernetes.default.svc.cluster.local`)。 @@ -193,11 +193,11 @@ For kubeadm users only: ### 证书路径 -证书应放置在建议的路径中(以便 [kubeadm](/zh/docs/reference/setup-tools/kubeadm/kubeadm/)使用)。无论使用什么位置,都应使用给定的参数指定路径。 +证书应放置在建议的路径中(以便 [kubeadm](/zh/docs/reference/setup-tools/kubeadm/)使用)。无论使用什么位置,都应使用给定的参数指定路径。 | 默认 CN | 建议的密钥路径 | 建议的证书路径 | 命令 | 密钥参数 | 证书参数 | |------------------------------|------------------------------|-----------------------------|----------------|------------------------------|-------------------------------------------| diff --git a/content/zh/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm.md b/content/zh/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm.md index 6fa2bb7158..c6619d0034 100644 --- a/content/zh/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm.md +++ b/content/zh/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm.md @@ -266,9 +266,9 @@ kubeadm 不支持将没有 `--control-plane-endpoint` 参数的单个控制平 ### 更多信息 -有关 `kubeadm init` 参数的更多信息,请参见 [kubeadm 参考指南](/zh/docs/reference/setup-tools/kubeadm/kubeadm/)。 +有关 `kubeadm init` 参数的更多信息,请参见 [kubeadm 参考指南](/zh/docs/reference/setup-tools/kubeadm/)。 * 使用 [Sonobuoy](https://github.com/heptio/sonobuoy) 验证集群是否正常运行 * 有关使用kubeadm升级集群的详细信息,请参阅[升级 kubeadm 集群](/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/)。 -* 在[kubeadm 参考文档](/zh/docs/reference/setup-tools/kubeadm/kubeadm)中了解有关高级 `kubeadm` 用法的信息 +* 在[kubeadm 参考文档](/zh/docs/reference/setup-tools/kubeadm)中了解有关高级 `kubeadm` 用法的信息 * 了解有关Kubernetes[概念](/zh/docs/concepts/)和[`kubectl`](/zh/docs/reference/kubectl/overview/)的更多信息。 * 有关Pod网络附加组件的更多列表,请参见[集群网络](/zh/docs/concepts/cluster-administration/networking/)页面。 * 请参阅[附加组件列表](/zh/docs/concepts/cluster-administration/addons/)以探索其他附加组件, diff --git a/content/zh/docs/setup/production-environment/tools/kubespray.md b/content/zh/docs/setup/production-environment/tools/kubespray.md index d436dbad6b..eabd14c7f5 100644 --- a/content/zh/docs/setup/production-environment/tools/kubespray.md +++ b/content/zh/docs/setup/production-environment/tools/kubespray.md @@ -48,10 +48,10 @@ Kubespray 是一个由 [Ansible](https://docs.ansible.com/) playbooks、[清单 要选择最适合你的用例的工具,请阅读[此比较](https://github.com/kubernetes-sigs/kubespray/blob/master/docs/comparisons.md)以 - [kubeadm](/zh/docs/reference/setup-tools/kubeadm/kubeadm/) 和 [kops](/zh/docs/setup/production-environment/tools/kops/) 。 + [kubeadm](/zh/docs/reference/setup-tools/kubeadm/) 和 [kops](/zh/docs/setup/production-environment/tools/kops/) 。 启用 Cinder 的 `CSIMigration` 功能后,所有插件操作会从现有的树内插件重定向到 `cinder.csi.openstack.org` 容器存储接口(CSI)驱动程序。 -为了使用此功能,必须在集群中安装 [Openstack Cinder CSI 驱动程序](https://github.com/kubernetes/cloud-provider-openstack/blob/master/docs/using-cinder-csi-plugin.md), +为了使用此功能,必须在集群中安装 [OpenStack Cinder CSI 驱动程序](https://github.com/kubernetes/cloud-provider-openstack/blob/master/docs/cinder-csi-plugin/using-cinder-csi-plugin.md), 并且 `CSIMigration` 和 `CSIMigrationOpenStack` Beta 功能必须被启用。 ### configMap From 22415dbc29805dc744109caee1b7430e9f1d131d Mon Sep 17 00:00:00 2001 From: houjun Date: Sat, 13 Mar 2021 23:34:31 +0800 Subject: [PATCH 188/788] Remove deprecated scheduling plugin NodeResourcesFit from config.md --- content/en/docs/reference/scheduling/config.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/content/en/docs/reference/scheduling/config.md b/content/en/docs/reference/scheduling/config.md index 7754d7cb7d..8d5cc24208 100644 --- a/content/en/docs/reference/scheduling/config.md +++ b/content/en/docs/reference/scheduling/config.md @@ -181,8 +181,6 @@ that are not enabled by default: - `RequestedToCapacityRatio`: Favor nodes according to a configured function of the allocated resources. Extension points: `Score`. -- `NodeResourceLimits`: Favors nodes that satisfy the Pod resource limits. - Extension points: `PreScore`, `Score`. - `CinderVolume`: Checks that OpenStack Cinder volume limits can be satisfied for the node. Extension points: `Filter`. From 3f6343225d1c1d8ed6a7051152cb3db6320aaf12 Mon Sep 17 00:00:00 2001 From: Jailton Lopes Date: Sat, 13 Mar 2021 23:03:21 -0300 Subject: [PATCH 189/788] Rewriting the description in the background section of how the volume behaves when a pod ceases to exist. Signed-off-by: Jailton Lopes --- content/en/docs/concepts/storage/volumes.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/content/en/docs/concepts/storage/volumes.md b/content/en/docs/concepts/storage/volumes.md index 8d84a519c0..8ed91067e0 100644 --- a/content/en/docs/concepts/storage/volumes.md +++ b/content/en/docs/concepts/storage/volumes.md @@ -34,8 +34,9 @@ Kubernetes supports many types of volumes. A {{< glossary_tooltip term_id="pod" can use any number of volume types simultaneously. Ephemeral volume types have a lifetime of a pod, but persistent volumes exist beyond the lifetime of a pod. Consequently, a volume outlives any containers -that run within the pod, and data is preserved across container restarts. When a -pod ceases to exist, the volume is destroyed. +that run within the pod, and data is preserved across container restarts. When a pod +ceases to exist, Kubernetes destroys ephemeral volumes; however, Kubernetes does not +destroy persistent volumes. At its core, a volume is just a directory, possibly with some data in it, which is accessible to the containers in a pod. How that directory comes to be, the From 59e056c086254486665e5dc7288434e2d9588ddb Mon Sep 17 00:00:00 2001 From: Arhell Date: Sun, 14 Mar 2021 14:27:57 +0200 Subject: [PATCH 190/788] [zh] update invalid web page link for api group --- content/zh/docs/reference/glossary/api-group.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/zh/docs/reference/glossary/api-group.md b/content/zh/docs/reference/glossary/api-group.md index 3c23f3dd0d..a219943be7 100644 --- a/content/zh/docs/reference/glossary/api-group.md +++ b/content/zh/docs/reference/glossary/api-group.md @@ -2,7 +2,7 @@ title: API Group id: api-group date: 2019-09-02 -full_link: /zh/docs/concepts/overview/kubernetes-api/#api-groups +full_link: /zh/docs/concepts/overview/kubernetes-api/#api-groups-and-versioning short_description: > Kubernetes API 中的一组相关路径 @@ -17,7 +17,7 @@ tags: title: API Group id: api-group date: 2019-09-02 -full_link: /docs/concepts/overview/kubernetes-api/#api-groups +full_link: /docs/concepts/overview/kubernetes-api/#api-groups-and-versioning short_description: > A set of related paths in the Kubernetes API. From 3a71a0064f535b6d447ae0cba8bef48825f0f3d6 Mon Sep 17 00:00:00 2001 From: edsoncelio Date: Sun, 14 Mar 2021 09:55:39 -0300 Subject: [PATCH 191/788] Add partial translation --- .../containers/container-lifecycle-hooks.md | 48 ++++++++++--------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/content/pt/docs/concepts/containers/container-lifecycle-hooks.md b/content/pt/docs/concepts/containers/container-lifecycle-hooks.md index fab8e4cd86..e7c925866a 100644 --- a/content/pt/docs/concepts/containers/container-lifecycle-hooks.md +++ b/content/pt/docs/concepts/containers/container-lifecycle-hooks.md @@ -28,12 +28,13 @@ This hook is executed immediately after a container is created. However, there is no guarantee that the hook will execute before the container ENTRYPOINT. No parameters are passed to the handler. +Este _hook_ é executado imediatamente após um contêiner ser criado. +Entretanto, não há garantia que o _hook_ será executado antes do ENTRYPOINT do contêiner. +Nenhum parâmetro é passado para o manipulador. + `PreStop` -This hook is called immediately before a container is terminated due to an API request or management -event such as a liveness/startup probe failure, preemption, resource contention and others. A call -to the `PreStop` hook fails if the container is already in a terminated or completed state and the -hook must complete before the TERM signal to stop the container can be sent. The Pod's termination +The Pod's termination grace period countdown begins before the `PreStop` hook is executed, so regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period. No parameters are passed to the handler. @@ -41,37 +42,38 @@ parameters are passed to the handler. A more detailed description of the termination behavior can be found in [Termination of Pods](/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination). -### Hook handler implementations +Esse _hook_ é chamado imediatamente antes de um contêiner ser encerrado devido a uma solicitação de API ou um gerenciamento de evento como liveness/startup probe failure, preemption, resource contention e outros. +Uma chamada ao _hook_ `PreStop` falha se o contêiner já está em um estado finalizado ou concluído e o _hook_ deve ser concluído antes que o sinal TERM seja enviado para parar o contêiner. -Containers can access a hook by implementing and registering a handler for that hook. -There are two types of hook handlers that can be implemented for Containers: -* Exec - Executes a specific command, such as `pre-stop.sh`, inside the cgroups and namespaces of the Container. -Resources consumed by the command are counted against the Container. -* HTTP - Executes an HTTP request against a specific endpoint on the Container. +### Implementações de manipulador de hook -### Hook handler execution +Os contêineres podem acessar um _hook_ implementando e registrando um manipulador para esse _hook_. +Existem dois tipos de manipuladores de _hooks_ que podem ser implementados para contêineres: -When a Container lifecycle management hook is called, -the Kubernetes management system execute the handler according to the hook action, -`httpGet` and `tcpSocket` are executed by the kubelet process, and `exec` is executed in the container. +* Exec - Executa um comando específico, como `pre-stop.sh`, dentro do cgroups e Namespaces do contêiner. +* HTTP - Executa uma requisição HTTP em um endpoint específico do contêiner. -Hook handler calls are synchronous within the context of the Pod containing the Container. -This means that for a `PostStart` hook, -the Container ENTRYPOINT and hook fire asynchronously. -However, if the hook takes too long to run or hangs, -the Container cannot reach a `running` state. +### Execução do manipulador de hook -`PreStop` hooks are not executed asynchronously from the signal to stop the Container; the hook must -complete its execution before the TERM signal can be sent. If a `PreStop` hook hangs during -execution, the Pod's phase will be `Terminating` and remain there until the Pod is killed after its -`terminationGracePeriodSeconds` expires. This grace period applies to the total time it takes for + +Quando um _hook_ de gerenciamento de ciclo de vida do contêiner é chamado, o sistema de gerenciamento do Kubernetes executa o manipulador de acordo com a ação do _hook_, `httpGet` e `tcpSocker` são executados pelo processo kubelet e `exec` é executado pelo contêiner. + +As chamadas do manipulador do _hook_ são síncronas no contexto do Pod que contém o contêiner. +Isso significa que para um _hook_ `PostStart`, o ENTRYPOINT do contêiner e o _hook_ disparam de forma assíncrona. +No entanto, se o _hook_ demorar muito para ser executado ou travar, o contêiner não consegue atingir o estado `running`. + +This grace period applies to the total time it takes for both the `PreStop` hook to execute and for the Container to stop normally. If, for example, `terminationGracePeriodSeconds` is 60, and the hook takes 55 seconds to complete, and the Container takes 10 seconds to stop normally after receiving the signal, then the Container will be killed before it can stop normally, since `terminationGracePeriodSeconds` is less than the total time (55+10) it takes for these two things to happen. +Os _hooks_ `PreStop` não são executados de forma assíncrona a partir do sinal para parar o conêiner, o _hook_ precisa finalizar a sua execução antes que o sinal TERM possa ser enviado. +Se um _hook_ `PreStop` travar durante a execução, a fase do Pod será `Terminating` e permanecerá até que o Pod seja morto após seu `terminationGracePeriodSeconds` expirar. + + If either a `PostStart` or `PreStop` hook fails, it kills the Container. From 2b18c86f244edb577fcc78d003ae3174dd4d9ac9 Mon Sep 17 00:00:00 2001 From: Yecheng Fu Date: Thu, 25 Feb 2021 16:23:47 +0800 Subject: [PATCH 192/788] add VolumeCapacityPriority feature gate Co-authored-by: Wei Huang --- .../command-line-tools-reference/feature-gates.md | 3 +++ content/en/docs/reference/scheduling/config.md | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/content/en/docs/reference/command-line-tools-reference/feature-gates.md b/content/en/docs/reference/command-line-tools-reference/feature-gates.md index 51c13f528f..8c606d001d 100644 --- a/content/en/docs/reference/command-line-tools-reference/feature-gates.md +++ b/content/en/docs/reference/command-line-tools-reference/feature-gates.md @@ -346,6 +346,7 @@ different Kubernetes components. | `TokenRequestProjection` | `false` | Alpha | 1.11 | 1.11 | | `TokenRequestProjection` | `true` | Beta | 1.12 | 1.19 | | `TokenRequestProjection` | `true` | GA | 1.20 | - | +| `VolumeCapacityPriority` | `false` | Alpha | 1.21 | | | `VolumeSnapshotDataSource` | `false` | Alpha | 1.12 | 1.16 | | `VolumeSnapshotDataSource` | `true` | Beta | 1.17 | 1.19 | | `VolumeSnapshotDataSource` | `true` | GA | 1.20 | - | @@ -777,6 +778,8 @@ Each feature gate is designed for enabling/disabling a specific feature: - `TopologyManager`: Enable a mechanism to coordinate fine-grained hardware resource assignments for different components in Kubernetes. See [Control Topology Management Policies on a node](/docs/tasks/administer-cluster/topology-manager/). +- 'VolumeCapacityPriority`: Enable support for prioritizing nodes in different + topologies based on available PV capacity. - `VolumePVCDataSource`: Enable support for specifying an existing PVC as a DataSource. - `VolumeScheduling`: Enable volume topology aware scheduling and make the PersistentVolumeClaim (PVC) binding aware of scheduling decisions. It also diff --git a/content/en/docs/reference/scheduling/config.md b/content/en/docs/reference/scheduling/config.md index 7754d7cb7d..d963d56c92 100644 --- a/content/en/docs/reference/scheduling/config.md +++ b/content/en/docs/reference/scheduling/config.md @@ -145,7 +145,12 @@ extension points: Extension points: `Score`. - `VolumeBinding`: Checks if the node has or if it can bind the requested {{< glossary_tooltip text="volumes" term_id="volume" >}}. - Extension points: `PreFilter`, `Filter`, `Reserve`, `PreBind`. + Extension points: `PreFilter`, `Filter`, `Reserve`, `PreBind`, `Score`. + {{< note >}} + `Score` extension point is enabled when `VolumeCapacityPriority` feature is + enabled. It prioritizes the smallest PVs that can fit the requested volume + size. + {{< /note >}} - `VolumeRestrictions`: Checks that volumes mounted in the node satisfy restrictions that are specific to the volume provider. Extension points: `Filter`. From 365af1356b79424c097119361db72224026949c5 Mon Sep 17 00:00:00 2001 From: Federico Gallo Date: Sun, 14 Mar 2021 15:09:04 -0300 Subject: [PATCH 193/788] [es] Fix/Update content/es/docs/concepts/policy/_index.md (#27043) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix: title is put in quotes. Update: Added description, probably deleted by mistake reviewing change suggestions * Apply suggestions from code review Realmente no estoy entendiendo por qué el "Commit suggestions" no está realizando el commit al fork. Lo voy a intentar nuevamente, pero esta vez haciendo un review ... Éste mensaje se corresponde con el Commit suggestion al utilizar el "Add suggestion to batch" no creo que funcione tampoco en cuyo caso voy a intentar hacer (como mencioné en el párrafo anterior) un review para que los cambios persistan. Co-authored-by: Rael Garcia Co-authored-by: Rael Garcia --- content/es/docs/concepts/policy/_index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/es/docs/concepts/policy/_index.md b/content/es/docs/concepts/policy/_index.md index d5ebfed4f5..d0f16fc4ad 100755 --- a/content/es/docs/concepts/policy/_index.md +++ b/content/es/docs/concepts/policy/_index.md @@ -1,6 +1,8 @@ --- title: Políticas weight: 90 +description: > + Políticas configurables que se aplican a grupos de recursos. --- La sección de Políticas describe las diferentes políticas configurables que se aplican a grupos de recursos: From 004df073c410dd4151752305362cce48c2aeae80 Mon Sep 17 00:00:00 2001 From: Arhell Date: Mon, 15 Mar 2021 00:29:41 +0200 Subject: [PATCH 194/788] [vi] update invalid web page link for api group --- .../vi/docs/reference/glossary/api-group.md | 4 +- .../vi/docs/reference/kubectl/cheatsheet.md | 760 +++++++++--------- 2 files changed, 382 insertions(+), 382 deletions(-) diff --git a/content/vi/docs/reference/glossary/api-group.md b/content/vi/docs/reference/glossary/api-group.md index ce2cfd4532..66c215e0a6 100644 --- a/content/vi/docs/reference/glossary/api-group.md +++ b/content/vi/docs/reference/glossary/api-group.md @@ -2,7 +2,7 @@ title: API Group id: api-group date: 2019-12-16 -full_link: /docs/concepts/overview/kubernetes-api/#api-groups +full_link: /docs/concepts/overview/kubernetes-api/#api-groups-and-versioning short_description: > Một tập những đường dẫn tương đối đến Kubernetes API. @@ -18,4 +18,4 @@ Một tập những đường dẫn tương đối đến Kubernetes API. Bạn có thể cho phép hay vô hiệu từng API group bằng cách thay đổi cấu hình trên API server của mình. Đồng thời bạn cũng có thể vô hiệu hay kích hoạt các đường dẫn cho những tài nguyên cụ thể. API group đơn giản hóa việc mở rộng Kubernetes API. Nó được chỉ định dưới dạng REST và trong trường `apiVersion` của một đối tượng đã được chuyển hóa. -- Đọc thêm về [API Group](/docs/concepts/overview/kubernetes-api/#api-groups). \ No newline at end of file +- Đọc thêm về [API Group](/docs/concepts/overview/kubernetes-api/#api-groups-and-versioning). \ No newline at end of file diff --git a/content/vi/docs/reference/kubectl/cheatsheet.md b/content/vi/docs/reference/kubectl/cheatsheet.md index 38e51750e6..079b36a42b 100644 --- a/content/vi/docs/reference/kubectl/cheatsheet.md +++ b/content/vi/docs/reference/kubectl/cheatsheet.md @@ -1,381 +1,381 @@ ---- -title: kubectl Cheat Sheet -reviewers: -- ngtuna -content_type: concept -card: - name: reference - weight: 30 ---- - - - -Xem thêm: [Kubectl Overview](/docs/reference/kubectl/overview/) và [JsonPath Guide](/docs/reference/kubectl/jsonpath). - -Trang này là trang tổng quan của lệnh `kubectl`. - - - - - -# kubectl - Cheat Sheet - -## Kubectl Autocomplete - -### BASH - -```bash -source <(kubectl completion bash) # thiết lập autocomplete trong bash vào shell hiện tại, gói bash-completion nên được cài đặt trước tiên -echo "source <(kubectl completion bash)" >> ~/.bashrc # thêm vĩnh viễn autocomplete vào trong bash shell -``` - -Bạn có thể dùng một alias cho `kubectl` cũng hoạt động với completion: - -```bash -alias k=kubectl -complete -F __start_kubectl k -``` - -### ZSH - -```bash -source <(kubectl completion zsh) # thiết lập autocomplete trong zsh vào shell hiện tại -echo "if [ $commands[kubectl] ]; then source <(kubectl completion zsh); fi" >> ~/.zshrc # thêm vĩnh viễn autocomplete vào trong zsh shell -``` - -## Ngữ cảnh và cấu hình kubectl - -Thiết lập cụm Kubernetes nào mà `kubectl` sẽ giao tiếp với và sửa đổi thông tin cấu hình. -Xem tài liệu [Xác thực giữa các cụm với kubeconfig](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) -để biết thông tin chi tiết của tệp cấu hình. - -```bash -kubectl config view # Hiển thị các thiết lập kubeconfig đã được merged - -# sử dụng nhiều tệp kubeconfig cùng một lúc và xem cấu hình hợp nhất -KUBECONFIG=~/.kube/config:~/.kube/kubconfig2 - -kubectl config view - -# lấy mật khẩu cho người dùng e2e -kubectl config view -o jsonpath='{.users[?(@.name == "e2e")].user.password}' - -kubectl config view -o jsonpath='{.users[].name}' # hiển thị người dùng đầu tiên -kubectl config view -o jsonpath='{.users[*].name}' # lấy danh sách người dùng -kubectl config get-contexts # hiển thị danh sách các ngữ cảnh -kubectl config current-context # hiển thị ngữ cảnh hiện tại -kubectl config use-context my-cluster-name # thiết lập ngữ cảnh mặc định cho my-cluster-name - -# thêm một cụm mới vào kubeconf hỗ trợ xác thực cơ bản -kubectl config set-credentials kubeuser/foo.kubernetes.com --username=kubeuser --password=kubepassword - -# lưu vĩnh viễn namespace cho tất cả các lệnh kubectl tiếp theo trong ngữ cảnh đó -kubectl config set-context --current --namespace=ggckad-s2 - -# thiết lập ngữ cảnh sử dụng tên người dùng và namespace cụ thể -kubectl config set-context gce --user=cluster-admin --namespace=foo \ - && kubectl config use-context gce - -kubectl config unset users.foo # xóa người dùng foo -``` - -## Apply -`apply` quản lý các ứng dụng thông qua các tệp định nghĩa tài nguyên Kubernetes. Nó tạo và cập nhật các tài nguyên trong một cụm thông qua việc chạy `kubectl apply`. Đây là cách được đề xuất để quản lý các ứng dụng Kubernetes trong thực tế. Xem thêm [Kubectl Book](https://kubectl.docs.kubernetes.io). - -## Tạo một đối tượng - -Kubernetes manifests có thể được định nghĩa trong tệp json hoặc yaml. Phần mở rộng `.yaml`, -`.yml`, và `.json` có thể được dùng. - -```bash -kubectl apply -f ./my-manifest.yaml # tạo tài nguyên -kubectl apply -f ./my1.yaml -f ./my2.yaml # tạo từ nhiều tệp -kubectl apply -f ./dir # tạo tài nguyên từ tất cả các tệp manifest trong thư mục dir -kubectl apply -f https://git.io/vPieo # tạo tài nguyên từ url -kubectl create deployment nginx --image=nginx # tạo một deployment nginx -kubectl explain pods,svc # lấy thông tin pod và service manifest - -# Tạo nhiều đối tượng YAML từ stdin -cat < pod.yaml - -kubectl attach my-pod -i # Đính kèm với container đang chạy -kubectl port-forward my-pod 5000:6000 # Lắng nghe trên cổng 5000 của máy local và chuyển tiếp sang cổng 6000 trên pod my-pod -kubectl exec my-pod -- ls / # Chạy lệnh trong một pod (trường hợp 1 container) -kubectl exec my-pod -c my-container -- ls / # Chạy lệnh trong pod (trường hợp nhiều container) -kubectl top pod POD_NAME --containers # Hiển thị số liệu của pod và container chạy trong nó -``` - -## Tương tác với các nodes và cụm - -```bash -kubectl cordon my-node # Đánh dấu my-node là không thể lập lịch -kubectl drain my-node # Gỡ my-node ra khỏi cụm để chuẩn bị cho việc bảo trì -kubectl uncordon my-node # Đánh dấu my-node có thể lập lịch trở lại -kubectl top node my-node # Hiển thị số liệu của node -kubectl cluster-info # Hiển thị địa chỉ master và các services -kubectl cluster-info dump # Kết xuất trạng thái hiện tại của cụm ra ngoài stdout -kubectl cluster-info dump --output-directory=/path/to/cluster-state # Kết xuất trạng thái hiện tại của cụm vào /path/to/cluster-state - -kubectl taint nodes foo dedicated=special-user:NoSchedule -``` - -### Các loại tài nguyên - -Liệt kê tất cả các loại tài nguyên được hỗ trợ cùng với tên viết tắt của chúng, [API group](/docs/concepts/overview/kubernetes-api/#api-groups), cho dù chúng là [namespaced](/docs/concepts/overview/working-with-objects/namespaces), và [Kind](/docs/concepts/overview/working-with-objects/kubernetes-objects): - -```bash -kubectl api-resources -``` - -Các hoạt động khác để khám phá các tài nguyên API: - -```bash -kubectl api-resources --namespaced=true # Tất cả các tài nguyên được đặt tên -kubectl api-resources --namespaced=false # Tất cả các tài nguyên không được đặt tên -kubectl api-resources -o name # Tất cả các tài nguyên với đầu ra đơn giản (chỉ gồm tên tài nguyên) -kubectl api-resources -o wide # Tất cả các tài nguyên với đầu ra mở rộng -kubectl api-resources --verbs=list,get # Tất cả các tài nguyên hỗ trợ yêu cầu "list" và "get" -kubectl api-resources --api-group=extensions # Tất cả tài nguyên trong nhóm API "tiện ích mở rộng" -``` - -### Định dạng đầu ra - -Để xuất thông tin chi tiết ra cửa sổ terminal của bạn theo một định dạng cụ thể, bạn có thể thêm các cờ `-o` hoặc `--output` vào lệnh `kubectl` được hỗ trợ. - -Định dạng đầu ra | Mô tả ---------------| ----------- -`-o=custom-columns=` | In một bảng bằng danh sách, các cột tùy chỉnh được phân tách bằng dấu phẩy -`-o=custom-columns-file=` | In một bảng bằng cách sử dụng mẫu cột tùy chỉnh trong tệp `` -`-o=json` | Xuất ra một đối tượng API theo định dạng JSON -`-o=jsonpath=

    --enable-admission-plugins stringSlice
    admission plugins that should be enabled in addition to default enabled ones (NamespaceLifecycle, LimitRanger, ServiceAccount, TaintNodesByCondition, Priority, DefaultTolerationSeconds, DefaultStorageClass, StorageObjectInUseProtection, PersistentVolumeClaimResize, RuntimeClass, CertificateApproval, CertificateSigning, CertificateSubjectRestriction, DefaultIngressClass, MutatingAdmissionWebhook, ValidatingAdmissionWebhook, ResourceQuota). Comma-delimited list of admission plugins: AlwaysAdmit, AlwaysDeny, AlwaysPullImages, CertificateApproval, CertificateSigning, CertificateSubjectRestriction, DefaultIngressClass, DefaultStorageClass, DefaultTolerationSeconds, DenyEscalatingExec, DenyExecOnPrivileged, EventRateLimit, ExtendedResourceToleration, ImagePolicyWebhook, LimitPodHardAntiAffinityTopology, LimitRanger, MutatingAdmissionWebhook, NamespaceAutoProvision, NamespaceExists, NamespaceLifecycle, NodeRestriction, OwnerReferencesPermissionEnforcement, PersistentVolumeClaimResize, PersistentVolumeLabel, PodNodeSelector, PodSecurityPolicy, PodTolerationRestriction, Priority, ResourceQuota, RuntimeClass, SecurityContextDeny, ServiceAccount, StorageObjectInUseProtection, TaintNodesByCondition, ValidatingAdmissionWebhook. The order of plugins in this flag does not matter.admission plugins that should be enabled in addition to default enabled ones (NamespaceLifecycle, LimitRanger, ServiceAccount, TaintNodesByCondition, Priority, DefaultTolerationSeconds, DefaultStorageClass, StorageObjectInUseProtection, PersistentVolumeClaimResize, RuntimeClass, CertificateApproval, CertificateSigning, CertificateSubjectRestriction, DefaultIngressClass, MutatingAdmissionWebhook, ValidatingAdmissionWebhook, ResourceQuota). Comma-delimited list of admission plugins: AlwaysAdmit, AlwaysDeny, AlwaysPullImages, CertificateApproval, CertificateSigning, CertificateSubjectRestriction, DefaultIngressClass, DefaultStorageClass, DefaultTolerationSeconds, DenyEscalatingExec, DenyExecOnPrivileged, DenyServiceExternalIPs, EventRateLimit, ExtendedResourceToleration, ImagePolicyWebhook, LimitPodHardAntiAffinityTopology, LimitRanger, MutatingAdmissionWebhook, NamespaceAutoProvision, NamespaceExists, NamespaceLifecycle, NodeRestriction, OwnerReferencesPermissionEnforcement, PersistentVolumeClaimResize, PersistentVolumeLabel, PodNodeSelector, PodSecurityPolicy, PodTolerationRestriction, Priority, ResourceQuota, RuntimeClass, SecurityContextDeny, ServiceAccount, StorageObjectInUseProtection, TaintNodesByCondition, ValidatingAdmissionWebhook. The order of plugins in this flag does not matter.
    --pod-infra-container-image string     Default: `k8s.gcr.io/pause:3.2`
    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`. Specified image will not be pruned by the image garbage collector. When container-runtime is set to `docker`, all containers in each pod will use the network/ipc namespaces from this image. Other CRI implementations have their own configuration to set this image.
    --add-dir-header
    If true, adds the file directory to the header of the log messages

    If true, adds the file directory to the header of the log messages

    --admission-control-config-file string
    File with admission control configuration.

    File with admission control configuration.

    --advertise-address ip--advertise-address string
    The IP address on which to advertise the apiserver to members of the cluster. This address must be reachable by the rest of the cluster. If blank, the --bind-address will be used. If --bind-address is unspecified, the host's default interface will be used.

    The IP address on which to advertise the apiserver to members of the cluster. This address must be reachable by the rest of the cluster. If blank, the --bind-address will be used. If --bind-address is unspecified, the host's default interface will be used.

    --allow-privileged
    If true, allow privileged containers. [default=false]

    If true, allow privileged containers. [default=false]

    --alsologtostderr
    log to standard error as well as files

    log to standard error as well as files

    --anonymous-auth     Default: true
    Enables anonymous requests to the secure port of the API 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.

    Enables anonymous requests to the secure port of the API 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.

    --api-audiences stringSlice--api-audiences strings
    Identifiers of the API. The service account token authenticator will validate that tokens used against the API are bound to at least one of these audiences. If the --service-account-issuer flag is configured and this flag is not, this field defaults to a single element list containing the issuer URL.

    Identifiers of the API. The service account token authenticator will validate that tokens used against the API are bound to at least one of these audiences. If the --service-account-issuer flag is configured and this flag is not, this field defaults to a single element list containing the issuer URL.

    --apiserver-count int     Default: 1
    The number of apiservers running in the cluster, must be a positive number. (In use when --endpoint-reconciler-type=master-count is enabled.)

    The number of apiservers running in the cluster, must be a positive number. (In use when --endpoint-reconciler-type=master-count is enabled.)

    --audit-log-batch-buffer-size int     Default: 10000
    The size of the buffer to store events before batching and writing. Only used in batch mode.

    The size of the buffer to store events before batching and writing. Only used in batch mode.

    --audit-log-batch-max-size int     Default: 1
    The maximum size of a batch. Only used in batch mode.

    The maximum size of a batch. Only used in batch mode.

    --audit-log-batch-max-wait duration
    The amount of time to wait before force writing the batch that hadn't reached the max size. Only used in batch mode.

    The amount of time to wait before force writing the batch that hadn't reached the max size. Only used in batch mode.

    --audit-log-batch-throttle-burst int
    Maximum number of requests sent at the same moment if ThrottleQPS was not utilized before. Only used in batch mode.

    Maximum number of requests sent at the same moment if ThrottleQPS was not utilized before. Only used in batch mode.

    --audit-log-batch-throttle-enable
    Whether batching throttling is enabled. Only used in batch mode.

    Whether batching throttling is enabled. Only used in batch mode.

    --audit-log-batch-throttle-qps float32--audit-log-batch-throttle-qps float
    Maximum average number of batches per second. Only used in batch mode.

    Maximum average number of batches per second. Only used in batch mode.

    --audit-log-compress
    If set, the rotated log files will be compressed using gzip.

    If set, the rotated log files will be compressed using gzip.

    --audit-log-format string     Default: "json"
    Format of saved audits. "legacy" indicates 1-line text format for each event. "json" indicates structured json format. Known formats are legacy,json.

    Format of saved audits. "legacy" indicates 1-line text format for each event. "json" indicates structured json format. Known formats are legacy,json.

    --audit-log-maxage int
    The maximum number of days to retain old audit log files based on the timestamp encoded in their filename.

    The maximum number of days to retain old audit log files based on the timestamp encoded in their filename.

    --audit-log-maxbackup int
    The maximum number of old audit log files to retain.

    The maximum number of old audit log files to retain.

    --audit-log-maxsize int
    The maximum size in megabytes of the audit log file before it gets rotated.

    The maximum size in megabytes of the audit log file before it gets rotated.

    --audit-log-mode string     Default: "blocking"
    Strategy for sending audit events. Blocking indicates sending events should block server responses. Batch causes the backend to buffer and write events asynchronously. Known modes are batch,blocking,blocking-strict.

    Strategy for sending audit events. Blocking indicates sending events should block server responses. Batch causes the backend to buffer and write events asynchronously. Known modes are batch,blocking,blocking-strict.

    --audit-log-path string
    If set, all requests coming to the apiserver will be logged to this file. '-' means standard out.

    If set, all requests coming to the apiserver will be logged to this file. '-' means standard out.

    --audit-log-truncate-enabled
    Whether event and batch truncating is enabled.

    Whether event and batch truncating is enabled.

    --audit-log-truncate-max-batch-size int     Default: 10485760
    Maximum size of the batch sent to the underlying backend. Actual serialized size can be several hundreds of bytes greater. If a batch exceeds this limit, it is split into several batches of smaller size.

    Maximum size of the batch sent to the underlying backend. Actual serialized size can be several hundreds of bytes greater. If a batch exceeds this limit, it is split into several batches of smaller size.

    --audit-log-truncate-max-event-size int     Default: 102400
    Maximum size of the audit event sent to the underlying backend. If the size of an event is greater than this number, first request and response are removed, and if this doesn't reduce the size enough, event is discarded.

    Maximum size of the audit event sent to the underlying backend. If the size of an event is greater than this number, first request and response are removed, and if this doesn't reduce the size enough, event is discarded.

    --audit-log-version string     Default: "audit.k8s.io/v1"
    API group and version used for serializing audit events written to log.

    API group and version used for serializing audit events written to log.

    --audit-policy-file string
    Path to the file that defines the audit policy configuration.

    Path to the file that defines the audit policy configuration.

    --audit-webhook-batch-buffer-size int     Default: 10000
    The size of the buffer to store events before batching and writing. Only used in batch mode.

    The size of the buffer to store events before batching and writing. Only used in batch mode.

    --audit-webhook-batch-max-size int     Default: 400
    The maximum size of a batch. Only used in batch mode.

    The maximum size of a batch. Only used in batch mode.

    --audit-webhook-batch-max-wait duration     Default: 30s
    The amount of time to wait before force writing the batch that hadn't reached the max size. Only used in batch mode.

    The amount of time to wait before force writing the batch that hadn't reached the max size. Only used in batch mode.

    --audit-webhook-batch-throttle-burst int     Default: 15
    Maximum number of requests sent at the same moment if ThrottleQPS was not utilized before. Only used in batch mode.

    Maximum number of requests sent at the same moment if ThrottleQPS was not utilized before. Only used in batch mode.

    --audit-webhook-batch-throttle-enable     Default: true
    Whether batching throttling is enabled. Only used in batch mode.

    Whether batching throttling is enabled. Only used in batch mode.

    --audit-webhook-batch-throttle-qps float32     Default: 10--audit-webhook-batch-throttle-qps float     Default: 10
    Maximum average number of batches per second. Only used in batch mode.

    Maximum average number of batches per second. Only used in batch mode.

    --audit-webhook-config-file string
    Path to a kubeconfig formatted file that defines the audit webhook configuration.

    Path to a kubeconfig formatted file that defines the audit webhook configuration.

    --audit-webhook-initial-backoff duration     Default: 10s
    The amount of time to wait before retrying the first failed request.

    The amount of time to wait before retrying the first failed request.

    --audit-webhook-mode string     Default: "batch"
    Strategy for sending audit events. Blocking indicates sending events should block server responses. Batch causes the backend to buffer and write events asynchronously. Known modes are batch,blocking,blocking-strict.

    Strategy for sending audit events. Blocking indicates sending events should block server responses. Batch causes the backend to buffer and write events asynchronously. Known modes are batch,blocking,blocking-strict.

    --audit-webhook-truncate-enabled
    Whether event and batch truncating is enabled.

    Whether event and batch truncating is enabled.

    --audit-webhook-truncate-max-batch-size int     Default: 10485760
    Maximum size of the batch sent to the underlying backend. Actual serialized size can be several hundreds of bytes greater. If a batch exceeds this limit, it is split into several batches of smaller size.

    Maximum size of the batch sent to the underlying backend. Actual serialized size can be several hundreds of bytes greater. If a batch exceeds this limit, it is split into several batches of smaller size.

    --audit-webhook-truncate-max-event-size int     Default: 102400
    Maximum size of the audit event sent to the underlying backend. If the size of an event is greater than this number, first request and response are removed, and if this doesn't reduce the size enough, event is discarded.

    Maximum size of the audit event sent to the underlying backend. If the size of an event is greater than this number, first request and response are removed, and if this doesn't reduce the size enough, event is discarded.

    --audit-webhook-version string     Default: "audit.k8s.io/v1"
    API group and version used for serializing audit events written to webhook.

    API group and version used for serializing audit events written to webhook.

    --authentication-token-webhook-cache-ttl duration     Default: 2m0s
    The duration to cache responses from the webhook token authenticator.

    The duration to cache responses from the webhook token authenticator.

    --authentication-token-webhook-config-file string
    File with webhook configuration for token authentication in kubeconfig format. The API server will query the remote service to determine authentication for bearer tokens.

    File with webhook configuration for token authentication in kubeconfig format. The API server will query the remote service to determine authentication for bearer tokens.

    --authentication-token-webhook-version string     Default: "v1beta1"
    The API version of the authentication.k8s.io TokenReview to send to and expect from the webhook.

    The API version of the authentication.k8s.io TokenReview to send to and expect from the webhook.

    --authorization-mode stringSlice     Default: [AlwaysAllow]--authorization-mode strings     Default: "AlwaysAllow"
    Ordered list of plug-ins to do authorization on secure port. Comma-delimited list of: AlwaysAllow,AlwaysDeny,ABAC,Webhook,RBAC,Node.

    Ordered list of plug-ins to do authorization on secure port. Comma-delimited list of: AlwaysAllow,AlwaysDeny,ABAC,Webhook,RBAC,Node.

    --authorization-policy-file string
    File with authorization policy in json line by line format, used with --authorization-mode=ABAC, on the secure port.

    File with authorization policy in json line by line format, used with --authorization-mode=ABAC, on the secure port.

    --authorization-webhook-cache-authorized-ttl duration     Default: 5m0s
    The duration to cache 'authorized' responses from the webhook authorizer.

    The duration to cache 'authorized' responses from the webhook authorizer.

    --authorization-webhook-cache-unauthorized-ttl duration     Default: 30s
    The duration to cache 'unauthorized' responses from the webhook authorizer.

    The duration to cache 'unauthorized' responses from the webhook authorizer.

    --authorization-webhook-config-file string
    File with webhook configuration in kubeconfig format, used with --authorization-mode=Webhook. The API server will query the remote service to determine access on the API server's secure port.

    File with webhook configuration in kubeconfig format, used with --authorization-mode=Webhook. The API server will query the remote service to determine access on the API server's secure port.

    --authorization-webhook-version string     Default: "v1beta1"
    The API version of the authorization.k8s.io SubjectAccessReview to send to and expect from the webhook.

    The API version of the authorization.k8s.io SubjectAccessReview to send to and expect from the webhook.

    --azure-container-registry-config string
    Path to the file containing Azure container registry configuration information.

    Path to the file containing Azure container registry configuration information.

    --bind-address ip     Default: 0.0.0.0--bind-address string     Default: 0.0.0.0
    The IP address on which to listen for the --secure-port port. The associated interface(s) must be reachable by the rest of the cluster, and by CLI/web clients. If blank or an unspecified address (0.0.0.0 or ::), all interfaces will be used.

    The IP address on which to listen for the --secure-port port. The associated interface(s) must be reachable by the rest of the cluster, and by CLI/web clients. If blank or an unspecified address (0.0.0.0 or ::), all interfaces will be used.

    --cert-dir string     Default: "/var/run/kubernetes"
    The directory where the TLS certs are located. If --tls-cert-file and --tls-private-key-file are provided, this flag will be ignored.

    The directory where the TLS certs are located. If --tls-cert-file and --tls-private-key-file are provided, this flag will be ignored.

    --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.

    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.

    --cloud-config string
    The path to the cloud provider configuration file. Empty string for no configuration file.

    The path to the cloud provider configuration file. Empty string for no configuration file.

    --cloud-provider string
    The provider for cloud services. Empty string for no provider.

    The provider for cloud services. Empty string for no provider.

    --cloud-provider-gce-l7lb-src-cidrs cidrs     Default: 130.211.0.0/22,35.191.0.0/16
    CIDRs opened in GCE firewall for L7 LB traffic proxy & health checks

    CIDRs opened in GCE firewall for L7 LB traffic proxy & health checks

    --contention-profiling
    Enable lock contention profiling, if profiling is enabled

    Enable lock contention profiling, if profiling is enabled

    --cors-allowed-origins stringSlice--cors-allowed-origins strings
    List of allowed origins for CORS, comma separated. An allowed origin can be a regular expression to support subdomain matching. If this list is empty CORS will not be enabled.

    List of allowed origins for CORS, comma separated. An allowed origin can be a regular expression to support subdomain matching. If this list is empty CORS will not be enabled.

    --default-not-ready-toleration-seconds int     Default: 300
    Indicates the tolerationSeconds of the toleration for notReady:NoExecute that is added by default to every pod that does not already have such a toleration.

    Indicates the tolerationSeconds of the toleration for notReady:NoExecute that is added by default to every pod that does not already have such a toleration.

    --default-unreachable-toleration-seconds int     Default: 300
    Indicates the tolerationSeconds of the toleration for unreachable:NoExecute that is added by default to every pod that does not already have such a toleration.

    Indicates the tolerationSeconds of the toleration for unreachable:NoExecute that is added by default to every pod that does not already have such a toleration.

    --default-watch-cache-size int     Default: 100
    Default watch cache size. If zero, watch cache will be disabled for resources that do not have a default watch size set.

    Default watch cache size. If zero, watch cache will be disabled for resources that do not have a default watch size set.

    --delete-collection-workers int     Default: 1
    Number of workers spawned for DeleteCollection call. These are used to speed up namespace cleanup.

    Number of workers spawned for DeleteCollection call. These are used to speed up namespace cleanup.

    --disable-admission-plugins stringSlice--disable-admission-plugins strings
    admission plugins that should be disabled although they are in the default enabled plugins list (NamespaceLifecycle, LimitRanger, ServiceAccount, TaintNodesByCondition, Priority, DefaultTolerationSeconds, DefaultStorageClass, StorageObjectInUseProtection, PersistentVolumeClaimResize, RuntimeClass, CertificateApproval, CertificateSigning, CertificateSubjectRestriction, DefaultIngressClass, MutatingAdmissionWebhook, ValidatingAdmissionWebhook, ResourceQuota). Comma-delimited list of admission plugins: AlwaysAdmit, AlwaysDeny, AlwaysPullImages, CertificateApproval, CertificateSigning, CertificateSubjectRestriction, DefaultIngressClass, DefaultStorageClass, DefaultTolerationSeconds, DenyEscalatingExec, DenyExecOnPrivileged, EventRateLimit, ExtendedResourceToleration, ImagePolicyWebhook, LimitPodHardAntiAffinityTopology, LimitRanger, MutatingAdmissionWebhook, NamespaceAutoProvision, NamespaceExists, NamespaceLifecycle, NodeRestriction, OwnerReferencesPermissionEnforcement, PersistentVolumeClaimResize, PersistentVolumeLabel, PodNodeSelector, PodSecurityPolicy, PodTolerationRestriction, Priority, ResourceQuota, RuntimeClass, SecurityContextDeny, ServiceAccount, StorageObjectInUseProtection, TaintNodesByCondition, ValidatingAdmissionWebhook. The order of plugins in this flag does not matter.

    admission plugins that should be disabled although they are in the default enabled plugins list (NamespaceLifecycle, LimitRanger, ServiceAccount, TaintNodesByCondition, Priority, DefaultTolerationSeconds, DefaultStorageClass, StorageObjectInUseProtection, PersistentVolumeClaimResize, RuntimeClass, CertificateApproval, CertificateSigning, CertificateSubjectRestriction, DefaultIngressClass, MutatingAdmissionWebhook, ValidatingAdmissionWebhook, ResourceQuota). Comma-delimited list of admission plugins: AlwaysAdmit, AlwaysDeny, AlwaysPullImages, CertificateApproval, CertificateSigning, CertificateSubjectRestriction, DefaultIngressClass, DefaultStorageClass, DefaultTolerationSeconds, DenyEscalatingExec, DenyExecOnPrivileged, EventRateLimit, ExtendedResourceToleration, ImagePolicyWebhook, LimitPodHardAntiAffinityTopology, LimitRanger, MutatingAdmissionWebhook, NamespaceAutoProvision, NamespaceExists, NamespaceLifecycle, NodeRestriction, OwnerReferencesPermissionEnforcement, PersistentVolumeClaimResize, PersistentVolumeLabel, PodNodeSelector, PodSecurityPolicy, PodTolerationRestriction, Priority, ResourceQuota, RuntimeClass, SecurityContextDeny, ServiceAccount, StorageObjectInUseProtection, TaintNodesByCondition, ValidatingAdmissionWebhook. The order of plugins in this flag does not matter.

    --egress-selector-config-file string
    File with apiserver egress selector configuration.

    File with apiserver egress selector configuration.

    --enable-admission-plugins stringSlice--enable-admission-plugins strings
    admission plugins that should be enabled in addition to default enabled ones (NamespaceLifecycle, LimitRanger, ServiceAccount, TaintNodesByCondition, Priority, DefaultTolerationSeconds, DefaultStorageClass, StorageObjectInUseProtection, PersistentVolumeClaimResize, RuntimeClass, CertificateApproval, CertificateSigning, CertificateSubjectRestriction, DefaultIngressClass, MutatingAdmissionWebhook, ValidatingAdmissionWebhook, ResourceQuota). Comma-delimited list of admission plugins: AlwaysAdmit, AlwaysDeny, AlwaysPullImages, CertificateApproval, CertificateSigning, CertificateSubjectRestriction, DefaultIngressClass, DefaultStorageClass, DefaultTolerationSeconds, DenyEscalatingExec, DenyExecOnPrivileged, EventRateLimit, ExtendedResourceToleration, ImagePolicyWebhook, LimitPodHardAntiAffinityTopology, LimitRanger, MutatingAdmissionWebhook, NamespaceAutoProvision, NamespaceExists, NamespaceLifecycle, NodeRestriction, OwnerReferencesPermissionEnforcement, PersistentVolumeClaimResize, PersistentVolumeLabel, PodNodeSelector, PodSecurityPolicy, PodTolerationRestriction, Priority, ResourceQuota, RuntimeClass, SecurityContextDeny, ServiceAccount, StorageObjectInUseProtection, TaintNodesByCondition, ValidatingAdmissionWebhook. The order of plugins in this flag does not matter.

    admission plugins that should be enabled in addition to default enabled ones (NamespaceLifecycle, LimitRanger, ServiceAccount, TaintNodesByCondition, Priority, DefaultTolerationSeconds, DefaultStorageClass, StorageObjectInUseProtection, PersistentVolumeClaimResize, RuntimeClass, CertificateApproval, CertificateSigning, CertificateSubjectRestriction, DefaultIngressClass, MutatingAdmissionWebhook, ValidatingAdmissionWebhook, ResourceQuota). Comma-delimited list of admission plugins: AlwaysAdmit, AlwaysDeny, AlwaysPullImages, CertificateApproval, CertificateSigning, CertificateSubjectRestriction, DefaultIngressClass, DefaultStorageClass, DefaultTolerationSeconds, DenyEscalatingExec, DenyExecOnPrivileged, EventRateLimit, ExtendedResourceToleration, ImagePolicyWebhook, LimitPodHardAntiAffinityTopology, LimitRanger, MutatingAdmissionWebhook, NamespaceAutoProvision, NamespaceExists, NamespaceLifecycle, NodeRestriction, OwnerReferencesPermissionEnforcement, PersistentVolumeClaimResize, PersistentVolumeLabel, PodNodeSelector, PodSecurityPolicy, PodTolerationRestriction, Priority, ResourceQuota, RuntimeClass, SecurityContextDeny, ServiceAccount, StorageObjectInUseProtection, TaintNodesByCondition, ValidatingAdmissionWebhook. The order of plugins in this flag does not matter.

    --enable-aggregator-routing
    Turns on aggregator routing requests to endpoints IP rather than cluster IP.

    Turns on aggregator routing requests to endpoints IP rather than cluster IP.

    --enable-bootstrap-token-auth
    Enable to allow secrets of type 'bootstrap.kubernetes.io/token' in the 'kube-system' namespace to be used for TLS bootstrapping authentication.

    Enable to allow secrets of type 'bootstrap.kubernetes.io/token' in the 'kube-system' namespace to be used for TLS bootstrapping authentication.

    --enable-garbage-collector     Default: true
    Enables the generic garbage collector. MUST be synced with the corresponding flag of the kube-controller-manager.

    Enables the generic garbage collector. MUST be synced with the corresponding flag of the kube-controller-manager.

    --enable-priority-and-fairness     Default: true
    If true and the APIPriorityAndFairness feature gate is enabled, replace the max-in-flight handler with an enhanced one that queues and dispatches with priority and fairness

    If true and the APIPriorityAndFairness feature gate is enabled, replace the max-in-flight handler with an enhanced one that queues and dispatches with priority and fairness

    --encryption-provider-config string
    The file containing configuration for encryption providers to be used for storing secrets in etcd

    The file containing configuration for encryption providers to be used for storing secrets in etcd

    --endpoint-reconciler-type string     Default: "lease"
    Use an endpoint reconciler (master-count, lease, none)

    Use an endpoint reconciler (master-count, lease, none)

    --etcd-cafile string
    SSL Certificate Authority file used to secure etcd communication.

    SSL Certificate Authority file used to secure etcd communication.

    --etcd-certfile string
    SSL certification file used to secure etcd communication.

    SSL certification file used to secure etcd communication.

    --etcd-compaction-interval duration     Default: 5m0s
    The interval of compaction requests. If 0, the compaction request from apiserver is disabled.

    The interval of compaction requests. If 0, the compaction request from apiserver is disabled.

    --etcd-count-metric-poll-period duration     Default: 1m0s
    Frequency of polling etcd for number of resources per type. 0 disables the metric collection.

    Frequency of polling etcd for number of resources per type. 0 disables the metric collection.

    --etcd-db-metric-poll-interval duration     Default: 30s
    The interval of requests to poll etcd and update metric. 0 disables the metric collection

    The interval of requests to poll etcd and update metric. 0 disables the metric collection

    --etcd-healthcheck-timeout duration     Default: 2s
    The timeout to use when checking etcd health.

    The timeout to use when checking etcd health.

    --etcd-keyfile string
    SSL key file used to secure etcd communication.

    SSL key file used to secure etcd communication.

    --etcd-prefix string     Default: "/registry"
    The prefix to prepend to all resource paths in etcd.

    The prefix to prepend to all resource paths in etcd.

    --etcd-servers stringSlice--etcd-servers strings
    List of etcd servers to connect with (scheme://ip:port), comma separated.

    List of etcd servers to connect with (scheme://ip:port), comma separated.

    --etcd-servers-overrides stringSlice--etcd-servers-overrides strings
    Per-resource etcd servers overrides, comma separated. The individual override format: group/resource#servers, where servers are URLs, semicolon separated.

    Per-resource etcd servers overrides, comma separated. The individual override format: group/resource#servers, where servers are URLs, semicolon separated.

    --event-ttl duration     Default: 1h0m0s
    Amount of time to retain events.

    Amount of time to retain events.

    --experimental-logging-sanitization
    [Experimental] When enabled prevents logging of fields tagged as sensitive (passwords, keys, tokens).
    Runtime log sanitization may introduce significant computation overhead and therefore should not be enabled in production.

    [Experimental] When enabled prevents logging of fields tagged as sensitive (passwords, keys, tokens).
    Runtime log sanitization may introduce significant computation overhead and therefore should not be enabled in production.

    --external-hostname string
    The hostname to use when generating externalized URLs for this master (e.g. Swagger API Docs or OpenID Discovery).

    The hostname to use when generating externalized URLs for this master (e.g. Swagger API Docs or OpenID Discovery).

    --feature-gates mapStringBool--feature-gates <comma-separated 'key=True|False' pairs>
    A set of key=value pairs that describe feature gates for alpha/experimental features. Options are:
    APIListChunking=true|false (BETA - default=true)
    APIPriorityAndFairness=true|false (BETA - default=true)
    APIResponseCompression=true|false (BETA - default=true)
    APIServerIdentity=true|false (ALPHA - default=false)
    AllAlpha=true|false (ALPHA - default=false)
    AllBeta=true|false (BETA - default=false)
    AllowInsecureBackendProxy=true|false (BETA - default=true)
    AnyVolumeDataSource=true|false (ALPHA - default=false)
    AppArmor=true|false (BETA - default=true)
    BalanceAttachedNodeVolumes=true|false (ALPHA - default=false)
    BoundServiceAccountTokenVolume=true|false (ALPHA - default=false)
    CPUManager=true|false (BETA - default=true)
    CRIContainerLogRotation=true|false (BETA - default=true)
    CSIInlineVolume=true|false (BETA - default=true)
    CSIMigration=true|false (BETA - default=true)
    CSIMigrationAWS=true|false (BETA - default=false)
    CSIMigrationAWSComplete=true|false (ALPHA - default=false)
    CSIMigrationAzureDisk=true|false (BETA - default=false)
    CSIMigrationAzureDiskComplete=true|false (ALPHA - default=false)
    CSIMigrationAzureFile=true|false (ALPHA - default=false)
    CSIMigrationAzureFileComplete=true|false (ALPHA - default=false)
    CSIMigrationGCE=true|false (BETA - default=false)
    CSIMigrationGCEComplete=true|false (ALPHA - default=false)
    CSIMigrationOpenStack=true|false (BETA - default=false)
    CSIMigrationOpenStackComplete=true|false (ALPHA - default=false)
    CSIMigrationvSphere=true|false (BETA - default=false)
    CSIMigrationvSphereComplete=true|false (BETA - default=false)
    CSIServiceAccountToken=true|false (ALPHA - default=false)
    CSIStorageCapacity=true|false (ALPHA - default=false)
    CSIVolumeFSGroupPolicy=true|false (BETA - default=true)
    ConfigurableFSGroupPolicy=true|false (BETA - default=true)
    CronJobControllerV2=true|false (ALPHA - default=false)
    CustomCPUCFSQuotaPeriod=true|false (ALPHA - default=false)
    DefaultPodTopologySpread=true|false (BETA - default=true)
    DevicePlugins=true|false (BETA - default=true)
    DisableAcceleratorUsageMetrics=true|false (BETA - default=true)
    DownwardAPIHugePages=true|false (ALPHA - default=false)
    DynamicKubeletConfig=true|false (BETA - default=true)
    EfficientWatchResumption=true|false (ALPHA - default=false)
    EndpointSlice=true|false (BETA - default=true)
    EndpointSliceNodeName=true|false (ALPHA - default=false)
    EndpointSliceProxying=true|false (BETA - default=true)
    EndpointSliceTerminatingCondition=true|false (ALPHA - default=false)
    EphemeralContainers=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)
    GenericEphemeralVolume=true|false (ALPHA - default=false)
    GracefulNodeShutdown=true|false (ALPHA - default=false)
    HPAContainerMetrics=true|false (ALPHA - default=false)
    HPAScaleToZero=true|false (ALPHA - default=false)
    HugePageStorageMediumSize=true|false (BETA - default=true)
    IPv6DualStack=true|false (ALPHA - default=false)
    ImmutableEphemeralVolumes=true|false (BETA - default=true)
    KubeletCredentialProviders=true|false (ALPHA - default=false)
    KubeletPodResources=true|false (BETA - default=true)
    LegacyNodeRoleBehavior=true|false (BETA - default=true)
    LocalStorageCapacityIsolation=true|false (BETA - default=true)
    LocalStorageCapacityIsolationFSQuotaMonitoring=true|false (ALPHA - default=false)
    MixedProtocolLBService=true|false (ALPHA - default=false)
    NodeDisruptionExclusion=true|false (BETA - default=true)
    NonPreemptingPriority=true|false (BETA - default=true)
    PodDisruptionBudget=true|false (BETA - default=true)
    PodOverhead=true|false (BETA - default=true)
    ProcMountType=true|false (ALPHA - default=false)
    QOSReserved=true|false (ALPHA - default=false)
    RemainingItemCount=true|false (BETA - default=true)
    RemoveSelfLink=true|false (BETA - default=true)
    RootCAConfigMap=true|false (BETA - default=true)
    RotateKubeletServerCertificate=true|false (BETA - default=true)
    RunAsGroup=true|false (BETA - default=true)
    ServerSideApply=true|false (BETA - default=true)
    ServiceAccountIssuerDiscovery=true|false (BETA - default=true)
    ServiceLBNodePortControl=true|false (ALPHA - default=false)
    ServiceNodeExclusion=true|false (BETA - default=true)
    ServiceTopology=true|false (ALPHA - default=false)
    SetHostnameAsFQDN=true|false (BETA - default=true)
    SizeMemoryBackedVolumes=true|false (ALPHA - default=false)
    StorageVersionAPI=true|false (ALPHA - default=false)
    StorageVersionHash=true|false (BETA - default=true)
    Sysctls=true|false (BETA - default=true)
    TTLAfterFinished=true|false (ALPHA - default=false)
    TopologyManager=true|false (BETA - default=true)
    ValidateProxyRedirects=true|false (BETA - default=true)
    WarningHeaders=true|false (BETA - default=true)
    WinDSR=true|false (ALPHA - default=false)
    WinOverlay=true|false (BETA - default=true)
    WindowsEndpointSliceProxying=true|false (ALPHA - default=false)

    A set of key=value pairs that describe feature gates for alpha/experimental features. Options are:
    APIListChunking=true|false (BETA - default=true)
    APIPriorityAndFairness=true|false (BETA - default=true)
    APIResponseCompression=true|false (BETA - default=true)
    APIServerIdentity=true|false (ALPHA - default=false)
    AllAlpha=true|false (ALPHA - default=false)
    AllBeta=true|false (BETA - default=false)
    AllowInsecureBackendProxy=true|false (BETA - default=true)
    AnyVolumeDataSource=true|false (ALPHA - default=false)
    AppArmor=true|false (BETA - default=true)
    BalanceAttachedNodeVolumes=true|false (ALPHA - default=false)
    BoundServiceAccountTokenVolume=true|false (ALPHA - default=false)
    CPUManager=true|false (BETA - default=true)
    CRIContainerLogRotation=true|false (BETA - default=true)
    CSIInlineVolume=true|false (BETA - default=true)
    CSIMigration=true|false (BETA - default=true)
    CSIMigrationAWS=true|false (BETA - default=false)
    CSIMigrationAWSComplete=true|false (ALPHA - default=false)
    CSIMigrationAzureDisk=true|false (BETA - default=false)
    CSIMigrationAzureDiskComplete=true|false (ALPHA - default=false)
    CSIMigrationAzureFile=true|false (ALPHA - default=false)
    CSIMigrationAzureFileComplete=true|false (ALPHA - default=false)
    CSIMigrationGCE=true|false (BETA - default=false)
    CSIMigrationGCEComplete=true|false (ALPHA - default=false)
    CSIMigrationOpenStack=true|false (BETA - default=false)
    CSIMigrationOpenStackComplete=true|false (ALPHA - default=false)
    CSIMigrationvSphere=true|false (BETA - default=false)
    CSIMigrationvSphereComplete=true|false (BETA - default=false)
    CSIServiceAccountToken=true|false (ALPHA - default=false)
    CSIStorageCapacity=true|false (ALPHA - default=false)
    CSIVolumeFSGroupPolicy=true|false (BETA - default=true)
    ConfigurableFSGroupPolicy=true|false (BETA - default=true)
    CronJobControllerV2=true|false (ALPHA - default=false)
    CustomCPUCFSQuotaPeriod=true|false (ALPHA - default=false)
    DefaultPodTopologySpread=true|false (BETA - default=true)
    DevicePlugins=true|false (BETA - default=true)
    DisableAcceleratorUsageMetrics=true|false (BETA - default=true)
    DownwardAPIHugePages=true|false (ALPHA - default=false)
    DynamicKubeletConfig=true|false (BETA - default=true)
    EfficientWatchResumption=true|false (ALPHA - default=false)
    EndpointSlice=true|false (BETA - default=true)
    EndpointSliceNodeName=true|false (ALPHA - default=false)
    EndpointSliceProxying=true|false (BETA - default=true)
    EndpointSliceTerminatingCondition=true|false (ALPHA - default=false)
    EphemeralContainers=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)
    GenericEphemeralVolume=true|false (ALPHA - default=false)
    GracefulNodeShutdown=true|false (ALPHA - default=false)
    HPAContainerMetrics=true|false (ALPHA - default=false)
    HPAScaleToZero=true|false (ALPHA - default=false)
    HugePageStorageMediumSize=true|false (BETA - default=true)
    IPv6DualStack=true|false (ALPHA - default=false)
    ImmutableEphemeralVolumes=true|false (BETA - default=true)
    KubeletCredentialProviders=true|false (ALPHA - default=false)
    KubeletPodResources=true|false (BETA - default=true)
    LegacyNodeRoleBehavior=true|false (BETA - default=true)
    LocalStorageCapacityIsolation=true|false (BETA - default=true)
    LocalStorageCapacityIsolationFSQuotaMonitoring=true|false (ALPHA - default=false)
    MixedProtocolLBService=true|false (ALPHA - default=false)
    NodeDisruptionExclusion=true|false (BETA - default=true)
    NonPreemptingPriority=true|false (BETA - default=true)
    PodDisruptionBudget=true|false (BETA - default=true)
    PodOverhead=true|false (BETA - default=true)
    ProcMountType=true|false (ALPHA - default=false)
    QOSReserved=true|false (ALPHA - default=false)
    RemainingItemCount=true|false (BETA - default=true)
    RemoveSelfLink=true|false (BETA - default=true)
    RootCAConfigMap=true|false (BETA - default=true)
    RotateKubeletServerCertificate=true|false (BETA - default=true)
    RunAsGroup=true|false (BETA - default=true)
    ServerSideApply=true|false (BETA - default=true)
    ServiceAccountIssuerDiscovery=true|false (BETA - default=true)
    ServiceLBNodePortControl=true|false (ALPHA - default=false)
    ServiceNodeExclusion=true|false (BETA - default=true)
    ServiceTopology=true|false (ALPHA - default=false)
    SetHostnameAsFQDN=true|false (BETA - default=true)
    SizeMemoryBackedVolumes=true|false (ALPHA - default=false)
    StorageVersionAPI=true|false (ALPHA - default=false)
    StorageVersionHash=true|false (BETA - default=true)
    Sysctls=true|false (BETA - default=true)
    TTLAfterFinished=true|false (ALPHA - default=false)
    TopologyManager=true|false (BETA - default=true)
    ValidateProxyRedirects=true|false (BETA - default=true)
    WarningHeaders=true|false (BETA - default=true)
    WinDSR=true|false (ALPHA - default=false)
    WinOverlay=true|false (BETA - default=true)
    WindowsEndpointSliceProxying=true|false (ALPHA - default=false)

    --goaway-chance float
    To prevent HTTP/2 clients from getting stuck on a single apiserver, randomly close a connection (GOAWAY). The client's other in-flight requests won't be affected, and the client will reconnect, likely landing on a different apiserver after going through the load balancer again. This argument sets the fraction of requests that will be sent a GOAWAY. Clusters with single apiservers, or which don't use a load balancer, should NOT enable this. Min is 0 (off), Max is .02 (1/50 requests); .001 (1/1000) is a recommended starting point.

    To prevent HTTP/2 clients from getting stuck on a single apiserver, randomly close a connection (GOAWAY). The client's other in-flight requests won't be affected, and the client will reconnect, likely landing on a different apiserver after going through the load balancer again. This argument sets the fraction of requests that will be sent a GOAWAY. Clusters with single apiservers, or which don't use a load balancer, should NOT enable this. Min is 0 (off), Max is .02 (1/50 requests); .001 (1/1000) is a recommended starting point.

    -h, --help
    help for kube-apiserver

    help for kube-apiserver

    --http2-max-streams-per-connection int
    The limit that the server gives to clients for the maximum number of streams in an HTTP/2 connection. Zero means to use golang's default.

    The limit that the server gives to clients for the maximum number of streams in an HTTP/2 connection. Zero means to use golang's default.

    --identity-lease-duration-seconds int     Default: 3600
    The duration of kube-apiserver lease in seconds, must be a positive number. (In use when the APIServerIdentity feature gate is enabled.)

    The duration of kube-apiserver lease in seconds, must be a positive number. (In use when the APIServerIdentity feature gate is enabled.)

    --identity-lease-renew-interval-seconds int     Default: 10
    The interval of kube-apiserver renewing its lease in seconds, must be a positive number. (In use when the APIServerIdentity feature gate is enabled.)

    The interval of kube-apiserver renewing its lease in seconds, must be a positive number. (In use when the APIServerIdentity feature gate is enabled.)

    --kubelet-certificate-authority string
    Path to a cert file for the certificate authority.

    Path to a cert file for the certificate authority.

    --kubelet-client-certificate string
    Path to a client cert file for TLS.

    Path to a client cert file for TLS.

    --kubelet-client-key string
    Path to a client key file for TLS.

    Path to a client key file for TLS.

    --kubelet-preferred-address-types stringSlice     Default: [Hostname,InternalDNS,InternalIP,ExternalDNS,ExternalIP]--kubelet-preferred-address-types strings     Default: "Hostname,InternalDNS,InternalIP,ExternalDNS,ExternalIP"
    List of the preferred NodeAddressTypes to use for kubelet connections.

    List of the preferred NodeAddressTypes to use for kubelet connections.

    --kubelet-timeout duration     Default: 5s
    Timeout for kubelet operations.

    Timeout for kubelet operations.

    --kubernetes-service-node-port int
    If non-zero, the Kubernetes master service (which apiserver creates/maintains) will be of type NodePort, using this as the value of the port. If zero, the Kubernetes master service will be of type ClusterIP.

    If non-zero, the Kubernetes master service (which apiserver creates/maintains) will be of type NodePort, using this as the value of the port. If zero, the Kubernetes master service will be of type ClusterIP.

    --livez-grace-period duration
    This option represents the maximum amount of time it should take for apiserver to complete its startup sequence and become live. From apiserver's start time to when this amount of time has elapsed, /livez will assume that unfinished post-start hooks will complete successfully and therefore return true.

    This option represents the maximum amount of time it should take for apiserver to complete its startup sequence and become live. From apiserver's start time to when this amount of time has elapsed, /livez will assume that unfinished post-start hooks will complete successfully and therefore return true.

    --log-backtrace-at traceLocation     Default: :0--log-backtrace-at <a string in the form 'file:N'>     Default: :0
    when logging hits line file:N, emit a stack trace

    when logging hits line file:N, emit a stack trace

    --log-dir string
    If non-empty, write log files in this directory

    If non-empty, write log files in this directory

    --log-file string
    If non-empty, use this log file

    If non-empty, use this log file

    --log-file-max-size uint     Default: 1800
    Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited.

    Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited.

    --log-flush-frequency duration     Default: 5s
    Maximum number of seconds between log flushes

    Maximum number of seconds between log flushes

    --logging-format string     Default: "text"
    Sets the log format. Permitted formats: "json", "text".
    Non-default formats don't honor these flags: --add_dir_header, --alsologtostderr, --log_backtrace_at, --log_dir, --log_file, --log_file_max_size, --logtostderr, --one_output, --skip_headers, --skip_log_headers, --stderrthreshold, --vmodule, --log-flush-frequency.
    Non-default choices are currently alpha and subject to change without warning.

    Sets the log format. Permitted formats: "json", "text".
    Non-default formats don't honor these flags: --add_dir_header, --alsologtostderr, --log_backtrace_at, --log_dir, --log_file, --log_file_max_size, --logtostderr, --one_output, --skip_headers, --skip_log_headers, --stderrthreshold, --vmodule, --log-flush-frequency.
    Non-default choices are currently alpha and subject to change without warning.

    --logtostderr     Default: true
    log to standard error instead of files

    log to standard error instead of files

    --master-service-namespace string     Default: "default"
    DEPRECATED: the namespace from which the Kubernetes master services should be injected into pods.

    DEPRECATED: the namespace from which the Kubernetes master services should be injected into pods.

    --max-connection-bytes-per-sec int
    If non-zero, throttle each user connection to this number of bytes/sec. Currently only applies to long-running requests.

    If non-zero, throttle each user connection to this number of bytes/sec. Currently only applies to long-running requests.

    --max-mutating-requests-inflight int     Default: 200
    The maximum number of mutating requests in flight at a given time. When the server exceeds this, it rejects requests. Zero for no limit.

    The maximum number of mutating requests in flight at a given time. When the server exceeds this, it rejects requests. Zero for no limit.

    --max-requests-inflight int     Default: 400
    The maximum number of non-mutating requests in flight at a given time. When the server exceeds this, it rejects requests. Zero for no limit.

    The maximum number of non-mutating requests in flight at a given time. When the server exceeds this, it rejects requests. Zero for no limit.

    --min-request-timeout int     Default: 1800
    An optional field indicating the minimum number of seconds a handler must keep a request open before timing it out. Currently only honored by the watch request handler, which picks a randomized value above this number as the connection timeout, to spread out load.

    An optional field indicating the minimum number of seconds a handler must keep a request open before timing it out. Currently only honored by the watch request handler, which picks a randomized value above this number as the connection timeout, to spread out load.

    --oidc-ca-file string
    If set, the OpenID server's certificate will be verified by one of the authorities in the oidc-ca-file, otherwise the host's root CA set will be used.

    If set, the OpenID server's certificate will be verified by one of the authorities in the oidc-ca-file, otherwise the host's root CA set will be used.

    --oidc-client-id string
    The client ID for the OpenID Connect client, must be set if oidc-issuer-url is set.

    The client ID for the OpenID Connect client, must be set if oidc-issuer-url is set.

    --oidc-groups-claim string
    If provided, the name of a custom OpenID Connect claim for specifying user groups. The claim value is expected to be a string or array of strings. This flag is experimental, please see the authentication documentation for further details.

    If provided, the name of a custom OpenID Connect claim for specifying user groups. The claim value is expected to be a string or array of strings. This flag is experimental, please see the authentication documentation for further details.

    --oidc-groups-prefix string
    If provided, all groups will be prefixed with this value to prevent conflicts with other authentication strategies.

    If provided, all groups will be prefixed with this value to prevent conflicts with other authentication strategies.

    --oidc-issuer-url string
    The URL of the OpenID issuer, only HTTPS scheme will be accepted. If set, it will be used to verify the OIDC JSON Web Token (JWT).

    The URL of the OpenID issuer, only HTTPS scheme will be accepted. If set, it will be used to verify the OIDC JSON Web Token (JWT).

    --oidc-required-claim mapStringString--oidc-required-claim <comma-separated 'key=value' pairs>
    A key=value pair that describes a required claim in the ID Token. If set, the claim is verified to be present in the ID Token with a matching value. Repeat this flag to specify multiple claims.

    A key=value pair that describes a required claim in the ID Token. If set, the claim is verified to be present in the ID Token with a matching value. Repeat this flag to specify multiple claims.

    --oidc-signing-algs stringSlice     Default: [RS256]--oidc-signing-algs strings     Default: "RS256"
    Comma-separated list of allowed JOSE asymmetric signing algorithms. JWTs with a 'alg' header value not in this list will be rejected. Values are defined by RFC 7518 https://tools.ietf.org/html/rfc7518#section-3.1.

    Comma-separated list of allowed JOSE asymmetric signing algorithms. JWTs with a 'alg' header value not in this list will be rejected. Values are defined by RFC 7518 https://tools.ietf.org/html/rfc7518#section-3.1.

    --oidc-username-claim string     Default: "sub"
    The OpenID claim to use as the user name. Note that claims other than the default ('sub') is not guaranteed to be unique and immutable. This flag is experimental, please see the authentication documentation for further details.

    The OpenID claim to use as the user name. Note that claims other than the default ('sub') is not guaranteed to be unique and immutable. This flag is experimental, please see the authentication documentation for further details.

    --oidc-username-prefix string
    If provided, all usernames will be prefixed with this value. If not provided, username claims other than 'email' are prefixed by the issuer URL to avoid clashes. To skip any prefixing, provide the value '-'.

    If provided, all usernames will be prefixed with this value. If not provided, username claims other than 'email' are prefixed by the issuer URL to avoid clashes. To skip any prefixing, provide the value '-'.

    --one-output
    If true, only write logs to their native severity level (vs also writing to each lower severity level

    If true, only write logs to their native severity level (vs also writing to each lower severity level

    --permit-port-sharing
    If true, SO_REUSEPORT will be used when binding the port, which allows more than one instance to bind on the same address and port. [default=false]

    If true, SO_REUSEPORT will be used when binding the port, which allows more than one instance to bind on the same address and port. [default=false]

    --profiling     Default: true
    Enable profiling via web interface host:port/debug/pprof/

    Enable profiling via web interface host:port/debug/pprof/

    --proxy-client-cert-file string
    Client certificate used to prove the identity of the aggregator or kube-apiserver when it must call out during a request. This includes proxying requests to a user api-server and calling out to webhook admission plugins. It is expected that this cert includes a signature from the CA in the --requestheader-client-ca-file flag. That CA is published in the 'extension-apiserver-authentication' configmap in the kube-system namespace. Components receiving calls from kube-aggregator should use that CA to perform their half of the mutual TLS verification.

    Client certificate used to prove the identity of the aggregator or kube-apiserver when it must call out during a request. This includes proxying requests to a user api-server and calling out to webhook admission plugins. It is expected that this cert includes a signature from the CA in the --requestheader-client-ca-file flag. That CA is published in the 'extension-apiserver-authentication' configmap in the kube-system namespace. Components receiving calls from kube-aggregator should use that CA to perform their half of the mutual TLS verification.

    --proxy-client-key-file string
    Private key for the client certificate used to prove the identity of the aggregator or kube-apiserver when it must call out during a request. This includes proxying requests to a user api-server and calling out to webhook admission plugins.

    Private key for the client certificate used to prove the identity of the aggregator or kube-apiserver when it must call out during a request. This includes proxying requests to a user api-server and calling out to webhook admission plugins.

    --request-timeout duration     Default: 1m0s
    An optional field indicating the duration a handler must keep a request open before timing it out. This is the default request timeout for requests but may be overridden by flags such as --min-request-timeout for specific types of requests.

    An optional field indicating the duration a handler must keep a request open before timing it out. This is the default request timeout for requests but may be overridden by flags such as --min-request-timeout for specific types of requests.

    --requestheader-allowed-names stringSlice--requestheader-allowed-names strings
    List of client certificate common names to allow to provide usernames in headers specified by --requestheader-username-headers. If empty, any client certificate validated by the authorities in --requestheader-client-ca-file is allowed.

    List of client certificate common names to allow to provide usernames in headers specified by --requestheader-username-headers. If empty, any client certificate validated by the authorities in --requestheader-client-ca-file is allowed.

    --requestheader-client-ca-file string
    Root certificate bundle to use to verify client certificates on incoming requests before trusting usernames in headers specified by --requestheader-username-headers. WARNING: generally do not depend on authorization being already done for incoming requests.

    Root certificate bundle to use to verify client certificates on incoming requests before trusting usernames in headers specified by --requestheader-username-headers. WARNING: generally do not depend on authorization being already done for incoming requests.

    --requestheader-extra-headers-prefix stringSlice--requestheader-extra-headers-prefix strings
    List of request header prefixes to inspect. X-Remote-Extra- is suggested.

    List of request header prefixes to inspect. X-Remote-Extra- is suggested.

    --requestheader-group-headers stringSlice--requestheader-group-headers strings
    List of request headers to inspect for groups. X-Remote-Group is suggested.

    List of request headers to inspect for groups. X-Remote-Group is suggested.

    --requestheader-username-headers stringSlice--requestheader-username-headers strings
    List of request headers to inspect for usernames. X-Remote-User is common.

    List of request headers to inspect for usernames. X-Remote-User is common.

    --runtime-config mapStringString--runtime-config <comma-separated 'key=value' pairs>
    A set of key=value pairs that enable or disable built-in APIs. Supported options are:
    v1=true|false for the core API group
    <group>/<version>=true|false for a specific API group and version (e.g. apps/v1=true)
    api/all=true|false controls all API versions
    api/ga=true|false controls all API versions of the form v[0-9]+
    api/beta=true|false controls all API versions of the form v[0-9]+beta[0-9]+
    api/alpha=true|false controls all API versions of the form v[0-9]+alpha[0-9]+
    api/legacy is deprecated, and will be removed in a future version

    A set of key=value pairs that enable or disable built-in APIs. Supported options are:
    v1=true|false for the core API group
    /=true|false for a specific API group and version (e.g. apps/v1=true)
    api/all=true|false controls all API versions
    api/ga=true|false controls all API versions of the form v[0-9]+
    api/beta=true|false controls all API versions of the form v[0-9]+beta[0-9]+
    api/alpha=true|false controls all API versions of the form v[0-9]+alpha[0-9]+
    api/legacy is deprecated, and will be removed in a future version

    --secure-port int     Default: 6443
    The port on which to serve HTTPS with authentication and authorization. It cannot be switched off with 0.

    The port on which to serve HTTPS with authentication and authorization. It cannot be switched off with 0.

    --service-account-extend-token-expiration     Default: true
    Turns on projected service account expiration extension during token generation, which helps safe transition from legacy token to bound service account token feature. If this flag is enabled, admission injected tokens would be extended up to 1 year to prevent unexpected failure during transition, ignoring value of service-account-max-token-expiration.

    Turns on projected service account expiration extension during token generation, which helps safe transition from legacy token to bound service account token feature. If this flag is enabled, admission injected tokens would be extended up to 1 year to prevent unexpected failure during transition, ignoring value of service-account-max-token-expiration.

    --service-account-issuer string
    Identifier of the service account token issuer. The issuer will assert this identifier in "iss" claim of issued tokens. This value is a string or URI. If this option is not a valid URI per the OpenID Discovery 1.0 spec, the ServiceAccountIssuerDiscovery feature will remain disabled, even if the feature gate is set to true. It is highly recommended that this value comply with the OpenID spec: https://openid.net/specs/openid-connect-discovery-1_0.html. In practice, this means that service-account-issuer must be an https URL. It is also highly recommended that this URL be capable of serving OpenID discovery documents at {service-account-issuer}/.well-known/openid-configuration.

    Identifier of the service account token issuer. The issuer will assert this identifier in "iss" claim of issued tokens. This value is a string or URI. If this option is not a valid URI per the OpenID Discovery 1.0 spec, the ServiceAccountIssuerDiscovery feature will remain disabled, even if the feature gate is set to true. It is highly recommended that this value comply with the OpenID spec: https://openid.net/specs/openid-connect-discovery-1_0.html. In practice, this means that service-account-issuer must be an https URL. It is also highly recommended that this URL be capable of serving OpenID discovery documents at {service-account-issuer}/.well-known/openid-configuration.

    --service-account-jwks-uri string
    Overrides the URI for the JSON Web Key Set in the discovery doc served at /.well-known/openid-configuration. This flag is useful if the discovery docand key set are served to relying parties from a URL other than the API server's external (as auto-detected or overridden with external-hostname). Only valid if the ServiceAccountIssuerDiscovery feature gate is enabled.

    Overrides the URI for the JSON Web Key Set in the discovery doc served at /.well-known/openid-configuration. This flag is useful if the discovery docand key set are served to relying parties from a URL other than the API server's external (as auto-detected or overridden with external-hostname). Only valid if the ServiceAccountIssuerDiscovery feature gate is enabled.

    --service-account-key-file stringArray--service-account-key-file strings
    File containing PEM-encoded x509 RSA or ECDSA private or public keys, used to verify ServiceAccount tokens. The specified file can contain multiple keys, and the flag can be specified multiple times with different files. If unspecified, --tls-private-key-file is used. Must be specified when --service-account-signing-key is provided

    File containing PEM-encoded x509 RSA or ECDSA private or public keys, used to verify ServiceAccount tokens. The specified file can contain multiple keys, and the flag can be specified multiple times with different files. If unspecified, --tls-private-key-file is used. Must be specified when --service-account-signing-key is provided

    --service-account-lookup     Default: true
    If true, validate ServiceAccount tokens exist in etcd as part of authentication.

    If true, validate ServiceAccount tokens exist in etcd as part of authentication.

    --service-account-max-token-expiration duration
    The maximum validity duration of a token created by the service account token issuer. If an otherwise valid TokenRequest with a validity duration larger than this value is requested, a token will be issued with a validity duration of this value.

    The maximum validity duration of a token created by the service account token issuer. If an otherwise valid TokenRequest with a validity duration larger than this value is requested, a token will be issued with a validity duration of this value.

    --service-account-signing-key-file string
    Path to the file that contains the current private key of the service account token issuer. The issuer will sign issued ID tokens with this private key.

    Path to the file that contains the current private key of the service account token issuer. The issuer will sign issued ID tokens with this private key.

    --service-cluster-ip-range string
    A CIDR notation IP range from which to assign service cluster IPs. This must not overlap with any IP ranges assigned to nodes or pods.

    A CIDR notation IP range from which to assign service cluster IPs. This must not overlap with any IP ranges assigned to nodes or pods.

    --service-node-port-range portRange     Default: 30000-32767--service-node-port-range <a string in the form 'N1-N2'>     Default: 30000-32767
    A port range to reserve for services with NodePort visibility. Example: '30000-32767'. Inclusive at both ends of the range.

    A port range to reserve for services with NodePort visibility. Example: '30000-32767'. Inclusive at both ends of the range.

    --show-hidden-metrics-for-version string
    The previous version for which you want to show hidden metrics. Only the previous minor version is meaningful, other values will not be allowed. The format is <major>.<minor>, e.g.: '1.16'. The purpose of this format is make sure you have the opportunity to notice if the next release hides additional metrics, rather than being surprised when they are permanently removed in the release after that.

    The previous version for which you want to show hidden metrics. Only the previous minor version is meaningful, other values will not be allowed. The format is ., e.g.: '1.16'. The purpose of this format is make sure you have the opportunity to notice if the next release hides additional metrics, rather than being surprised when they are permanently removed in the release after that.

    --shutdown-delay-duration duration
    Time to delay the termination. During that time the server keeps serving requests normally. The endpoints /healthz and /livez will return success, but /readyz immediately returns failure. Graceful termination starts after this delay has elapsed. This can be used to allow load balancer to stop sending traffic to this server.

    Time to delay the termination. During that time the server keeps serving requests normally. The endpoints /healthz and /livez will return success, but /readyz immediately returns failure. Graceful termination starts after this delay has elapsed. This can be used to allow load balancer to stop sending traffic to this server.

    --skip-headers
    If true, avoid header prefixes in the log messages

    If true, avoid header prefixes in the log messages

    --skip-log-headers
    If true, avoid headers when opening log files

    If true, avoid headers when opening log files

    --stderrthreshold severity     Default: 2--stderrthreshold int     Default: 2
    logs at or above this threshold go to stderr

    logs at or above this threshold go to stderr

    --storage-backend string
    The storage backend for persistence. Options: 'etcd3' (default).

    The storage backend for persistence. Options: 'etcd3' (default).

    --storage-media-type string     Default: "application/vnd.kubernetes.protobuf"
    The media type to use to store objects in storage. Some resources or storage backends may only support a specific media type and will ignore this setting.

    The media type to use to store objects in storage. Some resources or storage backends may only support a specific media type and will ignore this setting.

    --tls-cert-file string
    File containing the default x509 Certificate for HTTPS. (CA cert, if any, concatenated after server cert). If HTTPS serving is enabled, and --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 specified by --cert-dir.

    File containing the default x509 Certificate for HTTPS. (CA cert, if any, concatenated after server cert). If HTTPS serving is enabled, and --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 specified by --cert-dir.

    --tls-cipher-suites stringSlice--tls-cipher-suites strings
    Comma-separated list of cipher suites for the server. If omitted, the default Go cipher suites will be used.
    Preferred values: TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, 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_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, 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_CHACHA20_POLY1305_SHA256, TLS_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_GCM_SHA384.
    Insecure values: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_RC4_128_SHA.

    Comma-separated list of cipher suites for the server. If omitted, the default Go cipher suites will be used.
    Preferred values: TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, 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_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, 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_CHACHA20_POLY1305_SHA256, TLS_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_GCM_SHA384.
    Insecure values: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_RC4_128_SHA.

    --tls-min-version string
    Minimum TLS version supported. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13

    Minimum TLS version supported. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13

    --tls-private-key-file string
    File containing the default x509 private key matching --tls-cert-file.

    File containing the default x509 private key matching --tls-cert-file.

    --tls-sni-cert-key namedCertKey     Default: []--tls-sni-cert-key string
    A pair of x509 certificate and private key file paths, optionally suffixed with a list of domain patterns which are fully qualified domain names, possibly with prefixed wildcard segments. The domain patterns also allow IP addresses, but IPs should only be used if the apiserver has visibility to the IP address requested by a client. If no domain patterns are provided, the names of the certificate are extracted. Non-wildcard matches trump over wildcard matches, explicit domain patterns trump over extracted names. For multiple key/certificate pairs, use the --tls-sni-cert-key multiple times. Examples: "example.crt,example.key" or "foo.crt,foo.key:*.foo.com,foo.com".

    A pair of x509 certificate and private key file paths, optionally suffixed with a list of domain patterns which are fully qualified domain names, possibly with prefixed wildcard segments. The domain patterns also allow IP addresses, but IPs should only be used if the apiserver has visibility to the IP address requested by a client. If no domain patterns are provided, the names of the certificate are extracted. Non-wildcard matches trump over wildcard matches, explicit domain patterns trump over extracted names. For multiple key/certificate pairs, use the --tls-sni-cert-key multiple times. Examples: "example.crt,example.key" or "foo.crt,foo.key:*.foo.com,foo.com".

    --token-auth-file string
    If set, the file that will be used to secure the secure port of the API server via token authentication.

    If set, the file that will be used to secure the secure port of the API server via token authentication.

    -v, --v Level-v, --v int
    number for the log level verbosity

    number for the log level verbosity

    --version version[=true]
    Print version information and quit

    Print version information and quit

    --vmodule moduleSpec--vmodule <comma-separated 'pattern=N' settings>
    comma-separated list of pattern=N settings for file-filtered logging

    comma-separated list of pattern=N settings for file-filtered logging

    --watch-cache     Default: true
    Enable watch caching in the apiserver

    Enable watch caching in the apiserver

    --watch-cache-sizes stringSlice--watch-cache-sizes strings
    Watch cache size settings for some resources (pods, nodes, etc.), comma separated. The individual setting format: resource[.group]#size, where resource is lowercase plural (no version), group is omitted for resources of apiVersion v1 (the legacy core API) and included for others, and size is a number. It takes effect when watch-cache is enabled. Some resources (replicationcontrollers, endpoints, nodes, pods, services, apiservices.apiregistration.k8s.io) have system defaults set by heuristics, others default to default-watch-cache-size

    Watch cache size settings for some resources (pods, nodes, etc.), comma separated. The individual setting format: resource[.group]#size, where resource is lowercase plural (no version), group is omitted for resources of apiVersion v1 (the legacy core API) and included for others, and size is a number. It takes effect when watch-cache is enabled. Some resources (replicationcontrollers, endpoints, nodes, pods, services, apiservices.apiregistration.k8s.io) have system defaults set by heuristics, others default to default-watch-cache-size

    --add-dir-header
    If true, adds the file directory to the header of the log messages

    If true, adds the file directory to the header of the log messages

    --allocate-node-cidrs
    Should CIDRs for Pods be allocated and set on the cloud provider.

    Should CIDRs for Pods be allocated and set on the cloud provider.

    --alsologtostderr
    log to standard error as well as files

    log to standard error as well as files

    --attach-detach-reconcile-sync-period duration     Default: 1m0s
    The reconciler sync wait time between volume attach detach. This duration must be larger than one second, and increasing this value from the default may allow for volumes to be mismatched with pods.

    The reconciler sync wait time between volume attach detach. This duration must be larger than one second, and increasing this value from the default may allow for volumes to be mismatched with pods.

    --authentication-kubeconfig string
    kubeconfig file pointing at the 'core' kubernetes server with enough rights to create tokenreviews.authentication.k8s.io. This is optional. If empty, all token requests are considered to be anonymous and no client CA is looked up in the cluster.

    kubeconfig file pointing at the 'core' kubernetes server with enough rights to create tokenreviews.authentication.k8s.io. This is optional. If empty, all token requests are considered to be anonymous and no client CA is looked up in the cluster.

    --authentication-skip-lookup
    If false, the authentication-kubeconfig will be used to lookup missing authentication configuration from the cluster.

    If false, the authentication-kubeconfig will be used to lookup missing authentication configuration from the cluster.

    --authentication-token-webhook-cache-ttl duration     Default: 10s
    The duration to cache responses from the webhook token authenticator.

    The duration to cache responses from the webhook token authenticator.

    --authentication-tolerate-lookup-failure
    If true, failures to look up missing authentication configuration from the cluster are not considered fatal. Note that this can result in authentication that treats all requests as anonymous.

    If true, failures to look up missing authentication configuration from the cluster are not considered fatal. Note that this can result in authentication that treats all requests as anonymous.

    --authorization-always-allow-paths stringSlice     Default: [/healthz]--authorization-always-allow-paths strings     Default: "/healthz"
    A list of HTTP paths to skip during authorization, i.e. these are authorized without contacting the 'core' kubernetes server.

    A list of HTTP paths to skip during authorization, i.e. these are authorized without contacting the 'core' kubernetes server.

    --authorization-kubeconfig string
    kubeconfig file pointing at the 'core' kubernetes server with enough rights to create subjectaccessreviews.authorization.k8s.io. This is optional. If empty, all requests not skipped by authorization are forbidden.

    kubeconfig file pointing at the 'core' kubernetes server with enough rights to create subjectaccessreviews.authorization.k8s.io. This is optional. If empty, all requests not skipped by authorization are forbidden.

    --authorization-webhook-cache-authorized-ttl duration     Default: 10s
    The duration to cache 'authorized' responses from the webhook authorizer.

    The duration to cache 'authorized' responses from the webhook authorizer.

    --authorization-webhook-cache-unauthorized-ttl duration     Default: 10s
    The duration to cache 'unauthorized' responses from the webhook authorizer.

    The duration to cache 'unauthorized' responses from the webhook authorizer.

    --azure-container-registry-config string
    Path to the file containing Azure container registry configuration information.

    Path to the file containing Azure container registry configuration information.

    --bind-address ip     Default: 0.0.0.0--bind-address string     Default: 0.0.0.0
    The IP address on which to listen for the --secure-port port. The associated interface(s) must be reachable by the rest of the cluster, and by CLI/web clients. If blank or an unspecified address (0.0.0.0 or ::), all interfaces will be used.

    The IP address on which to listen for the --secure-port port. The associated interface(s) must be reachable by the rest of the cluster, and by CLI/web clients. If blank or an unspecified address (0.0.0.0 or ::), all interfaces will be used.

    --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.

    The directory where the TLS certs are located. If --tls-cert-file and --tls-private-key-file are provided, this flag will be ignored.

    --cidr-allocator-type string     Default: "RangeAllocator"
    Type of CIDR allocator to use

    Type of CIDR allocator to use

    --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.

    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.

    --cloud-config string
    The path to the cloud provider configuration file. Empty string for no configuration file.

    The path to the cloud provider configuration file. Empty string for no configuration file.

    --cloud-provider string
    The provider for cloud services. Empty string for no provider.

    The provider for cloud services. Empty string for no provider.

    --cluster-cidr string
    CIDR Range for Pods in cluster. Requires --allocate-node-cidrs to be true

    CIDR Range for Pods in cluster. Requires --allocate-node-cidrs to be true

    --cluster-name string     Default: "kubernetes"
    The instance prefix for the cluster.

    The instance prefix for the cluster.

    --cluster-signing-cert-file string
    Filename containing a PEM-encoded X509 CA certificate used to issue cluster-scoped certificates. If specified, no more specific --cluster-signing-* flag may be specified.

    Filename containing a PEM-encoded X509 CA certificate used to issue cluster-scoped certificates. If specified, no more specific --cluster-signing-* flag may be specified.

    --cluster-signing-duration duration     Default: 8760h0m0s
    The length of duration signed certificates will be given.

    The length of duration signed certificates will be given.

    --cluster-signing-key-file string
    Filename containing a PEM-encoded RSA or ECDSA private key used to sign cluster-scoped certificates. If specified, no more specific --cluster-signing-* flag may be specified.

    Filename containing a PEM-encoded RSA or ECDSA private key used to sign cluster-scoped certificates. If specified, no more specific --cluster-signing-* flag may be specified.

    --cluster-signing-kube-apiserver-client-cert-file string
    Filename containing a PEM-encoded X509 CA certificate used to issue certificates for the kubernetes.io/kube-apiserver-client signer. If specified, --cluster-signing-{cert,key}-file must not be set.

    Filename containing a PEM-encoded X509 CA certificate used to issue certificates for the kubernetes.io/kube-apiserver-client signer. If specified, --cluster-signing-{cert,key}-file must not be set.

    --cluster-signing-kube-apiserver-client-key-file string
    Filename containing a PEM-encoded RSA or ECDSA private key used to sign certificates for the kubernetes.io/kube-apiserver-client signer. If specified, --cluster-signing-{cert,key}-file must not be set.

    Filename containing a PEM-encoded RSA or ECDSA private key used to sign certificates for the kubernetes.io/kube-apiserver-client signer. If specified, --cluster-signing-{cert,key}-file must not be set.

    --cluster-signing-kubelet-client-cert-file string
    Filename containing a PEM-encoded X509 CA certificate used to issue certificates for the kubernetes.io/kube-apiserver-client-kubelet signer. If specified, --cluster-signing-{cert,key}-file must not be set.

    Filename containing a PEM-encoded X509 CA certificate used to issue certificates for the kubernetes.io/kube-apiserver-client-kubelet signer. If specified, --cluster-signing-{cert,key}-file must not be set.

    --cluster-signing-kubelet-client-key-file string
    Filename containing a PEM-encoded RSA or ECDSA private key used to sign certificates for the kubernetes.io/kube-apiserver-client-kubelet signer. If specified, --cluster-signing-{cert,key}-file must not be set.

    Filename containing a PEM-encoded RSA or ECDSA private key used to sign certificates for the kubernetes.io/kube-apiserver-client-kubelet signer. If specified, --cluster-signing-{cert,key}-file must not be set.

    --cluster-signing-kubelet-serving-cert-file string
    Filename containing a PEM-encoded X509 CA certificate used to issue certificates for the kubernetes.io/kubelet-serving signer. If specified, --cluster-signing-{cert,key}-file must not be set.

    Filename containing a PEM-encoded X509 CA certificate used to issue certificates for the kubernetes.io/kubelet-serving signer. If specified, --cluster-signing-{cert,key}-file must not be set.

    --cluster-signing-kubelet-serving-key-file string
    Filename containing a PEM-encoded RSA or ECDSA private key used to sign certificates for the kubernetes.io/kubelet-serving signer. If specified, --cluster-signing-{cert,key}-file must not be set.

    Filename containing a PEM-encoded RSA or ECDSA private key used to sign certificates for the kubernetes.io/kubelet-serving signer. If specified, --cluster-signing-{cert,key}-file must not be set.

    --cluster-signing-legacy-unknown-cert-file string
    Filename containing a PEM-encoded X509 CA certificate used to issue certificates for the kubernetes.io/legacy-unknown signer. If specified, --cluster-signing-{cert,key}-file must not be set.

    Filename containing a PEM-encoded X509 CA certificate used to issue certificates for the kubernetes.io/legacy-unknown signer. If specified, --cluster-signing-{cert,key}-file must not be set.

    --cluster-signing-legacy-unknown-key-file string
    Filename containing a PEM-encoded RSA or ECDSA private key used to sign certificates for the kubernetes.io/legacy-unknown signer. If specified, --cluster-signing-{cert,key}-file must not be set.

    Filename containing a PEM-encoded RSA or ECDSA private key used to sign certificates for the kubernetes.io/legacy-unknown signer. If specified, --cluster-signing-{cert,key}-file must not be set.

    --concurrent-deployment-syncs int32     Default: 5
    The number of deployment objects that are allowed to sync concurrently. Larger number = more responsive deployments, but more CPU (and network) load

    The number of deployment objects that are allowed to sync concurrently. Larger number = more responsive deployments, but more CPU (and network) load

    --concurrent-endpoint-syncs int32     Default: 5
    The number of endpoint syncing operations that will be done concurrently. Larger number = faster endpoint updating, but more CPU (and network) load

    The number of endpoint syncing operations that will be done concurrently. Larger number = faster endpoint updating, but more CPU (and network) load

    --concurrent-gc-syncs int32     Default: 20
    The number of garbage collector workers that are allowed to sync concurrently.

    The number of garbage collector workers that are allowed to sync concurrently.

    --concurrent-namespace-syncs int32     Default: 10
    The number of namespace objects that are allowed to sync concurrently. Larger number = more responsive namespace termination, but more CPU (and network) load

    The number of namespace objects that are allowed to sync concurrently. Larger number = more responsive namespace termination, but more CPU (and network) load

    --concurrent-replicaset-syncs int32     Default: 5
    The number of replica sets that are allowed to sync concurrently. Larger number = more responsive replica management, but more CPU (and network) load

    The number of replica sets that are allowed to sync concurrently. Larger number = more responsive replica management, but more CPU (and network) load

    --concurrent-resource-quota-syncs int32     Default: 5
    The number of resource quotas that are allowed to sync concurrently. Larger number = more responsive quota management, but more CPU (and network) load

    The number of resource quotas that are allowed to sync concurrently. Larger number = more responsive quota management, but more CPU (and network) load

    --concurrent-service-endpoint-syncs int32     Default: 5
    The number of service endpoint syncing operations that will be done concurrently. Larger number = faster endpoint slice updating, but more CPU (and network) load. Defaults to 5.

    The number of service endpoint syncing operations that will be done concurrently. Larger number = faster endpoint slice updating, but more CPU (and network) load. Defaults to 5.

    --concurrent-service-syncs int32     Default: 1
    The number of services that are allowed to sync concurrently. Larger number = more responsive service management, but more CPU (and network) load

    The number of services that are allowed to sync concurrently. Larger number = more responsive service management, but more CPU (and network) load

    --concurrent-serviceaccount-token-syncs int32     Default: 5
    The number of service account token objects that are allowed to sync concurrently. Larger number = more responsive token generation, but more CPU (and network) load

    The number of service account token objects that are allowed to sync concurrently. Larger number = more responsive token generation, but more CPU (and network) load

    --concurrent-statefulset-syncs int32     Default: 5
    The number of statefulset objects that are allowed to sync concurrently. Larger number = more responsive statefulsets, but more CPU (and network) load

    The number of statefulset objects that are allowed to sync concurrently. Larger number = more responsive statefulsets, but more CPU (and network) load

    --concurrent-ttl-after-finished-syncs int32     Default: 5
    The number of TTL-after-finished controller workers that are allowed to sync concurrently.

    The number of TTL-after-finished controller workers that are allowed to sync concurrently.

    --concurrent_rc_syncs int32     Default: 5
    The number of replication controllers that are allowed to sync concurrently. Larger number = more responsive replica management, but more CPU (and network) load

    The number of replication controllers that are allowed to sync concurrently. Larger number = more responsive replica management, but more CPU (and network) load

    --configure-cloud-routes     Default: true
    Should CIDRs allocated by allocate-node-cidrs be configured on the cloud provider.

    Should CIDRs allocated by allocate-node-cidrs be configured on the cloud provider.

    --contention-profiling
    Enable lock contention profiling, if profiling is enabled

    Enable lock contention profiling, if profiling is enabled

    --controller-start-interval duration
    Interval between starting controller managers.

    Interval between starting controller managers.

    --controllers stringSlice     Default: [*]--controllers strings     Default: "*"
    A list of controllers to enable. '*' enables all on-by-default controllers, 'foo' enables the controller named 'foo', '-foo' disables the controller named 'foo'.
    All controllers: attachdetach, bootstrapsigner, cloud-node-lifecycle, clusterrole-aggregation, cronjob, csrapproving, csrcleaner, csrsigning, daemonset, deployment, disruption, endpoint, endpointslice, endpointslicemirroring, ephemeral-volume, garbagecollector, horizontalpodautoscaling, job, namespace, nodeipam, nodelifecycle, persistentvolume-binder, persistentvolume-expander, podgc, pv-protection, pvc-protection, replicaset, replicationcontroller, resourcequota, root-ca-cert-publisher, route, service, serviceaccount, serviceaccount-token, statefulset, tokencleaner, ttl, ttl-after-finished
    Disabled-by-default controllers: bootstrapsigner, tokencleaner

    A list of controllers to enable. '*' enables all on-by-default controllers, 'foo' enables the controller named 'foo', '-foo' disables the controller named 'foo'.
    All controllers: attachdetach, bootstrapsigner, cloud-node-lifecycle, clusterrole-aggregation, cronjob, csrapproving, csrcleaner, csrsigning, daemonset, deployment, disruption, endpoint, endpointslice, endpointslicemirroring, ephemeral-volume, garbagecollector, horizontalpodautoscaling, job, namespace, nodeipam, nodelifecycle, persistentvolume-binder, persistentvolume-expander, podgc, pv-protection, pvc-protection, replicaset, replicationcontroller, resourcequota, root-ca-cert-publisher, route, service, serviceaccount, serviceaccount-token, statefulset, tokencleaner, ttl, ttl-after-finished
    Disabled-by-default controllers: bootstrapsigner, tokencleaner

    --deployment-controller-sync-period duration     Default: 30s
    Period for syncing the deployments.

    Period for syncing the deployments.

    --disable-attach-detach-reconcile-sync
    Disable volume attach detach reconciler sync. Disabling this may cause volumes to be mismatched with pods. Use wisely.

    Disable volume attach detach reconciler sync. Disabling this may cause volumes to be mismatched with pods. Use wisely.

    --enable-dynamic-provisioning     Default: true
    Enable dynamic provisioning for environments that support it.

    Enable dynamic provisioning for environments that support it.

    --enable-garbage-collector     Default: true
    Enables the generic garbage collector. MUST be synced with the corresponding flag of the kube-apiserver.

    Enables the generic garbage collector. MUST be synced with the corresponding flag of the kube-apiserver.

    --enable-hostpath-provisioner
    Enable HostPath PV provisioning when running without a cloud provider. This allows testing and development of provisioning features. HostPath provisioning is not supported in any way, won't work in a multi-node cluster, and should not be used for anything other than testing or development.

    Enable HostPath PV provisioning when running without a cloud provider. This allows testing and development of provisioning features. HostPath provisioning is not supported in any way, won't work in a multi-node cluster, and should not be used for anything other than testing or development.

    --enable-taint-manager     Default: true
    WARNING: Beta feature. If set to true enables NoExecute Taints and will evict all not-tolerating Pod running on Nodes tainted with this kind of Taints.

    WARNING: Beta feature. If set to true enables NoExecute Taints and will evict all not-tolerating Pod running on Nodes tainted with this kind of Taints.

    --endpoint-updates-batch-period duration
    The length of endpoint updates batching period. Processing of pod changes will be delayed by this duration to join them with potential upcoming updates and reduce the overall number of endpoints updates. Larger number = higher endpoint programming latency, but lower number of endpoints revision generated

    The length of endpoint updates batching period. Processing of pod changes will be delayed by this duration to join them with potential upcoming updates and reduce the overall number of endpoints updates. Larger number = higher endpoint programming latency, but lower number of endpoints revision generated

    --endpointslice-updates-batch-period duration
    The length of endpoint slice updates batching period. Processing of pod changes will be delayed by this duration to join them with potential upcoming updates and reduce the overall number of endpoints updates. Larger number = higher endpoint programming latency, but lower number of endpoints revision generated

    The length of endpoint slice updates batching period. Processing of pod changes will be delayed by this duration to join them with potential upcoming updates and reduce the overall number of endpoints updates. Larger number = higher endpoint programming latency, but lower number of endpoints revision generated

    --experimental-logging-sanitization
    [Experimental] When enabled prevents logging of fields tagged as sensitive (passwords, keys, tokens).
    Runtime log sanitization may introduce significant computation overhead and therefore should not be enabled in production.

    [Experimental] When enabled prevents logging of fields tagged as sensitive (passwords, keys, tokens).
    Runtime log sanitization may introduce significant computation overhead and therefore should not be enabled in production.

    --external-cloud-volume-plugin string
    The plugin to use when cloud provider is set to external. Can be empty, should only be set when cloud-provider is external. Currently used to allow node and volume controllers to work for in tree cloud providers.

    The plugin to use when cloud provider is set to external. Can be empty, should only be set when cloud-provider is external. Currently used to allow node and volume controllers to work for in tree cloud providers.

    --feature-gates mapStringBool--feature-gates <comma-separated 'key=True|False' pairs>
    A set of key=value pairs that describe feature gates for alpha/experimental features. Options are:
    APIListChunking=true|false (BETA - default=true)
    APIPriorityAndFairness=true|false (BETA - default=true)
    APIResponseCompression=true|false (BETA - default=true)
    APIServerIdentity=true|false (ALPHA - default=false)
    AllAlpha=true|false (ALPHA - default=false)
    AllBeta=true|false (BETA - default=false)
    AllowInsecureBackendProxy=true|false (BETA - default=true)
    AnyVolumeDataSource=true|false (ALPHA - default=false)
    AppArmor=true|false (BETA - default=true)
    BalanceAttachedNodeVolumes=true|false (ALPHA - default=false)
    BoundServiceAccountTokenVolume=true|false (ALPHA - default=false)
    CPUManager=true|false (BETA - default=true)
    CRIContainerLogRotation=true|false (BETA - default=true)
    CSIInlineVolume=true|false (BETA - default=true)
    CSIMigration=true|false (BETA - default=true)
    CSIMigrationAWS=true|false (BETA - default=false)
    CSIMigrationAWSComplete=true|false (ALPHA - default=false)
    CSIMigrationAzureDisk=true|false (BETA - default=false)
    CSIMigrationAzureDiskComplete=true|false (ALPHA - default=false)
    CSIMigrationAzureFile=true|false (ALPHA - default=false)
    CSIMigrationAzureFileComplete=true|false (ALPHA - default=false)
    CSIMigrationGCE=true|false (BETA - default=false)
    CSIMigrationGCEComplete=true|false (ALPHA - default=false)
    CSIMigrationOpenStack=true|false (BETA - default=false)
    CSIMigrationOpenStackComplete=true|false (ALPHA - default=false)
    CSIMigrationvSphere=true|false (BETA - default=false)
    CSIMigrationvSphereComplete=true|false (BETA - default=false)
    CSIServiceAccountToken=true|false (ALPHA - default=false)
    CSIStorageCapacity=true|false (ALPHA - default=false)
    CSIVolumeFSGroupPolicy=true|false (BETA - default=true)
    ConfigurableFSGroupPolicy=true|false (BETA - default=true)
    CronJobControllerV2=true|false (ALPHA - default=false)
    CustomCPUCFSQuotaPeriod=true|false (ALPHA - default=false)
    DefaultPodTopologySpread=true|false (BETA - default=true)
    DevicePlugins=true|false (BETA - default=true)
    DisableAcceleratorUsageMetrics=true|false (BETA - default=true)
    DownwardAPIHugePages=true|false (ALPHA - default=false)
    DynamicKubeletConfig=true|false (BETA - default=true)
    EfficientWatchResumption=true|false (ALPHA - default=false)
    EndpointSlice=true|false (BETA - default=true)
    EndpointSliceNodeName=true|false (ALPHA - default=false)
    EndpointSliceProxying=true|false (BETA - default=true)
    EndpointSliceTerminatingCondition=true|false (ALPHA - default=false)
    EphemeralContainers=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)
    GenericEphemeralVolume=true|false (ALPHA - default=false)
    GracefulNodeShutdown=true|false (ALPHA - default=false)
    HPAContainerMetrics=true|false (ALPHA - default=false)
    HPAScaleToZero=true|false (ALPHA - default=false)
    HugePageStorageMediumSize=true|false (BETA - default=true)
    IPv6DualStack=true|false (ALPHA - default=false)
    ImmutableEphemeralVolumes=true|false (BETA - default=true)
    KubeletCredentialProviders=true|false (ALPHA - default=false)
    KubeletPodResources=true|false (BETA - default=true)
    LegacyNodeRoleBehavior=true|false (BETA - default=true)
    LocalStorageCapacityIsolation=true|false (BETA - default=true)
    LocalStorageCapacityIsolationFSQuotaMonitoring=true|false (ALPHA - default=false)
    MixedProtocolLBService=true|false (ALPHA - default=false)
    NodeDisruptionExclusion=true|false (BETA - default=true)
    NonPreemptingPriority=true|false (BETA - default=true)
    PodDisruptionBudget=true|false (BETA - default=true)
    PodOverhead=true|false (BETA - default=true)
    ProcMountType=true|false (ALPHA - default=false)
    QOSReserved=true|false (ALPHA - default=false)
    RemainingItemCount=true|false (BETA - default=true)
    RemoveSelfLink=true|false (BETA - default=true)
    RootCAConfigMap=true|false (BETA - default=true)
    RotateKubeletServerCertificate=true|false (BETA - default=true)
    RunAsGroup=true|false (BETA - default=true)
    ServerSideApply=true|false (BETA - default=true)
    ServiceAccountIssuerDiscovery=true|false (BETA - default=true)
    ServiceLBNodePortControl=true|false (ALPHA - default=false)
    ServiceNodeExclusion=true|false (BETA - default=true)
    ServiceTopology=true|false (ALPHA - default=false)
    SetHostnameAsFQDN=true|false (BETA - default=true)
    SizeMemoryBackedVolumes=true|false (ALPHA - default=false)
    StorageVersionAPI=true|false (ALPHA - default=false)
    StorageVersionHash=true|false (BETA - default=true)
    Sysctls=true|false (BETA - default=true)
    TTLAfterFinished=true|false (ALPHA - default=false)
    TopologyManager=true|false (BETA - default=true)
    ValidateProxyRedirects=true|false (BETA - default=true)
    WarningHeaders=true|false (BETA - default=true)
    WinDSR=true|false (ALPHA - default=false)
    WinOverlay=true|false (BETA - default=true)
    WindowsEndpointSliceProxying=true|false (ALPHA - default=false)

    A set of key=value pairs that describe feature gates for alpha/experimental features. Options are:
    APIListChunking=true|false (BETA - default=true)
    APIPriorityAndFairness=true|false (BETA - default=true)
    APIResponseCompression=true|false (BETA - default=true)
    APIServerIdentity=true|false (ALPHA - default=false)
    AllAlpha=true|false (ALPHA - default=false)
    AllBeta=true|false (BETA - default=false)
    AllowInsecureBackendProxy=true|false (BETA - default=true)
    AnyVolumeDataSource=true|false (ALPHA - default=false)
    AppArmor=true|false (BETA - default=true)
    BalanceAttachedNodeVolumes=true|false (ALPHA - default=false)
    BoundServiceAccountTokenVolume=true|false (ALPHA - default=false)
    CPUManager=true|false (BETA - default=true)
    CRIContainerLogRotation=true|false (BETA - default=true)
    CSIInlineVolume=true|false (BETA - default=true)
    CSIMigration=true|false (BETA - default=true)
    CSIMigrationAWS=true|false (BETA - default=false)
    CSIMigrationAWSComplete=true|false (ALPHA - default=false)
    CSIMigrationAzureDisk=true|false (BETA - default=false)
    CSIMigrationAzureDiskComplete=true|false (ALPHA - default=false)
    CSIMigrationAzureFile=true|false (ALPHA - default=false)
    CSIMigrationAzureFileComplete=true|false (ALPHA - default=false)
    CSIMigrationGCE=true|false (BETA - default=false)
    CSIMigrationGCEComplete=true|false (ALPHA - default=false)
    CSIMigrationOpenStack=true|false (BETA - default=false)
    CSIMigrationOpenStackComplete=true|false (ALPHA - default=false)
    CSIMigrationvSphere=true|false (BETA - default=false)
    CSIMigrationvSphereComplete=true|false (BETA - default=false)
    CSIServiceAccountToken=true|false (ALPHA - default=false)
    CSIStorageCapacity=true|false (ALPHA - default=false)
    CSIVolumeFSGroupPolicy=true|false (BETA - default=true)
    ConfigurableFSGroupPolicy=true|false (BETA - default=true)
    CronJobControllerV2=true|false (ALPHA - default=false)
    CustomCPUCFSQuotaPeriod=true|false (ALPHA - default=false)
    DefaultPodTopologySpread=true|false (BETA - default=true)
    DevicePlugins=true|false (BETA - default=true)
    DisableAcceleratorUsageMetrics=true|false (BETA - default=true)
    DownwardAPIHugePages=true|false (ALPHA - default=false)
    DynamicKubeletConfig=true|false (BETA - default=true)
    EfficientWatchResumption=true|false (ALPHA - default=false)
    EndpointSlice=true|false (BETA - default=true)
    EndpointSliceNodeName=true|false (ALPHA - default=false)
    EndpointSliceProxying=true|false (BETA - default=true)
    EndpointSliceTerminatingCondition=true|false (ALPHA - default=false)
    EphemeralContainers=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)
    GenericEphemeralVolume=true|false (ALPHA - default=false)
    GracefulNodeShutdown=true|false (ALPHA - default=false)
    HPAContainerMetrics=true|false (ALPHA - default=false)
    HPAScaleToZero=true|false (ALPHA - default=false)
    HugePageStorageMediumSize=true|false (BETA - default=true)
    IPv6DualStack=true|false (ALPHA - default=false)
    ImmutableEphemeralVolumes=true|false (BETA - default=true)
    KubeletCredentialProviders=true|false (ALPHA - default=false)
    KubeletPodResources=true|false (BETA - default=true)
    LegacyNodeRoleBehavior=true|false (BETA - default=true)
    LocalStorageCapacityIsolation=true|false (BETA - default=true)
    LocalStorageCapacityIsolationFSQuotaMonitoring=true|false (ALPHA - default=false)
    MixedProtocolLBService=true|false (ALPHA - default=false)
    NodeDisruptionExclusion=true|false (BETA - default=true)
    NonPreemptingPriority=true|false (BETA - default=true)
    PodDisruptionBudget=true|false (BETA - default=true)
    PodOverhead=true|false (BETA - default=true)
    ProcMountType=true|false (ALPHA - default=false)
    QOSReserved=true|false (ALPHA - default=false)
    RemainingItemCount=true|false (BETA - default=true)
    RemoveSelfLink=true|false (BETA - default=true)
    RootCAConfigMap=true|false (BETA - default=true)
    RotateKubeletServerCertificate=true|false (BETA - default=true)
    RunAsGroup=true|false (BETA - default=true)
    ServerSideApply=true|false (BETA - default=true)
    ServiceAccountIssuerDiscovery=true|false (BETA - default=true)
    ServiceLBNodePortControl=true|false (ALPHA - default=false)
    ServiceNodeExclusion=true|false (BETA - default=true)
    ServiceTopology=true|false (ALPHA - default=false)
    SetHostnameAsFQDN=true|false (BETA - default=true)
    SizeMemoryBackedVolumes=true|false (ALPHA - default=false)
    StorageVersionAPI=true|false (ALPHA - default=false)
    StorageVersionHash=true|false (BETA - default=true)
    Sysctls=true|false (BETA - default=true)
    TTLAfterFinished=true|false (ALPHA - default=false)
    TopologyManager=true|false (BETA - default=true)
    ValidateProxyRedirects=true|false (BETA - default=true)
    WarningHeaders=true|false (BETA - default=true)
    WinDSR=true|false (ALPHA - default=false)
    WinOverlay=true|false (BETA - default=true)
    WindowsEndpointSliceProxying=true|false (ALPHA - default=false)

    --flex-volume-plugin-dir string     Default: "/usr/libexec/kubernetes/kubelet-plugins/volume/exec/"
    Full path of the directory in which the flex volume plugin should search for additional third party volume plugins.

    Full path of the directory in which the flex volume plugin should search for additional third party volume plugins.

    -h, --help
    help for kube-controller-manager

    help for kube-controller-manager

    --horizontal-pod-autoscaler-cpu-initialization-period duration     Default: 5m0s
    The period after pod start when CPU samples might be skipped.

    The period after pod start when CPU samples might be skipped.

    --horizontal-pod-autoscaler-downscale-stabilization duration     Default: 5m0s
    The period for which autoscaler will look backwards and not scale down below any recommendation it made during that period.

    The period for which autoscaler will look backwards and not scale down below any recommendation it made during that period.

    --horizontal-pod-autoscaler-initial-readiness-delay duration     Default: 30s
    The period after pod start during which readiness changes will be treated as initial readiness.

    The period after pod start during which readiness changes will be treated as initial readiness.

    --horizontal-pod-autoscaler-sync-period duration     Default: 15s
    The period for syncing the number of pods in horizontal pod autoscaler.

    The period for syncing the number of pods in horizontal pod autoscaler.

    --horizontal-pod-autoscaler-tolerance float     Default: 0.1
    The minimum change (from 1.0) in the desired-to-actual metrics ratio for the horizontal pod autoscaler to consider scaling.

    The minimum change (from 1.0) in the desired-to-actual metrics ratio for the horizontal pod autoscaler to consider scaling.

    --http2-max-streams-per-connection int
    The limit that the server gives to clients for the maximum number of streams in an HTTP/2 connection. Zero means to use golang's default.

    The limit that the server gives to clients for the maximum number of streams in an HTTP/2 connection. Zero means to use golang's default.

    --kube-api-burst int32     Default: 30
    Burst to use while talking with kubernetes apiserver.

    Burst to use while talking with kubernetes apiserver.

    --kube-api-content-type string     Default: "application/vnd.kubernetes.protobuf"
    Content type of requests sent to apiserver.

    Content type of requests sent to apiserver.

    --kube-api-qps float32     Default: 20--kube-api-qps float     Default: 20
    QPS to use while talking with kubernetes apiserver.

    QPS to use while talking with kubernetes apiserver.

    --kubeconfig string
    Path to kubeconfig file with authorization and master location information.

    Path to kubeconfig file with authorization and master location information.

    --large-cluster-size-threshold int32     Default: 50
    Number of nodes from which NodeController treats the cluster as large for the eviction logic purposes. --secondary-node-eviction-rate is implicitly overridden to 0 for clusters this size or smaller.

    Number of nodes from which NodeController treats the cluster as large for the eviction logic purposes. --secondary-node-eviction-rate is implicitly overridden to 0 for clusters this size or smaller.

    --leader-elect     Default: true
    Start a leader election client and gain leadership before executing the main loop. Enable this when running replicated components for high availability.

    Start a leader election client and gain leadership before executing the main loop. Enable this when running replicated components for high availability.

    --leader-elect-lease-duration duration     Default: 15s
    The duration that non-leader candidates will wait after observing a leadership renewal until attempting to acquire leadership of a led but unrenewed leader slot. This is effectively the maximum duration that a leader can be stopped before it is replaced by another candidate. This is only applicable if leader election is enabled.

    The duration that non-leader candidates will wait after observing a leadership renewal until attempting to acquire leadership of a led but unrenewed leader slot. This is effectively the maximum duration that a leader can be stopped before it is replaced by another candidate. This is only applicable if leader election is enabled.

    --leader-elect-renew-deadline duration     Default: 10s
    The interval between attempts by the acting master to renew a leadership slot before it stops leading. This must be less than or equal to the lease duration. This is only applicable if leader election is enabled.

    The interval between attempts by the acting master to renew a leadership slot before it stops leading. This must be less than or equal to the lease duration. This is only applicable if leader election is enabled.

    --leader-elect-resource-lock string     Default: "leases"
    The type of resource object that is used for locking during leader election. Supported options are 'endpoints', 'configmaps', 'leases', 'endpointsleases' and 'configmapsleases'.

    The type of resource object that is used for locking during leader election. Supported options are 'endpoints', 'configmaps', 'leases', 'endpointsleases' and 'configmapsleases'.

    --leader-elect-resource-name string     Default: "kube-controller-manager"
    The name of resource object that is used for locking during leader election.

    The name of resource object that is used for locking during leader election.

    --leader-elect-resource-namespace string     Default: "kube-system"
    The namespace of resource object that is used for locking during leader election.

    The namespace of resource object that is used for locking during leader election.

    --leader-elect-retry-period duration     Default: 2s
    The duration the clients should wait between attempting acquisition and renewal of a leadership. This is only applicable if leader election is enabled.

    The duration the clients should wait between attempting acquisition and renewal of a leadership. This is only applicable if leader election is enabled.

    --log-backtrace-at traceLocation     Default: :0--log-backtrace-at <a string in the form 'file:N'>     Default: :0
    when logging hits line file:N, emit a stack trace

    when logging hits line file:N, emit a stack trace

    --log-dir string
    If non-empty, write log files in this directory

    If non-empty, write log files in this directory

    --log-file string
    If non-empty, use this log file

    If non-empty, use this log file

    --log-file-max-size uint     Default: 1800
    Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited.

    Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited.

    --log-flush-frequency duration     Default: 5s
    Maximum number of seconds between log flushes

    Maximum number of seconds between log flushes

    --logging-format string     Default: "text"
    Sets the log format. Permitted formats: "json", "text".
    Non-default formats don't honor these flags: --add_dir_header, --alsologtostderr, --log_backtrace_at, --log_dir, --log_file, --log_file_max_size, --logtostderr, --one_output, --skip_headers, --skip_log_headers, --stderrthreshold, --vmodule, --log-flush-frequency.
    Non-default choices are currently alpha and subject to change without warning.

    Sets the log format. Permitted formats: "json", "text".
    Non-default formats don't honor these flags: --add_dir_header, --alsologtostderr, --log_backtrace_at, --log_dir, --log_file, --log_file_max_size, --logtostderr, --one_output, --skip_headers, --skip_log_headers, --stderrthreshold, --vmodule, --log-flush-frequency.
    Non-default choices are currently alpha and subject to change without warning.

    --logtostderr     Default: true
    log to standard error instead of files

    log to standard error instead of files

    --master string
    The address of the Kubernetes API server (overrides any value in kubeconfig).

    The address of the Kubernetes API server (overrides any value in kubeconfig).

    --max-endpoints-per-slice int32     Default: 100
    The maximum number of endpoints that will be added to an EndpointSlice. More endpoints per slice will result in less endpoint slices, but larger resources. Defaults to 100.

    The maximum number of endpoints that will be added to an EndpointSlice. More endpoints per slice will result in less endpoint slices, but larger resources. Defaults to 100.

    --min-resync-period duration     Default: 12h0m0s
    The resync period in reflectors will be random between MinResyncPeriod and 2*MinResyncPeriod.

    The resync period in reflectors will be random between MinResyncPeriod and 2*MinResyncPeriod.

    --mirroring-concurrent-service-endpoint-syncs int32     Default: 5
    The number of service endpoint syncing operations that will be done concurrently by the EndpointSliceMirroring controller. Larger number = faster endpoint slice updating, but more CPU (and network) load. Defaults to 5.

    The number of service endpoint syncing operations that will be done concurrently by the EndpointSliceMirroring controller. Larger number = faster endpoint slice updating, but more CPU (and network) load. Defaults to 5.

    --mirroring-endpointslice-updates-batch-period duration
    The length of EndpointSlice updates batching period for EndpointSliceMirroring controller. Processing of EndpointSlice changes will be delayed by this duration to join them with potential upcoming updates and reduce the overall number of EndpointSlice updates. Larger number = higher endpoint programming latency, but lower number of endpoints revision generated

    The length of EndpointSlice updates batching period for EndpointSliceMirroring controller. Processing of EndpointSlice changes will be delayed by this duration to join them with potential upcoming updates and reduce the overall number of EndpointSlice updates. Larger number = higher endpoint programming latency, but lower number of endpoints revision generated

    --mirroring-max-endpoints-per-subset int32     Default: 1000
    The maximum number of endpoints that will be added to an EndpointSlice by the EndpointSliceMirroring controller. More endpoints per slice will result in less endpoint slices, but larger resources. Defaults to 100.

    The maximum number of endpoints that will be added to an EndpointSlice by the EndpointSliceMirroring controller. More endpoints per slice will result in less endpoint slices, but larger resources. Defaults to 100.

    --namespace-sync-period duration     Default: 5m0s
    The period for syncing namespace life-cycle updates

    The period for syncing namespace life-cycle updates

    --node-cidr-mask-size int32
    Mask size for node cidr in cluster. Default is 24 for IPv4 and 64 for IPv6.

    Mask size for node cidr in cluster. Default is 24 for IPv4 and 64 for IPv6.

    --node-cidr-mask-size-ipv4 int32
    Mask size for IPv4 node cidr in dual-stack cluster. Default is 24.

    Mask size for IPv4 node cidr in dual-stack cluster. Default is 24.

    --node-cidr-mask-size-ipv6 int32
    Mask size for IPv6 node cidr in dual-stack cluster. Default is 64.

    Mask size for IPv6 node cidr in dual-stack cluster. Default is 64.

    --node-eviction-rate float32     Default: 0.1--node-eviction-rate float     Default: 0.1
    Number of nodes per second on which pods are deleted in case of node failure when a zone is healthy (see --unhealthy-zone-threshold for definition of healthy/unhealthy). Zone refers to entire cluster in non-multizone clusters.

    Number of nodes per second on which pods are deleted in case of node failure when a zone is healthy (see --unhealthy-zone-threshold for definition of healthy/unhealthy). Zone refers to entire cluster in non-multizone clusters.

    --node-monitor-grace-period duration     Default: 40s
    Amount of time which we allow running Node to be unresponsive before marking it unhealthy. Must be N times more than kubelet's nodeStatusUpdateFrequency, where N means number of retries allowed for kubelet to post node status.

    Amount of time which we allow running Node to be unresponsive before marking it unhealthy. Must be N times more than kubelet's nodeStatusUpdateFrequency, where N means number of retries allowed for kubelet to post node status.

    --node-monitor-period duration     Default: 5s
    The period for syncing NodeStatus in NodeController.

    The period for syncing NodeStatus in NodeController.

    --node-startup-grace-period duration     Default: 1m0s
    Amount of time which we allow starting Node to be unresponsive before marking it unhealthy.

    Amount of time which we allow starting Node to be unresponsive before marking it unhealthy.

    --one-output
    If true, only write logs to their native severity level (vs also writing to each lower severity level

    If true, only write logs to their native severity level (vs also writing to each lower severity level

    --permit-port-sharing
    If true, SO_REUSEPORT will be used when binding the port, which allows more than one instance to bind on the same address and port. [default=false]

    If true, SO_REUSEPORT will be used when binding the port, which allows more than one instance to bind on the same address and port. [default=false]

    --pod-eviction-timeout duration     Default: 5m0s
    The grace period for deleting pods on failed nodes.

    The grace period for deleting pods on failed nodes.

    --profiling     Default: true
    Enable profiling via web interface host:port/debug/pprof/

    Enable profiling via web interface host:port/debug/pprof/

    --pv-recycler-increment-timeout-nfs int32     Default: 30
    the increment of time added per Gi to ActiveDeadlineSeconds for an NFS scrubber pod

    the increment of time added per Gi to ActiveDeadlineSeconds for an NFS scrubber pod

    --pv-recycler-minimum-timeout-hostpath int32     Default: 60
    The minimum ActiveDeadlineSeconds to use for a HostPath Recycler pod. This is for development and testing only and will not work in a multi-node cluster.

    The minimum ActiveDeadlineSeconds to use for a HostPath Recycler pod. This is for development and testing only and will not work in a multi-node cluster.

    --pv-recycler-minimum-timeout-nfs int32     Default: 300
    The minimum ActiveDeadlineSeconds to use for an NFS Recycler pod

    The minimum ActiveDeadlineSeconds to use for an NFS Recycler pod

    --pv-recycler-pod-template-filepath-hostpath string
    The file path to a pod definition used as a template for HostPath persistent volume recycling. This is for development and testing only and will not work in a multi-node cluster.

    The file path to a pod definition used as a template for HostPath persistent volume recycling. This is for development and testing only and will not work in a multi-node cluster.

    --pv-recycler-pod-template-filepath-nfs string
    The file path to a pod definition used as a template for NFS persistent volume recycling

    The file path to a pod definition used as a template for NFS persistent volume recycling

    --pv-recycler-timeout-increment-hostpath int32     Default: 30
    the increment of time added per Gi to ActiveDeadlineSeconds for a HostPath scrubber pod. This is for development and testing only and will not work in a multi-node cluster.

    the increment of time added per Gi to ActiveDeadlineSeconds for a HostPath scrubber pod. This is for development and testing only and will not work in a multi-node cluster.

    --pvclaimbinder-sync-period duration     Default: 15s
    The period for syncing persistent volumes and persistent volume claims

    The period for syncing persistent volumes and persistent volume claims

    --requestheader-allowed-names stringSlice--requestheader-allowed-names strings
    List of client certificate common names to allow to provide usernames in headers specified by --requestheader-username-headers. If empty, any client certificate validated by the authorities in --requestheader-client-ca-file is allowed.

    List of client certificate common names to allow to provide usernames in headers specified by --requestheader-username-headers. If empty, any client certificate validated by the authorities in --requestheader-client-ca-file is allowed.

    --requestheader-client-ca-file string
    Root certificate bundle to use to verify client certificates on incoming requests before trusting usernames in headers specified by --requestheader-username-headers. WARNING: generally do not depend on authorization being already done for incoming requests.

    Root certificate bundle to use to verify client certificates on incoming requests before trusting usernames in headers specified by --requestheader-username-headers. WARNING: generally do not depend on authorization being already done for incoming requests.

    --requestheader-extra-headers-prefix stringSlice     Default: [x-remote-extra-]--requestheader-extra-headers-prefix strings     Default: "x-remote-extra-"
    List of request header prefixes to inspect. X-Remote-Extra- is suggested.

    List of request header prefixes to inspect. X-Remote-Extra- is suggested.

    --requestheader-group-headers stringSlice     Default: [x-remote-group]--requestheader-group-headers strings     Default: "x-remote-group"
    List of request headers to inspect for groups. X-Remote-Group is suggested.

    List of request headers to inspect for groups. X-Remote-Group is suggested.

    --requestheader-username-headers stringSlice     Default: [x-remote-user]--requestheader-username-headers strings     Default: "x-remote-user"
    List of request headers to inspect for usernames. X-Remote-User is common.

    List of request headers to inspect for usernames. X-Remote-User is common.

    --resource-quota-sync-period duration     Default: 5m0s
    The period for syncing quota usage status in the system

    The period for syncing quota usage status in the system

    --root-ca-file string
    If set, this root certificate authority will be included in service account's token secret. This must be a valid PEM-encoded CA bundle.

    If set, this root certificate authority will be included in service account's token secret. This must be a valid PEM-encoded CA bundle.

    --route-reconciliation-period duration     Default: 10s
    The period for reconciling routes created for Nodes by cloud provider.

    The period for reconciling routes created for Nodes by cloud provider.

    --secondary-node-eviction-rate float32     Default: 0.01--secondary-node-eviction-rate float     Default: 0.01
    Number of nodes per second on which pods are deleted in case of node failure when a zone is unhealthy (see --unhealthy-zone-threshold for definition of healthy/unhealthy). Zone refers to entire cluster in non-multizone clusters. This value is implicitly overridden to 0 if the cluster size is smaller than --large-cluster-size-threshold.

    Number of nodes per second on which pods are deleted in case of node failure when a zone is unhealthy (see --unhealthy-zone-threshold for definition of healthy/unhealthy). Zone refers to entire cluster in non-multizone clusters. This value is implicitly overridden to 0 if the cluster size is smaller than --large-cluster-size-threshold.

    --secure-port int     Default: 10257
    The port on which to serve HTTPS with authentication and authorization. If 0, don't serve HTTPS at all.

    The port on which to serve HTTPS with authentication and authorization. If 0, don't serve HTTPS at all.

    --service-account-private-key-file string
    Filename containing a PEM-encoded private RSA or ECDSA key used to sign service account tokens.

    Filename containing a PEM-encoded private RSA or ECDSA key used to sign service account tokens.

    --service-cluster-ip-range string
    CIDR Range for Services in cluster. Requires --allocate-node-cidrs to be true

    CIDR Range for Services in cluster. Requires --allocate-node-cidrs to be true

    --show-hidden-metrics-for-version string
    The previous version for which you want to show hidden metrics. Only the previous minor version is meaningful, other values will not be allowed. The format is <major>.<minor>, e.g.: '1.16'. The purpose of this format is make sure you have the opportunity to notice if the next release hides additional metrics, rather than being surprised when they are permanently removed in the release after that.

    The previous version for which you want to show hidden metrics. Only the previous minor version is meaningful, other values will not be allowed. The format is ., e.g.: '1.16'. The purpose of this format is make sure you have the opportunity to notice if the next release hides additional metrics, rather than being surprised when they are permanently removed in the release after that.

    --skip-headers
    If true, avoid header prefixes in the log messages

    If true, avoid header prefixes in the log messages

    --skip-log-headers
    If true, avoid headers when opening log files

    If true, avoid headers when opening log files

    --stderrthreshold severity     Default: 2--stderrthreshold int     Default: 2
    logs at or above this threshold go to stderr

    logs at or above this threshold go to stderr

    --terminated-pod-gc-threshold int32     Default: 12500
    Number of terminated pods that can exist before the terminated pod garbage collector starts deleting terminated pods. If <= 0, the terminated pod garbage collector is disabled.

    Number of terminated pods that can exist before the terminated pod garbage collector starts deleting terminated pods. If <= 0, the terminated pod garbage collector is disabled.

    --tls-cert-file string
    File containing the default x509 Certificate for HTTPS. (CA cert, if any, concatenated after server cert). If HTTPS serving is enabled, and --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 specified by --cert-dir.

    File containing the default x509 Certificate for HTTPS. (CA cert, if any, concatenated after server cert). If HTTPS serving is enabled, and --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 specified by --cert-dir.

    --tls-cipher-suites stringSlice--tls-cipher-suites strings
    Comma-separated list of cipher suites for the server. If omitted, the default Go cipher suites will be used.
    Preferred values: TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, 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_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, 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_CHACHA20_POLY1305_SHA256, TLS_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_GCM_SHA384.
    Insecure values: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_RC4_128_SHA.

    Comma-separated list of cipher suites for the server. If omitted, the default Go cipher suites will be used.
    Preferred values: TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, 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_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, 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_CHACHA20_POLY1305_SHA256, TLS_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_GCM_SHA384.
    Insecure values: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_RC4_128_SHA.

    --tls-min-version string
    Minimum TLS version supported. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13

    Minimum TLS version supported. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13

    --tls-private-key-file string
    File containing the default x509 private key matching --tls-cert-file.

    File containing the default x509 private key matching --tls-cert-file.

    --tls-sni-cert-key namedCertKey     Default: []--tls-sni-cert-key string
    A pair of x509 certificate and private key file paths, optionally suffixed with a list of domain patterns which are fully qualified domain names, possibly with prefixed wildcard segments. The domain patterns also allow IP addresses, but IPs should only be used if the apiserver has visibility to the IP address requested by a client. If no domain patterns are provided, the names of the certificate are extracted. Non-wildcard matches trump over wildcard matches, explicit domain patterns trump over extracted names. For multiple key/certificate pairs, use the --tls-sni-cert-key multiple times. Examples: "example.crt,example.key" or "foo.crt,foo.key:*.foo.com,foo.com".

    A pair of x509 certificate and private key file paths, optionally suffixed with a list of domain patterns which are fully qualified domain names, possibly with prefixed wildcard segments. The domain patterns also allow IP addresses, but IPs should only be used if the apiserver has visibility to the IP address requested by a client. If no domain patterns are provided, the names of the certificate are extracted. Non-wildcard matches trump over wildcard matches, explicit domain patterns trump over extracted names. For multiple key/certificate pairs, use the --tls-sni-cert-key multiple times. Examples: "example.crt,example.key" or "foo.crt,foo.key:*.foo.com,foo.com".

    --unhealthy-zone-threshold float32     Default: 0.55--unhealthy-zone-threshold float     Default: 0.55
    Fraction of Nodes in a zone which needs to be not Ready (minimum 3) for zone to be treated as unhealthy.

    Fraction of Nodes in a zone which needs to be not Ready (minimum 3) for zone to be treated as unhealthy.

    --use-service-account-credentials
    If true, use individual service account credentials for each controller.

    If true, use individual service account credentials for each controller.

    -v, --v Level-v, --v int
    number for the log level verbosity

    number for the log level verbosity

    --version version[=true]
    Print version information and quit

    Print version information and quit

    --vmodule moduleSpec--vmodule <comma-separated 'pattern=N' settings>
    comma-separated list of pattern=N settings for file-filtered logging

    comma-separated list of pattern=N settings for file-filtered logging

    --volume-host-allow-local-loopback     Default: true
    If false, deny local loopback IPs in addition to any CIDR ranges in --volume-host-cidr-denylist

    If false, deny local loopback IPs in addition to any CIDR ranges in --volume-host-cidr-denylist

    --volume-host-cidr-denylist stringSlice--volume-host-cidr-denylist strings
    A comma-separated list of CIDR ranges to avoid from volume plugins.

    A comma-separated list of CIDR ranges to avoid from volume plugins.

    --azure-container-registry-config string
    Path to the file containing Azure container registry configuration information.

    Path to the file containing Azure container registry configuration information.

    --bind-address ip     Default: 0.0.0.0--bind-address string     Default: 0.0.0.0
    The IP address for the proxy server to serve on (set to '0.0.0.0' for all IPv4 interfaces and '::' for all IPv6 interfaces)

    The IP address for the proxy server to serve on (set to '0.0.0.0' for all IPv4 interfaces and '::' for all IPv6 interfaces)

    --bind-address-hard-fail
    If true kube-proxy will treat failure to bind to a port as fatal and exit

    If true kube-proxy will treat failure to bind to a port as fatal and exit

    --cleanup
    If true cleanup iptables and ipvs rules and exit.

    If true cleanup iptables and ipvs rules and exit.

    --cluster-cidr string
    The CIDR range of pods in the cluster. When configured, traffic sent to a Service cluster IP from outside this range will be masqueraded and traffic sent from pods to an external LoadBalancer IP will be directed to the respective cluster IP instead

    The CIDR range of pods in the cluster. When configured, traffic sent to a Service cluster IP from outside this range will be masqueraded and traffic sent from pods to an external LoadBalancer IP will be directed to the respective cluster IP instead

    --config string
    The path to the configuration file.

    The path to the configuration file.

    --config-sync-period duration     Default: 15m0s
    How often configuration from the apiserver is refreshed. Must be greater than 0.

    How often configuration from the apiserver is refreshed. Must be greater than 0.

    --conntrack-max-per-core int32     Default: 32768
    Maximum number of NAT connections to track per CPU core (0 to leave the limit as-is and ignore conntrack-min).

    Maximum number of NAT connections to track per CPU core (0 to leave the limit as-is and ignore conntrack-min).

    --conntrack-min int32     Default: 131072
    Minimum number of conntrack entries to allocate, regardless of conntrack-max-per-core (set conntrack-max-per-core=0 to leave the limit as-is).

    Minimum number of conntrack entries to allocate, regardless of conntrack-max-per-core (set conntrack-max-per-core=0 to leave the limit as-is).

    --conntrack-tcp-timeout-close-wait duration     Default: 1h0m0s
    NAT timeout for TCP connections in the CLOSE_WAIT state

    NAT timeout for TCP connections in the CLOSE_WAIT state

    --conntrack-tcp-timeout-established duration     Default: 24h0m0s
    Idle timeout for established TCP connections (0 to leave as-is)

    Idle timeout for established TCP connections (0 to leave as-is)

    --detect-local-mode LocalMode
    Mode to use to detect local traffic

    Mode to use to detect local traffic

    --feature-gates mapStringBool--feature-gates <comma-separated 'key=True|False' pairs>
    A set of key=value pairs that describe feature gates for alpha/experimental features. Options are:
    APIListChunking=true|false (BETA - default=true)
    APIPriorityAndFairness=true|false (BETA - default=true)
    APIResponseCompression=true|false (BETA - default=true)
    APIServerIdentity=true|false (ALPHA - default=false)
    AllAlpha=true|false (ALPHA - default=false)
    AllBeta=true|false (BETA - default=false)
    AllowInsecureBackendProxy=true|false (BETA - default=true)
    AnyVolumeDataSource=true|false (ALPHA - default=false)
    AppArmor=true|false (BETA - default=true)
    BalanceAttachedNodeVolumes=true|false (ALPHA - default=false)
    BoundServiceAccountTokenVolume=true|false (ALPHA - default=false)
    CPUManager=true|false (BETA - default=true)
    CRIContainerLogRotation=true|false (BETA - default=true)
    CSIInlineVolume=true|false (BETA - default=true)
    CSIMigration=true|false (BETA - default=true)
    CSIMigrationAWS=true|false (BETA - default=false)
    CSIMigrationAWSComplete=true|false (ALPHA - default=false)
    CSIMigrationAzureDisk=true|false (BETA - default=false)
    CSIMigrationAzureDiskComplete=true|false (ALPHA - default=false)
    CSIMigrationAzureFile=true|false (ALPHA - default=false)
    CSIMigrationAzureFileComplete=true|false (ALPHA - default=false)
    CSIMigrationGCE=true|false (BETA - default=false)
    CSIMigrationGCEComplete=true|false (ALPHA - default=false)
    CSIMigrationOpenStack=true|false (BETA - default=false)
    CSIMigrationOpenStackComplete=true|false (ALPHA - default=false)
    CSIMigrationvSphere=true|false (BETA - default=false)
    CSIMigrationvSphereComplete=true|false (BETA - default=false)
    CSIServiceAccountToken=true|false (ALPHA - default=false)
    CSIStorageCapacity=true|false (ALPHA - default=false)
    CSIVolumeFSGroupPolicy=true|false (BETA - default=true)
    ConfigurableFSGroupPolicy=true|false (BETA - default=true)
    CronJobControllerV2=true|false (ALPHA - default=false)
    CustomCPUCFSQuotaPeriod=true|false (ALPHA - default=false)
    DefaultPodTopologySpread=true|false (BETA - default=true)
    DevicePlugins=true|false (BETA - default=true)
    DisableAcceleratorUsageMetrics=true|false (BETA - default=true)
    DownwardAPIHugePages=true|false (ALPHA - default=false)
    DynamicKubeletConfig=true|false (BETA - default=true)
    EfficientWatchResumption=true|false (ALPHA - default=false)
    EndpointSlice=true|false (BETA - default=true)
    EndpointSliceNodeName=true|false (ALPHA - default=false)
    EndpointSliceProxying=true|false (BETA - default=true)
    EndpointSliceTerminatingCondition=true|false (ALPHA - default=false)
    EphemeralContainers=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)
    GenericEphemeralVolume=true|false (ALPHA - default=false)
    GracefulNodeShutdown=true|false (ALPHA - default=false)
    HPAContainerMetrics=true|false (ALPHA - default=false)
    HPAScaleToZero=true|false (ALPHA - default=false)
    HugePageStorageMediumSize=true|false (BETA - default=true)
    IPv6DualStack=true|false (ALPHA - default=false)
    ImmutableEphemeralVolumes=true|false (BETA - default=true)
    KubeletCredentialProviders=true|false (ALPHA - default=false)
    KubeletPodResources=true|false (BETA - default=true)
    LegacyNodeRoleBehavior=true|false (BETA - default=true)
    LocalStorageCapacityIsolation=true|false (BETA - default=true)
    LocalStorageCapacityIsolationFSQuotaMonitoring=true|false (ALPHA - default=false)
    MixedProtocolLBService=true|false (ALPHA - default=false)
    NodeDisruptionExclusion=true|false (BETA - default=true)
    NonPreemptingPriority=true|false (BETA - default=true)
    PodDisruptionBudget=true|false (BETA - default=true)
    PodOverhead=true|false (BETA - default=true)
    ProcMountType=true|false (ALPHA - default=false)
    QOSReserved=true|false (ALPHA - default=false)
    RemainingItemCount=true|false (BETA - default=true)
    RemoveSelfLink=true|false (BETA - default=true)
    RootCAConfigMap=true|false (BETA - default=true)
    RotateKubeletServerCertificate=true|false (BETA - default=true)
    RunAsGroup=true|false (BETA - default=true)
    ServerSideApply=true|false (BETA - default=true)
    ServiceAccountIssuerDiscovery=true|false (BETA - default=true)
    ServiceLBNodePortControl=true|false (ALPHA - default=false)
    ServiceNodeExclusion=true|false (BETA - default=true)
    ServiceTopology=true|false (ALPHA - default=false)
    SetHostnameAsFQDN=true|false (BETA - default=true)
    SizeMemoryBackedVolumes=true|false (ALPHA - default=false)
    StorageVersionAPI=true|false (ALPHA - default=false)
    StorageVersionHash=true|false (BETA - default=true)
    Sysctls=true|false (BETA - default=true)
    TTLAfterFinished=true|false (ALPHA - default=false)
    TopologyManager=true|false (BETA - default=true)
    ValidateProxyRedirects=true|false (BETA - default=true)
    WarningHeaders=true|false (BETA - default=true)
    WinDSR=true|false (ALPHA - default=false)
    WinOverlay=true|false (BETA - default=true)
    WindowsEndpointSliceProxying=true|false (ALPHA - default=false)

    A set of key=value pairs that describe feature gates for alpha/experimental features. Options are:
    APIListChunking=true|false (BETA - default=true)
    APIPriorityAndFairness=true|false (BETA - default=true)
    APIResponseCompression=true|false (BETA - default=true)
    APIServerIdentity=true|false (ALPHA - default=false)
    AllAlpha=true|false (ALPHA - default=false)
    AllBeta=true|false (BETA - default=false)
    AllowInsecureBackendProxy=true|false (BETA - default=true)
    AnyVolumeDataSource=true|false (ALPHA - default=false)
    AppArmor=true|false (BETA - default=true)
    BalanceAttachedNodeVolumes=true|false (ALPHA - default=false)
    BoundServiceAccountTokenVolume=true|false (ALPHA - default=false)
    CPUManager=true|false (BETA - default=true)
    CRIContainerLogRotation=true|false (BETA - default=true)
    CSIInlineVolume=true|false (BETA - default=true)
    CSIMigration=true|false (BETA - default=true)
    CSIMigrationAWS=true|false (BETA - default=false)
    CSIMigrationAWSComplete=true|false (ALPHA - default=false)
    CSIMigrationAzureDisk=true|false (BETA - default=false)
    CSIMigrationAzureDiskComplete=true|false (ALPHA - default=false)
    CSIMigrationAzureFile=true|false (ALPHA - default=false)
    CSIMigrationAzureFileComplete=true|false (ALPHA - default=false)
    CSIMigrationGCE=true|false (BETA - default=false)
    CSIMigrationGCEComplete=true|false (ALPHA - default=false)
    CSIMigrationOpenStack=true|false (BETA - default=false)
    CSIMigrationOpenStackComplete=true|false (ALPHA - default=false)
    CSIMigrationvSphere=true|false (BETA - default=false)
    CSIMigrationvSphereComplete=true|false (BETA - default=false)
    CSIServiceAccountToken=true|false (ALPHA - default=false)
    CSIStorageCapacity=true|false (ALPHA - default=false)
    CSIVolumeFSGroupPolicy=true|false (BETA - default=true)
    ConfigurableFSGroupPolicy=true|false (BETA - default=true)
    CronJobControllerV2=true|false (ALPHA - default=false)
    CustomCPUCFSQuotaPeriod=true|false (ALPHA - default=false)
    DefaultPodTopologySpread=true|false (BETA - default=true)
    DevicePlugins=true|false (BETA - default=true)
    DisableAcceleratorUsageMetrics=true|false (BETA - default=true)
    DownwardAPIHugePages=true|false (ALPHA - default=false)
    DynamicKubeletConfig=true|false (BETA - default=true)
    EfficientWatchResumption=true|false (ALPHA - default=false)
    EndpointSlice=true|false (BETA - default=true)
    EndpointSliceNodeName=true|false (ALPHA - default=false)
    EndpointSliceProxying=true|false (BETA - default=true)
    EndpointSliceTerminatingCondition=true|false (ALPHA - default=false)
    EphemeralContainers=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)
    GenericEphemeralVolume=true|false (ALPHA - default=false)
    GracefulNodeShutdown=true|false (ALPHA - default=false)
    HPAContainerMetrics=true|false (ALPHA - default=false)
    HPAScaleToZero=true|false (ALPHA - default=false)
    HugePageStorageMediumSize=true|false (BETA - default=true)
    IPv6DualStack=true|false (ALPHA - default=false)
    ImmutableEphemeralVolumes=true|false (BETA - default=true)
    KubeletCredentialProviders=true|false (ALPHA - default=false)
    KubeletPodResources=true|false (BETA - default=true)
    LegacyNodeRoleBehavior=true|false (BETA - default=true)
    LocalStorageCapacityIsolation=true|false (BETA - default=true)
    LocalStorageCapacityIsolationFSQuotaMonitoring=true|false (ALPHA - default=false)
    MixedProtocolLBService=true|false (ALPHA - default=false)
    NodeDisruptionExclusion=true|false (BETA - default=true)
    NonPreemptingPriority=true|false (BETA - default=true)
    PodDisruptionBudget=true|false (BETA - default=true)
    PodOverhead=true|false (BETA - default=true)
    ProcMountType=true|false (ALPHA - default=false)
    QOSReserved=true|false (ALPHA - default=false)
    RemainingItemCount=true|false (BETA - default=true)
    RemoveSelfLink=true|false (BETA - default=true)
    RootCAConfigMap=true|false (BETA - default=true)
    RotateKubeletServerCertificate=true|false (BETA - default=true)
    RunAsGroup=true|false (BETA - default=true)
    ServerSideApply=true|false (BETA - default=true)
    ServiceAccountIssuerDiscovery=true|false (BETA - default=true)
    ServiceLBNodePortControl=true|false (ALPHA - default=false)
    ServiceNodeExclusion=true|false (BETA - default=true)
    ServiceTopology=true|false (ALPHA - default=false)
    SetHostnameAsFQDN=true|false (BETA - default=true)
    SizeMemoryBackedVolumes=true|false (ALPHA - default=false)
    StorageVersionAPI=true|false (ALPHA - default=false)
    StorageVersionHash=true|false (BETA - default=true)
    Sysctls=true|false (BETA - default=true)
    TTLAfterFinished=true|false (ALPHA - default=false)
    TopologyManager=true|false (BETA - default=true)
    ValidateProxyRedirects=true|false (BETA - default=true)
    WarningHeaders=true|false (BETA - default=true)
    WinDSR=true|false (ALPHA - default=false)
    WinOverlay=true|false (BETA - default=true)
    WindowsEndpointSliceProxying=true|false (ALPHA - default=false)

    --healthz-bind-address ipport     Default: 0.0.0.0:10256
    The IP address with port for the health check server to serve on (set to '0.0.0.0:10256' for all IPv4 interfaces and '[::]:10256' for all IPv6 interfaces). Set empty to disable.

    The IP address with port for the health check server to serve on (set to '0.0.0.0:10256' for all IPv4 interfaces and '[::]:10256' for all IPv6 interfaces). Set empty to disable.

    -h, --help
    help for kube-proxy

    help for kube-proxy

    --hostname-override string
    If non-empty, will use this string as identification instead of the actual hostname.

    If non-empty, will use this string as identification instead of the actual hostname.

    --iptables-masquerade-bit int32     Default: 14
    If using the pure iptables proxy, the bit of the fwmark space to mark packets requiring SNAT with. Must be within the range [0, 31].

    If using the pure iptables proxy, the bit of the fwmark space to mark packets requiring SNAT with. Must be within the range [0, 31].

    --iptables-min-sync-period duration     Default: 1s
    The minimum interval of how often the iptables rules can be refreshed as endpoints and services change (e.g. '5s', '1m', '2h22m').

    The minimum interval of how often the iptables rules can be refreshed as endpoints and services change (e.g. '5s', '1m', '2h22m').

    --iptables-sync-period duration     Default: 30s
    The maximum interval of how often iptables rules are refreshed (e.g. '5s', '1m', '2h22m'). Must be greater than 0.

    The maximum interval of how often iptables rules are refreshed (e.g. '5s', '1m', '2h22m'). Must be greater than 0.

    --ipvs-exclude-cidrs stringSlice--ipvs-exclude-cidrs strings
    A comma-separated list of CIDR's which the ipvs proxier should not touch when cleaning up IPVS rules.

    A comma-separated list of CIDR's which the ipvs proxier should not touch when cleaning up IPVS rules.

    --ipvs-min-sync-period duration
    The minimum interval of how often the ipvs rules can be refreshed as endpoints and services change (e.g. '5s', '1m', '2h22m').

    The minimum interval of how often the ipvs rules can be refreshed as endpoints and services change (e.g. '5s', '1m', '2h22m').

    --ipvs-scheduler string
    The ipvs scheduler type when proxy mode is ipvs

    The ipvs scheduler type when proxy mode is ipvs

    --ipvs-strict-arp
    Enable strict ARP by setting arp_ignore to 1 and arp_announce to 2

    Enable strict ARP by setting arp_ignore to 1 and arp_announce to 2

    --ipvs-sync-period duration     Default: 30s
    The maximum interval of how often ipvs rules are refreshed (e.g. '5s', '1m', '2h22m'). Must be greater than 0.

    The maximum interval of how often ipvs rules are refreshed (e.g. '5s', '1m', '2h22m'). Must be greater than 0.

    --ipvs-tcp-timeout duration
    The timeout for idle IPVS TCP connections, 0 to leave as-is. (e.g. '5s', '1m', '2h22m').

    The timeout for idle IPVS TCP connections, 0 to leave as-is. (e.g. '5s', '1m', '2h22m').

    --ipvs-tcpfin-timeout duration
    The timeout for IPVS TCP connections after receiving a FIN packet, 0 to leave as-is. (e.g. '5s', '1m', '2h22m').

    The timeout for IPVS TCP connections after receiving a FIN packet, 0 to leave as-is. (e.g. '5s', '1m', '2h22m').

    --ipvs-udp-timeout duration
    The timeout for IPVS UDP packets, 0 to leave as-is. (e.g. '5s', '1m', '2h22m').

    The timeout for IPVS UDP packets, 0 to leave as-is. (e.g. '5s', '1m', '2h22m').

    --kube-api-burst int32     Default: 10
    Burst to use while talking with kubernetes apiserver

    Burst to use while talking with kubernetes apiserver

    --kube-api-content-type string     Default: "application/vnd.kubernetes.protobuf"
    Content type of requests sent to apiserver.

    Content type of requests sent to apiserver.

    --kube-api-qps float32     Default: 5--kube-api-qps float     Default: 5
    QPS to use while talking with kubernetes apiserver

    QPS to use while talking with kubernetes apiserver

    --kubeconfig string
    Path to kubeconfig file with authorization information (the master location can be overridden by the master flag).

    Path to kubeconfig file with authorization information (the master location can be overridden by the master flag).

    --log-flush-frequency duration     Default: 5s
    Maximum number of seconds between log flushes

    Maximum number of seconds between log flushes

    --masquerade-all
    If using the pure iptables proxy, SNAT all traffic sent via Service cluster IPs (this not commonly needed)

    If using the pure iptables proxy, SNAT all traffic sent via Service cluster IPs (this not commonly needed)

    --master string
    The address of the Kubernetes API server (overrides any value in kubeconfig)

    The address of the Kubernetes API server (overrides any value in kubeconfig)

    --metrics-bind-address ipport     Default: 127.0.0.1:10249
    The IP address with port for the metrics server to serve on (set to '0.0.0.0:10249' for all IPv4 interfaces and '[::]:10249' for all IPv6 interfaces). Set empty to disable.

    The IP address with port for the metrics server to serve on (set to '0.0.0.0:10249' for all IPv4 interfaces and '[::]:10249' for all IPv6 interfaces). Set empty to disable.

    --nodeport-addresses stringSlice--nodeport-addresses strings
    A string slice of values which specify the addresses to use for NodePorts. Values may be valid IP blocks (e.g. 1.2.3.0/24, 1.2.3.4/32). The default empty string slice ([]) means to use all local addresses.

    A string slice of values which specify the addresses to use for NodePorts. Values may be valid IP blocks (e.g. 1.2.3.0/24, 1.2.3.4/32). The default empty string slice ([]) means to use all local addresses.

    --oom-score-adj int32     Default: -999
    The oom-score-adj value for kube-proxy process. Values must be within the range [-1000, 1000]

    The oom-score-adj value for kube-proxy process. Values must be within the range [-1000, 1000]

    --profiling
    If true enables profiling via web interface on /debug/pprof handler.

    If true enables profiling via web interface on /debug/pprof handler.

    --proxy-mode ProxyMode
    Which proxy mode to use: 'userspace' (older) or 'iptables' (faster) or 'ipvs' or 'kernelspace' (windows). If blank, use the best-available proxy (currently iptables). If the iptables proxy is selected, regardless of how, but the system's kernel or iptables versions are insufficient, this always falls back to the userspace proxy.

    Which proxy mode to use: 'userspace' (older) or 'iptables' (faster) or 'ipvs' or 'kernelspace' (windows). If blank, use the best-available proxy (currently iptables). If the iptables proxy is selected, regardless of how, but the system's kernel or iptables versions are insufficient, this always falls back to the userspace proxy.

    --proxy-port-range port-range
    Range of host ports (beginPort-endPort, single port or beginPort+offset, inclusive) that may be consumed in order to proxy service traffic. If (unspecified, 0, or 0-0) then ports will be randomly chosen.

    Range of host ports (beginPort-endPort, single port or beginPort+offset, inclusive) that may be consumed in order to proxy service traffic. If (unspecified, 0, or 0-0) then ports will be randomly chosen.

    --show-hidden-metrics-for-version string
    The previous version for which you want to show hidden metrics. Only the previous minor version is meaningful, other values will not be allowed. The format is <major>.<minor>, e.g.: '1.16'. The purpose of this format is make sure you have the opportunity to notice if the next release hides additional metrics, rather than being surprised when they are permanently removed in the release after that.

    The previous version for which you want to show hidden metrics. Only the previous minor version is meaningful, other values will not be allowed. The format is ., e.g.: '1.16'. The purpose of this format is make sure you have the opportunity to notice if the next release hides additional metrics, rather than being surprised when they are permanently removed in the release after that.

    --udp-timeout duration     Default: 250ms
    How long an idle UDP connection will be kept open (e.g. '250ms', '2s'). Must be greater than 0. Only applicable for proxy-mode=userspace

    How long an idle UDP connection will be kept open (e.g. '250ms', '2s'). Must be greater than 0. Only applicable for proxy-mode=userspace

    --version version[=true]
    Print version information and quit

    Print version information and quit

    --write-config-to string
    If set, write the default configuration values to this file and exit.

    If set, write the default configuration values to this file and exit.

    --add-dir-header
    If true, adds the file directory to the header of the log messages

    If true, adds the file directory to the header of the log messages

    --address string     Default: "0.0.0.0"
    DEPRECATED: the IP address on which to listen for the --port port (set to 0.0.0.0 for all IPv4 interfaces and :: for all IPv6 interfaces). See --bind-address instead.

    DEPRECATED: the IP address on which to listen for the --port port (set to 0.0.0.0 for all IPv4 interfaces and :: for all IPv6 interfaces). See --bind-address instead.

    --algorithm-provider string
    DEPRECATED: the scheduling algorithm provider to use, this sets the default plugins for component config profiles. Choose one of: ClusterAutoscalerProvider | DefaultProvider

    DEPRECATED: the scheduling algorithm provider to use, this sets the default plugins for component config profiles. Choose one of: ClusterAutoscalerProvider | DefaultProvider

    --alsologtostderr
    log to standard error as well as files

    log to standard error as well as files

    --authentication-kubeconfig string
    kubeconfig file pointing at the 'core' kubernetes server with enough rights to create tokenreviews.authentication.k8s.io. This is optional. If empty, all token requests are considered to be anonymous and no client CA is looked up in the cluster.

    kubeconfig file pointing at the 'core' kubernetes server with enough rights to create tokenreviews.authentication.k8s.io. This is optional. If empty, all token requests are considered to be anonymous and no client CA is looked up in the cluster.

    --authentication-skip-lookup
    If false, the authentication-kubeconfig will be used to lookup missing authentication configuration from the cluster.

    If false, the authentication-kubeconfig will be used to lookup missing authentication configuration from the cluster.

    --authentication-token-webhook-cache-ttl duration     Default: 10s
    The duration to cache responses from the webhook token authenticator.

    The duration to cache responses from the webhook token authenticator.

    --authentication-tolerate-lookup-failure     Default: true
    If true, failures to look up missing authentication configuration from the cluster are not considered fatal. Note that this can result in authentication that treats all requests as anonymous.

    If true, failures to look up missing authentication configuration from the cluster are not considered fatal. Note that this can result in authentication that treats all requests as anonymous.

    --authorization-always-allow-paths stringSlice     Default: [/healthz]--authorization-always-allow-paths strings     Default: "/healthz"
    A list of HTTP paths to skip during authorization, i.e. these are authorized without contacting the 'core' kubernetes server.

    A list of HTTP paths to skip during authorization, i.e. these are authorized without contacting the 'core' kubernetes server.

    --authorization-kubeconfig string
    kubeconfig file pointing at the 'core' kubernetes server with enough rights to create subjectaccessreviews.authorization.k8s.io. This is optional. If empty, all requests not skipped by authorization are forbidden.

    kubeconfig file pointing at the 'core' kubernetes server with enough rights to create subjectaccessreviews.authorization.k8s.io. This is optional. If empty, all requests not skipped by authorization are forbidden.

    --authorization-webhook-cache-authorized-ttl duration     Default: 10s
    The duration to cache 'authorized' responses from the webhook authorizer.

    The duration to cache 'authorized' responses from the webhook authorizer.

    --authorization-webhook-cache-unauthorized-ttl duration     Default: 10s
    The duration to cache 'unauthorized' responses from the webhook authorizer.

    The duration to cache 'unauthorized' responses from the webhook authorizer.

    --azure-container-registry-config string
    Path to the file containing Azure container registry configuration information.

    Path to the file containing Azure container registry configuration information.

    --bind-address ip     Default: 0.0.0.0--bind-address string     Default: 0.0.0.0
    The IP address on which to listen for the --secure-port port. The associated interface(s) must be reachable by the rest of the cluster, and by CLI/web clients. If blank or an unspecified address (0.0.0.0 or ::), all interfaces will be used.

    The IP address on which to listen for the --secure-port port. The associated interface(s) must be reachable by the rest of the cluster, and by CLI/web clients. If blank or an unspecified address (0.0.0.0 or ::), all interfaces will be used.

    --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.

    The directory where the TLS certs are located. If --tls-cert-file and --tls-private-key-file are provided, this flag will be ignored.

    --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.

    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.

    --config string
    The path to the configuration file. The following flags can overwrite fields in this file:
    --address
    --port
    --use-legacy-policy-config
    --policy-configmap
    --policy-config-file
    --algorithm-provider

    The path to the configuration file. The following flags can overwrite fields in this file:
    --address
    --port
    --use-legacy-policy-config
    --policy-configmap
    --policy-config-file
    --algorithm-provider

    --contention-profiling     Default: true
    DEPRECATED: enable lock contention profiling, if profiling is enabled

    DEPRECATED: enable lock contention profiling, if profiling is enabled

    --experimental-logging-sanitization
    [Experimental] When enabled prevents logging of fields tagged as sensitive (passwords, keys, tokens).
    Runtime log sanitization may introduce significant computation overhead and therefore should not be enabled in production.

    [Experimental] When enabled prevents logging of fields tagged as sensitive (passwords, keys, tokens).
    Runtime log sanitization may introduce significant computation overhead and therefore should not be enabled in production.

    --feature-gates mapStringBool--feature-gates <comma-separated 'key=True|False' pairs>
    A set of key=value pairs that describe feature gates for alpha/experimental features. Options are:
    APIListChunking=true|false (BETA - default=true)
    APIPriorityAndFairness=true|false (BETA - default=true)
    APIResponseCompression=true|false (BETA - default=true)
    APIServerIdentity=true|false (ALPHA - default=false)
    AllAlpha=true|false (ALPHA - default=false)
    AllBeta=true|false (BETA - default=false)
    AllowInsecureBackendProxy=true|false (BETA - default=true)
    AnyVolumeDataSource=true|false (ALPHA - default=false)
    AppArmor=true|false (BETA - default=true)
    BalanceAttachedNodeVolumes=true|false (ALPHA - default=false)
    BoundServiceAccountTokenVolume=true|false (ALPHA - default=false)
    CPUManager=true|false (BETA - default=true)
    CRIContainerLogRotation=true|false (BETA - default=true)
    CSIInlineVolume=true|false (BETA - default=true)
    CSIMigration=true|false (BETA - default=true)
    CSIMigrationAWS=true|false (BETA - default=false)
    CSIMigrationAWSComplete=true|false (ALPHA - default=false)
    CSIMigrationAzureDisk=true|false (BETA - default=false)
    CSIMigrationAzureDiskComplete=true|false (ALPHA - default=false)
    CSIMigrationAzureFile=true|false (ALPHA - default=false)
    CSIMigrationAzureFileComplete=true|false (ALPHA - default=false)
    CSIMigrationGCE=true|false (BETA - default=false)
    CSIMigrationGCEComplete=true|false (ALPHA - default=false)
    CSIMigrationOpenStack=true|false (BETA - default=false)
    CSIMigrationOpenStackComplete=true|false (ALPHA - default=false)
    CSIMigrationvSphere=true|false (BETA - default=false)
    CSIMigrationvSphereComplete=true|false (BETA - default=false)
    CSIServiceAccountToken=true|false (ALPHA - default=false)
    CSIStorageCapacity=true|false (ALPHA - default=false)
    CSIVolumeFSGroupPolicy=true|false (BETA - default=true)
    ConfigurableFSGroupPolicy=true|false (BETA - default=true)
    CronJobControllerV2=true|false (ALPHA - default=false)
    CustomCPUCFSQuotaPeriod=true|false (ALPHA - default=false)
    DefaultPodTopologySpread=true|false (BETA - default=true)
    DevicePlugins=true|false (BETA - default=true)
    DisableAcceleratorUsageMetrics=true|false (BETA - default=true)
    DownwardAPIHugePages=true|false (ALPHA - default=false)
    DynamicKubeletConfig=true|false (BETA - default=true)
    EfficientWatchResumption=true|false (ALPHA - default=false)
    EndpointSlice=true|false (BETA - default=true)
    EndpointSliceNodeName=true|false (ALPHA - default=false)
    EndpointSliceProxying=true|false (BETA - default=true)
    EndpointSliceTerminatingCondition=true|false (ALPHA - default=false)
    EphemeralContainers=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)
    GenericEphemeralVolume=true|false (ALPHA - default=false)
    GracefulNodeShutdown=true|false (ALPHA - default=false)
    HPAContainerMetrics=true|false (ALPHA - default=false)
    HPAScaleToZero=true|false (ALPHA - default=false)
    HugePageStorageMediumSize=true|false (BETA - default=true)
    IPv6DualStack=true|false (ALPHA - default=false)
    ImmutableEphemeralVolumes=true|false (BETA - default=true)
    KubeletCredentialProviders=true|false (ALPHA - default=false)
    KubeletPodResources=true|false (BETA - default=true)
    LegacyNodeRoleBehavior=true|false (BETA - default=true)
    LocalStorageCapacityIsolation=true|false (BETA - default=true)
    LocalStorageCapacityIsolationFSQuotaMonitoring=true|false (ALPHA - default=false)
    MixedProtocolLBService=true|false (ALPHA - default=false)
    NodeDisruptionExclusion=true|false (BETA - default=true)
    NonPreemptingPriority=true|false (BETA - default=true)
    PodDisruptionBudget=true|false (BETA - default=true)
    PodOverhead=true|false (BETA - default=true)
    ProcMountType=true|false (ALPHA - default=false)
    QOSReserved=true|false (ALPHA - default=false)
    RemainingItemCount=true|false (BETA - default=true)
    RemoveSelfLink=true|false (BETA - default=true)
    RootCAConfigMap=true|false (BETA - default=true)
    RotateKubeletServerCertificate=true|false (BETA - default=true)
    RunAsGroup=true|false (BETA - default=true)
    ServerSideApply=true|false (BETA - default=true)
    ServiceAccountIssuerDiscovery=true|false (BETA - default=true)
    ServiceLBNodePortControl=true|false (ALPHA - default=false)
    ServiceNodeExclusion=true|false (BETA - default=true)
    ServiceTopology=true|false (ALPHA - default=false)
    SetHostnameAsFQDN=true|false (BETA - default=true)
    SizeMemoryBackedVolumes=true|false (ALPHA - default=false)
    StorageVersionAPI=true|false (ALPHA - default=false)
    StorageVersionHash=true|false (BETA - default=true)
    Sysctls=true|false (BETA - default=true)
    TTLAfterFinished=true|false (ALPHA - default=false)
    TopologyManager=true|false (BETA - default=true)
    ValidateProxyRedirects=true|false (BETA - default=true)
    WarningHeaders=true|false (BETA - default=true)
    WinDSR=true|false (ALPHA - default=false)
    WinOverlay=true|false (BETA - default=true)
    WindowsEndpointSliceProxying=true|false (ALPHA - default=false)

    A set of key=value pairs that describe feature gates for alpha/experimental features. Options are:
    APIListChunking=true|false (BETA - default=true)
    APIPriorityAndFairness=true|false (BETA - default=true)
    APIResponseCompression=true|false (BETA - default=true)
    APIServerIdentity=true|false (ALPHA - default=false)
    AllAlpha=true|false (ALPHA - default=false)
    AllBeta=true|false (BETA - default=false)
    AllowInsecureBackendProxy=true|false (BETA - default=true)
    AnyVolumeDataSource=true|false (ALPHA - default=false)
    AppArmor=true|false (BETA - default=true)
    BalanceAttachedNodeVolumes=true|false (ALPHA - default=false)
    BoundServiceAccountTokenVolume=true|false (ALPHA - default=false)
    CPUManager=true|false (BETA - default=true)
    CRIContainerLogRotation=true|false (BETA - default=true)
    CSIInlineVolume=true|false (BETA - default=true)
    CSIMigration=true|false (BETA - default=true)
    CSIMigrationAWS=true|false (BETA - default=false)
    CSIMigrationAWSComplete=true|false (ALPHA - default=false)
    CSIMigrationAzureDisk=true|false (BETA - default=false)
    CSIMigrationAzureDiskComplete=true|false (ALPHA - default=false)
    CSIMigrationAzureFile=true|false (ALPHA - default=false)
    CSIMigrationAzureFileComplete=true|false (ALPHA - default=false)
    CSIMigrationGCE=true|false (BETA - default=false)
    CSIMigrationGCEComplete=true|false (ALPHA - default=false)
    CSIMigrationOpenStack=true|false (BETA - default=false)
    CSIMigrationOpenStackComplete=true|false (ALPHA - default=false)
    CSIMigrationvSphere=true|false (BETA - default=false)
    CSIMigrationvSphereComplete=true|false (BETA - default=false)
    CSIServiceAccountToken=true|false (ALPHA - default=false)
    CSIStorageCapacity=true|false (ALPHA - default=false)
    CSIVolumeFSGroupPolicy=true|false (BETA - default=true)
    ConfigurableFSGroupPolicy=true|false (BETA - default=true)
    CronJobControllerV2=true|false (ALPHA - default=false)
    CustomCPUCFSQuotaPeriod=true|false (ALPHA - default=false)
    DefaultPodTopologySpread=true|false (BETA - default=true)
    DevicePlugins=true|false (BETA - default=true)
    DisableAcceleratorUsageMetrics=true|false (BETA - default=true)
    DownwardAPIHugePages=true|false (ALPHA - default=false)
    DynamicKubeletConfig=true|false (BETA - default=true)
    EfficientWatchResumption=true|false (ALPHA - default=false)
    EndpointSlice=true|false (BETA - default=true)
    EndpointSliceNodeName=true|false (ALPHA - default=false)
    EndpointSliceProxying=true|false (BETA - default=true)
    EndpointSliceTerminatingCondition=true|false (ALPHA - default=false)
    EphemeralContainers=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)
    GenericEphemeralVolume=true|false (ALPHA - default=false)
    GracefulNodeShutdown=true|false (ALPHA - default=false)
    HPAContainerMetrics=true|false (ALPHA - default=false)
    HPAScaleToZero=true|false (ALPHA - default=false)
    HugePageStorageMediumSize=true|false (BETA - default=true)
    IPv6DualStack=true|false (ALPHA - default=false)
    ImmutableEphemeralVolumes=true|false (BETA - default=true)
    KubeletCredentialProviders=true|false (ALPHA - default=false)
    KubeletPodResources=true|false (BETA - default=true)
    LegacyNodeRoleBehavior=true|false (BETA - default=true)
    LocalStorageCapacityIsolation=true|false (BETA - default=true)
    LocalStorageCapacityIsolationFSQuotaMonitoring=true|false (ALPHA - default=false)
    MixedProtocolLBService=true|false (ALPHA - default=false)
    NodeDisruptionExclusion=true|false (BETA - default=true)
    NonPreemptingPriority=true|false (BETA - default=true)
    PodDisruptionBudget=true|false (BETA - default=true)
    PodOverhead=true|false (BETA - default=true)
    ProcMountType=true|false (ALPHA - default=false)
    QOSReserved=true|false (ALPHA - default=false)
    RemainingItemCount=true|false (BETA - default=true)
    RemoveSelfLink=true|false (BETA - default=true)
    RootCAConfigMap=true|false (BETA - default=true)
    RotateKubeletServerCertificate=true|false (BETA - default=true)
    RunAsGroup=true|false (BETA - default=true)
    ServerSideApply=true|false (BETA - default=true)
    ServiceAccountIssuerDiscovery=true|false (BETA - default=true)
    ServiceLBNodePortControl=true|false (ALPHA - default=false)
    ServiceNodeExclusion=true|false (BETA - default=true)
    ServiceTopology=true|false (ALPHA - default=false)
    SetHostnameAsFQDN=true|false (BETA - default=true)
    SizeMemoryBackedVolumes=true|false (ALPHA - default=false)
    StorageVersionAPI=true|false (ALPHA - default=false)
    StorageVersionHash=true|false (BETA - default=true)
    Sysctls=true|false (BETA - default=true)
    TTLAfterFinished=true|false (ALPHA - default=false)
    TopologyManager=true|false (BETA - default=true)
    ValidateProxyRedirects=true|false (BETA - default=true)
    WarningHeaders=true|false (BETA - default=true)
    WinDSR=true|false (ALPHA - default=false)
    WinOverlay=true|false (BETA - default=true)
    WindowsEndpointSliceProxying=true|false (ALPHA - default=false)

    --hard-pod-affinity-symmetric-weight int32     Default: 1
    DEPRECATED: RequiredDuringScheduling affinity is not symmetric, but there is an implicit PreferredDuringScheduling affinity rule corresponding to every RequiredDuringScheduling affinity rule. --hard-pod-affinity-symmetric-weight represents the weight of implicit PreferredDuringScheduling affinity rule. Must be in the range 0-100.This option was moved to the policy configuration file

    DEPRECATED: RequiredDuringScheduling affinity is not symmetric, but there is an implicit PreferredDuringScheduling affinity rule corresponding to every RequiredDuringScheduling affinity rule. --hard-pod-affinity-symmetric-weight represents the weight of implicit PreferredDuringScheduling affinity rule. Must be in the range 0-100.This option was moved to the policy configuration file

    -h, --help
    help for kube-scheduler

    help for kube-scheduler

    --http2-max-streams-per-connection int
    The limit that the server gives to clients for the maximum number of streams in an HTTP/2 connection. Zero means to use golang's default.

    The limit that the server gives to clients for the maximum number of streams in an HTTP/2 connection. Zero means to use golang's default.

    --kube-api-burst int32     Default: 100
    DEPRECATED: burst to use while talking with kubernetes apiserver

    DEPRECATED: burst to use while talking with kubernetes apiserver

    --kube-api-content-type string     Default: "application/vnd.kubernetes.protobuf"
    DEPRECATED: content type of requests sent to apiserver.

    DEPRECATED: content type of requests sent to apiserver.

    --kube-api-qps float32     Default: 50--kube-api-qps float     Default: 50
    DEPRECATED: QPS to use while talking with kubernetes apiserver

    DEPRECATED: QPS to use while talking with kubernetes apiserver

    --kubeconfig string
    DEPRECATED: path to kubeconfig file with authorization and master location information.

    DEPRECATED: path to kubeconfig file with authorization and master location information.

    --leader-elect     Default: true
    Start a leader election client and gain leadership before executing the main loop. Enable this when running replicated components for high availability.

    Start a leader election client and gain leadership before executing the main loop. Enable this when running replicated components for high availability.

    --leader-elect-lease-duration duration     Default: 15s
    The duration that non-leader candidates will wait after observing a leadership renewal until attempting to acquire leadership of a led but unrenewed leader slot. This is effectively the maximum duration that a leader can be stopped before it is replaced by another candidate. This is only applicable if leader election is enabled.

    The duration that non-leader candidates will wait after observing a leadership renewal until attempting to acquire leadership of a led but unrenewed leader slot. This is effectively the maximum duration that a leader can be stopped before it is replaced by another candidate. This is only applicable if leader election is enabled.

    --leader-elect-renew-deadline duration     Default: 10s
    The interval between attempts by the acting master to renew a leadership slot before it stops leading. This must be less than or equal to the lease duration. This is only applicable if leader election is enabled.

    The interval between attempts by the acting master to renew a leadership slot before it stops leading. This must be less than or equal to the lease duration. This is only applicable if leader election is enabled.

    --leader-elect-resource-lock string     Default: "leases"
    The type of resource object that is used for locking during leader election. Supported options are 'endpoints', 'configmaps', 'leases', 'endpointsleases' and 'configmapsleases'.

    The type of resource object that is used for locking during leader election. Supported options are 'endpoints', 'configmaps', 'leases', 'endpointsleases' and 'configmapsleases'.

    --leader-elect-resource-name string     Default: "kube-scheduler"
    The name of resource object that is used for locking during leader election.

    The name of resource object that is used for locking during leader election.

    --leader-elect-resource-namespace string     Default: "kube-system"
    The namespace of resource object that is used for locking during leader election.

    The namespace of resource object that is used for locking during leader election.

    --leader-elect-retry-period duration     Default: 2s
    The duration the clients should wait between attempting acquisition and renewal of a leadership. This is only applicable if leader election is enabled.

    The duration the clients should wait between attempting acquisition and renewal of a leadership. This is only applicable if leader election is enabled.

    --lock-object-name string     Default: "kube-scheduler"
    DEPRECATED: define the name of the lock object. Will be removed in favor of leader-elect-resource-name

    DEPRECATED: define the name of the lock object. Will be removed in favor of leader-elect-resource-name

    --lock-object-namespace string     Default: "kube-system"
    DEPRECATED: define the namespace of the lock object. Will be removed in favor of leader-elect-resource-namespace.

    DEPRECATED: define the namespace of the lock object. Will be removed in favor of leader-elect-resource-namespace.

    --log-backtrace-at traceLocation     Default: :0--log-backtrace-at <a string in the form 'file:N'>     Default: :0
    when logging hits line file:N, emit a stack trace

    when logging hits line file:N, emit a stack trace

    --log-dir string
    If non-empty, write log files in this directory

    If non-empty, write log files in this directory

    --log-file string
    If non-empty, use this log file

    If non-empty, use this log file

    --log-file-max-size uint     Default: 1800
    Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited.

    Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited.

    --log-flush-frequency duration     Default: 5s
    Maximum number of seconds between log flushes

    Maximum number of seconds between log flushes

    --logging-format string     Default: "text"
    Sets the log format. Permitted formats: "json", "text".
    Non-default formats don't honor these flags: --add_dir_header, --alsologtostderr, --log_backtrace_at, --log_dir, --log_file, --log_file_max_size, --logtostderr, --one_output, --skip_headers, --skip_log_headers, --stderrthreshold, --vmodule, --log-flush-frequency.
    Non-default choices are currently alpha and subject to change without warning.

    Sets the log format. Permitted formats: "json", "text".
    Non-default formats don't honor these flags: --add_dir_header, --alsologtostderr, --log_backtrace_at, --log_dir, --log_file, --log_file_max_size, --logtostderr, --one_output, --skip_headers, --skip_log_headers, --stderrthreshold, --vmodule, --log-flush-frequency.
    Non-default choices are currently alpha and subject to change without warning.

    --logtostderr     Default: true
    log to standard error instead of files

    log to standard error instead of files

    --master string
    The address of the Kubernetes API server (overrides any value in kubeconfig)

    The address of the Kubernetes API server (overrides any value in kubeconfig)

    --one-output
    If true, only write logs to their native severity level (vs also writing to each lower severity level

    If true, only write logs to their native severity level (vs also writing to each lower severity level

    --permit-port-sharing
    If true, SO_REUSEPORT will be used when binding the port, which allows more than one instance to bind on the same address and port. [default=false]

    If true, SO_REUSEPORT will be used when binding the port, which allows more than one instance to bind on the same address and port. [default=false]

    --policy-config-file string
    DEPRECATED: file with scheduler policy configuration. This file is used if policy ConfigMap is not provided or --use-legacy-policy-config=true. Note: The scheduler will fail if this is combined with Plugin configs

    DEPRECATED: file with scheduler policy configuration. This file is used if policy ConfigMap is not provided or --use-legacy-policy-config=true. Note: The scheduler will fail if this is combined with Plugin configs

    --policy-configmap string
    DEPRECATED: name of the ConfigMap object that contains scheduler's policy configuration. It must exist in the system namespace before scheduler initialization if --use-legacy-policy-config=false. The config must be provided as the value of an element in 'Data' map with the key='policy.cfg'. Note: The scheduler will fail if this is combined with Plugin configs

    DEPRECATED: name of the ConfigMap object that contains scheduler's policy configuration. It must exist in the system namespace before scheduler initialization if --use-legacy-policy-config=false. The config must be provided as the value of an element in 'Data' map with the key='policy.cfg'. Note: The scheduler will fail if this is combined with Plugin configs

    --policy-configmap-namespace string     Default: "kube-system"
    DEPRECATED: the namespace where policy ConfigMap is located. The kube-system namespace will be used if this is not provided or is empty. Note: The scheduler will fail if this is combined with Plugin configs

    DEPRECATED: the namespace where policy ConfigMap is located. The kube-system namespace will be used if this is not provided or is empty. Note: The scheduler will fail if this is combined with Plugin configs

    --port int     Default: 10251
    DEPRECATED: the port on which to serve HTTP insecurely without authentication and authorization. If 0, don't serve plain HTTP at all. See --secure-port instead.

    DEPRECATED: the port on which to serve HTTP insecurely without authentication and authorization. If 0, don't serve plain HTTP at all. See --secure-port instead.

    --profiling     Default: true
    DEPRECATED: enable profiling via web interface host:port/debug/pprof/

    DEPRECATED: enable profiling via web interface host:port/debug/pprof/

    --requestheader-allowed-names stringSlice--requestheader-allowed-names strings
    List of client certificate common names to allow to provide usernames in headers specified by --requestheader-username-headers. If empty, any client certificate validated by the authorities in --requestheader-client-ca-file is allowed.

    List of client certificate common names to allow to provide usernames in headers specified by --requestheader-username-headers. If empty, any client certificate validated by the authorities in --requestheader-client-ca-file is allowed.

    --requestheader-client-ca-file string
    Root certificate bundle to use to verify client certificates on incoming requests before trusting usernames in headers specified by --requestheader-username-headers. WARNING: generally do not depend on authorization being already done for incoming requests.

    Root certificate bundle to use to verify client certificates on incoming requests before trusting usernames in headers specified by --requestheader-username-headers. WARNING: generally do not depend on authorization being already done for incoming requests.

    --requestheader-extra-headers-prefix stringSlice     Default: [x-remote-extra-]--requestheader-extra-headers-prefix strings     Default: "x-remote-extra-"
    List of request header prefixes to inspect. X-Remote-Extra- is suggested.

    List of request header prefixes to inspect. X-Remote-Extra- is suggested.

    --requestheader-group-headers stringSlice     Default: [x-remote-group]--requestheader-group-headers strings     Default: "x-remote-group"
    List of request headers to inspect for groups. X-Remote-Group is suggested.

    List of request headers to inspect for groups. X-Remote-Group is suggested.

    --requestheader-username-headers stringSlice     Default: [x-remote-user]--requestheader-username-headers strings     Default: "x-remote-user"
    List of request headers to inspect for usernames. X-Remote-User is common.

    List of request headers to inspect for usernames. X-Remote-User is common.

    --scheduler-name string     Default: "default-scheduler"
    DEPRECATED: name of the scheduler, used to select which pods will be processed by this scheduler, based on pod's "spec.schedulerName".

    DEPRECATED: name of the scheduler, used to select which pods will be processed by this scheduler, based on pod's "spec.schedulerName".

    --secure-port int     Default: 10259
    The port on which to serve HTTPS with authentication and authorization. If 0, don't serve HTTPS at all.

    The port on which to serve HTTPS with authentication and authorization. If 0, don't serve HTTPS at all.

    --show-hidden-metrics-for-version string
    The previous version for which you want to show hidden metrics. Only the previous minor version is meaningful, other values will not be allowed. The format is <major>.<minor>, e.g.: '1.16'. The purpose of this format is make sure you have the opportunity to notice if the next release hides additional metrics, rather than being surprised when they are permanently removed in the release after that.

    The previous version for which you want to show hidden metrics. Only the previous minor version is meaningful, other values will not be allowed. The format is ., e.g.: '1.16'. The purpose of this format is make sure you have the opportunity to notice if the next release hides additional metrics, rather than being surprised when they are permanently removed in the release after that.

    --skip-headers
    If true, avoid header prefixes in the log messages

    If true, avoid header prefixes in the log messages

    --skip-log-headers
    If true, avoid headers when opening log files

    If true, avoid headers when opening log files

    --stderrthreshold severity     Default: 2--stderrthreshold int     Default: 2
    logs at or above this threshold go to stderr

    logs at or above this threshold go to stderr

    --tls-cert-file string
    File containing the default x509 Certificate for HTTPS. (CA cert, if any, concatenated after server cert). If HTTPS serving is enabled, and --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 specified by --cert-dir.

    File containing the default x509 Certificate for HTTPS. (CA cert, if any, concatenated after server cert). If HTTPS serving is enabled, and --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 specified by --cert-dir.

    --tls-cipher-suites stringSlice--tls-cipher-suites strings
    Comma-separated list of cipher suites for the server. If omitted, the default Go cipher suites will be used.
    Preferred values: TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, 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_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, 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_CHACHA20_POLY1305_SHA256, TLS_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_GCM_SHA384.
    Insecure values: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_RC4_128_SHA.

    Comma-separated list of cipher suites for the server. If omitted, the default Go cipher suites will be used.
    Preferred values: TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, 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_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, 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_CHACHA20_POLY1305_SHA256, TLS_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_GCM_SHA384.
    Insecure values: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_RC4_128_SHA.

    --tls-min-version string
    Minimum TLS version supported. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13

    Minimum TLS version supported. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13

    --tls-private-key-file string
    File containing the default x509 private key matching --tls-cert-file.

    File containing the default x509 private key matching --tls-cert-file.

    --tls-sni-cert-key namedCertKey     Default: []--tls-sni-cert-key string
    A pair of x509 certificate and private key file paths, optionally suffixed with a list of domain patterns which are fully qualified domain names, possibly with prefixed wildcard segments. The domain patterns also allow IP addresses, but IPs should only be used if the apiserver has visibility to the IP address requested by a client. If no domain patterns are provided, the names of the certificate are extracted. Non-wildcard matches trump over wildcard matches, explicit domain patterns trump over extracted names. For multiple key/certificate pairs, use the --tls-sni-cert-key multiple times. Examples: "example.crt,example.key" or "foo.crt,foo.key:*.foo.com,foo.com".

    A pair of x509 certificate and private key file paths, optionally suffixed with a list of domain patterns which are fully qualified domain names, possibly with prefixed wildcard segments. The domain patterns also allow IP addresses, but IPs should only be used if the apiserver has visibility to the IP address requested by a client. If no domain patterns are provided, the names of the certificate are extracted. Non-wildcard matches trump over wildcard matches, explicit domain patterns trump over extracted names. For multiple key/certificate pairs, use the --tls-sni-cert-key multiple times. Examples: "example.crt,example.key" or "foo.crt,foo.key:*.foo.com,foo.com".

    --use-legacy-policy-config
    DEPRECATED: when set to true, scheduler will ignore policy ConfigMap and uses policy config file. Note: The scheduler will fail if this is combined with Plugin configs

    DEPRECATED: when set to true, scheduler will ignore policy ConfigMap and uses policy config file. Note: The scheduler will fail if this is combined with Plugin configs

    -v, --v Level-v, --v int
    number for the log level verbosity

    number for the log level verbosity

    --version version[=true]
    Print version information and quit

    Print version information and quit

    --vmodule moduleSpec--vmodule <comma-separated 'pattern=N' settings>
    comma-separated list of pattern=N settings for file-filtered logging

    comma-separated list of pattern=N settings for file-filtered logging

    --write-config-to string
    If set, write the configuration values to this file and exit.

    If set, write the configuration values to this file and exit.

    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     Default: `false`
    Enable cAdvisor json `/spec` and `/stats/*` endpoints. This flag has no effect on the /stats/summary endpoint. (DEPRECATED: will be removed in a future version)
    --enable-controller-attach-detach     Default: `true`
    --enable-cadvisor-json-endpoints     Default: `false`
    - -启用 cAdvisor JSON 数据的 /spec/stats/* 端点。 -已弃用:未来版本将会移除此标志。 -
    --enable-controller-attach-detach     默认值:true