先说结论:CKS这个证在Kubernetes生态里属于少有的“含金量和通过难度成正比”的认证。2026年的版本相比前几年,考纲权重、题目形式都有调整,网上不少备考攻略已经过时,照着旧经验刷题容易吃大亏。这篇文章是我结合最新考试动态和实操踩坑整理的备考规划,覆盖考试拆解、核心知识点、环境搭建、刷题方法、考场避坑,准备考的直接按这个路线走,能少走很多弯路。
如果你是零基础,建议先冷静一下,CKS不是入门证书,它默认你已经有CKA水平,能独立管理集群。我见过不少人跳过CKA直接冲CKS,结果连考题里的集群故障都排查不动,白白浪费一次考试费。这篇文章主要面向两类人:已经拿到CKA、准备往安全方向进阶的工程师,以及正在同时备考CKA+CKS、想一次规划到位的学习者。
1. CKS 2026考试全景拆解
1.1 考试形式与及格机制
先搞清楚游戏规则再谈备考。CKS全程线上考试,时长为120分钟,题型在2024年后做了重要调整:从过去“全实操题”改成了“实操题+知识选择题”的混合模式。我稳定复现过的17道题里,大约有3道左右是选择题,其余是动手实操。这个变化直接影响备考策略,后面我会详细说。
计分方式是百分制,67分及格,每道题权重不同,cluster hardening这类重点题的权重明显高于普通题目。考试全程有真人监考+屏幕录制,浏览器会被锁定,不能切出考试窗口,不能访问外部网站,Terminal环境是官方预置的,里面有一个kubeconfig配置文件指向考试集群。你要在这个Terminal里完成所有操作,比如创建RBAC资源、修改Pod安全策略、配置审计日志等。
考试版本这几年一直跟着Kubernetes活跃版本走,2026年大概率基于1.30到1.31之间的版本。版本变化带来的影响主要集中在:新的Pod安全特性(比如PodSecurityContext增强)、kubeadm配置格式变化、审计API字段调整。我的建议是备考时用1.30版本练习,实际操作API变化不大,所以不用太焦虑版本号。
1.2 2026年最新变化要点
新旧备考攻略之间最大的分水岭就是选择题的引入。以前CKS是纯粹考手速和命令熟练度,现在多了选择题,意味着你需要掌握一些纯理论的知识点,比如:
- 各类 Kubernetes 安全组件的适用场景(imagePolicyWebhook、OPA Gatekeeper、Kyverno 的区别)
- 攻击面的识别(etcd未加密、kubelet匿名请求开启、Pod提升权限的风险)
- 供应链攻击链路分析(镜像篡改发生在哪个环节,应该用哪种机制阻断)
这些知识点用实操的方式很难覆盖到,必须单独花时间记忆。
另一个值得注意的变化是“审计策略”相关题目的权重提升。我在21年考试时只考了一道审计日志的基础题,但近两年明显感觉安全域题目更细,比如要求你在审计策略中正确配置omitStages、rules顺序,甚至要求你对特定操作输出到特定日志文件。这些都是新版考试里容易拉开差距的地方。
报名方面有一个硬性门槛:CKS考试要求必须在CKA有效期内才能参加。CKA证书有效期是3年,如果你已经考过CKA,直接报就行;如果还没考,你需要把CKA纳入整体时间规划,先考CKA再考CKS。官方没有强制要求CKA分数,只要CKA证书在有效期内即可。
2. 核心考点拆解与学习路线
2.1 官方考纲五大域及权重
CKS考纲一直围绕五个安全域展开,2026年权重分布基本保持稳定:
| 安全域 | 权重 | 考察重点 |
|---|---|---|
| Cluster Hardening | 15% | RBAC、ServiceAccount、TLS、kube-apiserver安全参数 |
| System Hardening | 15% | 内核加固、sysctl、AppArmor、seccomp、chroot |
| Minimize Microservice Vulnerabilities | 20% | Pod安全标准、NetworkPolicy、Ingress |
| Supply Chain Security | 20% | 镜像扫描、镜像签名、准入控制、不可变Pod |
| Monitoring, Auditing, Runtime Security | 30% | 审计日志、Falco、tracee、运行时检测 |
注意后面两个域的合计权重已经达到50%,是备考的主战场。早期考生都爱死磕RBAC和NetworkPolicy,其实这两个只是拿分基础,真正决定过与不过的是供应链安全和运行时安全。
我的朋友野原(化名)第一次考试就挂在运行时安全上,他Falco规则写了但不知道output字段格式不对,导致题目没分。这提醒我们:光是“会敲命令”远远不够,官方评分是按题目的检测点给分,一个字段拼错可能整道题零分。
2.2 五大域的详细学习路线
Cluster Hardening(集群加固,15%)
这部分考察你对控制面的保护能力。核心知识点包括:最小权限RBAC设计、限制ServiceAccount的权限、为kube-apiserver配置TLS证书参数、禁用匿名请求、正确配置kubelet的认证授权。备考时重点练习以下场景:
- 创建Role和RoleBinding,限制某个命名空间内特定资源的读写权限
- 为kube-apiserver添加
--authorization-mode=RBAC,Node参数 - 修改kubelet配置,设置
authorization.mode: Webhook和authentication.anonymous.enabled: false
实操中很多人分不清Role和ClusterRole的适用场景。记住一句话:Role是命名空间维度的,ClusterRole是集群维度的。考题如果要求“在某个命名空间内授权”,你用ClusterRole也能实现功能,但会被判不规范,拿不到满分。同样,ClusterRoleBinding和RoleBinding的差别也是高频陷阱。
System Hardening(系统加固,15%)
这部分涉及节点层面的安全加固。说得直白点,就是让Pod跑在一个更受限的Linux环境里,防止容器逃逸后搞坏宿主机。高频考点有三个:AppArmor配置、seccomp配置、sysctl内核参数管理。
AppArmor是很多人的噩梦,因为配置不能直接写在YAML里生效,需要先在节点上加载profile文件,然后在Pod的annotation里引用。操作流程是这样的:把profile文件放到/etc/apparmor.d/目录,执行apparmor_parser加载,最后在Pod的container.apparmor.security.beta.kubernetes.io/<container-name>注解里指定localhost/<profile-name>。注意新版K8s已经把AppArmor支持放到了PodSecurityContext的appArmorProfile字段,2026年考试如果基于1.30+版本,应该用新字段而不是旧annotation,备考时两种写法都要熟悉。
seccomp同理,要区分RuntimeDefault和Localhost两种模式。RuntimeDefault直接使用容器运行时的默认配置,Localhost需要指定节点上的profile文件。考试常用Localhost,因为能体现你对安全策略的精细化控制。sysctl方面,重点掌握safe和unsafe两类参数的区分,以及securityContext.sysctls的写法。这一节特别强调命令操作和YAML编写两手抓,因为可能是选择题也可能是实操题。
Minimize Microservice Vulnerabilities(微服务漏洞最小化,20%)
这一域的本质是限制Pod的能力和网络通信。几个高频考点:Pod Security Standards(PSS)的privileged、baseline、restricted三档;将命名空间标记为pod-security.kubernetes.io/enforce=restricted;NetworkPolicy实现默认拒绝;限制Pod提升权限、以root运行等行为。
我特别想强调NetworkPolicy的学习深度。基础题是拒绝所有流量、放行指定标签的Pod,进阶题是同时控制ingress和egress,还有的题会考察到不同命名空间之间的通信策略。做这类题一定要画拓扑图,把来源、目标、端口列清楚再写策略,否则很容易出现“策略没写错但作用域比题目要求大”的情况。常见的错误是Ingress规则里不指定podSelector,结果策略变成对命名空间内所有Pod生效,导致正常的监控流量也被拦掉。这种细节丢分非常可惜。
Supply Chain Security(供应链安全,20%)
这是2026年备考需要重点投入的模块。Kubernetes官方对供应链安全的定义很宽,从镜像签名验证到准入控制都算。高频考点包括:
- 配置ImagePolicyWebhook准入控制器,拦截未签名镜像
- 用cosign验证镜像签名,在部署时校验
- 配置Pod不可变(
readOnlyRootFilesystem: true、immutable: true) - 用
kubectl debug排查恶意容器(这个知识点容易在选择题里出现)
备考最大的难点是ImagePolicyWebhook配置,需要准备kubeconfig文件、webhook配置文件和admission配置文件三件套,而且它们之间的关系很绕。我建议在本地环境实操至少三遍,直到能凭记忆写出完整的配置文件为止。用kubeadm搭建的集群有个坑,kube-apiserver的静态Pod需要手动挂载配置目录,加--admission-control-config-file参数,很多人第一次配置时忘了重新生成静态Pod清单,导致准入插件没生效,但此时只是加载了插件插件,实际后端配置没生效,不好排查。
Monitoring, Auditing, Runtime Security(监控审计与运行时安全,30%)
这是最大的得分模块,也是新版考试拉开差距的核心。从内容上看包含两块:审计日志配置和运行时安全检测。
审计日志部分要求你能够创建审计策略、启用kube-apiserver的审计日志、把特定操作记录到指定文件。实操步骤是:编写AuditPolicy YAML(定义rules、verbs、resources、omitStages),把策略文件挂载进kube-apiserver静态Pod,然后添加--audit-policy-file和--audit-log-path参数。这里有个很容易踩的坑:审计策略的rule顺序是从上到下匹配,命中了第一个就不再往下走。所以更具体的规则要放在前面,宽泛的规则放在后面,否则会被宽泛规则“吞掉”导致日志缺失。
运行时安全主要是Falco。考试会给你一个Falco规则文件,要求将特定行为(比如读取敏感文件、创建特权容器)配置为告警或阻断。需要掌握规则文件的结构(rules、condition、output、priority)和Falco运行方式。实际考试中经常是“检查Falco是否正常运行、是否加载了指定规则、输出日志是否正确”。做一个小题的完整流程是:写规则文件、用falco -r加载、模拟触发行为、查看/var/log/falco_events.log。我建议在备考环境里反复练习Falco的配置和触发验证,因为评分时不仅看你配置文件写了没有,还会检查日志里有没有对应的告警记录。
2.3 学习路线图与时间安排
按每天2小时计算,我推荐的备考周期是8~10周,具体安排如下:
| 周次 | 学习内容 | 目标 |
|---|---|---|
| 第1周 | Cluster Hardening(RBAC、TLS、kubelet安全) | 能独立完成全部加固操作 |
| 第2周 | System Hardening(AppArmor、seccomp、sysctl) | 能在节点上加载profile并部署Pod |
| 第3~4周 | 微服务漏洞最小化(PSS、NetworkPolicy) | 能独立编写复杂的NetworkPolicy |
| 第5~6周 | 供应链安全(镜像签名、准入控制) | 能配置ImagePolicyWebhook并验证拦截效果 |
| 第7~8周 | 监控审计与运行时安全(审计策略、Falco) | 能编写审计策略并验证日志输出 |
| 第9~10周 | 模拟题+错题回顾 | 每周至少2套完整模拟题 |
这个计划的前题是你已经有CKA基础。如果还没考CKA,需要在前面加4周CKA备考时间,因为CKA的核心知识点(etcd备份、Pod调度、网络策略基础、ingress)是CKS的前提条件,尤其是etcd备份恢复,CKS不直接考,但如果你不会,集群搞坏了没法快速恢复,后面的题全废了。
3. 实操环境搭建与模拟题训练
3.1 kubeadm搭建本地练习集群
CKS备考不能只看视频,必须动手,第一件事就是搞定练习环境。我的建议是用kubeadm在本地搭一个单节点集群,版本选1.30或1.31,和2026年考试版本对齐。用KinD或minikube虽然启动快,但很多加固操作(比如改kube-apiserver参数、配置审计策略、加载AppArmor profile)在容器化环境里做起来很别扭,和真实考试环境差距大。
以kubeadm初始化为例,核心命令很简单:
kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.30.0初始化过程会触发系统检查(preflight),常见报错是CRI未配置或端口被占用。kubeadm执行时会输出类似[init] using kubernetes version: v1.30.0和[preflight] running pre-flight checks这样的日志,如果卡在preflight阶段,优先排查容器运行时是否正常,以及kubelet服务是否启动。我在1.26版本上踩过一次坑,containerd的config.toml里SystemdCgroup没改成true,导致preflight过了但kubelet起不来。1.30版本对CRI的检测更严格,直接用crictl info检查运行时状态是最快的定位方式。
集群装好后,按考试场景准备三个独立命名空间:dev、prod、security,把所有练习题分别放在不同命名空间里,模拟考试隔离环境。
3.2 一套题目反复练三遍的方法
很多人的刷题方式是做一遍、对答案、下一套,这样效率其实很低。我的刷题节奏是“一套题做三遍,每遍目标不同”:
第一遍是完整模拟:卡时间、不看任何资料、全程录屏。做完后对照评分标准逐题检查,记录失分点。这一遍的主要目的是摸底,发现自己哪里不会。
第二遍是专题精练:把整套题拆解成独立的知识点,逐个搞清楚背后的原理。比如RBAC题目做错了,就回去重新复习Role、ClusterRole、RoleBinding、ClusterRoleBinding的适用场景,再自己设计几个变体题练手。
第三遍是提速训练:考试时间只有120分钟,最后一题做不完是很常见的现象。第三遍的目标是把每道题的完成时间压缩到50%以下,特别是NetworkPolicy、Falco这类操作繁琐的题,形成肌肉记忆。
刷题时我建议准备一个错题本,按“题目场景-我的答案-正确做法-错误原因”四个字段记录。最后一周翻错题本的收益比做新题高得多。
3.3 killer.sh 模拟题的使用技巧
killer.sh是目前最接近真实考试难度的模拟平台,做了官方认证,提供25道左右模拟题和两个练习集群。价格不贵,通常送2次考试模拟机会,每次模拟环境保留12小时左右。
用killer.sh有两点经验:第一,第一次做模拟题时,别太在意分数,killer.sh的题目难度略高于真实考试,目的在于让你暴露弱点;第二,在12小时的保留期内,做完题之后不要立刻退出,尽快重做错题,趁环境还在把相关命令敲一遍。这12小时是密集练习的黄金时间,比花钱报培训班值多了。至于“考试当天要不要买一次killer.sh当热身”,经济条件允许的话我建议买,提前一小时进入做题状态可以明显降低紧张感。
4. 高频踩坑与考场注意事项
4.1 环境类问题速查表
考试过程中最容易让人崩溃的不是题难,而是环境出问题。下面是高频环境问题和对应的处理方案:
| 问题 | 原因 | 解决方法 |
|---|---|---|
| kubectl提示没有权限 | kubeconfig的context未切换 | 运行kubectl config get-contexts并切换 |
| 节点NotReady | CNI网络插件缺失或异常 | 检查coredns、kube-flannel的状态并重新部署 |
| kube-apiserver配置修改后不生效 | 静态Pod没有重启或配置文件语法错误 | 用crictl ps查看容器状态,kubectl -n kube-system logs查看错误 |
| 审计日志文件为空 | 审计策略中rule未匹配到操作 | 检查规则顺序、verbs、resources写是否正确 |
| 创建Pod一直Pending | 资源不足或调度约束 | kubectl describe pod查看事件 |
考试两道题共用同一个集群,有些操作会影响集群全局,比如修改kubelet配置后导致节点NotReady,后面所有题都受影响。我的做法是每一道题操作完成后,如果涉及全局配置改动,立刻用快照功能存档。考试平台有快照功能,但我建议不要过度依赖,因为恢复快照会浪费宝贵的考试时间。更靠谱的办法是操作前先备份原始配置文件,比如修改静态Pod YAML前先cp -r一份到/tmp。
4.2 题目陷阱与失分点复盘
总结多次模拟和真实考试的失分点,这几个坑最典型:
RBAC题里apiGroups字段写错。apps组、extensions组、空字符串(core组)分别对应不同的资源。很多人把deployments写在apps组的RBAC规则里却写了core组的apiGroup,结果权限不生效。记住:Deployment、ReplicaSet属于apps组,Pod、Service、ConfigMap属于core组(apiGroups留空或者写"")。
NetworkPolicy的policyTypes字段漏写。如果你只写了ingress规则但没声明policyTypes: [Ingress],策略会默认只匹配ingress,导致egress部分不生效。反过来也一样。这个字段看似简单,但影响很大,漏写就是整题零分。
AppArmor profile未加载就创建Pod。很多人在节点上放好了profile文件,但是忘记执行apparmor_parser加载步骤,导致Pod一直报CreateContainerConfigError。考试中这类题目必须验证Pod能正常运行,而不是只提交YAML就完事。
关于Falco的output字段:规则文件里output的引号、逗号格式不正确会导致Falco启动失败。写完后先运行falco -r <rule-file> -t测试语法,再确认日志输出。
4.3 时间分配与答题顺序建议
120分钟考试、17道题,平均每题7分钟,但实际难度差异很大。我的策略是:先花3分钟通读所有题目,标记出“一眼能拿分”的简单题(比如RBAC、NetworkPolicy基础题)和“明显烧时间”的难题(比如ImagePolicyWebhook、审计策略配置)。答题顺序按“先简单、后困难”推进,把难题留在最后,避免在一道题上耗太久导致后面会做的题没时间。
简单题要快但别飘。RBAC题做得快,容易漏看命名空间;NetworkPolicy题做得快,容易漏看方向(ingress还是egress)。我的经验是每做完一题,花30秒把题目描述重新扫一遍,和实际的操作对比确认没有遗漏。
对于选择题,我的建议是控制在1分钟内,不需要做额外验证,直接判断。知识题不能像实操题那样“操作去验证”,全凭平时积累,这也是为什么我在第二部分反复强调要单独记忆理论点。
考试结束前15分钟,不管还有没有题没做完,先检查每一个已提交的题,确认以下事项:kubectl命令执行成功、YAML文件没有明显缩进错误、Pod处于Running状态。最后的检查往往能救回2~3分。我就有一次发现某个题里的Pod还是ContainerCreating状态,原来是镜像名敲错了一个字母,改完就Running了,这几分要是丢了很可能就67分以下。
5. 从备考到通过的个人心得
我考CKS最大的感受是:这个考试不是考你“会不会用Kubernetes”,而是考你“有没有安全直觉和排障能力”。很多工程师日常工作里用Kubernetes只用到部署和排障,很少会主动给集群加审计策略、给Pod加seccomp约束。备考CKS的过程,本质上是逼自己从“能用”的思维升级到“安全可用”的思维。
如果你现在还在犹豫要不要考CKS,我给一个简单的判断标准:如果你的日常工作中需要接触多租户集群、需要为不同团队分配权限、需要应对外部安全审计,CKS直接对标这些需求,考下来对工作有帮助;如果只是单纯想多一个证书,CKS的性价比不如CKA高,因为它的学习曲线陡峭、考试要投入大量时间练习,而且有效期只有3年,不维持的话证书是会过期的。
最后分享一个实操技巧:在备考环境里把每个安全域的“标准答案”存成YAML模板,放到/root/templates/目录。比如NetworkPolicy模板、AppArmor profile模板、ImagePolicyWebhook的admission配置模板。考试的时候虽然不能访问外部文件,但这些模板一旦背熟,敲命令的速度会快很多,遇到类似场景直接改几个字段就行。这个习惯让我在考试里至少省了15分钟。备考不追求题量,追求的是把每一类题目的标准操作流程刻进肌肉记忆,考试时才能稳。