为pod设置安全上下文
为 Pod 或容器配置安全性上下文
来源:kubernetes 浏览 95- 为 Pod 或容器配置安全性上下文
- 准备开始
- 为 Pod 设置安全性上下文
- 为 Pod 配置卷访问权限和属主变更策略
- 为 Container 设置安全性上下文
- 为 Container 设置权能
- 为容器设置 Seccomp 样板
- 为 Container 赋予 SELinux 标签
- 讨论
- 清理
- 接下来
用户 ID(UID)和组 ID(GID). 来判定对对象(例如文件)的访问权限。
Linux 权能: 为进程赋予 root 用户的部分特权而非全部特权。
AppArmor:使用程序框架来限制个别程序的权能。
no_new_privs标志。 当容器以特权模式运行或者具有 CAP_SYS_ADMIN 权能时,AllowPrivilegeEscalation 总是为 true。以上条目不是安全上下文设置的完整列表 — 请参阅 SecurityContext 了解其完整列表。
关于在 Linux 系统中的安全机制的更多信息,可参阅 Linux 内核安全性能力概述。
Minikube 构建一 个你自己的集群,或者你可以使用下面任意一个 Kubernetes 工具构建:
- Katacoda
- 玩转 Kubernetes
要获知版本信息,请输入 kubectl version.
PodSecurityContext 对象。你为 Pod 所设置的安全性配置会应用到 Pod 中所有 Container 上。 下面是一个 Pod 的配置文件,该 Pod 定义了 securityContext 和一个 emptyDir 卷:
pods/security/security-context.yaml
apiVersion: v1kind: Podmetadata:name: security-context-demospec:securityContext:runAsUser: 1000runAsGroup: 3000fsGroup: 2000volumes:- name: sec-ctx-volemptyDir: {}containers:- name: sec-ctx-demoimage: busyboxcommand: [ "sh", "-c", "sleep 1h" ]volumeMounts:- name: sec-ctx-volmountPath: /data/demosecurityContext:allowPrivilegeEscalation: false
在配置文件中,runAsUser 字段指定 Pod 中的所有容器内的进程都使用用户 ID 1000 来运行。runAsGroup 字段指定所有容器中的进程都以主组 ID 3000 来运行。 如果忽略此字段,则容器的主组 ID 将是 root(0)。 当 runAsGroup 被设置时,所有创建的文件也会划归用户 1000 和组 3000。 由于 fsGroup 被设置,容器中所有进程也会是附组 ID 2000 的一部分。 卷 /data/demo 及在该卷中创建的任何文件的属主都会是组 ID 2000。
创建该 Pod:
kubectl apply -f https://k8s.io/examples/pods/security/security-context.yaml
检查 Pod 的容器处于运行状态:
kubectl get pod security-context-demo
开启一个 Shell 进入到运行中的容器:
kubectl exec -it security-context-demo -- sh
在你的 Shell 中,列举运行中的进程:
ps
输出显示进程以用户 1000 运行,即 runAsUser 所设置的值:
PID USER TIME COMMAND1 1000 0:00 sleep 1h6 1000 0:00 sh...
在你的 Shell 中,进入 /data 目录列举其内容:
cd /datals -l
输出显示 /data/demo 目录的组 ID 为 2000,即 fsGroup 的设置值:
drwxrwsrwx 2 root 2000 4096 Jun 6 20:08 demo
在你的 Shell 中,进入到 /data/demo 目录下创建一个文件:
cd demoecho hello > testfile
列举 /data/demo 目录下的文件:
ls -l
输出显示 testfile 的组 ID 为 2000,也就是 fsGroup 所设置的值:
-rw-r--r-- 1 1000 2000 6 Jun 6 20:08 testfile
运行下面的命令:
id
输出为:
uid=1000 gid=3000 groups=2000
你会看到 gid 值为 3000,也就是 runAsGroup 字段的值。 如果 runAsGroup 被忽略,则 gid 会取值 0(root),而进程就能够与 root 用户组所拥有以及要求 root 用户组访问权限的文件交互。
退出你的 Shell:
exit
特性门控。
说明: 此字段对于secret、 configMap 和 emptydir 这类临时性存储无效。
SecurityContext 对象。你为 Container 设置的安全性配置仅适用于该容器本身,并且所指定的设置 在与 Pod 层面设置的内容发生重叠时,会重载后者。Container 层面的设置不会影响 到 Pod 的卷。
说明: 此字段对于secret、 configMap 和 emptydir 这类临时性存储无效。
下面是一个 Pod 的配置文件,其中包含一个 Container。Pod 和 Container 都有 securityContext 字段:
pods/security/security-context-2.yaml
apiVersion: v1kind: Podmetadata:name: security-context-demo-2spec:securityContext:runAsUser: 1000containers:- name: sec-ctx-demo-2image: gcr.io/google-samples/node-hello:1.0securityContext:runAsUser: 2000allowPrivilegeEscalation: false
创建该 Pod:
kubectl apply -f https://k8s.io/examples/pods/security/security-context-2.yaml
验证 Pod 中的容器处于运行状态:
kubectl get pod security-context-demo-2
启动一个 Shell 进入到运行中的容器内:
kubectl exec -it security-context-demo-2 -- sh
在你的 Shell 中,列举运行中的进程:
ps aux
输出显示进程以用户 2000 账号运行。该值是在 Container 的 runAsUser 中设置的。 该设置值重载了 Pod 层面所设置的值 1000。
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND2000 1 0.0 0.0 4336 764 ? Ss 20:36 0:00 /bin/sh -c node server.js2000 8 0.1 0.5 772124 22604 ? Sl 20:36 0:00 node server.js...
退出你的 Shell:
exit
Linux 权能,你可以 赋予进程 root 用户所拥有的某些特权,但不必赋予其全部特权。 要为 Container 添加或移除 Linux 权能,可以在 Container 清单的 securityContext 节 包含 capabilities 字段。
首先,查看不包含 capabilities 字段时候会发生什么。 下面是一个配置文件,其中没有添加或移除容器的权能:
pods/security/security-context-3.yaml
apiVersion: v1kind: Podmetadata:name: security-context-demo-3spec:containers:- name: sec-ctx-3image: gcr.io/google-samples/node-hello:1.0
创建该 Pod:
kubectl apply -f https://k8s.io/examples/pods/security/security-context-3.yaml
验证 Pod 的容器处于运行状态:
kubectl get pod security-context-demo-3
启动一个 Shell 进入到运行中的容器:
kubectl exec -it security-context-demo-3 -- sh
在你的 Shell 中,列举运行中的进程:
ps aux
输出显示容器中进程 ID(PIDs):
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.0 4336 796 ? Ss 18:17 0:00 /bin/sh -c node server.jsroot 5 0.1 0.5 772124 22700 ? Sl 18:17 0:00 node server.js
在你的 Shell 中,查看进程 1 的状态:
cd /proc/1cat status
输出显示进程的权能位图:
...CapPrm: 00000000a80425fbCapEff: 00000000a80425fb...
记下进程权能位图,之后退出你的 Shell:
exit
接下来运行一个与前例中容器相同的容器,只是这个容器有一些额外的权能设置。
下面是一个 Pod 的配置,其中运行一个容器。配置为容器添加 CAP_NET_ADMIN 和 CAP_SYS_TIME 权能:
pods/security/security-context-4.yaml
apiVersion: v1kind: Podmetadata:name: security-context-demo-4spec:containers:- name: sec-ctx-4image: gcr.io/google-samples/node-hello:1.0securityContext:capabilities:add: ["NET_ADMIN", "SYS_TIME"]
创建 Pod:
kubectl apply -f https://k8s.io/examples/pods/security/security-context-4.yaml
启动一个 Shell,进入到运行中的容器:
kubectl exec -it security-context-demo-4 -- sh
在你的 Shell 中,查看进程 1 的权能:
cd /proc/1cat status
输出显示的是进程的权能位图:
...CapPrm: 00000000aa0435fbCapEff: 00000000aa0435fb...
比较两个容器的权能位图:
00000000a80425fb00000000aa0435fb
在第一个容器的权能位图中,位 12 和 25 是没有设置的。在第二个容器中,位 12 和 25 是设置了的。位 12 是 CAP_NET_ADMIN 而位 25 则是 CAP_SYS_TIME。 参见 capability.h 了解权能常数的定义。
说明: Linux 权能常数定义的形式为
CAP_XXX。但是你在 Container 清单中列举权能时, 要将权能名称中的CAP_部分去掉。例如,要添加CAP_SYS_TIME,可在权能 列表中添加SYS_TIME。
SeccompProfile 对象,包含 type 和 localhostProfile 属性。 type 的合法选项包括 RuntimeDefault、Unconfined 和 Localhost。 localhostProfile 只能在 type: Localhost 配置下才需要设置。 该字段标明节点上预先配置的样板的路径,路径是相对于 kubelet 所配置的 Seccomp 样板路径(使用 --root-dir 配置)而言的。
下面是一个例子,设置容器使用节点上容器运行时的默认样板作为 Seccomp 样板:
...securityContext:seccompProfile:type: RuntimeDefault
下面是另一个例子,将 Seccomp 的样板设置为位于 的一个预先配置的文件。
...securityContext:seccompProfile:type: LocalhostlocalhostProfile: my-profiles/profile-allow.json
SELinuxOptions 对象。下面是一个应用 SELinux 标签的例子:
...
securityContext:
seLinuxOptions:
level: "s0:c123,c456"
说明: 要指定 SELinux,需要在宿主操作系统中装载 SELinux 安全性模块。
属主变更设计文档。
...securityContext: seLinuxOptions: level: "s0:c123,c456"说明: 要指定 SELinux,需要在宿主操作系统中装载 SELinux 安全性模块。
seLinuxOptions:支持 SELinux 标签的卷会被重新打标签,以便可被 seLinuxOptions 下所设置的标签访问。通常你只需要设置 level 部分。 该部分设置的是赋予 Pod 中所有容器及卷的 多类别安全性(Multi-Category Security,MCS)标签。
警告: 在为 Pod 设置 MCS 标签之后,所有带有相同标签的 Pod 可以访问该卷。 如果你需要跨 Pod 的保护,你必须为每个 Pod 赋予独特的 MCS 标签。
PodSecurityContext API 定义
- 主页
- 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
- 使用 kubeadm 引导集群
- Windows Kubernetes
- Kubernetes 对 Windows 的支持
- Kubernetes 中调度 Windows 容器的指南
- 最佳实践
- 运行于多可用区环境
- 大规模集群的注意事项
- 校验节点设置
- PKI 证书和要求
- Kubernetes 发行说明和版本偏差
- 概念
- 概述
- Kubernetes 是什么?
- Kubernetes 组件
- Kubernetes API
- 使用 Kubernetes 对象
- 理解 Kubernetes 对象
- Kubernetes 对象管理
- 对象名称和 IDs
- 名字空间
- 标签和选择算符
- 注解
- 字段选择器
- 推荐使用的标签
- Kubernetes 架构
- 节点
- 控制面到节点通信
- 控制器
- 云控制器管理器的基础概念
- 容器
- 镜像
- 容器环境
- 容器运行时类(Runtime Class)
- 容器生命周期回调
- 工作负载
- Pods
- Pod 的生命周期
- Init 容器
- Pod 拓扑分布约束
- 干扰(Disruptions)
- 临时容器
- 工作负载资源
- Deployments
- ReplicaSet
- StatefulSets
- DaemonSet
- Jobs
- 垃圾收集
- 已完成资源的 TTL 控制器
- CronJob
- ReplicationController
- Pods
- 服务、负载均衡和联网
- 使用拓扑键实现拓扑感知的流量路由
- 服务
- 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
- 扩展 Kubernetes API
- 定制资源
- 通过聚合层扩展 Kubernetes API
- Operator 模式
- 计算、存储和网络扩展
- 网络插件
- 设备插件
- 服务目录
- 扩展 Kubernetes API
- 概述
- 任务
- 安装工具
- 在 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
- 从 dockershim 迁移
- 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 基础知识
- 创建集群
- 使用 Minikube 创建集群
- 交互式教程 - 创建集群
- 部署应用
- 使用 kubectl 创建 Deployment
- 交互式教程 - 部署应用
- 了解你的应用
- 查看 pod 和工作节点
- 交互式教程-了解你的应用
- 公开地暴露你的应用
- 使用 Service 暴露您的应用
- 交互式教程 - 暴露你的应用
- 缩放你的应用
- 运行应用程序的多个实例
- 交互教程 - 缩放你的应用
- 更新你的应用
- 执行滚动更新
- 交互式教程 - 更新你的应用
- 创建集群
- 配置
- 示例:配置 java 微服务
- 使用 MicroProfile、ConfigMaps、Secrets 实现外部化应用配置
- 互动教程 - 配置 java 微服务
- 使用 ConfigMap 来配置 Redis
- 示例:配置 java 微服务
- 无状态应用程序
- 公开外部 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 短代码
- 高级贡献
- 中文本地化样式指南