diff --git a/content/en/blog/_posts/2024-08-12-feature-gates_client-go.md b/content/en/blog/_posts/2024-08-12-feature-gates_client-go.md
new file mode 100644
index 0000000000..7d98d66898
--- /dev/null
+++ b/content/en/blog/_posts/2024-08-12-feature-gates_client-go.md
@@ -0,0 +1,118 @@
+---
+layout: blog
+title: 'Introducing Feature Gates to Client-Go: Enhancing Flexibility and Control'
+date: 2024-08-12
+slug: feature-gates-in-client-go
+author: >
+ Ben Luddy (Red Hat),
+ Lukasz Szaszkiewicz (Red Hat)
+---
+
+Kubernetes components use on-off switches called _feature gates_ to manage the risk of adding a new feature.
+The feature gate mechanism is what enables incremental graduation of a feature through the stages Alpha, Beta, and GA.
+
+Kubernetes components, such as kube-controller-manager and kube-scheduler, use the client-go library to interact with the API.
+The same library is used across the Kubernetes ecosystem to build controllers, tools, webhooks, and more. client-go now includes
+its own feature gating mechanism, giving developers and cluster administrators more control over how they adopt client features.
+
+To learn more about feature gates in Kubernetes, visit [Feature Gates](/docs/reference/command-line-tools-reference/feature-gates/).
+
+## Motivation
+
+In the absence of client-go feature gates, each new feature separated feature availability from enablement in its own way, if at all.
+Some features were enabled by updating to a newer version of client-go. Others needed to be actively configured in each program that used them.
+A few were configurable at runtime using environment variables. Consuming a feature-gated functionality exposed by the kube-apiserver sometimes
+required a client-side fallback mechanism to remain compatible with servers that don’t support the functionality due to their age or configuration.
+In cases where issues were discovered in these fallback mechanisms, mitigation required updating to a fixed version of client-go or rolling back.
+
+None of these approaches offer good support for enabling a feature by default in some, but not all, programs that consume client-go.
+Instead of enabling a new feature at first only for a single component, a change in the default setting immediately affects the default
+for all Kubernetes components, which broadens the blast radius significantly.
+
+## Feature gates in client-go
+
+To address these challenges, substantial client-go features will be phased in using the new feature gate mechanism.
+It will allow developers and users to enable or disable features in a way that will be familiar to anyone who has experience
+with feature gates in the Kubernetes components.
+
+Out of the box, simply by using a recent version of client-go, this offers several benefits.
+
+For people who use software built with client-go:
+
+
+* Early adopters can enable a default-off client-go feature on a per-process basis.
+* Misbehaving features can be disabled without building a new binary.
+* The state of all known client-go feature gates is logged, allowing users to inspect it.
+
+For people who develop software built with client-go:
+
+* By default, client-go feature gate overrides are read from environment variables.
+ If a bug is found in a client-go feature, users will be able to disable it without waiting for a new release.
+* Developers can replace the default environment-variable-based overrides in a program to change defaults,
+ read overrides from another source, or disable runtime overrides completely.
+ The Kubernetes components use this customizability to integrate client-go feature gates with
+ the existing `--feature-gates` command-line flag, feature enablement metrics, and logging.
+
+## Overriding client-go feature gates
+
+**Note**: This describes the default method for overriding client-go feature gates at runtime.
+It can be disabled or customized by the developer of a particular program.
+In Kubernetes components, client-go feature gate overrides are controlled by the `--feature-gates` flag.
+
+Features of client-go can be enabled or disabled by setting environment variables prefixed with `KUBE_FEATURE`.
+For example, to enable a feature named `MyFeature`, set the environment variable as follows:
+
+```
+ KUBE_FEATURE_MyFeature=true
+```
+
+To disable the feature, set the environment variable to `false`:
+
+```
+ KUBE_FEATURE_MyFeature=false
+```
+
+**Note**: Environment variables are case-sensitive on some operating systems.
+Therefore, `KUBE_FEATURE_MyFeature` and `KUBE_FEATURE_MYFEATURE` would be considered two different variables.
+
+## Customizing client-go feature gates
+
+The default environment-variable based mechanism for feature gate overrides can be sufficient for many programs in the Kubernetes ecosystem,
+and requires no special integration. Programs that require different behavior can replace it with their own custom feature gate provider.
+This allows a program to do things like force-disable a feature that is known to work poorly,
+read feature gates directly from a remote configuration service, or accept feature gate overrides through command-line options.
+
+The Kubernetes components replace client-go’s default feature gate provider with a shim to the existing Kubernetes feature gate provider.
+For all practical purposes, client-go feature gates are treated the same as other Kubernetes
+feature gates: they are wired to the `--feature-gates` command-line flag, included in feature enablement metrics, and logged on startup.
+
+To replace the default feature gate provider, implement the Gates interface and call ReplaceFeatureGates
+at package initialization time, as in this simple example:
+
+```go
+import (
+ “k8s.io/client-go/features”
+)
+
+type AlwaysEnabledGates struct{}
+
+func (AlwaysEnabledGates) Enabled(features.Feature) bool {
+ return true
+}
+
+func init() {
+ features.ReplaceFeatureGates(AlwaysEnabledGates{})
+}
+```
+
+Implementations that need the complete list of defined client-go features can get it by implementing the Registry interface
+and calling `AddFeaturesToExistingFeatureGates`.
+For a complete example, refer to [the usage within Kubernetes](https://github.com/kubernetes/kubernetes/blob/64ba17c605a41700f7f4c4e27dca3684b593b2b9/pkg/features/kube_features.go#L990-L997).
+
+## Summary
+
+With the introduction of feature gates in client-go v1.30, rolling out a new client-go feature has become safer and easier.
+Users and developers can control the pace of their own adoption of client-go features.
+The work of Kubernetes contributors is streamlined by having a common mechanism for graduating features that span both sides of the Kubernetes API boundary.
+
+Special shoutout to [@sttts](https://github.com/sttts) and [@deads2k](https://github.com/deads2k) for their help in shaping this feature.
\ No newline at end of file
diff --git a/content/en/docs/concepts/workloads/pods/disruptions.md b/content/en/docs/concepts/workloads/pods/disruptions.md
index 3f94f2dcc9..864848544d 100644
--- a/content/en/docs/concepts/workloads/pods/disruptions.md
+++ b/content/en/docs/concepts/workloads/pods/disruptions.md
@@ -258,6 +258,11 @@ indicates one of the following reasons for the Pod termination:
the [graceful node shutdown](/docs/concepts/architecture/nodes/#graceful-node-shutdown),
or preemption for [system critical pods](/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/).
+In all other disruption scenarios, like eviction due to exceeding
+[Pod container limits](/docs/concepts/configuration/manage-resources-containers/),
+Pods don't receive the `DisruptionTarget` condition because the disruptions were
+probably caused by the Pod and would reoccur on retry.
+
{{< note >}}
A Pod disruption might be interrupted. The control plane might re-attempt to
continue the disruption of the same Pod, but it is not guaranteed. As a result,
diff --git a/content/en/docs/reference/kubectl/docker-cli-to-kubectl.md b/content/en/docs/reference/kubectl/docker-cli-to-kubectl.md
index d5a98a851a..099c97ac3f 100644
--- a/content/en/docs/reference/kubectl/docker-cli-to-kubectl.md
+++ b/content/en/docs/reference/kubectl/docker-cli-to-kubectl.md
@@ -15,6 +15,7 @@ You can use the Kubernetes command line tool `kubectl` to interact with the API
## docker run
To run an nginx Deployment and expose the Deployment, see [kubectl create deployment](/docs/reference/generated/kubectl/kubectl-commands#-em-deployment-em-).
+
docker:
```shell
diff --git a/content/es/docs/tasks/tools/included/optional-kubectl-configs-fish.md b/content/es/docs/tasks/tools/included/optional-kubectl-configs-fish.md
index a23b3dcbc3..dcac17b484 100644
--- a/content/es/docs/tasks/tools/included/optional-kubectl-configs-fish.md
+++ b/content/es/docs/tasks/tools/included/optional-kubectl-configs-fish.md
@@ -1,6 +1,6 @@
---
-title: "autocompletado con fish"
-description: "Configuración opcional para habilitar el autocompletado en la shell fish."
+title: "Autocompletado con Fish"
+description: "Configuración opcional para habilitar el autocompletado de la shell Fish"
headless: true
_build:
list: never
@@ -9,12 +9,12 @@ _build:
---
{{< note >}}
-El autocompletado para Fish necesita de kubectl versión 1.23 o superior.
+Se requiere kubectl 1.23 o superior para utilizar el autocompletado de Fish.
{{< /note >}}
-El script de autocompletado de Fish para kubectl puede ser generado con el comando `kubectl completion fish`. Ejecutando este comando en tu shell habilitará el autocompletado de kubectl para Fish.
+El script de autocompletado de Fish puede ser generado con el comando `kubectl completion fish`. Leyendo este archivo en su Shell habilita el autocompletado de kubectl.
-Para qué funcione en sus futuras sesiones shell, debes agregar la siguiente línea al archivo `~/.config/fish/config.fish`:
+Para hacer esto en todas sus sesiones agregue la siguiente linea a su archivo `~/.config/fish/config.fish`:
```shell
kubectl completion fish | source
diff --git a/content/es/docs/tasks/tools/install-kubectl-macos.md b/content/es/docs/tasks/tools/install-kubectl-macos.md
new file mode 100644
index 0000000000..82fcdf6916
--- /dev/null
+++ b/content/es/docs/tasks/tools/install-kubectl-macos.md
@@ -0,0 +1,301 @@
+---
+title: Instalar y Configurar kubectl en macOS
+content_type: task
+weight: 10
+---
+
+## {{% heading "prerequisites" %}}
+
+Se debe utilizar la versión de kubectl con la menor diferencia de versión de respecto de
+su clúster. Por ejemplo, un cliente con versión v{{< skew currentVersion >}} se puede comunicar
+con los siguientes versiones de plano de control v{{< skew currentVersionAddMinor -1 >}},
+v{{< skew currentVersionAddMinor 0 >}}, and v{{< skew currentVersionAddMinor 1 >}}.
+Utilizar la última versión compatible de kubectl evita posibles errores.
+
+## Instalar kubectl en macOS
+
+Existen los siguientes métodos para instalar kubectl en macOS:
+
+- [Instalar kubectl en macOS](#instalar-kubectl-en-macos)
+ - [Instalación del binario para macOS con Curl](#instalación-del-binario-para-macos-de-kubectl-con-curl)
+ - [Instalar con Homebrew en macOS](#instalar-utilizando-homebrew-en-macos)
+ - [Instalar con Macports en macOS](#instalar-con-macports-en-macos)
+- [Verificar la configuración de kubectl](#verificar-la-configuración-de-kubectl)
+- [Configuraciones y plugins opcionales para kubectl](#configuraciones-opcionales-y-plugins-de-kubectl)
+ - [Habilitar el autocompletado de la shell](#habilitar-el-autocompletado-en-la-shell)
+ - [Instalar el plugin `kubectl convert`](#instalar-el-plugin-kubectl-convert)
+
+### Instalación del binario para macOS de kubectl con Curl
+
+1. Descargar la última versión con el siguiente comando:
+
+ {{< tabs name="download_binary_macos" >}}
+ {{< tab name="Intel" codelang="bash" >}}
+ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
+ {{< /tab >}}
+ {{< tab name="Apple Silicon" codelang="bash" >}}
+ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"
+ {{< /tab >}}
+ {{< /tabs >}}
+
+ {{< note >}}
+ Para descargar una versión específica, reemplaza la siguiente parte del comando con la
+ versión que deseas instalar `$(curl -L -s https://dl.k8s.io/release/stable.txt)`
+
+ Por ejemplo, para descargar la versión {{< skew currentPatchVersion >}} en macOS:
+
+ ```bash
+ curl -LO "https://dl.k8s.io/release/v{{< skew currentPatchVersion >}}/bin/darwin/amd64/kubectl"
+ ```
+
+ Para macOS con procesador Apple Silicon, ejecuta:
+
+ ```bash
+ curl -LO "https://dl.k8s.io/release/v{{< skew currentPatchVersion >}}/bin/darwin/arm64/kubectl"
+ ```
+
+ {{< /note >}}
+
+1. Validación del binario (paso opcional)
+
+ Descargar el archivo checksum:
+
+ {{< tabs name="download_checksum_macos" >}}
+ {{< tab name="Intel" codelang="bash" >}}
+ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl.sha256"
+ {{< /tab >}}
+ {{< tab name="Apple Silicon" codelang="bash" >}}
+ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl.sha256"
+ {{< /tab >}}
+ {{< /tabs >}}
+
+ Validar el binario de kubectl contra el archivo checksum:
+
+ ```bash
+ echo "$(cat kubectl.sha256) kubectl" | shasum -a 256 --check
+ ```
+
+ Si es válido, vas a obtener la siguiente respuesta:
+
+ ```console
+ kubectl: OK
+ ```
+
+ En caso de falla, `sha256` terminará con un estado diferente a cero con una salida similar a:
+
+ ```console
+ kubectl: FAILED
+ shasum: WARNING: 1 computed checksum did NOT match
+ ```
+
+ {{< note >}}
+ Descargue la misma versión del binario y el checksum.
+ {{< /note >}}
+
+1. Dar permisos de ejecución al binario.
+
+ ```bash
+ chmod +x ./kubectl
+ ```
+
+1. Mover el binario de kubectl al `PATH` de tu sistema.
+
+ ```bash
+ sudo mv ./kubectl /usr/local/bin/kubectl
+ sudo chown root: /usr/local/bin/kubectl
+ ```
+
+ {{< note >}}
+ Asegúrate que el PATH `/usr/local/bin` forme parte de las variables de entorno.
+ {{< /note >}}
+
+1. Test para asegurar que la versión instalada está actualizada:
+
+ ```bash
+ kubectl version --client
+ ```
+
+ Se puede utilizar lo siguiente para una vista detallada de la versión:
+
+ ```cmd
+ kubectl version --client --output=yaml
+ ```
+
+1. Luego de instalar el plugin puede eliminar los archivos de instalación:
+
+ ```bash
+ rm kubectl kubectl.sha256
+ ```
+
+### Instalar utilizando Homebrew en macOS
+
+Si está utilizando [Homebrew](https://brew.sh/) en macOS,
+puede instalar kubectl con Homebrew.
+
+1. Ejecute el comando para instalar:
+
+ ```bash
+ brew install kubectl
+ ```
+
+ ó
+
+ ```bash
+ brew install kubernetes-cli
+ ```
+
+1. Test para asegurar que la versión instalada está actualizada:
+
+ ```bash
+ kubectl version --client
+ ```
+
+### Instalar con Macports en macOS
+
+Si esta en macOS y utiliza [Macports](https://macports.org/),
+puedes instalar kubectl con Macports.
+
+1. Ejecute el comando para instalar:
+
+ ```bash
+ sudo port selfupdate
+ sudo port install kubectl
+ ```
+
+1. Test para asegurar que la versión instalada está actualizada:
+
+ ```bash
+ kubectl version --client
+ ```
+
+## Verificar la configuración de kubectl
+
+{{< include "included/verify-kubectl.md" >}}
+
+## Configuraciones opcionales y plugins de kubectl
+
+### Habilitar el autocompletado en la shell
+
+Kubectl tiene soporte para autocompletar en Bash, Zsh, Fish y Powershell,
+lo que puede agilizar el tipeo.
+
+A continuación están los procedimientos para configurarlo en Bash, Fisch y Zsh.
+
+{{< tabs name="kubectl_autocompletion" >}}
+{{< tab name="Bash" include="included/optional-kubectl-configs-bash-mac.md" />}}
+{{< tab name="Fish" include="included/optional-kubectl-configs-fish.md" />}}
+{{< tab name="Zsh" include="included/optional-kubectl-configs-zsh.md" />}}
+{{< /tabs >}}
+
+### Instalar el plugin `kubectl convert`
+
+{{< include "included/kubectl-convert-overview.md" >}}
+
+1. Descarga la última versión con el siguiente comando:
+
+ {{< tabs name="download_convert_binary_macos" >}}
+ {{< tab name="Intel" codelang="bash" >}}
+ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl-convert"
+ {{< /tab >}}
+ {{< tab name="Apple Silicon" codelang="bash" >}}
+ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl-convert"
+ {{< /tab >}}
+ {{< /tabs >}}
+
+1. Valide el binario (opcional)
+
+ Descargue el checksum de kubectl-convert:
+
+ {{< tabs name="download_convert_checksum_macos" >}}
+ {{< tab name="Intel" codelang="bash" >}}
+ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl-convert.sha256"
+ {{< /tab >}}
+ {{< tab name="Apple Silicon" codelang="bash" >}}
+ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl-convert.sha256"
+ {{< /tab >}}
+ {{< /tabs >}}
+
+ Ahora se puede validar el binario utilizando el checksum:
+
+ ```bash
+ echo "$(cat kubectl-convert.sha256) kubectl-convert" | shasum -a 256 --check
+ ```
+
+ Si es válido, la salida será:
+
+ ```console
+ kubectl-convert: OK
+ ```
+
+ En caso de falla, `sha256` terminará con un estado diferente a cero con una salida similar a esta:
+
+ ```console
+ kubectl-convert: FAILED
+ shasum: WARNING: 1 computed checksum did NOT match
+ ```
+
+ {{< note >}}
+ Descargue la misma versión del binario y del checksum.
+ {{< /note >}}
+
+1. Dar permisos de ejecución al binario.
+
+ ```bash
+ chmod +x ./kubectl-convert
+ ```
+
+1. Mover el binario de kubectl al `PATH` de su sistema.
+
+ ```bash
+ sudo mv ./kubectl-convert /usr/local/bin/kubectl-convert
+ sudo chown root: /usr/local/bin/kubectl-convert
+ ```
+
+ {{< note >}}
+ Asegúrese que el PATH `/usr/local/bin` forme parte de las variables de entorno.
+ {{< /note >}}
+
+1. Verificar si el plugin fue instalado correctamente
+
+ ```shell
+ kubectl convert --help
+ ```
+
+ Si no visualiza ningún error quiere decir que el plugin fue instalado correctamente.
+
+1. Después de instalar el plugin elimine los archivos de instalación:
+
+ ```bash
+ rm kubectl-convert kubectl-convert.sha256
+ ```
+
+### Eliminar kubectl en macOS
+
+Dependiendo de como haya instalado `kubectl` puede utilizar uno de los siguientes métodos.
+
+### Eliminar kubectl usando la linea de comandos
+
+1. Ubique el binario de `kubectl` en su sistema:
+
+ ```bash
+ which kubectl
+ ```
+
+1. Elimine el binario de `kubectl`:
+
+ ```bash
+ sudo rm
+ ```
+ Reemplace `` con el path que apunta al binario de `kubectl` del paso anterior. Por ejemplo, `sudo rm /usr/local/bin/kubectl`
+
+### Eliminar kubectl utilizando homebrew
+
+Si instaló `kubectl` utilizando Homebrew ejecute el siguiente comando:
+
+```bash
+brew remove kubectl
+```
+
+## {{% heading "whatsnext" %}}
+
+{{< include "included/kubectl-whats-next.md" >}}
diff --git a/content/es/docs/tutorials/kubernetes-basics/create-cluster/cluster-interactive.html b/content/es/docs/tutorials/kubernetes-basics/create-cluster/cluster-interactive.html
index 6e04566bea..ab5c228667 100644
--- a/content/es/docs/tutorials/kubernetes-basics/create-cluster/cluster-interactive.html
+++ b/content/es/docs/tutorials/kubernetes-basics/create-cluster/cluster-interactive.html
@@ -10,7 +10,7 @@ weight: 20
-
+{{< katacoda-tutorial >}}
diff --git a/content/zh-cn/docs/concepts/workloads/pods/disruptions.md b/content/zh-cn/docs/concepts/workloads/pods/disruptions.md
index 4859a98adf..7e957b9708 100644
--- a/content/zh-cn/docs/concepts/workloads/pods/disruptions.md
+++ b/content/zh-cn/docs/concepts/workloads/pods/disruptions.md
@@ -508,6 +508,16 @@ Taint Manager(`kube-controller-manager` 中节点生命周期控制器的一
由于{{}}或[节点体面关闭](/zh-cn/docs/concepts/architecture/nodes/#graceful-node-shutdown)而被
kubelet 终止。
+
+在所有其他中断场景中,例如由于超出
+[Pod 容器限制]而被驱逐,`DisruptionTarget` 状况不会被添加到 Pod 上,
+因为中断可能是由 Pod 引起的,并且会在重试时再次发生。
+
{{< note >}}
这篇文章介绍如何给容器配置存活(Liveness)、就绪(Readiness)和启动(Startup)探针。
-有关探针的更多信息,请参阅
-[Liveness、Readiness 和 Startup 探针](/zh-cn/docs/concepts/configuration/liveness-readiness-startup-probes)。
+有关探针的更多信息,
+请参阅[存活、就绪和启动探针](/zh-cn/docs/concepts/configuration/liveness-readiness-startup-probes)。
[kubelet](/zh-cn/docs/reference/command-line-tools-reference/kubelet/)
使用存活探针来确定什么时候要重启容器。
@@ -291,7 +291,7 @@ checks will fail, and the kubelet will kill and restart the container.
To try the HTTP liveness check, create a Pod:
-->
-kubelet 在容器启动之后 3 秒开始执行健康检测。所以前几次健康检查都是成功的。
+kubelet 在容器启动之后 3 秒开始执行健康检查。所以前几次健康检查都是成功的。
但是 10 秒之后,健康检查会失败,并且 kubelet 会杀死容器再重新启动容器。
创建一个 Pod 来测试 HTTP 的存活检测:
@@ -334,29 +334,34 @@ can't it is considered a failure.
+如你所见,TCP 检测的配置和 HTTP 检测非常相似。
+下面这个例子同时使用就绪探针和存活探针。kubelet 会在容器启动 15 秒后运行第一次存活探测。
+此探测会尝试连接 `goproxy` 容器的 8080 端口。
+如果此存活探测失败,容器将被重启。kubelet 将继续每隔 10 秒运行一次这种探测。
-In addition to the readiness probe, this configuration includes a liveness probe.
-The kubelet will run the first liveness probe 15 seconds after the container
-starts. Similar to the readiness probe, this will attempt to connect to the
-`goproxy` container on port 8080. If the liveness probe fails, the container
-will be restarted.
+
-如你所见,TCP 检测的配置和 HTTP 检测非常相似。
-下面这个例子同时使用就绪和存活探针。kubelet 会在容器启动 15 秒后发送第一个就绪探针。
-探针会尝试连接 `goproxy` 容器的 8080 端口。
-如果探测成功,这个 Pod 会被标记为就绪状态,kubelet 将继续每隔 10 秒运行一次探测。
+除了存活探针,这个配置还包括一个就绪探针。
+kubelet 会在容器启动 15 秒后运行第一次就绪探测。
+与存活探测类似,就绪探测会尝试连接 `goproxy` 容器的 8080 端口。
+如果就绪探测失败,Pod 将被标记为未就绪,且不会接收来自任何服务的流量。
-除了就绪探针,这个配置包括了一个存活探针。
-kubelet 会在容器启动 15 秒后进行第一次存活探测。
-与就绪探针类似,存活探针会尝试连接 `goproxy` 容器的 8080 端口。
-如果存活探测失败,容器会被重新启动。
+要尝试 TCP 存活检测,运行以下命令创建 Pod:
```shell
kubectl apply -f https://k8s.io/examples/pods/probe/tcp-liveness-readiness.yaml
@@ -365,7 +370,7 @@ kubectl apply -f https://k8s.io/examples/pods/probe/tcp-liveness-readiness.yaml
-15 秒之后,通过看 Pod 事件来检测存活探针:
+15 秒之后,通过查看 Pod 事件来检测存活探针:
```shell
kubectl describe pod goproxy
@@ -388,11 +393,6 @@ Here is an example manifest:
-->
如果你的应用实现了
[gRPC 健康检查协议](https://github.com/grpc/grpc/blob/master/doc/health-checking.md),
-kubelet 可以配置为使用该协议来执行应用存活性检查。
-你必须启用 `GRPCContainerProbe`
-[特性门控](/zh-cn/docs/reference/command-line-tools-reference/feature-gates/)
-才能配置依赖于 gRPC 的检查机制。
-
这个例子展示了如何配置 Kubernetes 以将其用于应用的存活性检查。
类似地,你可以配置就绪探针和启动探针。
@@ -422,10 +422,10 @@ those. For example: `myservice-liveness` (using `-` as a separator).
{{< note >}}
-与 HTTP 和 TCP 探针不同,gRPC 探测不能使用按名称指定端口,
+与 HTTP 或 TCP 探针不同,gRPC 探测不能按名称指定健康检查端口,
也不能自定义主机名。
{{< /note >}}
@@ -501,21 +501,20 @@ livenessProbe:
## 使用启动探针保护慢启动容器 {#define-startup-probes}
有时候,会有一些现有的应用在启动时需要较长的初始化时间。
-要这种情况下,若要不影响对死锁作出快速响应的探测,设置存活探测参数是要技巧的。
-技巧就是使用相同的命令来设置启动探测,针对 HTTP 或 TCP 检测,可以通过将
+在这种情况下,若要不影响对死锁作出快速响应的探测,设置存活探测参数是要技巧的。
+解决办法是使用相同的命令来设置启动探测,针对 HTTP 或 TCP 检测,可以通过将
`failureThreshold * periodSeconds` 参数设置为足够长的时间来应对最糟糕情况下的启动时间。
这样,前面的例子就变成了:
@@ -639,7 +638,7 @@ liveness and readiness checks:
* `initialDelaySeconds`: Number of seconds after the container has started before startup,
liveness or readiness probes are initiated. If a startup probe is defined, liveness and
readiness probe delays do not begin until the startup probe has succeeded. If the value of
- `periodSeconds` is greater than `initialDelaySeconds` then the `initialDelaySeconds` would be
+ `periodSeconds` is greater than `initialDelaySeconds` then the `initialDelaySeconds` will be
ignored. Defaults to 0 seconds. Minimum value is 0.
* `periodSeconds`: How often (in seconds) to perform the probe. Default to 10 seconds.
The minimum value is 1.
@@ -878,6 +877,28 @@ For example:
-->
例如:
+
```yaml
spec:
terminationGracePeriodSeconds: 3600 # Pod 级别设置
diff --git a/content/zh-cn/docs/tutorials/kubernetes-basics/_index.html b/content/zh-cn/docs/tutorials/kubernetes-basics/_index.html
index 1beb7e6b2b..a74683d253 100644
--- a/content/zh-cn/docs/tutorials/kubernetes-basics/_index.html
+++ b/content/zh-cn/docs/tutorials/kubernetes-basics/_index.html
@@ -9,8 +9,6 @@ card:
title: 基础知识介绍
---
-{{% katacoda-removal %}}
-
diff --git a/content/zh-cn/docs/tutorials/kubernetes-basics/update/update-interactive.html b/content/zh-cn/docs/tutorials/kubernetes-basics/update/update-interactive.html
index e736e54638..2c75a9efc4 100644
--- a/content/zh-cn/docs/tutorials/kubernetes-basics/update/update-interactive.html
+++ b/content/zh-cn/docs/tutorials/kubernetes-basics/update/update-interactive.html
@@ -18,7 +18,7 @@ weight: 20
-
+{{< katacoda-tutorial >}}
diff --git a/content/zh-cn/examples/pods/probe/tcp-liveness-readiness.yaml b/content/zh-cn/examples/pods/probe/tcp-liveness-readiness.yaml
index 2668986e70..d10aae980e 100644
--- a/content/zh-cn/examples/pods/probe/tcp-liveness-readiness.yaml
+++ b/content/zh-cn/examples/pods/probe/tcp-liveness-readiness.yaml
@@ -19,4 +19,4 @@ spec:
tcpSocket:
port: 8080
initialDelaySeconds: 15
- periodSeconds: 20
+ periodSeconds: 10
diff --git a/data/i18n/en/en.toml b/data/i18n/en/en.toml
index 738d32fd25..c8077cd476 100644
--- a/data/i18n/en/en.toml
+++ b/data/i18n/en/en.toml
@@ -211,17 +211,16 @@ other = "JavaScript must be [enabled](https://www.enable-javascript.com/) to vie
[katacoda_message]
other = """
Shutdown of interactive tutorials
-
The interactive tutorials on this website are being shut down. The Kubernetes
-project hopes to reinstate a similar interactive learning option in the long
-term.
-
The shutdown follows O'Reilly Media's 2019 acquisition
-of Katacoda.
+
The interactive tutorials previously on this website have been shut down.
Kubernetes is grateful to O'Reilly and Katacoda for many years of helping
people take their first steps in learning Kubernetes.
The shutdown followed O'Reilly Media's 2019
+acquisition
+of Katacoda.
+
+
The tutorials ceased to function after the 31st of March,
+2023. You are seeing this notice because this particular page has not yet been updated
+following that shutdown.