为 Pod 或容器配置安全性上下文

安全上下文(Security Context)定义 Pod 或 Container 的特权与访问控制设置。 安全上下文包括但不限于:

  • 自主访问控制(Discretionary Access Control):基于 用户 ID(UID)和组 ID(GID). 来判定对对象(例如文件)的访问权限。
  • 安全性增强的 Linux(SELinux): 为对象赋予安全性标签。
  • 以特权模式或者非特权模式运行。
  • Linux 权能: 为进程赋予 root 用户的部分特权而非全部特权。

  • AppArmor:使用程序框架来限制个别程序的权能。

  • Seccomp:过滤进程的系统调用。
  • AllowPrivilegeEscalation:控制进程是否可以获得超出其父进程的特权。 此布尔值直接控制是否为容器进程设置 no_new_privs标志。 当容器以特权模式运行或者具有 CAP_SYS_ADMIN 权能时,AllowPrivilegeEscalation 总是为 true。
  • readOnlyRootFilesystem:以只读方式加载容器的根文件系统。

以上条目不是安全上下文设置的完整列表 — 请参阅 SecurityContext 了解其完整列表。

关于在 Linux 系统中的安全机制的更多信息,可参阅 Linux 内核安全性能力概述

准备开始

你必须拥有一个 Kubernetes 的集群,同时你的 Kubernetes 集群必须带有 kubectl 命令行工具。 如果你还没有集群,你可以通过 Minikube 构建一 个你自己的集群,或者你可以使用下面任意一个 Kubernetes 工具构建:

要获知版本信息,请输入 kubectl version.

为 Pod 设置安全性上下文

要为 Pod 设置安全性设置,可在 Pod 规约中包含 securityContext 字段。securityContext 字段值是一个 PodSecurityContext 对象。你为 Pod 所设置的安全性配置会应用到 Pod 中所有 Container 上。 下面是一个 Pod 的配置文件,该 Pod 定义了 securityContext 和一个 emptyDir 卷:

pods/security/security-context.yaml 为pod设置安全上下文

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. name: security-context-demo
  5. spec:
  6. securityContext:
  7. runAsUser: 1000
  8. runAsGroup: 3000
  9. fsGroup: 2000
  10. volumes:
  11. - name: sec-ctx-vol
  12. emptyDir: {}
  13. containers:
  14. - name: sec-ctx-demo
  15. image: busybox
  16. command: [ "sh", "-c", "sleep 1h" ]
  17. volumeMounts:
  18. - name: sec-ctx-vol
  19. mountPath: /data/demo
  20. securityContext:
  21. allowPrivilegeEscalation: false

在配置文件中,runAsUser 字段指定 Pod 中的所有容器内的进程都使用用户 ID 1000 来运行。runAsGroup 字段指定所有容器中的进程都以主组 ID 3000 来运行。 如果忽略此字段,则容器的主组 ID 将是 root(0)。 当 runAsGroup 被设置时,所有创建的文件也会划归用户 1000 和组 3000。 由于 fsGroup 被设置,容器中所有进程也会是附组 ID 2000 的一部分。 卷 /data/demo 及在该卷中创建的任何文件的属主都会是组 ID 2000。

创建该 Pod:

  1. kubectl apply -f https://k8s.io/examples/pods/security/security-context.yaml

检查 Pod 的容器处于运行状态:

  1. kubectl get pod security-context-demo

开启一个 Shell 进入到运行中的容器:

  1. kubectl exec -it security-context-demo -- sh

在你的 Shell 中,列举运行中的进程:

  1. ps

输出显示进程以用户 1000 运行,即 runAsUser 所设置的值:

  1. PID USER TIME COMMAND
  2. 1 1000 0:00 sleep 1h
  3. 6 1000 0:00 sh
  4. ...

在你的 Shell 中,进入 /data 目录列举其内容:

  1. cd /data
  2. ls -l

输出显示 /data/demo 目录的组 ID 为 2000,即 fsGroup 的设置值:

  1. drwxrwsrwx 2 root 2000 4096 Jun 6 20:08 demo

在你的 Shell 中,进入到 /data/demo 目录下创建一个文件:

  1. cd demo
  2. echo hello > testfile

列举 /data/demo 目录下的文件:

  1. ls -l

输出显示 testfile 的组 ID 为 2000,也就是 fsGroup 所设置的值:

  1. -rw-r--r-- 1 1000 2000 6 Jun 6 20:08 testfile

运行下面的命令:

  1. id

输出为:

  1. uid=1000 gid=3000 groups=2000

你会看到 gid 值为 3000,也就是 runAsGroup 字段的值。 如果 runAsGroup 被忽略,则 gid 会取值 0(root),而进程就能够与 root 用户组所拥有以及要求 root 用户组访问权限的文件交互。

退出你的 Shell:

  1. exit

为 Pod 配置卷访问权限和属主变更策略

FEATURE STATE: Kubernetes v1.20 [beta]

默认情况下,Kubernetes 在挂载一个卷时,会递归地更改每个卷中的内容的属主和访问权限,使之与 Pod 的 securityContext 中指定的 fsGroup 匹配。 对于较大的数据卷,检查和变更属主与访问权限可能会花费很长时间,降低 Pod 启动速度。 你可以在 securityContext 中使用 fsGroupChangePolicy 字段来控制 Kubernetes 检查和管理卷属主和访问权限的方式。

fsGroupChangePolicy - fsGroupChangePolicy 定义在卷被暴露给 Pod 内部之前对其 内容的属主和访问许可进行变更的行为。此字段仅适用于那些支持使用 fsGroup 来 控制属主与访问权限的卷类型。此字段的取值可以是:

  • OnRootMismatch:只有根目录的属主与访问权限与卷所期望的权限不一致时, 才改变其中内容的属主和访问权限。这一设置有助于缩短更改卷的属主与访问 权限所需要的时间。
  • Always:在挂载卷时总是更改卷中内容的属主和访问权限。

例如:

  1. securityContext:
  2. runAsUser: 1000
  3. runAsGroup: 3000
  4. fsGroup: 2000
  5. fsGroupChangePolicy: "OnRootMismatch"

这是一个 Alpha 阶段的功能特性。要使用此特性,需要在 kube-apiserverkube-controller-manager 和 kubelet 上启用 ConfigurableFSGroupPolicy 特性门控

说明: 此字段对于emptydir 这类临时性存储无效。

为 Container 设置安全性上下文

若要为 Container 设置安全性配置,可以在 Container 清单中包含 securityContext 字段。securityContext 字段的取值是一个 SecurityContext 对象。你为 Container 设置的安全性配置仅适用于该容器本身,并且所指定的设置 在与 Pod 层面设置的内容发生重叠时,会重载后者。Container 层面的设置不会影响 到 Pod 的卷。

下面是一个 Pod 的配置文件,其中包含一个 Container。Pod 和 Container 都有 securityContext 字段:

pods/security/security-context-2.yaml 为pod设置安全上下文

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. name: security-context-demo-2
  5. spec:
  6. securityContext:
  7. runAsUser: 1000
  8. containers:
  9. - name: sec-ctx-demo-2
  10. image: gcr.io/google-samples/node-hello:1.0
  11. securityContext:
  12. runAsUser: 2000
  13. allowPrivilegeEscalation: false

创建该 Pod:

  1. kubectl apply -f https://k8s.io/examples/pods/security/security-context-2.yaml

验证 Pod 中的容器处于运行状态:

  1. kubectl get pod security-context-demo-2

启动一个 Shell 进入到运行中的容器内:

  1. kubectl exec -it security-context-demo-2 -- sh

在你的 Shell 中,列举运行中的进程:

  1. ps aux

输出显示进程以用户 2000 账号运行。该值是在 Container 的 runAsUser 中设置的。 该设置值重载了 Pod 层面所设置的值 1000。

  1. USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
  2. 2000 1 0.0 0.0 4336 764 ? Ss 20:36 0:00 /bin/sh -c node server.js
  3. 2000 8 0.1 0.5 772124 22604 ? Sl 20:36 0:00 node server.js
  4. ...

退出你的 Shell:

  1. exit

为 Container 设置权能

使用 Linux 权能,你可以 赋予进程 root 用户所拥有的某些特权,但不必赋予其全部特权。 要为 Container 添加或移除 Linux 权能,可以在 Container 清单的 securityContext 节 包含 capabilities 字段。

首先,查看不包含 capabilities 字段时候会发生什么。 下面是一个配置文件,其中没有添加或移除容器的权能:

pods/security/security-context-3.yaml 为pod设置安全上下文

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. name: security-context-demo-3
  5. spec:
  6. containers:
  7. - name: sec-ctx-3
  8. image: gcr.io/google-samples/node-hello:1.0

创建该 Pod:

  1. kubectl apply -f https://k8s.io/examples/pods/security/security-context-3.yaml

验证 Pod 的容器处于运行状态:

  1. kubectl get pod security-context-demo-3

启动一个 Shell 进入到运行中的容器:

  1. kubectl exec -it security-context-demo-3 -- sh

在你的 Shell 中,列举运行中的进程:

  1. ps aux

输出显示容器中进程 ID(PIDs):

  1. USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
  2. root 1 0.0 0.0 4336 796 ? Ss 18:17 0:00 /bin/sh -c node server.js
  3. root 5 0.1 0.5 772124 22700 ? Sl 18:17 0:00 node server.js

在你的 Shell 中,查看进程 1 的状态:

  1. cd /proc/1
  2. cat status

输出显示进程的权能位图:

  1. ...
  2. CapPrm: 00000000a80425fb
  3. CapEff: 00000000a80425fb
  4. ...

记下进程权能位图,之后退出你的 Shell:

  1. exit

接下来运行一个与前例中容器相同的容器,只是这个容器有一些额外的权能设置。

下面是一个 Pod 的配置,其中运行一个容器。配置为容器添加 CAP_NET_ADMIN 和 CAP_SYS_TIME 权能:

pods/security/security-context-4.yaml 为pod设置安全上下文

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. name: security-context-demo-4
  5. spec:
  6. containers:
  7. - name: sec-ctx-4
  8. image: gcr.io/google-samples/node-hello:1.0
  9. securityContext:
  10. capabilities:
  11. add: ["NET_ADMIN", "SYS_TIME"]

创建 Pod:

  1. kubectl apply -f https://k8s.io/examples/pods/security/security-context-4.yaml

启动一个 Shell,进入到运行中的容器:

  1. kubectl exec -it security-context-demo-4 -- sh

在你的 Shell 中,查看进程 1 的权能:

  1. cd /proc/1
  2. cat status

输出显示的是进程的权能位图:

  1. ...
  2. CapPrm: 00000000aa0435fb
  3. CapEff: 00000000aa0435fb
  4. ...

比较两个容器的权能位图:

  1. 00000000a80425fb
  2. 00000000aa0435fb

在第一个容器的权能位图中,位 12 和 25 是没有设置的。在第二个容器中,位 12 和 25 是设置了的。位 12 是 CAP_NET_ADMIN 而位 25 则是 CAP_SYS_TIME。 参见 capability.h 了解权能常数的定义。

说明: Linux 权能常数定义的形式为 CAP_XXX。但是你在 Container 清单中列举权能时, 要将权能名称中的 CAP_ 部分去掉。例如,要添加 CAP_SYS_TIME,可在权能 列表中添加 SYS_TIME

为容器设置 Seccomp 样板

若要为容器设置 Seccomp 样板(Profile),可在你的 Pod 或 Container 清单的 securityContext 节中包含 seccompProfile 字段。该字段是一个 SeccompProfile 对象,包含 type 和 localhostProfile 属性。 type 的合法选项包括 RuntimeDefaultUnconfined 和 Localhost。 localhostProfile 只能在 type: Localhost 配置下才需要设置。 该字段标明节点上预先配置的样板的路径,路径是相对于 kubelet 所配置的 Seccomp 样板路径(使用 --root-dir 配置)而言的。

下面是一个例子,设置容器使用节点上容器运行时的默认样板作为 Seccomp 样板:

  1. ...
  2. securityContext:
  3. seccompProfile:
  4. type: RuntimeDefault

下面是另一个例子,将 Seccomp 的样板设置为位于 <kubelet-根目录>/seccomp/my-profiles/profile-allow.json 的一个预先配置的文件。

  1. ...
  2. securityContext:
  3. seccompProfile:
  4. type: Localhost
  5. localhostProfile: my-profiles/profile-allow.json

为 Container 赋予 SELinux 标签

若要给 Container 设置 SELinux 标签,可以在 Pod 或 Container 清单的 securityContext 节包含 seLinuxOptions 字段。 seLinuxOptions 字段的取值是一个 SELinuxOptions 对象。下面是一个应用 SELinux 标签的例子:

  1. ...
  2. securityContext:
  3. seLinuxOptions:
  4. level: "s0:c123,c456"

说明: 要指定 SELinux,需要在宿主操作系统中装载 SELinux 安全性模块。

讨论

Pod 的安全上下文适用于 Pod 中的容器,也适用于 Pod 所挂载的卷(如果有的话)。 尤其是,fsGroup 和 seLinuxOptions 按下面的方式应用到挂载卷上:

  • fsGroup:支持属主管理的卷会被修改,将其属主变更为 fsGroup 所指定的 GID, 并且对该 GID 可写。进一步的细节可参阅 属主变更设计文档

  • seLinuxOptions:支持 SELinux 标签的卷会被重新打标签,以便可被 seLinuxOptions 下所设置的标签访问。通常你只需要设置 level 部分。 该部分设置的是赋予 Pod 中所有容器及卷的 多类别安全性(Multi-Category Security,MCS)标签。

    警告: 在为 Pod 设置 MCS 标签之后,所有带有相同标签的 Pod 可以访问该卷。 如果你需要跨 Pod 的保护,你必须为每个 Pod 赋予独特的 MCS 标签。

清理

删除之前创建的所有 Pod:

  1. kubectl delete pod security-context-demo
  2. kubectl delete pod security-context-demo-2
  3. kubectl delete pod security-context-demo-3
  4. kubectl delete pod security-context-demo-4

接下来

 
  • 主页
    • Kubernetes 文档支持的版本
  • 入门
    • Kubernetes 发行说明和版本偏差
      • v1.18 发布说明
      • Kubernetes 版本及版本偏差支持策略
    • 学习环境
    • 生产环境
      • 容器运行时
      • Turnkey 云解决方案
      • 使用部署工具安装 Kubernetes
        • 使用 kubeadm 引导集群
          • 安装 kubeadm
          • 对 kubeadm 进行故障排查
          • 使用 kubeadm 创建集群
          • 使用 kubeadm 定制控制平面配置
          • 高可用拓扑选项
          • 利用 kubeadm 创建高可用集群
          • 使用 kubeadm 创建一个高可用 etcd 集群
          • 使用 kubeadm 配置集群中的每个 kubelet
        • Dual-stack support with kubeadm (EN)
        • 使用 Kops 安装 Kubernetes
        • 使用 Kubespray 安装 Kubernetes
      • Windows Kubernetes
        • Kubernetes 对 Windows 的支持
        • Kubernetes 中调度 Windows 容器的指南
    • 最佳实践
      • 运行于多可用区环境
      • 大规模集群的注意事项
      • 校验节点设置
      • PKI 证书和要求
  • 概念
    • 概述
      • Kubernetes 是什么?
      • Kubernetes 组件
      • Kubernetes API
      • 使用 Kubernetes 对象
        • 理解 Kubernetes 对象
        • Kubernetes 对象管理
        • 对象名称和 IDs
        • 名字空间
        • 标签和选择算符
        • 注解
        • 字段选择器
        • 推荐使用的标签
    • Kubernetes 架构
      • 节点
      • 控制面到节点通信
      • 控制器
      • 云控制器管理器的基础概念
    • 容器
      • 镜像
      • 容器环境
      • 容器运行时类(Runtime Class)
      • 容器生命周期回调
    • 工作负载
      • Pods
        • Pod 的生命周期
        • Init 容器
        • Pod 拓扑分布约束
        • 干扰(Disruptions)
        • 临时容器
      • 工作负载资源
        • Deployments
        • ReplicaSet
        • StatefulSets
        • DaemonSet
        • Jobs
        • 垃圾收集
        • 已完成资源的 TTL 控制器
        • CronJob
        • ReplicationController
    • 服务、负载均衡和联网
      • 使用拓扑键实现拓扑感知的流量路由
      • 服务
      • Pod 与 Service 的 DNS
      • 使用 Service 连接到应用
      • Ingress
      • Ingress 控制器
      • 拓扑感知提示
      • 服务内部流量策略
      • 端点切片(Endpoint Slices)
      • 网络策略
      • 使用 HostAliases 向 Pod /etc/hosts 文件添加条目
      • IPv4/IPv6 双协议栈
    • 存储
      • 卷快照
      • 持久卷
      • CSI 卷克隆
      • 卷快照类
      • 存储类
      • 动态卷供应
      • 存储容量
      • 临时卷
      • 卷健康监测
      • 特定于节点的卷数限制
    • 配置
      • 配置最佳实践
      • ConfigMap
      • Secret
      • 为容器管理资源
      • 使用 kubeconfig 文件组织集群访问
      • Pod 优先级与抢占
    • 安全
      • Pod 安全性标准
      • 云原生安全概述
      • Kubernetes API 访问控制
    • 策略
      • 限制范围
      • 资源配额
      • Pod 安全策略
      • 进程 ID 约束与预留
      • 节点资源管理器
    • 调度和驱逐 (Scheduling and Eviction)
      • Pod 开销
      • 污点和容忍度
      • Kubernetes 调度器
      • 将 Pod 分配给节点
      • 扩展资源的资源装箱
      • 驱逐策略
    • Pod Priority and Preemption (EN)
      • 调度框架
      • 调度器性能调优
    • 集群管理
      • 证书
      • 管理资源
      • 集群网络系统
      • Kubernetes 系统组件指标
      • 日志架构
      • 系统日志
      • 容器镜像的垃圾收集
      • Kubernetes 中的代理
      • API 优先级和公平性
      • 安装扩展(Addons)
    • 扩展 Kubernetes
  • 任务
    • 安装工具
      • 在 Linux 系统中安装并设置 kubectl
      • 在 macOS 系统上安装和设置 kubectl
      • 在 Windows 上安装 kubectl
    • Tools Included
      • bash auto-completion on Linux (EN)
      • bash auto-completion on macOS (EN)
      • gcloud kubectl install (EN)
      • verify kubectl install (EN)
      • What’s next? (EN)
      • zsh auto-completion (EN)
    • 管理集群
      • 从 dockershim 迁移
        • 检查弃用 Dockershim 对你的影响
        • 从 dockershim 迁移遥测和安全代理
      • 用 kubeadm 进行管理
      • Configuring a cgroup driver (EN)
        • 使用 kubeadm 进行证书管理
        • 升级 kubeadm 集群
        • 添加 Windows 节点
        • 升级 Windows 节点
      • 管理内存,CPU 和 API 资源
        • 为命名空间配置默认的内存请求和限制
        • 为命名空间配置默认的 CPU 请求和限制
        • 配置命名空间的最小和最大内存约束
        • 为命名空间配置 CPU 最小和最大约束
        • 为命名空间配置内存和 CPU 配额
        • 配置命名空间下 Pod 配额
      • 证书
      • 安装网络规则驱动
      • Use Antrea for NetworkPolicy (EN)
        • 使用 Calico 提供 NetworkPolicy
        • 使用 Cilium 提供 NetworkPolicy
        • 使用 kube-router 提供 NetworkPolicy
        • 使用 Romana 提供 NetworkPolicy
        • 使用 Weave Net 提供 NetworkPolicy
    • Enabling Topology Aware Hints (EN)
      • IP Masquerade Agent 用户指南
      • Kubernetes 云管理控制器
    • Memory Manager (EN)
      • 为 Kubernetes 运行 etcd 集群
      • 为系统守护进程预留计算资源
      • 为节点发布扩展资源
      • 使用 CoreDNS 进行服务发现
      • 使用 KMS 驱动进行数据加密
      • 使用 Kubernetes API 访问集群
      • 保护集群安全
      • 关键插件 Pod 的调度保证
      • 升级集群
      • 名字空间演练
      • 启用/禁用 Kubernetes API
      • 在 Kubernetes 集群中使用 NodeLocal DNSCache
      • 在 Kubernetes 集群中使用 sysctl
      • 在运行中的集群上重新配置节点的 kubelet
      • 声明网络策略
      • 安全地清空一个节点
      • 将重复的控制平面迁至云控制器管理器
      • 开发云控制器管理器
      • 开启服务拓扑
      • 控制节点上的 CPU 管理策略
      • 控制节点上的拓扑管理策略
      • 搭建高可用的 Kubernetes Masters
      • 改变默认 StorageClass
      • 更改 PersistentVolume 的回收策略
      • 自动扩缩集群 DNS 服务
      • 自定义 DNS 服务
      • 访问集群上运行的服务
      • 调试 DNS 问题
      • 通过名字空间共享集群
      • 通过配置文件设置 Kubelet 参数
      • 配置 API 对象配额
      • 配置资源不足时的处理方式
      • 限制存储消耗
      • 静态加密 Secret 数据
    • 配置 Pods 和容器
      • 为容器和 Pod 分配内存资源
      • 为 Windows Pod 和容器配置 GMSA
      • 为 Windows 的 Pod 和容器配置 RunAsUserName
      • 为容器和 Pods 分配 CPU 资源
      • 配置 Pod 的服务质量
      • 为容器分派扩展资源
      • 配置 Pod 以使用卷进行存储
      • 配置 Pod 以使用 PersistentVolume 作为存储
      • 配置 Pod 使用投射卷作存储
      • 为 Pod 或容器配置安全性上下文
      • 为 Pod 配置服务账户
      • 从私有仓库拉取镜像
      • 配置存活、就绪和启动探测器
      • 将 Pod 分配给节点
      • 用节点亲和性把 Pods 分配到节点
      • 配置 Pod 初始化
      • 为容器的生命周期事件设置处理函数
      • 配置 Pod 使用 ConfigMap
      • 在 Pod 中的容器之间共享进程命名空间
      • 创建静态 Pod
      • 将 Docker Compose 文件转换为 Kubernetes 资源
    • 管理 Kubernetes 对象
      • 使用配置文件对 Kubernetes 对象进行声明式管理
      • 使用 Kustomize 对 Kubernetes 对象进行声明式管理
      • 使用指令式命令管理 Kubernetes 对象
      • 使用配置文件对 Kubernetes 对象进行命令式管理
      • 使用 kubectl patch 更新 API 对象
    • 管理 Secrets
      • 使用 kubectl 管理 Secret
      • 使用配置文件管理 Secret
      • 使用 Kustomize 管理 Secret
    • 给应用注入数据
      • 为容器设置启动时要执行的命令和参数
      • 为容器设置环境变量
      • 定义相互依赖的环境变量
      • 通过环境变量将 Pod 信息呈现给容器
      • 通过文件将 Pod 信息呈现给容器
      • 使用 Secret 安全地分发凭证
    • 运行应用
      • 运行一个单实例有状态应用
      • 运行一个有状态的应用程序
      • 删除 StatefulSet
      • 强制删除 StatefulSet 类型的 Pods
      • Pod 水平自动扩缩
      • Horizontal Pod Autoscaler 演练
      • 为应用程序设置干扰预算(Disruption Budget)
      • 从 Pod 中访问 Kubernetes API
      • 使用Deployment运行一个无状态应用
      • 扩缩 StatefulSet
    • 运行 Jobs
      • 使用 CronJob 运行自动化任务
      • 使用工作队列进行粗粒度并行处理
    • Indexed Job for Parallel Processing with Static Work Assignment (EN)
      • 使用工作队列进行精细的并行处理
      • 使用展开的方式进行并行处理
    • 访问集群中的应用程序
      • Web 界面 (Dashboard)
      • 访问集群
      • 使用端口转发来访问集群中的应用
      • 使用服务来访问集群中的应用
      • 使用 Service 把前端连接到后端
      • 创建外部负载均衡器
      • 列出集群中所有运行容器的镜像
      • 在 Minikube 环境中使用 NGINX Ingress 控制器配置 Ingress
      • 为集群配置 DNS
      • 同 Pod 内的容器使用共享卷通信
      • 配置对多集群的访问
    • 监控、日志和排错
      • 使用 crictl 对 Kubernetes 节点进行调试
      • 使用 Stackdriver 生成日志
      • 在本地开发和调试服务
      • 审计
      • 应用故障排查
      • 应用自测与调试
      • 故障诊断
      • 确定 Pod 失败的原因
      • 节点健康监测
      • 获取正在运行容器的 Shell
      • 调试 Init 容器
      • 调试 Pods 和 ReplicationControllers
      • 调试 Service
      • 调试StatefulSet
      • 调试运行中的 Pod
      • 资源指标管道
      • 资源监控工具
      • 集群故障排查
    • 扩展 Kubernetes
      • 使用自定义资源
        • 使用 CustomResourceDefinition 扩展 Kubernetes API
        • CustomResourceDefinition 的版本
      • 配置聚合层
      • 安装一个扩展的 API server
      • 配置多个调度器
      • 使用 HTTP 代理访问 Kubernetes API
      • 设置 Konnectivity 服务
    • TLS
      • 为 kubelet 配置证书轮换
      • 手动轮换 CA 证书
      • 管理集群中的 TLS 认证
    • 管理集群守护进程
      • 对 DaemonSet 执行滚动更新
      • 对 DaemonSet 执行回滚
    • 安装服务目录
      • 使用 Helm 安装 Service Catalog
      • 使用 SC 安装服务目录
    • 网络
      • 验证 IPv4/IPv6 双协议栈
    • Configure a kubelet image credential provider (EN)
      • 用插件扩展 kubectl
      • 管理巨页(HugePages)
      • 调度 GPUs
  • 教程
    • 你好,Minikube
    • 学习 Kubernetes 基础知识
    • 配置
      • 示例:配置 java 微服务
        • 使用 MicroProfile、ConfigMaps、Secrets 实现外部化应用配置
        • 互动教程 - 配置 java 微服务
      • 使用 ConfigMap 来配置 Redis
    • 无状态应用程序
      • 公开外部 IP 地址以访问集群中应用程序
      • 示例:使用 MongoDB 部署 PHP 留言板应用程序
    • 有状态的应用
      • 示例:使用 Persistent Volumes 部署 WordPress 和 MySQL
      • 示例:使用 StatefulSet 部署 Cassandra
      • 运行 ZooKeeper,一个分布式协调系统
      • StatefulSet 基础
    • 集群
      • 使用 AppArmor 限制容器对资源的访问
      • 使用 Seccomp 限制容器的系统调用
    • Services
      • 使用 Source IP
  • 参考
    • 标准化词汇表
    • API 概述
      • Kubernetes API 概念
      • 服务器端应用(Server-Side Apply)
      • 客户端库
      • Kubernetes 弃用策略
    • Deprecated API Migration Guide (EN)
      • Kubernetes API 健康端点
    • Kubernetes 问题和安全
      • Kubernetes 问题追踪
      • Kubernetes 安全和信息披露
    • 常见的标签、注解和污点
    • 访问 API
      • 用户认证
      • 使用启动引导令牌(Bootstrap Tokens)认证
      • 证书签名请求
      • 使用准入控制器
      • 动态准入控制
      • 管理 Service Accounts
      • 鉴权概述
      • 使用 RBAC 鉴权
      • 使用 Node 鉴权
      • Webhook 模式
      • 使用 ABAC 鉴权
    • Kubernetes API
    • Workload Resources
      • Pod (EN)
      • EphemeralContainers (EN)
      • PodTemplate (EN)
      • ReplicationController (EN)
      • ReplicaSet (EN)
      • Deployment (EN)
      • StatefulSet (EN)
      • ControllerRevision (EN)
      • DaemonSet (EN)
      • Job (EN)
      • CronJob (EN)
      • HorizontalPodAutoscaler (EN)
      • HorizontalPodAutoscaler v2beta2 (EN)
      • PriorityClass (EN)
    • Service Resources
      • Service (EN)
      • Endpoints (EN)
      • EndpointSlice (EN)
      • Ingress (EN)
      • IngressClass (EN)
    • Config and Storage Resources
      • ConfigMap (EN)
      • Secret (EN)
      • Volume (EN)
      • PersistentVolumeClaim (EN)
      • PersistentVolume (EN)
      • StorageClass (EN)
      • VolumeAttachment (EN)
      • CSIDriver (EN)
      • CSINode (EN)
      • CSIStorageCapacity v1beta1 (EN)
    • Authentication Resources
      • ServiceAccount (EN)
      • TokenRequest (EN)
      • TokenReview (EN)
      • CertificateSigningRequest (EN)
    • Authorization Resources
      • LocalSubjectAccessReview (EN)
      • SelfSubjectAccessReview (EN)
      • SelfSubjectRulesReview (EN)
      • SubjectAccessReview (EN)
      • ClusterRole (EN)
      • ClusterRoleBinding (EN)
      • Role (EN)
      • RoleBinding (EN)
    • Policy Resources
      • LimitRange (EN)
      • ResourceQuota (EN)
      • NetworkPolicy (EN)
      • PodDisruptionBudget (EN)
      • PodSecurityPolicy v1beta1 (EN)
    • Extend Resources
      • CustomResourceDefinition (EN)
      • MutatingWebhookConfiguration (EN)
      • ValidatingWebhookConfiguration (EN)
    • Cluster Resources
      • Node (EN)
      • Namespace (EN)
      • Event (EN)
      • APIService (EN)
      • Lease (EN)
      • RuntimeClass (EN)
      • FlowSchema v1beta1 (EN)
      • PriorityLevelConfiguration v1beta1 (EN)
      • Binding (EN)
      • ComponentStatus (EN)
    • Common Definitions
      • DeleteOptions (EN)
      • LabelSelector (EN)
      • ListMeta (EN)
      • LocalObjectReference (EN)
      • NodeSelectorRequirement (EN)
      • ObjectFieldSelector (EN)
      • ObjectMeta (EN)
      • ObjectReference (EN)
      • Patch (EN)
      • Quantity (EN)
      • ResourceFieldSelector (EN)
      • Status (EN)
      • TypedLocalObjectReference (EN)
      • Common Parameters (EN)
    • 安装工具
      • Kubeadm
      • Kubeadm Generated
        • kubeadm init
        • kubeadm join
        • kubeadm upgrade
        • kubeadm config
        • kubeadm reset
        • kubeadm token
        • kubeadm version
        • kubeadm alpha
        • kubeadm certs
        • kubeadm init phase
        • kubeadm join phase
      • kubeadm kubeconfig (EN)
        • kubeadm reset phase
        • kubeadm upgrade phase
        • 实现细节
    • kubectl 命令行界面
      • kubectl 概述
      • JSONPath 支持
      • kubectl
      • kubectl 命令
      • kubectl 备忘单
      • kubectl 的用法约定
      • 适用于 Docker 用户的 kubectl
    • 命令行工具参考
      • 特性门控
      • kubelet
      • kube-apiserver
      • kube-controller-manager
      • kube-proxy
      • kube-scheduler
      • Kubelet 认证/鉴权
      • TLS 启动引导
    • 配置 API
      • Client Authentication (v1beta1)
      • kube-apiserver Audit Configuration (v1)
      • kube-proxy Configuration (v1alpha1)
      • kube-scheduler Configuration (v1beta1)
      • kube-scheduler Policy Configuration (v1)
      • Kubelet Configuration (v1beta1)
      • WebhookAdmission Configuration (v1)
    • 调度
      • 调度策略
      • 调度器配置
  • Other Tools
  • 贡献
    • 提出内容改进建议
    • 贡献新内容
      • 概述
      • 发起拉取请求(PR)
      • 为发行版本撰写文档
      • 博客和案例分析
    • 评阅变更
      • 评阅 PRs
      • 评阅人和批准人
    • 本地化 Kubernetes 文档
    • 参与 SIG Docs
      • 角色与责任
      • PR 管理者
    • 参考文档概述
      • 为上游 Kubernetes 代码库做出贡献
      • 快速入门
      • 为 Kubernetes API 生成参考文档
      • 为 kubectl 命令集生成参考文档
      • 为 Kubernetes 组件和工具生成参考文档
      • 参考文档概述
    • 文档样式概述
      • 内容指南
      • 样式指南
      • 撰写新主题
      • 页面内容类型
      • 内容组织
      • 定制 Hugo 短代码
    • 高级贡献
    • 中文本地化样式指南
 

相关文章:

  • 2021-05-17
  • 2021-09-03
  • 2021-12-16
  • 2021-12-18
  • 2022-12-23
  • 2021-06-21
  • 2021-06-28
  • 2021-06-28
猜你喜欢
  • 2021-10-23
  • 2021-08-08
  • 2021-10-25
  • 2021-08-17
  • 2021-07-16
  • 2021-10-14
相关资源
相似解决方案