diff --git a/content/zh-cn/docs/tasks/run-application/_index.md b/content/zh-cn/docs/tasks/run-application/_index.md index d4846746ae..46cdf90423 100644 --- a/content/zh-cn/docs/tasks/run-application/_index.md +++ b/content/zh-cn/docs/tasks/run-application/_index.md @@ -1,5 +1,10 @@ --- title: "运行应用" -weight: 40 -description: 运行和管理无状态和有状态的应用程序。 +weight: 80 +description: 运行和管理无状态和有状态的应用。 --- + diff --git a/content/zh-cn/docs/tasks/run-application/access-api-from-pod.md b/content/zh-cn/docs/tasks/run-application/access-api-from-pod.md index f80b4fc045..53217200e0 100644 --- a/content/zh-cn/docs/tasks/run-application/access-api-from-pod.md +++ b/content/zh-cn/docs/tasks/run-application/access-api-from-pod.md @@ -3,7 +3,6 @@ title: 从 Pod 中访问 Kubernetes API content_type: task weight: 120 --- - ### 从 Pod 中访问 API {#accessing-the-api-from-within-a-pod} -从 Pod 内部访问 API 时,定位 API 服务器和向服务器认证身份的操作 -与外部客户端场景不同。 +从 Pod 内部访问 API 时,定位 API 服务器和向服务器认证身份的操作与外部客户端场景不同。 +#### 使用官方客户端库 {#using-official-client-libraries} +从一个 Pod 内部连接到 Kubernetes 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)。 @@ -78,6 +74,10 @@ securely with the API server. - 还有一些其他可用的客户端库,请参阅[客户端库](/zh-cn/docs/reference/using-api/client-libraries/)页面。 + 在以上场景中,客户端库都使用 Pod 的服务账号凭据来与 API 服务器安全地通信。 向 API 服务器进行身份认证的推荐做法是使用 [服务账号](/zh-cn/docs/tasks/configure-pod-container/configure-service-account/)凭据。 -默认情况下,每个 Pod 与一个服务账号关联,该服务账户的凭证(令牌)放置在此 Pod 中 -每个容器的文件系统树中的 `/var/run/secrets/kubernetes.io/serviceaccount/token` 处。 +默认情况下,每个 Pod 与一个服务账号关联,该服务账号的凭据(令牌)放置在此 Pod +中每个容器的文件系统树中的 `/var/run/secrets/kubernetes.io/serviceaccount/token` 处。 -如果证书包可用,则凭证包被放入每个容器的文件系统树中的 +如果证书包可用,则凭据包被放入每个容器的文件系统树中的 `/var/run/secrets/kubernetes.io/serviceaccount/ca.crt` 处, 且将被用于验证 API 服务器的服务证书。 @@ -151,8 +151,8 @@ in the Pod can use it directly. 如果你希望不使用官方客户端库就完成 API 查询,可以将 `kubectl proxy` 作为 [command](/zh-cn/docs/tasks/inject-data-application/define-command-argument-container/) 在 Pod 中启动一个边车(Sidecar)容器。这样,`kubectl proxy` 自动完成对 API -的身份认证,并将其暴露到 Pod 的 `localhost` 接口,从而 Pod 中的其他容器可以 -直接使用 API。 +的身份认证,并将其暴露到 Pod 的 `localhost` 接口,从而 Pod +中的其他容器可以直接使用 API。 ```shell # 指向内部 API 服务器的主机名 APISERVER=https://kubernetes.default.svc diff --git a/content/zh-cn/docs/tasks/run-application/force-delete-stateful-set-pod.md b/content/zh-cn/docs/tasks/run-application/force-delete-stateful-set-pod.md index f25453745a..f18be26d5b 100644 --- a/content/zh-cn/docs/tasks/run-application/force-delete-stateful-set-pod.md +++ b/content/zh-cn/docs/tasks/run-application/force-delete-stateful-set-pod.md @@ -3,7 +3,6 @@ title: 强制删除 StatefulSet 中的 Pod content_type: task weight: 70 --- - + 本文介绍如何删除 {{< glossary_tooltip text="StatefulSet" term_id="StatefulSet" >}} -管理的 Pod,并解释这样操作时需要记住的注意事项。 +管理的 Pod,并解释这样操作时需要记住的一些注意事项。 ## {{% heading "prerequisites" %}} -* 这是一项相当高级的任务,并且可能会违反 StatefulSet 固有的某些属性。 -* 继续任务之前,请熟悉下面列举的注意事项。 +- 这是一项相当高级的任务,并且可能会违反 StatefulSet 固有的某些属性。 +- 请先熟悉下面列举的注意事项再开始操作。 @@ -46,11 +46,11 @@ number of Pods from ordinal 0 through N-1 are alive and ready. StatefulSet ensur there is at most one Pod with a given identity running in a cluster. This is referred to as *at most one* semantics provided by a StatefulSet. --> -## StatefulSet 注意事项 +## StatefulSet 注意事项 {#statefulset-considerations} -在 StatefulSet 的正常操作中,**永远不**需要强制删除 StatefulSet 管理的 Pod。 +在正常操作 StatefulSet 时,**永远不**需要强制删除 StatefulSet 管理的 Pod。 [StatefulSet 控制器](/zh-cn/docs/concepts/workloads/controllers/statefulset/)负责创建、 -扩缩和删除 StatefulSet 管理的 Pod。它尝试确保指定数量的从序数 0 到 N-1 的 Pod +扩缩和删除 StatefulSet 管理的 Pod。此控制器尽力确保指定数量的从序数 0 到 N-1 的 Pod 处于活跃状态并准备就绪。StatefulSet 确保在任何时候,集群中最多只有一个具有给定标识的 Pod。 这就是所谓的由 StatefulSet 提供的**最多一个(At Most One)** Pod 的语义。 @@ -63,9 +63,9 @@ members with fixed identities. Having multiple members with the same identity ca and may lead to data loss (e.g. split brain scenario in quorum-based systems). --> 应谨慎进行手动强制删除操作,因为它可能会违反 StatefulSet 固有的至多一个的语义。 -StatefulSets 可用于运行分布式和集群级的应用,这些应用需要稳定的网络标识和可靠的存储。 +StatefulSet 可用于运行分布式和集群级的应用,这些应用需要稳定的网络标识和可靠的存储。 这些应用通常配置为具有固定标识固定数量的成员集合。 -具有相同身份的多个成员可能是灾难性的,并且可能导致数据丢失 (例如:票选系统中的脑裂场景)。 +具有相同身份的多个成员可能是灾难性的,并且可能导致数据丢失 (例如票选系统中的脑裂场景)。 -当某个节点不可达时,不会引发自动删除 Pod。 -在无法访问的节点上运行的 Pod 在 -[超时](/zh-cn/docs/concepts/architecture/nodes/#condition) -后会进入 “Terminating” 或者 “Unknown” 状态。 +当某个节点不可达时,不会引发自动删除 Pod。在无法访问的节点上运行的 Pod +在[超时](/zh-cn/docs/concepts/architecture/nodes/#condition)后会进入 +“Terminating” 或者 “Unknown” 状态。 当用户尝试体面地删除无法访问的节点上的 Pod 时 Pod 也可能会进入这些状态。 从 API 服务器上删除处于这些状态 Pod 的仅有可行方法如下: -* 删除 Node 对象(要么你来删除, 要么[节点控制器](/zh-cn/docs/concepts/architecture/nodes/#node-controller) +- 删除 Node 对象(要么你来删除, 要么[节点控制器](/zh-cn/docs/concepts/architecture/nodes/#node-controller) 来删除) -* 无响应节点上的 kubelet 开始响应,杀死 Pod 并从 API 服务器上移除 Pod 对象 -* 用户强制删除 pod +- 无响应节点上的 kubelet 开始响应,杀死 Pod 并从 API 服务器上移除 Pod 对象 +- 用户强制删除 Pod -如果在这些命令后 Pod 仍处于 `Unknown` 状态,请使用以下命令从集群中删除 Pod: +如果在执行这些命令后 Pod 仍处于 `Unknown` 状态,请使用以下命令从集群中删除 Pod: ```shell kubectl patch pod -p '{"metadata":{"finalizers":null}}'