diff --git a/OWNERS_ALIASES b/OWNERS_ALIASES index f18c97fd53..4bae0314f9 100644 --- a/OWNERS_ALIASES +++ b/OWNERS_ALIASES @@ -16,6 +16,7 @@ aliases: - salaxander - sftim - tengqm + - drewhagen # RT 1.31 temp acting Docs lead sig-docs-localization-owners: # Admins for localization content - a-mccarthy - divya-mohan0209 @@ -64,6 +65,7 @@ aliases: - sftim - tengqm - Princesso # RT 1.31 Docs Lead + - drewhagen # RT 1.31 temp acting Docs lead sig-docs-en-reviews: # PR reviews for English content - dipesh-rawat - divya-mohan0209 @@ -80,6 +82,7 @@ aliases: - tengqm - windsonsea - Princesso # RT 1.31 Docs Lead + - drewhagen # RT 1.31 temp acting Docs lead sig-docs-es-owners: # Admins for Spanish content - electrocucaracha - krol3 diff --git a/static/css/glossary.css b/assets/css/glossary.css similarity index 100% rename from static/css/glossary.css rename to assets/css/glossary.css diff --git a/static/js/glossary.js b/assets/js/glossary.js similarity index 100% rename from static/js/glossary.js rename to assets/js/glossary.js diff --git a/static/js/zoom.js b/assets/js/zoom.js similarity index 100% rename from static/js/zoom.js rename to assets/js/zoom.js diff --git a/assets/scss/_custom.scss b/assets/scss/_custom.scss index f5cebcf24e..aee302bd6d 100644 --- a/assets/scss/_custom.scss +++ b/assets/scss/_custom.scss @@ -1469,4 +1469,15 @@ body.td-search #search { section.k8s-birthday-override:has(div.k8s-birthday-override.revert-to-previous input:not(:checked)) + section { display: none; visibility: hidden; +} + +/* Apply site-wide table styles for tables in alert callouts (note, caution, warning) */ +.alert { + &.alert-info, &.alert-caution, &.alert-danger { + > table { + @extend .table-striped; + @extend .table-responsive; + @extend .table; + } + } } \ No newline at end of file diff --git a/content/en/docs/reference/using-api/cel.md b/content/en/docs/reference/using-api/cel.md index f8c4ed4bcf..10f1c404ec 100644 --- a/content/en/docs/reference/using-api/cel.md +++ b/content/en/docs/reference/using-api/cel.md @@ -51,7 +51,7 @@ Example CEL expressions: | `self.minReplicas <= self.replicas && self.replicas <= self.maxReplicas` | Validate that the three fields defining replicas are ordered appropriately | | `'Available' in self.stateCounts` | Validate that an entry with the 'Available' key exists in a map | | `(self.list1.size() == 0) != (self.list2.size() == 0)` | Validate that one of two lists is non-empty, but not both | -| `self.envars.filter(e, e.name = 'MY_ENV').all(e, e.value.matches('^[a-zA-Z]*$')` | Validate the 'value' field of a listMap entry where key field 'name' is 'MY_ENV' | +| `self.envars.filter(e, e.name = 'MY_ENV').all(e, e.value.matches('^[a-zA-Z]*$'))` | Validate the 'value' field of a listMap entry where key field 'name' is 'MY_ENV' | | `has(self.expired) && self.created + self.ttl < self.expired` | Validate that 'expired' date is after a 'create' date plus a 'ttl' duration | | `self.health.startsWith('ok')` | Validate a 'health' string field has the prefix 'ok' | | `self.widgets.exists(w, w.key == 'x' && w.foo < 10)` | Validate that the 'foo' property of a listMap item with a key 'x' is less than 10 | diff --git a/content/en/docs/test.md b/content/en/docs/test.md index 367fecb5b1..42514fe160 100644 --- a/content/en/docs/test.md +++ b/content/en/docs/test.md @@ -370,7 +370,12 @@ Notes catch the reader's attention without a sense of urgency. You can have multiple paragraphs and block-level elements inside an admonition. -| Or | a | table | +You can also add tables to organize and highlight key information. + +| Header 1 | Header 2 | Header 3 | +| -------- | -------- | -------- | +| Data 1 | Data A | Info X | +| Data 2 | Data B | Info Y | {{< /note >}} {{< caution >}} diff --git a/content/fr/docs/tutorials/hello-minikube.md b/content/fr/docs/tutorials/hello-minikube.md index 2c1b562405..d91bf2f2a3 100644 --- a/content/fr/docs/tutorials/hello-minikube.md +++ b/content/fr/docs/tutorials/hello-minikube.md @@ -1,14 +1,7 @@ --- -title: Hello Minikube +title: Bienvenue sur Minikube content_type: tutorial weight: 5 -description: Tutoriel Minikube -menu: - main: - title: "Démarrer" - weight: 10 - post: > -
Prêt à mettre les mains dans le cambouis ? Créez un cluster Kubernetes simple qui exécute "Hello World" avec Node.js.
>. card: name: tutorials weight: 10 @@ -16,260 +9,329 @@ card: -Ce tutoriel vous montre comment exécuter une simple application Hello World Node.js sur Kubernetes en utilisant [Minikube](/docs/getting-started-guides/minikube/) et Katacoda. -Katacoda fournit un environnement Kubernetes gratuit dans le navigateur. +Ce tutoriel vous montre comment exécuter une application exemple sur Kubernetes en utilisant minikube. +Le tutoriel fournit une image de conteneur qui utilise NGINX pour renvoyer toutes les requêtes. +## {{% heading "objectifs" %}} + +* Déployer une application exemple sur minikube. +* Exécuter l'application. +* Afficher les journaux de l'application. + +## {{% heading "prérequis²" %}} + + +Ce tutoriel suppose que vous avez déjà configuré `minikube`. +Voir __Étape 1__ dans [minikube start](https://minikube.pour les instructions d'installation installation instructions. {{< note >}} -Vous pouvez également suivre ce tutoriel si vous avez installé [Minikube localement](/docs/tasks/tools/install-minikube/). +Exécutez uniquement les instructions de l'__Étape 1, Installation__. Le reste est couvert sur cette page. {{< /note >}} - - -## {{% heading "objectives" %}} - - -* Déployez une application Hello World sur Minikube. -* Lancez l'application. -* Afficher les journaux des applications. - - - -## {{% heading "prerequisites" %}} - - -Ce tutoriel fournit une image de conteneur construite à partir des fichiers suivants : - -{{% codenew language="js" file="minikube/server.js" %}} - -{{% codenew language="conf" file="minikube/Dockerfile" %}} - -Pour plus d'informations sur la commande `docker build`, lisez la documentation de [Docker](https://docs.docker.com/engine/reference/commandline/build/). - +Vous devez également installer `kubectl`. +Voir [Installer les outils](/docs/tasks/tools/#kubectl) pour les instructions d'installation. -## Créer un cluster Minikube +## Créer un cluster minikube -1. Cliquez sur **Lancer le terminal**. +```shell +minikube start +``` - {{< kat-button >}} +## Ouvrir le Tableau de bord - {{< note >}} Si vous avez installé Minikube localement, lancez `minikube start`. {{< /note >}} +Ouvrez le tableau de bord Kubernetes. Vous pouvez le faire de deux façons différentes : -2. Ouvrez le tableau de bord Kubernetes dans un navigateur : +{{< tabs name="dashboard" >}} +{{% tab name="Launch a browser" %}} +Ouvrez un **nouveau** terminal, et exécutez: +```shell +# Démarrez un nouveau terminal et laissez-le en cours d'exécution.. +minikube dashboard +``` + +Maintenant, revenez au terminal où vous avez exécuté `minikube start`. + +{{< note >}} +La commande `dashboard` active l'extension du tableau de bord et ouvre le proxy dans le navigateur par défaut. +Vous pouvez créer des ressources Kubernetes sur le tableau de bord, telles que Deployment et Service. + +Pour savoir comment éviter d'invoquer directement le navigateur à partir du terminal et obtenir une URL pour le tableau de bord Web, consultez l'onglet "Copier et coller l'URL". + +Par défaut, le tableau de bord n'est accessible que depuis le réseau virtuel interne de Kubernetes. La commande `dashboard` crée un proxy temporaire pour rendre le tableau de bord accessible depuis l'extérieur du réseau virtuel Kubernetes. + +Pour arrêter le proxy, exécutez `Ctrl+C` pour quitter le processus. Une fois la commande terminée, le tableau de bord reste en cours d'exécution dans le cluster Kubernetes. Vous pouvez exécuter à nouveau la commande `dashboard` pour créer un autre proxy pour accéder au tableau de bord. +{{< /note >}} + +{{% /tab %}} +{{% tab name="Copier et coller l'URL" %}} + +Si vous ne souhaitez pas que minikube ouvre un navigateur pour vous, exécutez la sous-commande `dashboard` avec le drapeau `--url`. `minikube` affiche une URL que vous pouvez ouvrir dans le navigateur de votre choix. + +Ouvrez un **nouveau** terminal et exécutez: +```shell +# Démarrez un nouveau terminal et laissez-le en cours d'exécution. +minikube dashboard --url +``` + +Maintenant, vous pouvez utiliser cette URL et revenir au terminal où vous avez exécuté `minikube start`. + +{{% /tab %}} +{{< /tabs >}} + +## Créer un Deployment + +Un [*Pod*](/docs/concepts/workloads/pods/) Kubernetes est un groupe de un ou plusieurs conteneurs, liés ensemble pour les besoins de l'administration et du réseau. Le Pod de ce tutoriel n'a qu'un seul conteneur. Un [*Deployment*](/docs/concepts/workloads/controllers/deployment/) Kubernetes vérifie l'état de santé de votre Pod et redémarre le conteneur du Pod s'il se termine. Les Deployments sont la méthode recommandée pour gérer la création et la mise à l'échelle des Pods. + +1. Utilisez la commande `kubectl` create pour créer un Deployment qui gère un Pod. Le Pod exécute un conteneur basé sur l'image Docker fournie. ```shell - minikube dashboard + # Exécutez une image de conteneur de test qui inclut un serveur web + kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=8080 ``` -3. Environnement Katacoda seulement : En haut du volet du terminal, cliquez sur le signe plus, puis cliquez sur **Sélectionner le port pour afficher sur l'hôte 1**. - -4. Environnement Katacoda seulement : Tapez `30000`, puis cliquez sur **Afficher le port**. - -## Créer un déploiement - -Un [*Pod*](/fr/docs/concepts/workloads/pods/pod/) Kubernetes est un groupe d'un ou plusieurs conteneurs, liés entre eux à des fins d'administration et de mise en réseau. -Dans ce tutoriel, le Pod n'a qu'un seul conteneur. -Un [*Déploiement*](/docs/concepts/workloads/controllers/deployment/) Kubernetes vérifie l'état de santé de votre Pod et redémarre le conteneur du Pod s'il se termine. -Les déploiements sont le moyen recommandé pour gérer la création et la mise à l'échelle des Pods. - -1. Utilisez la commande `kubectl create` pour créer un déploiement qui gère un Pod. Le -Pod utilise un conteneur basé sur l'image Docker fournie. - - ```shell - kubectl create deployment hello-node --image=registry.k8s.io/echoserver:1.4 - ``` - -2. Affichez le déploiement : +2. Afficher le Deployment: ```shell kubectl get deployments ``` - Sortie : + La sortie ressemble à: - ```shell - NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE - hello-node 1 1 1 1 1m + ``` + NAME READY UP-TO-DATE AVAILABLE AGE + hello-node 1/1 1 1 1m ``` -3. Voir le Pod : + (Il peut s'écouler un certain temps avant que le pod ne soit disponible. Si vous voyez "0/1", réessayez dans quelques secondes.) + +3. Afficher le Pod: ```shell kubectl get pods ``` - Sortie : - ```shell + La sortie ressemble à: + + ``` NAME READY STATUS RESTARTS AGE hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m ``` -4. Afficher les événements du cluster : +4. Afficher les événements du cluster: ```shell kubectl get events ``` -5. Voir la configuration de `kubectl` : +5. Afficher la configuration `kubectl`: ```shell kubectl config view ``` - {{< note >}}Pour plus d'informations sur les commandes `kubectl`, voir la [vue d'ensemble de kubectl](/docs/user-guide/kubectl-overview/) {{< /note >}}. +6. Afficher les journaux de l'application pour un conteneur dans un pod (remplacez le nom du pod par celui que vous avez obtenu avec la commande `kubectl get pods`). + + {{< note >}} + Remplacez `hello-node-5f76cf6ccf-br9b5` dans la commande `kubectl logs` par le nom du pod de la sortie de la commande `kubectl get pods`. + {{< /note >}} + + ```shell + kubectl logs hello-node-5f76cf6ccf-br9b5 + ``` -## Créer un service + La sortie ressemble à: -Par défaut, le Pod n'est accessible que par son adresse IP interne dans le cluster Kubernetes. -Pour rendre le conteneur `hello-node` accessible depuis l'extérieur du réseau virtuel Kubernetes, vous devez exposer le Pod comme un [*Service*](/docs/concepts/services-networking/service/) Kubernetes. + ``` + I0911 09:19:26.677397 1 log.go:195] Started HTTP server on port 8080 + I0911 09:19:26.677586 1 log.go:195] Started UDP server on port 8081 + ``` -1. Exposez le Pod à internet en utilisant la commande `kubectl expose` : + +{{< note >}} +Pour plus d'informations sur les commandes `kubectl`, consultez la [kubectl overview](/docs/reference/kubectl/). +{{< /note >}} + +## Créer un Service + +Par défaut, le Pod est accessible uniquement par son adresse IP interne au sein du réseau Kubernetes. Pour rendre le conteneur `hello-node` accessible depuis l'extérieur du réseau virtuel Kubernetes, vous devez exposer le Pod en tant que Kubernetes [*Service*](/docs/concepts/services-networking/service/). + +{{< warning >}} +Le conteneur agnhost a un point de terminaison `/shell`, qui est utile pour le débogage, mais dangereux à exposer à Internet. Ne l'exécutez pas sur un cluster Internet-facing ou un cluster de production. +{{< /warning >}} + +1. Exposez le Pod au réseau public en utilisant la commande `kubectl expose`: ```shell kubectl expose deployment hello-node --type=LoadBalancer --port=8080 ``` - L'indicateur `--type=LoadBalancer` indique que vous voulez exposer votre Service - à l'extérieur du cluster. + Le drapeau `--type=LoadBalancer` indique que vous souhaitez exposer votre Service en dehors du cluster. -2. Affichez le Service que vous venez de créer : + Le code de l'application à l'intérieur de l'image de test ne répond qu'aux requêtes sur le port TCP 8080. Si vous avez utilisé `kubectl expose` pour exposer un port différent, les clients ne pourront pas se connecter à ce port. + +2. Afficher le Service que vous avez créé: ```shell kubectl get services ``` - Sortie : + La sortie ressemble à: - ```shell + ``` NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-node LoadBalancer 10.108.144.78clientConnection
[必需]ClientConnectionConfiguration
+
+
+ clientConnection
指定了代理服务器与 apiserver 通信时应使用的 kubeconfig
文件和客户端连接设置。
+
logging
[必需]LoggingConfiguration
+
+
+ logging
指定了日志记录的选项。有关更多信息,
+ 请参阅日志选项。
+
hostnameOverride
[必需]string
+
+
+ hostnameOverride
如果不为空,将作为 kube-proxy 所运行节点的名称使用。
+ 如果未设置,则默认使用节点的主机名作为节点名称。
+
bindAddress
[必需]string
bindAddress
字段是代理服务器提供服务时所用 IP 地址(设置为 0.0.0.0
-时意味着在所有网络接口上提供服务)。
bindAddress
可以用来指定 kube-proxy 所认为的节点主 IP。请注意,
+ 虽然名称中有绑定的意思,但实际上 kube-proxy 并不会将任何套接字绑定到这个 IP 地址上。
+
healthzBindAddress
[必需]healthzBindAddress
字段是健康状态检查服务器提供服务时所使用的 IP 地址和端口,
- 默认设置为 '0.0.0.0:10256'。
healthzBindAddress
是健康检查服务器的 IP 地址和端口,默认情况下,
+ 如果 bindAddress 未设置或为 IPv4,则为 "0.0.0.0:10256";如果 bindAddress 为 IPv6,
+ 则为 "[::]:10256"。
metricsBindAddress
[必需]metricsBindAddress
字段是指标服务器提供服务时所使用的 IP 地址和端口,
- 默认设置为 '127.0.0.1:10249'(设置为 0.0.0.0 意味着在所有接口上提供服务)。
metricsBindAddress
是指标服务器监听的 IP 地址和端口,默认情况下,
+ 如果 bindAddress 未设置或为 IPv4,则为 "127.0.0.1:10249";
+ 如果 bindAddress 为 IPv6,则为 "[::1]:10249"。
+ (设置为 "0.0.0.0:10249" / "[::]:10249" 以绑定到所有接口。)。
bindAddressHardFail
[必需]bindAddressHardFail
字段设置为 true 时,
kube-proxy 将无法绑定到某端口这类问题视为致命错误并直接退出。
clusterCIDR
[必需]showHiddenMetricsForVersion
[必需]string
clusterCIDR
字段是集群中 Pod 所使用的 CIDR 范围。
- 这一地址范围用于对来自集群外的请求流量进行桥接。
- 如果未设置,则 kube-proxy 不会对非集群内部的流量做桥接。
showHiddenMetricsForVersion
用于指定要显示隐藏指标的版本。
hostnameOverride
[必需]string
+mode
[必需]ProxyMode
hostnameOverride
字段非空时,
- 所给的字符串(而不是实际的主机名)将被用作 kube-proxy 的标识。
clientConnection
[必需]ClientConnectionConfiguration
-clientConnection
字段给出代理服务器与 API
- 服务器通信时要使用的 kubeconfig 文件和客户端链接设置。
mode
指定要使用的代理模式。
iptables
[必需]ipvs
字段中包含与 ipvs 相关的配置选项。
oomScoreAdj
[必需]int32
+nftables
[必需]KubeProxyNFTablesConfiguration
oomScoreAdj
字段是为 kube-proxy 进程所设置的 oom-score-adj 值。
- 此设置值必须介于 [-1000, 1000] 范围内。
mode
[必需]ProxyMode
-mode
字段用来设置将使用的代理模式。
portRange
[必需]string
-portRange
字段是主机端口的范围,形式为 ‘beginPort-endPort’(包含边界),
- 用来设置代理服务所使用的端口。如果未指定(即 ‘0-0’),则代理服务会随机选择端口号。
conntrack
[必需]KubeProxyConntrackConfiguration
-conntrack
字段包含与 conntrack 相关的配置选项。
configSyncPeriod
[必需]meta/v1.Duration
-configSyncPeriod
字段是从 API 服务器刷新配置的频率。此值必须大于 0。
nodePortAddresses
[必需][]string
-nodePortAddresses
字段是 kube-proxy 进程的
- --nodeport-addresses
命令行参数设置。
- 此值必须是合法的 IP 段。所给的 IP 段会作为参数来选择 NodePort 类型服务所使用的接口。
- 如果有人希望将本地主机(Localhost)上的服务暴露给本地访问,
- 同时暴露在某些其他网络接口上以实现某种目标,可以使用 IP 段的列表。
- 如果此值被设置为 "127.0.0.0/8",则 kube-proxy 将仅为 NodePort
- 服务选择本地回路(loopback)接口。
- 如果此值被设置为非零的 IP 段,则 kube-proxy 会对 IP 作过滤,仅使用适用于当前节点的 IP 地址。
- 空的字符串列表意味着选择所有网络接口。
nftables
包含与 nftables 相关的配置选项。
winkernel
[必需]winkernel
字段包含与 winkernel 相关的配置选项。
showHiddenMetricsForVersion
[必需]string
-showHiddenMetricsForVersion
字段给出的是一个 Kubernetes 版本号字符串,
- 用来设置你希望显示隐藏指标的版本。
winkernel
包含与 winkernel 相关的配置选项。
detectLocalMode
[必需]detectLocalMode
字段用来确定检测本地流量的方式,默认为 LocalModeClusterCIDR。
detectLocalMode
确定用于检测本地流量的模式,默认为 LocalModeClusterCIDR。
detectLocal
[必需]DetectLocalConfiguration
detectLocal
字段包含与 DetectLocalMode 相关的可选配置设置。
detectLocal
包含与 DetectLocalMode 相关的可选配置设置。
logging
[必需]LoggingConfiguration
+clusterCIDR
[必需]string
logging
字段指定记录日志的选项。更多细节参阅
- Logs Options。
clusterCIDR
指定集群中 Pod 的 CIDR 范围。
+ (对于双栈集群,这个参数可以是一个用逗号分隔的双栈 CIDR 范围对。)
+ 当 DetectLocalMode 设置为 LocalModeClusterCIDR 时,如果流量的源 IP 在这个范围内,
+ kube-proxy 会将其视为本地流量。(否则不会使用此设置。)
nodePortAddresses
[必需][]string
+nodePortAddresses
是一个包含有效节点 IP 的 CIDR 范围列表。
+ 如果设置了此项,只有来自这些范围内的节点 IP 的 NodePort 服务连接才会被接受。
+ 如果未设置,将接受所有本地 IP 的 NodePort 连接。
oomScoreAdj
[必需]int32
+oomScoreAdj
是 kube-proxy 进程的 OOM 评分调整值。该值必须在 [-1000, 1000] 范围内。
conntrack
[必需]KubeProxyConntrackConfiguration
+conntrack
包含与 conntrack 相关的配置选项。
configSyncPeriod
[必需]meta/v1.Duration
+configSyncPeriod
指定从 apiserver 刷新配置的频率,必须大于 0。
portRange
[必需]string
+portRange
之前用于配置用户空间代理,但现在已不再使用。
bridgeInterface
字段是一个表示单个桥接接口名称的字符串参数。
- Kube-proxy 将来自这个给定桥接接口的流量视为本地流量。
- 如果 DetectLocalMode 设置为 LocalModeBridgeInterface,则应设置该参数。
bridgeInterface
指的是桥接接口的名称。
+ 当 DetectLocalMode 设置为 LocalModeBridgeInterface 时,
+ 如果流量来自这个桥接接口,kube-proxy 会将其视为本地流量。
interfaceNamePrefix
[必需]interfaceNamePrefix
字段是一个表示单个接口前缀名称的字符串参数。
- Kube-proxy 将来自一个或多个与给定前缀匹配的接口流量视为本地流量。
- 如果 DetectLocalMode 设置为 LocalModeInterfaceNamePrefix,则应设置该参数。
interfaceNamePrefix
是接口名称的前缀。
+ 当 DetectLocalMode 设置为 LocalModeInterfaceNamePrefix 时,
+ 如果流量来自任何名称以该前缀开头的接口,kube-proxy 会将其视为本地流量。
min
字段给出要分配的链接跟踪记录个数下限。
设置此值时会忽略 maxPerCore 的值(将 maxPerCore 设置为 0 时不会调整上限值)。
tcpBeLiberal
[必需]bool
+tcpBeLiberal
如果设置为 true,
+ kube-proxy 将配置 conntrack 以宽松模式运行,
+ 对于 TCP 连接和超出窗口序列号的报文不会被标记为 INVALID。
udpTimeout
[必需]meta/v1.Duration
+udpTimeout
指定处于 UNREPLIED 状态的空闲 UDP conntrack 条目在 conntrack 表中保留的时间
+ (例如 '30s')。该值必须大于 0。
udpStreamTimeout
[必需]meta/v1.Duration
+udpStreamTimeout
指定处于 ASSURED 状态的空闲 UDP conntrack 条目在 conntrack 表中保留的时间
+ (例如 '300s')。该值必须大于 0。
masqueradeBit
字段是 iptables fwmark 空间中的具体一位,
- 用来在纯 iptables 代理模式下设置 SNAT。此值必须介于 [0, 31](含边界值)。
masqueradeAll
[必需]masqueradeAll
字段用来通知 kube-proxy
- 在使用纯 iptables 代理模式时对所有流量执行 SNAT 操作。
localhostNodePorts
[必需]bool
localhostNodePorts 告知 kube-proxy 允许通过 localhost 访问服务 NodePorts(仅 iptables 模式)
+ +localhostNodePorts
如果设置为 false,
+ 则会通知 kube-proxy 禁用通过本地主机访问 NodePort 服务的旧有行为。
+ (仅适用于 iptables 模式和 IPv4;在其他代理模式或 IPv6 下,不允许本地主机访问 NodePort 服务。)
syncPeriod
[必需]syncPeriod
字段给出 iptables
- 规则的刷新周期(例如,'5s'、'1m'、'2h22m')。此值必须大于 0。
syncPeriod
是时间间隔(例如 '5s'、'1m'、'2h22m'),
+ 指示各种重新同步和清理操作的执行频率。该值必须大于 0。
minSyncPeriod
[必需]minSyncPeriod
字段给出 iptables
- 规则被刷新的最小周期(例如,'5s'、'1m'、'2h22m')。
minSyncPeriod
是 iptables 规则重新同步的最小时间间隔(例如 '5s'、'1m'、'2h22m')。
+ 如果值为 0,表示每次服务或 EndpointSlice 发生变化时都会立即重新同步 iptables。
syncPeriod
字段给出 ipvs 规则的刷新周期(例如,'5s'、'1m'、'2h22m')。
- 此值必须大于 0。
syncPeriod
是各种重新同步和清理操作执行频率的时间间隔(例如 '5s', '1m', '2h22m')。
+ 该值必须大于 0
minSyncPeriod
[必需]minSyncPeriod
字段给出 ipvs 规则被刷新的最小周期(例如,'5s'、'1m'、'2h22m')。
minSyncPeriod
是 IPVS 规则重新同步之间的最小时间间隔(例如 '5s', '1m', '2h22m')。
+ 值为 0 表示每次服务或 EndpointSlice 发生变化时都会立即触发 IPVS 重新同步。
scheduler
[必需]IPVS 调度器。
+scheduler
是用于 IPVS 的调度器。
excludeCIDRs
[必需]excludeCIDRs
字段取值为一个 CIDR 列表,ipvs 代理程序在清理 IPVS 服务时不应触碰这些 IP 地址。
strictARP
字段用来配置 arp_ignore 和 arp_announce,以避免(错误地)响应来自 kube-ipvs0 接口的
@@ -863,6 +926,78 @@ The default value is 0, which preserves the current timeout value on the system.
+## `KubeProxyNFTablesConfiguration` {#kubeproxy-config-k8s-io-v1alpha1-KubeProxyNFTablesConfiguration}
+
+
+**出现在:**
+
+- [KubeProxyConfiguration](#kubeproxy-config-k8s-io-v1alpha1-KubeProxyConfiguration)
+
+
+
KubeProxyNFTablesConfiguration 包含 Kubernetes 代理服务器的 nftables 相关配置详细信息。
+ +Field | Description |
---|---|
masqueradeBit [必需]+ int32
+ |
+
+
+
|
+
masqueradeAll [必需]+ bool
+ |
+
+
+
|
+
syncPeriod [必需]+ meta/v1.Duration
+ |
+
+
+
|
+
minSyncPeriod [必需]+ meta/v1.Duration
+ |
+
+
+
|
+
sourceVip
字段是执行负载均衡时进行 NAT 转换所使用的源端 VIP 端点 IP 地址。
rootHnsEndpointName
@@ -932,7 +1067,7 @@ l2bridge for root network namespace
forwardHealthCheckVip
diff --git a/content/zh-cn/docs/reference/using-api/cel.md b/content/zh-cn/docs/reference/using-api/cel.md
index 54b0250d0e..677b67ae36 100644
--- a/content/zh-cn/docs/reference/using-api/cel.md
+++ b/content/zh-cn/docs/reference/using-api/cel.md
@@ -85,7 +85,7 @@ CEL 表达式示例:
| `self.minReplicas <= self.replicas && self.replicas <= self.maxReplicas` | Validate that the three fields defining replicas are ordered appropriately |
| `'Available' in self.stateCounts` | Validate that an entry with the 'Available' key exists in a map |
| `(self.list1.size() == 0) != (self.list2.size() == 0)` | Validate that one of two lists is non-empty, but not both |
-| `self.envars.filter(e, e.name = 'MY_ENV').all(e, e.value.matches('^[a-zA-Z]*$')` | Validate the 'value' field of a listMap entry where key field 'name' is 'MY_ENV' |
+| `self.envars.filter(e, e.name = 'MY_ENV').all(e, e.value.matches('^[a-zA-Z]*$'))` | Validate the 'value' field of a listMap entry where key field 'name' is 'MY_ENV' |
| `has(self.expired) && self.created + self.ttl < self.expired` | Validate that 'expired' date is after a 'create' date plus a 'ttl' duration |
| `self.health.startsWith('ok')` | Validate a 'health' string field has the prefix 'ok' |
| `self.widgets.exists(w, w.key == 'x' && w.foo < 10)` | Validate that the 'foo' property of a listMap item with a key 'x' is less than 10 |
@@ -103,7 +103,7 @@ CEL 表达式示例:
| `self.minReplicas <= self.replicas && self.replicas <= self.maxReplicas` | 验证定义副本的三个字段被正确排序 |
| `'Available' in self.stateCounts` | 验证映射中存在主键为 'Available' 的条目 |
| `(self.list1.size() == 0) != (self.list2.size() == 0)` | 验证两个列表中有一个非空,但不是两个都非空 |
-| `self.envars.filter(e, e.name = 'MY_ENV').all(e, e.value.matches('^[a-zA-Z]*$')` | 验证 listMap 条目的 'value' 字段,其主键字段 'name' 是 'MY_ENV' |
+| `self.envars.filter(e, e.name = 'MY_ENV').all(e, e.value.matches('^[a-zA-Z]*$'))` | 验证 listMap 条目的 'value' 字段,其主键字段 'name' 是 'MY_ENV' |
| `has(self.expired) && self.created + self.ttl < self.expired` | 验证 'expired' 日期在 'create' 日期加上 'ttl' 持续时间之后 |
| `self.health.startsWith('ok')` | 验证 'health' 字符串字段具有前缀 'ok' |
| `self.widgets.exists(w, w.key == 'x' && w.foo < 10)` | 验证具有键 'x' 的 listMap 项的 'foo' 属性小于 10 |
diff --git a/content/zh-cn/docs/test.md b/content/zh-cn/docs/test.md
index 29ee6c8933..aa1553a9d2 100644
--- a/content/zh-cn/docs/test.md
+++ b/content/zh-cn/docs/test.md
@@ -829,13 +829,21 @@ Notes catch the reader's attention without a sense of urgency.
You can have multiple paragraphs and block-level elements inside an admonition.
-| Or | a | table |
+You can also add tables to organize and highlight key information.
+
+| Header 1 | Header 2 | Header 3 |
+| -------- | -------- | -------- |
+| Data 1 | Data A | Info X |
+| Data 2 | Data B | Info Y |
-->
说明信息用来引起读者的注意,但不过分强调其紧迫性。
-你可以在提醒框内包含多个段落和块级元素。
+你还可以添加表格来组织和突出关键信息。
-| 甚至 | 包含 | 表格 |
+| 表头 1 | 表头 2 | 表头 3 |
+| -------- | -------- | -------- |
+| 数据 1 | 数据 A | 信息 X |
+| 数据 2 | 数据 B | 信息 Y |
{{< /note >}}
{{< caution >}}
diff --git a/content/zh-cn/examples/application/cassandra/cassandra-statefulset.yaml b/content/zh-cn/examples/application/cassandra/cassandra-statefulset.yaml
index 7a36c6f550..50e243e4bd 100644
--- a/content/zh-cn/examples/application/cassandra/cassandra-statefulset.yaml
+++ b/content/zh-cn/examples/application/cassandra/cassandra-statefulset.yaml
@@ -15,7 +15,7 @@ spec:
labels:
app: cassandra
spec:
- terminationGracePeriodSeconds: 1800
+ terminationGracePeriodSeconds: 500
containers:
- name: cassandra
image: gcr.io/google-samples/cassandra:v13
@@ -43,7 +43,7 @@ spec:
lifecycle:
preStop:
exec:
- command:
+ command:
- /bin/sh
- -c
- nodetool drain
diff --git a/data/releases/schedule.yaml b/data/releases/schedule.yaml
index 97d415f5df..1470d79224 100644
--- a/data/releases/schedule.yaml
+++ b/data/releases/schedule.yaml
@@ -17,7 +17,7 @@ schedules:
next:
cherryPickDeadline: "2024-08-09"
release: 1.30.4
- targetDate: "2024-08-13"
+ targetDate: "2024-08-14"
previousPatches:
- cherryPickDeadline: "2024-07-12"
release: 1.30.3
@@ -37,7 +37,7 @@ schedules:
next:
cherryPickDeadline: "2024-08-09"
release: 1.29.8
- targetDate: "2024-08-13"
+ targetDate: "2024-08-14"
previousPatches:
- cherryPickDeadline: "2024-07-12"
release: 1.29.7
@@ -69,7 +69,7 @@ schedules:
next:
cherryPickDeadline: "2024-08-09"
release: 1.28.13
- targetDate: "2024-08-13"
+ targetDate: "2024-08-14"
previousPatches:
- cherryPickDeadline: "2024-07-12"
release: 1.28.12
@@ -114,7 +114,7 @@ schedules:
releaseDate: "2023-08-15"
upcoming_releases:
- cherryPickDeadline: "2024-08-09"
- targetDate: "2024-08-13"
+ targetDate: "2024-08-14"
- cherryPickDeadline: "2024-09-06"
targetDate: "2024-09-10"
- cherryPickDeadline: "2024-10-11"
diff --git a/layouts/docs/glossary.html b/layouts/docs/glossary.html
index d86f8c424d..1688201d25 100644
--- a/layouts/docs/glossary.html
+++ b/layouts/docs/glossary.html
@@ -4,8 +4,9 @@
{{ define "main" }}
{{ T "layouts_docs_glossary_description" }}
{{ T "layouts_docs_glossary_filter" }}
diff --git a/layouts/partials/head.html b/layouts/partials/head.html index 3010fd201e..2fa098e3ed 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -91,11 +91,6 @@ {{- end -}} - -{{- if .HasShortcode "figure" -}} - -{{- end -}} - {{- if eq (lower .Params.cid) "community" -}} {{- if eq .Params.community_styles_migrated true -}} diff --git a/layouts/partials/hooks/head-end.html b/layouts/partials/hooks/head-end.html index 82d3fa3e20..97626932f2 100644 --- a/layouts/partials/hooks/head-end.html +++ b/layouts/partials/hooks/head-end.html @@ -13,3 +13,22 @@ {{- if .HasShortcode "cncf-landscape" -}} {{- end -}} + +{{- if .HasShortcode "figure" -}} + + {{- if hugo.IsProduction -}} + {{- $zoomJs := resources.Get "js/zoom.js" | minify | fingerprint -}} + + {{- else -}} + {{- $zoomJs := resources.Get "js/zoom.js" -}} + + {{- end -}} +{{- end -}} + +{{- if eq .Layout "glossary" -}} + {{- with resources.Get "js/glossary.js" -}} + + {{- else -}} + {{- errorf "Unable to find the glossary helper script" -}} + {{- end -}} +{{- end -}} \ No newline at end of file