From c788d899ec90b856a497c7575f9b75dd236f4dd2 Mon Sep 17 00:00:00 2001 From: song Date: Wed, 11 May 2022 00:11:12 +0800 Subject: [PATCH] [zh] Sync task-2 Signed-off-by: song --- ...migrating-telemetry-and-security-agents.md | 80 ++++++++-------- .../configure-pod-container/configure-gmsa.md | 92 +++---------------- ...igure-liveness-readiness-startup-probes.md | 3 +- .../configure-pod-initialization.md | 2 +- 4 files changed, 58 insertions(+), 119 deletions(-) diff --git a/content/zh/docs/tasks/administer-cluster/migrating-from-dockershim/migrating-telemetry-and-security-agents.md b/content/zh/docs/tasks/administer-cluster/migrating-from-dockershim/migrating-telemetry-and-security-agents.md index b22c7d4b67..e36cde5dc1 100644 --- a/content/zh/docs/tasks/administer-cluster/migrating-from-dockershim/migrating-telemetry-and-security-agents.md +++ b/content/zh/docs/tasks/administer-cluster/migrating-from-dockershim/migrating-telemetry-and-security-agents.md @@ -14,19 +14,11 @@ weight: 70 -在 Kubernetes 1.20 版本中,dockershim 被弃用。 -在博文[弃用 Dockershim 常见问题](/zh/blog/2020/12/02/dockershim-faq/)中, -你大概已经了解到,大多数应用并没有直接通过运行时来托管容器。 -但是,仍然有大量的遥测和安全代理依赖 docker 来收集容器元数据、日志和指标。 +Kubernetes 对与 Docker Engine 直接集成的支持已被弃用并将被删除。 +大多数应用程序不直接依赖于托管容器的运行时。但是,仍然有大量的遥测和监控代理依赖 +docker 来收集容器元数据、日志和指标。 本文汇总了一些信息和链接:信息用于阐述如何探查这些依赖,链接用于解释如何迁移这些代理去使用通用的工具或其他容器运行。 -为了让代理运行在 Kubernetes 集群中,我们有几种办法。 -代理既可以直接在节点上运行,也可以作为守护进程运行。 +在 Kubernetes 集群中,有几种不同的方式来运行遥测或安全代理。 +一些代理在以 DaemonSet 的形式运行或直接在节点上运行时,直接依赖于 Docker Engine。 -### 为什么遥测代理依赖于 Docker? {#why-do-telemetry-agents-relyon-docker} +### 为什么有些遥测代理会与 Docker Engine 通信? -因为历史原因,Kubernetes 建立在 Docker 之上。 -Kubernetes 管理网络和调度,Docker 则在具体的节点上定位并操作容器。 -所以,你可以从 Kubernetes 取得调度相关的元数据,比如 Pod 名称;从 Docker 取得容器状态信息。 -后来,人们开发了更多的运行时来管理容器。 -同时一些项目和 Kubernetes 特性也不断涌现,支持跨多个运行时收集容器状态信息。 +从历史上看,Kubernetes 是专门为与 Docker Engine 一起工作而编写的。 +Kubernetes 负责网络和调度,依靠 Docker Engine +在节点上启动并运行容器(在 Pod 内)。一些与遥测相关的信息,例如 pod 名称, +只能从 Kubernetes 组件中获得。其他数据,例如容器指标,不是容器运行时的责任。 +早期遥测代理需要查询容器运行时**和** Kubernetes 以报告准确的信息。 +随着时间的推移,Kubernetes 获得了支持多种运行时的能力,现在支持任何兼容容器运行时接口的运行时。 -一些代理和 Docker 工具紧密绑定。此类代理可以这样运行命令,比如用 +一些代理和 Docker 工具紧密绑定。比如代理会用到 [`docker ps`](https://docs.docker.com/engine/reference/commandline/ps/) 或 [`docker top`](https://docs.docker.com/engine/reference/commandline/top/) 这类命令来列出容器和进程,用 -[docker logs](https://docs.docker.com/engine/reference/commandline/logs/) +[`docker logs`](https://docs.docker.com/engine/reference/commandline/logs/) 订阅 Docker 的日志。 -但随着 Docker 作为容器运行时被弃用,这些命令将不再工作。 +如果现有集群中的节点使用 Docker Engine,在你切换到其它容器运行时的时候, +这些命令将不再起作用。 -### 识别依赖于 Docker 的 DaemonSet {#identify-docker-dependency} +### 识别依赖于 Docker Engine 的 DaemonSet {#identify-docker-dependency} 下面是一个 shell 示例脚本,用于查找包含直接映射 Docker 套接字的挂载点的 Pod。 -你也可以删掉 grep `/var/run/docker.sock` 这一代码片段以查看其它挂载信息。 +你也可以删掉 `grep '/var/run/docker.sock'` 这一代码片段以查看其它挂载信息。 ```bash kubectl get pods --all-namespaces \ diff --git a/content/zh/docs/tasks/configure-pod-container/configure-gmsa.md b/content/zh/docs/tasks/configure-pod-container/configure-gmsa.md index 54da482502..46361fa6fc 100644 --- a/content/zh/docs/tasks/configure-pod-container/configure-gmsa.md +++ b/content/zh/docs/tasks/configure-pod-container/configure-gmsa.md @@ -22,13 +22,12 @@ This page shows how to configure [Group Managed Service Accounts](https://docs.m 服务器将管理操作委派给其他管理员等能力。 在 Kubernetes 环境中,GMSA 凭据规约配置为 Kubernetes 集群范围的自定义资源 (Custom Resources)形式。Windows Pod 以及各 Pod 中的每个容器可以配置为 使用 GMSA 来完成基于域(Domain)的操作(例如,Kerberos 身份认证),以便 -与其他 Windows 服务相交互。自 Kubernetes 1.16 版本起,Docker 运行时为 -Windows 负载支持 GMSA。 +与其他 Windows 服务相交互。 ## {{% heading "prerequisites" %}} @@ -190,7 +189,7 @@ credspec: 下面的 YAML 配置描述的是一个名为 `gmsa-WebApp1` 的 GMSA 凭据规约: ```yaml -apiVersion: windows.k8s.io/v1alpha1 +apiVersion: windows.k8s.io/v1 kind: GMSACredentialSpec metadata: name: gmsa-WebApp1 # 这是随意起的一个名字,将用作引用 @@ -381,85 +380,24 @@ As Pod specs with GMSA fields populated (as described above) are applied in a cl 1. 容器运行时为每个 Windows 容器配置所指定的 GMSA 凭据规约,这样容器就可以以 活动目录中该 GMSA 所代表的身份来执行操作,使用该身份来访问域中的服务。 +## 使用主机名或 FQDN 对网络共享进行身份验证 -## Containerd -在 Windows Server 2019 上对 containerd 使用 GMSA,需要使用 Build 17763.1817(或更新的版本), -你可以安装补丁 [KB5000822](https://support.microsoft.com/en-us/topic/march-9-2021-kb5000822-os-build-17763-1817-2eb6197f-e3b1-4f42-ab51-84345e063564)。 +如果你在使用主机名或 FQDN 从 Pod 连接到 SMB 共享时遇到问题,但能够通过其 IPv4 地址访问共享, +请确保在 Windows 节点上设置了以下注册表项。 -containerd 场景从 Pod 连接 SMB 共享的时候有一个已知问题: -配置了 GMSA 以后,无法通过主机名或者 FQDN 访问 SMB共享,但是通过 IP 地址访问没有问题。 - -```PowerShell -ping adserver.ad.local +```cmd +reg add "HKLM\SYSTEM\CurrentControlSet\Services\hns\State" /v EnableCompartmentNamespace /t REG_DWORD /d 1 ``` - -主机名可以被解析为 IPv4 地址,输出类似如下所示: - -``` -Pinging adserver.ad.local [192.168.111.18] with 32 bytes of data: -Reply from 192.168.111.18: bytes=32 time=6ms TTL=124 -Reply from 192.168.111.18: bytes=32 time=5ms TTL=124 -Reply from 192.168.111.18: bytes=32 time=5ms TTL=124 -Reply from 192.168.111.18: bytes=32 time=5ms TTL=124 -``` - - -但是,当尝试使用主机名浏览目录时: - -```PowerShell -cd \\adserver.ad.local\test -``` - - -你会看到一个错误,提示目标共享不存在: - -``` -cd : Cannot find path '\\adserver.ad.local\test' because it does not exist. -At line:1 char:1 -+ cd \\adserver.ad.local\test -+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - + CategoryInfo : ObjectNotFound: (\\adserver.ad.local\test:String) [Set-Location], ItemNotFoundException - + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.SetLocationCommand -``` - - -但是你会注意到,如果你改为使用其 IPv4 地址浏览共享,错误就会消失;例如: - -```PowerShell -cd \\192.168.111.18\test -``` - - -切换到共享中的目录后,你会看到类似于以下内容的提示: - -``` -Microsoft.PowerShell.Core\FileSystem::\\192.168.111.18\test> -``` - - -要解决问题,你需要在节点上运行以下命令以添加所需的注册表项 -`reg add "HKLM\SYSTEM\CurrentControlSet\Services\hns\State" /v EnableCompartmentNamespace /t REG_DWORD /d 1`。 -此更改只会在新创建的 Pod 中生效,这意味着你必须重新创建任何需要访问 SMB 共享的正在运行的 Pod。 +然后需要重新创建正在运行的 Pod 以使行为更改生效。 +有关如何使用此注册表项的更多信息,请参见[此处](https://github.com/microsoft/hcsshim/blob/885f896c5a8548ca36c88c4b87fd2208c8d16543/internal/uvm/create.go#L74-L83)。 `nltest.exe /parentdomain` 导致以下错误: -``` +```output Getting parent domain failed: Status = 1722 0x6ba RPC_S_SERVER_UNAVAILABLE ``` diff --git a/content/zh/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes.md b/content/zh/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes.md index 8670a63b74..422f60a351 100644 --- a/content/zh/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes.md +++ b/content/zh/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes.md @@ -339,7 +339,8 @@ kubectl describe pod goproxy --> ## 定义 gRPC 活跃探测器 -{{< feature-state for_k8s_version="v1.23" state="alpha" >}} +{{< feature-state for_k8s_version="v1.24" state="beta" >}} + * 进一步了解[同一 Pod 中的容器间的通信](/zh/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/)。