Kubernetes v1.8 发布说明深度解读:版本能力全景、升级避坑与实践指南
Kubernetes 1.8(本仓库官方发布线 v1.8.0 ~ v1.8.15)是该项目的"生产级容器调度与管理"能力的重要里程碑:工作负载 API 全面迁移到 apps/v1beta2、RBAC 正式 GA、审计进入 beta、调度引入优先级与抢占、网络策略支持出口规则与 CIDR、kube-proxy 新增 IPVS 模式,同时 kubeadm 得到大规模升级能力增强。本文以 CHANGELOG/CHANGELOG-1.8.md 为骨架,逐层还原该版本的 Major Themes、升级前必读、已知问题、弃用清单与全部 Notable Features,并结合当前仓库源码给出可验证的注解,帮助你完成一次安全、无痛且可追溯的 v1.8 升级,或快速理解 1.8 时代遗留在现代代码库中的 API 与行为语义。
版本线与发布说明的组织方式
仓库将 v1.8 的完整发布轨迹沉淀在一个文件中:CHANGELOG/CHANGELOG-1.8.md,时间线从 v1.8.0-alpha.1 一路延伸到维护期的 v1.8.15。每个版本条目都遵循相同模板:
- Downloads:
kubernetes.tar.gz、kubernetes-src.tar.gz以及 Client / Server / Node 三组二进制,并给出对应 sha256 校验值;这也是官方发布包安全校验的标准做法。 - Changelog since <上一版本>:细分
Action Required(升级前必须处理的破坏性变更)与Other notable changes(其他值得关注的修复与改进)。
v1.8.0 正式版在此基础上额外追加了七类叙述性内容,是全文档的"正文灵魂":Introduction、按 Special Interest Group(SIG)划分的 Major Themes、Before Upgrading、Known Issues、Deprecations、Notable Features、External Dependencies。理解 v1.8 的正确姿势是先读这一整段"正文",再回到各 patch 版本看增量修复。
v1.8 各 SIG 的工作主题总览
Kubernetes 由社区按 SIG 协作开发,v1.8 的每个 SIG 都明确了本版本的指导主题:
| SIG | v1.8 关注点 |
|---|---|
| API Machinery | 稳定性与生态使能:大 LIST 分块读取(chunking)、自定义 API Server / CRD 定制能力、客户端事件去噪 |
| Apps | 工作负载 API 迁入新的 apps/v1beta2 group/version(DaemonSet/Deployment/ReplicaSet/StatefulSet) |
| Auth | 稳定既有特性:RBAC 从 beta 到 v1,高级审计(Advanced auditing)从 alpha 到 beta,静态加密保持在 alpha 并探索外部 KMS |
| Autoscaling | 稳定支持自定义指标的 HPA 新 API、Cluster Autoscaler 性能与错误上报改进 |
| Cluster Lifecycle | 扩展 kubeadm:新增 upgrade 命令、控制平面自托管(self-hosting,alpha) |
| Instrumentation | 支撑新 HPA API 的 resource metrics / custom metrics API 与 metrics-server |
| Multi-cluster(原 Federation) | 扩充 Cluster Federation 原语、筹备 GA |
| Node | 覆盖数据类/深度学习等敏感负载,交付节点可靠性增量改进 |
| Network | NetworkPolicy 出口(egress)策略与 CIDR 匹配(beta);kube-proxy 新增 alpha IPVS 模式 |
| Scalability | 在 CI 中自动化大规模集群测试,定义 SLI/SLO 与规模化阈值文档 |
| Scheduling | 引入 Pod 优先级与抢占(alpha),改进调度内部 API 供外部调度器复用 |
| Storage | 存储 API 扩展:卷扩容与快照(alpha)、临时存储 requests/limits、mount options、更多指标、Flex 驱动部署优化 |
升级前必读(Before Upgrading)
v1.8 是一次"破坏性变更较多"的版本。从 v1.7 升级前必须逐条核对以下变化,这正是该文档最具操作价值的部分。
1. Kubelet 默认拒绝开启 swap 的节点
v1.8 起 kubelet 在节点启用了 swap(/proc/swaps 存在)时直接失败。如需保留旧行为可设置 --fail-swap-on=false;实验性标志 --experimental-fail-swap-on 在本版本被弃用,未来版本将移除。这也解释了后续 1.8.x 补丁中 kubeadm 在 swap 开启时会于 preflight 检查阶段直接报错的设计(见 v1.8.4)。
2. autoscaling API 升级路径:v2alpha1 → v2beta1
HPA 所在的 autoscaling/v2alpha1 API 提升为 autoscaling/v2beta1,API 形态不变,但必须把现有 HorizontalPodAutoscaler 资源迁移到 autoscaling/v2beta1,才能持久保存 v2alpha1 中引入的变更——包括 status conditions、基于内存与自定义指标扩缩容。当前仓库源码中 autoscaling/v2/types.go 即为该演进线在现仓库中的延续版本。
3. Metrics API 改名与升级
custom-metrics.metrics.k8s.io(v1alpha1)→custom.metrics.k8s.io(v1beta1)metrics(v1alpha1)→metrics.k8s.io(v1beta1)
若已部署 custom metrics adapter,必须确保其支持新 API 版本;若以聚合 API Server 模式部署 Heapster,需升级 Heapster。
4. 高级审计(Advanced Auditing)成为默认机制(v1beta1)
默认启用后带来四条行为变化:
--audit-policy-file成为必填项,除非显式--feature-gates=AdvancedAuditing=false;- 审计日志文件默认使用 JSON 编码;
- 审计策略文件缺少
apiVersion或kind字段将被视为非法; - webhook 与日志文件输出
v1beta1事件格式。
5. ThirdPartyResource(TPR)API 正式移除
ThirdPartyResource(TPR)在 v1.8 被删除,升级前必须将 TPR 数据迁移到 CustomResourceDefinition(CRD),否则数据会丢失。这正是 v1.8.0-alpha.2 中“TPR removed”Action Required 的最终落地,也标志 CRD 成为 Kubernetes 声明式扩展的官方标准形态。
6. 被删除的过时命令行标志
kube-controller-manager:--replication-controller-lookup-cache-size、--replicaset-lookup-cache-size、--daemonset-lookup-cache-size。
kubelet:--api-servers(改用 kubeconfig 文件指定 apiserver 地址)。
文档给出原则:使用已弃用标志只会打印警告;使用已移除标志则直接导致进程启动中止。
7. StatefulSet 的 initialized 注解失效
pod.alpha.kubernetes.io/initialized 注解被忽略。此前用 false 强制"休眠"的 StatefulSet 在升级后可能被激活,需提前评估线上影响。
8. CronJob 默认启用 v1beta1,ScheduledJob 被删除
CronJob在batch/v1beta1默认启用;v2alpha1需显式开启且已被弃用;- 若继续使用弃用版本滚动升级可能遇到 Resource Not Found 错误(新控制器在滚动期间会查找新版本对象);
batch/v2alpha1.ScheduledJob被整体移除,改用batch/v1beta1.CronJob。当前仓库 batch/v1beta1/types.go 即该对象形态。
9. 部分 alpha API 默认关闭
rbac/v1alpha1、settings/v1alpha1、scheduling/v1alpha1 默认禁用,需要显式通过 apiserver --runtime-config 打开(例如 --runtime-config="rbac.authorization.k8s.io/v1alpha1,settings.k8s.io/v1alpha1")。
10. system:node 角色不再自动授予 system:nodes 组
新集群不再默认把拥有秘密/配置只读权限的 system:node 角色授予 system:nodes 组。建议改用 Node 授权模式(--authorization-mode=Node,RBAC)授权节点;确实需要旧行为的安装方须自行创建 ClusterRoleBinding。
已知问题(Known Issues)
升级后可能踩到的坑全部在此汇总:
- TLS 引导/证书轮换目录易失:使用
--bootstrap-kubeconfig或--rotate-certificates的 kubelet,证书默认存于/var/run/kubernetes,部分平台重启即被清空,导致 kubelet 重启后无法向 API Server 认证。建议显式设置--cert-dir=/var/lib/kubelet/pki(v1.8.1 起该目录成为默认值,正是为此修复)。 - kubeadm 安装误报
/var/lib/kubelet is not empty:仅当这是唯一 preflight 失败时可安全使用--skip-preflight-checks跳过。 - 大规模同时删 Pod 的性能问题:数百节点同时删除数千 Pod 时,delete pod API 延迟可能超过 1 秒 SLO(issue #51899),该场景下建议等待修复后再升级;v1.8.1 通过"主动删除已删除 Pod 的容器并批量聚合删除请求"缓解了此问题。
- 审计日志性能影响:AdvancedAuditing 默认开启 + JSON 日志后端 + 审计策略记录大请求时,可能影响 apiserver 吞吐与延迟。
- minikube ≤0.22.2 与 kubectl ≥1.8 不兼容:新版 kubectl 强制校验 OpenAPI schema,而 minikube API Server 未注册全部已知类型。
- GCE 的
ENABLE_APISERVER_BASIC_AUDIT已损坏且被弃用。 kubectl set系列对 ReplicaSet/DaemonSet 偶发版本错误:涉及 set image / env / resources / serviceaccounts。- 对象配额(object count quota)计费不一致:未初始化对象有时不计入配额(issue #53109),留待后续版本修复。
弃用清单(Deprecations)速查
按 SIG 分组,全部"意图在未来移除":
- Apps:
extensions/v1beta1的 Deployment.spec.rollbackTo弃用;kubernetes.io/created-by注解弃用(v1.9 移除,改由 ControllerRef 判定归属);batch/v2alpha1.CronJob弃用;ScheduledJob 移除。 - Auth:RBAC v1alpha1 弃用(用 RBAC v1);apiserver 标志
--experimental-bootstrap-token-auth弃用(改--enable-bootstrap-token-auth,v1.9 移除)。 - Autoscaling:直接从 Heapster 消费指标弃用,改为经聚合的 resource metrics API 消费;v1.8 需
--horizontal-pod-autoscaler-use-rest-clients=true显式开启,v1.9 起默认开启。 - Cluster Lifecycle:kubelet
--cloud-provider的auto-detect行为弃用(仅 GCE/AWS/Azure 有效,v1.9 默认变空字符串,推荐--cloud-provider=external使用树外云厂商);apiserver 的PersistentVolumeLabel准入控制器弃用(改由带PersistentVolumeLabel控制器的cloud-controller-manager承担)。 - OpenStack:
kube-up的openstack-heat提供者弃用。 - Scheduling:Opaque Integer Resources(OIR)弃用(v1.9 移除),用
kubernetes.io/域外的完全限定名 Extended Resources(ER)平替。
重点特性(Notable Features)逐项解析
工作负载 API:apps/v1beta2 正式落地
v1.8 引入 apps/v1beta2 group/version,集中承载 DaemonSet、Deployment、ReplicaSet、StatefulSet 四类 kind,并计划在后续版本整体迁入 v1。当前仓库的 apps/v1beta2/types.go 完整保留着这代 API 的对象定义。需要注意的行为与默认值变化:
- 新增对象:StatefulSet 增加 Scale 子资源;所有 kind 增加对应的 conditions kind;Deployment、StatefulSet、ControllerRevision 迁入此 group(ReplicaSet 亦在 alpha.3 阶段加入)。
- selector 必须显式声明:
spec.selector不再提供默认值(与kubectl apply/strategic merge patch 不兼容),且 selector 与spec.template标签不匹配的对象非法。 - selector 不可变:apps/v1beta2 下所有 kind 禁止变更 selector(控制器无法一致处理 selector 变更);需要可变 selector 的旧代码可继续调用 apps/v1beta1,但应尽快迁移。
- 默认值调整:StatefulSet/DaemonSet 默认
spec.updateStrategy为 RollingUpdate;所有适用 kind 的spec.revisionHistoryLimit默认 10(Deployment 默认值也提升到 10);CronJob 的spec.successfulJobsHistoryLimit默认 3、spec.failedJobsHistoryLimit默认 1。
同时文档明确建议所有新代码直接面向 apps/v1beta2 开发,extensions/v1beta1 与 apps/v1beta1 中的旧 kind 仅作兼容保留。
batch:CronJob 晋级 v1beta1,Job 新增失败策略
- CronJob 正式位于
batch/v1beta1(前身batch/v2alpha1.CronJob弃用、ScheduledJob 删除)。 - Job 新增
.spec.backoffLimit失败策略字段,默认值 6;配合"失败 Pod 上限"控制重试行为。 - Job 控制器改为分批创建 Pod,而非一次性全部创建(配合
--leader-elect=false场景下的 GC/配额修复,避免在配额拒绝时僵死)。 ActiveDeadlineSeconds得到正确、及时的强制(控制器会唤醒检查而非等待)。
kubectl CLI 变化集
- 插件机制(alpha):二进制插件扩展默认命令集;支持插件树与导出环境变量供插件读取 namespace、全局 flag、插件描述与调用方路径。
kubectl rollout/rollback支持 StatefulSet;kubectl scale对 apps/v1beta2 的 kind 走 Scale 子资源。kubectl create configmap|secret新增--append-hash(按内容生成确定性的短 hash 命名)。kubectl run新增--serviceaccount;--env不再支持 CSV 解析(用--env ONE=1 --env TWO=2)。kubectl proxy正确处理exec/attach/portforward,需加--disable-filter。- 新增大批对象的
--include-uninitialized;cronjobs.batch进入 "all"(kubectl get all可见)。 - 新增
kubectl auth reconcile -f FILE:对 RBAC 角色做规则的逻辑 cover 计算并补齐缺失规则(比 JSON merge 更安全)。 kubectl delete不再先缩容工作负载对象再删除;依赖 StatefulSet 有序终止的用户须先kubectl scale。- 移除
kubectl stop(以及一批历史命令别名 apiversions/clusterinfo/resize/rollingupdate/run-container/update)。 - 校验从 Swagger 1.2 切换到 OpenAPI schema(不支持 OpenAPI 时回退 Swagger),并对 OpenAPI 启用 http 缓存(
--cache-dir,空字符串禁用)。 - 新增 kubectl 德语、意大利语、简体中文等翻译。
调度:Pod 优先级与抢占(alpha)
v1.8 把"共享集群"推进了一大步:
- 支持 Pod priority 与 PriorityClass 创建(新增
schedulingAPI group 承载 PriorityClass,见当前仓库 scheduling/v1/types.go); - 支持基于优先级的 Pod 抢占(preemption);
- 支持按节点条件添加污点(如
node.kubernetes.io/network-unavailable、node.kubernetes.io/disk-pressure、node.kubernetes.io/memory-pressure等添加:NoSchedule污点); - 新增
CheckNodeCondition谓词取代旧的节点条件过滤,调度失败原因会上报 NetworkUnavailable/OutOfDisk/NotReady; - 调度器新增等价类缓存、修复多处调度缓存 panic 与 "Schedulercache is corrupted"、以及 pod affinity 遇到节点已删除的卡死问题;
- 调度器使用独立 client 进行 leader election,避免被常规调度操作饿死。
存储与卷
stable 级别的新能力:
- Mount options:PV spec 新增
MountOptions字段(取代旧注解),StorageClass spec 同样新增MountOptions以便动态供给卷携带挂载选项; - RWO 卷的 Attach/Detach 支持 iSCSI 与 Fibre Channel;
- 暴露存储使用指标与卷插件操作指标(mount/unmount/attach/detach/provision/delete 的成功率与耗时);
- PV spec 对 Azure File/CephFS/iSCSI/GlusterFS 改为引用命名空间内资源;iSCSI 可自定义 initiator 名称,FC 卷可用 WWID 作为卷标识;
- StorageClass 支持配置
reclaimPolicy(不再默认 delete)。
alpha 级别的新能力:卷扩容(仅 Gluster、仅增大底层卷不扩文件系统)、ephemeral-storage 本地临时存储的 requests/limits 与节点 allocatable 预留、VolumeMount.Propagation 挂载传播(Bidirectional)、Flex 驱动的免重启动态发现与示例 DaemonSet、emptyDir sizeLimit。
prototype:卷快照(不含 quiescing,快照可能不一致;核心外部实现见 external-storage)。
节点组件与 CRI
- HPA 自定义指标支持进入 v1beta1;metrics-server 成为 resource metrics API 的推荐实现(
addon方式部署,替代 Heapster 在默认监控管线中的角色)。 - Cluster Autoscaler GA:集群支持规模提升到 1000 节点;尊重最长 10 分钟的优雅 Pod 终止;处理 zone 缺货与失败;改进监控与错误上报。
- CRI 生态:新增 CRI 校验测试套件与命令行工具(alpha);cri-o(OCI 运行时 CRI 实现)与 frakti v1.1 达 stable;cri-containerd v1.0.0-alpha.0 功能完备并通过全部 CRI 校验。
- kubelet:新增 CPU manager(alpha,容器级 CPU 亲和策略)、hugepages 资源(alpha)、动态 kubelet 配置(alpha)、硬件设备插件 API(alpha);cAdvisor 升级 v0.27.1。
- 行为默认值:Pod 内容器间共享 PID namespace 默认关闭(节点级可用
--docker-disable-shared-pid=false开启,要求 Docker ≥ 1.13.1);/metrics与/metrics/cadvisor拆分采集端点。
认证授权(Auth)
- RBAC GA:
rbac.authorization.k8s.io/v1beta1无变化提升为 v1,见当前仓库 rbac/v1/types.go。 - 高级审计 beta:新增 subresource 与资源名匹配(注意顶层资源不再匹配子资源,例如 "pods" 不再匹配 "pods/logs",须显式写 "pods/logs");支持记录失败登录、省略 Event 阶段;输出
Audit-Id响应头;正确上报伪装(impersonation)用户信息。 - kubelet 证书轮换 beta:证书轮换后主动关闭到 apiserver 的连接以强制用新证书握手。
- SelfSubjectRulesReview beta:让用户查询自己在某命名空间可执行的 action,支撑 UI 显隐与权限自省。
- KMS 加密 alpha:静态加密支持把资源加密密钥存到外部 Key Management System,新增 Google Cloud KMS 插件。
- NodeRestriction 准入:允许节点驱逐绑定到自身的 Pod。
- Websocket 认证:可在 websocket 子协议携带
base64url.bearer.authorization.k8s.io.<token>完成认证。 - OIDC 前缀:
--oidc-username-prefix/--oidc-groups-prefix可自定义或省略前缀。 - PSP 可为 hostPath 卷白名单化允许路径(路径前缀),
allowedCapabilities支持*。
集群生命周期(kubeadm / kops)
- kubeadm upgrade(beta):
kubeadm upgrade plan检查可升级性,kubeadm upgrade apply执行升级;并引入kubeadm config管理 init 时使用的配置(上传到 kube-public 的cluster-infoConfigMap)。 - 自托管(alpha):
kubeadm init --feature-gates=SelfHosting=true创建实验性自托管控制平面(作者注明 v1.9 将默认自托管);TLS 证书可存为 secrets 或常规主机挂载。 - phase 子命令(alpha):
kubeadm alpha phase细粒度执行 init 的各个子任务(kubeconfig、certificates、controlplane、addons 等阶段),便于 kops/GKE 等上层工具集成。 - bootstrap token 安全收紧:默认 TTL 从无限改为 24 小时(
kubeadm init --token-ttl 0或kubeadm token create --ttl 0保留旧行为);kubeadm join把 TLS 引导委托给 kubelet 自身并写/etc/kubernetes/bootstrap-kubelet.conf;支持--discovery-token-ca-cert-hash增强 token 发现校验;支持外部 CA(私钥永不进入集群);init/join 均新增--node-name;init 配置上传 ConfigMap 便于升级。 - kops:GCE 支持 beta,bare metal 与 server 模式 alpha。
- 多平台:conformance e2e 在 arm/arm64/ppc64le 通过(alpha)。
网络
- NetworkPolicy(networking.k8s.io/v1):由 extensions/v1beta1 迁入独立 API group 并升到 v1(结构不变,见当前仓库 networking/v1/types.go);命名空间级
net.beta.kubernetes.io/network-policy隔离注解删除,改为 Pod 级隔离语义;1.8 内新增 egress rules(beta) 与 CIDR(IPBlock)匹配(beta);NetworkPolicy spec 现在可原地更新。 - kube-proxy IPVS 模式(alpha):在 iptables/userspace 之外新增 IPVS 支持,配套 conntrack 调优与
--write-config-to等新标志。 - GCE 侧 Service 支持 Network Tiers(alpha)、内部 LB IP 预留等大量云提供商修复。
API Machinery
- LIST 分块(alpha):
APIListChunkingfeature gate 控制(默认关闭,v1.9 默认启用)。客户端指定 limit,若结果未尽则返回 continue token,可反复续拉直至取完;服务端因此大幅降低大 LIST 的内存/CPU 消耗。 - CRD 校验(alpha):
CustomResourceValidationfeature gate 开启后,CRD spec 可携带 JSON schema 对自定义对象做服务端校验。 - GC 支持自定义 API:垃圾收集器现在可管理经 CRD / 聚合 API Server 添加的自定义资源(控制器周期性刷新,API 加入后约 30 秒内开始纳管);CRD 支持 metadata.generation 与 spec/status 拆分,finalizers 在自定义资源上得到尊重。
- Prometheus 指标:
apiserver_request_*将 WATCHLIST 计为 WATCH verb,并新增scope标签(cluster/resource/namespace)。 - Go Client:支持事件客户端去噪(client-side event spam filtering)。
- 动态准入控制:Pod spec 在未初始化时可修改(status 不可改);Initializers 特性需显式
Initializersfeature gate;metadata.initializers.pending[x].name校验收紧(至少三段、点分隔);webhook 准入跨网络可用,服务器证书 CN 必须为服务 DNS 名<service.Name>.<service.Namespace>.svc。 - 修复 APIService 自动注册对 HA 滚动重启的影响、watch cache 初始化丢事件、etcd healthcheck 竞态 panic、并发 GET/LIST(非空 resourceVersion)时 apiserver panic 等问题。
外部依赖:Docker 版本矩阵与已知问题
v1.8 CI 使用并验证了 Docker 1.11.2 / 1.12.6 / 1.13.1 / 17.03.2:
- 1.13.1 与 17.03.2:验证了共享 PID namespace、live-restore、overlay2。已知问题:默认 iptables FORWARD 策略从 ACCEPT 改为 DROP 导致容器出网默认不通(须按 issue #40182 的处理方法修复);不再支持 v1 registry。
- 1.12.6:overlay2 与 live-restore 未验证;共享 PID namespace 工作异常;Docker 上报容器退出码错误。
- 1.11.2:Debian Jessie 上 Aufs 驱动可能内核崩溃(可用 node problem detector 识别);init/control 文件描述符泄漏;单容器额外内存开销;短时间反复终止 Docker 可能泄漏进程。
Patch 维护线:v1.8.1 至 v1.8.15 关键修复
v1.8 正式发布后经历 15 个补丁版本。梳理这些版本的 Action Required 与高频修复主题,能直接指导你在既有 1.8 集群上判断升级必要性:
升级前必处理(Action Required)汇总
- v1.8.1:PodSecurityPolicy 兼容性回归——1.8.0 因
allowPrivilegeEscalation默认值错误导致先前允许特权 Pod 的策略开始拒绝;在 1.8.0 客户端/服务端上意图设置allowPrivilegeEscalation=false的策略对象须在升级到 1.8.1 后重新 apply。 - v1.8.11:从 1.7.14 / 1.8.9 / 1.9.4 原地升级节点时,使用 PVC + subPath 卷的 Pod 不支持原地升级,须先 drain 节点。
- v1.8.15:Kubernetes JSON 反序列化器恢复大小写敏感(以兼容 1.8 之前的服务端);配置文件里字段大小写写错的将变为非法。
高频修复主题(Other notable changes)
存储与卷
- subPath 只读挂载在 SELinux 及容器镜像内已存在挂载路径时的修复(v1.8.14/1.8.13/1.8.10);subPath 挂载 Unix socket 等特殊文件;嵌套数据卷(secret/configmap 等)。
- Azure:磁盘设备名变更导致不可用(v1.8.7/1.8.11,含重挂载逻辑);带分区磁盘数据丢失;磁盘存储账户初始化;PVC 创建失败错误信息;健康探针 name+ports 双重校验;Windows 挂载与重启后文件插件失效;默认文件/目录 mode 改 0755;GRS/RAGRS 存储账户类型支持(v1.8.5);外部资源组支持(v1.8.15)。
- vSphere:无法删除存储类指定 datastore 中供给的卷;datastore 名称绝对化;多节点卷挂载。
- GlusterFS/NFS 断连时正确 umount、stale handle 处理;Portworx 传参、PVC 卡 ContainerCreating、控制器 crash。
- ScaleIO:支持跨命名空间 secret(
secretNamespace存储类参数)、去掉 drv_cfg 依赖以支持容器化 kubelet、StoragePool/ProtectionDomain 不再默认default。
DNS / 网络 / 集群
- kube-dns 升级 1.14.9 / 1.14.10:修复未与 apiserver 同步时返回 NXDOMAIN、externalName 空记录与 PTR 查询、upstreamNameserver 端口校验(v1.8.11/1.8.12);新增
--no-negcache关闭 NXDOMAIN 缓存(v1.8.15)。 - GCE:内部 LB 后端过时实例组链接、ILB 在自动网络上用旧子网、ServiceController 节点同步竞态、多 master 内置
kubernetesservice 指向、iptables masquerade 规则被清、etcd 迁移工具参数传递(HA 升/降级)。 - kubelet 与 apiserver 网络中断后 Node 状态更新卡死、dokcer 查询超时导致节点无限 NotReady、
--http2-max-streams-per-connection(聚合 API Server 默认 1000)。
控制器与调度器
- 高并发创建/删除带 tolerations 的 Pod 时 controller-manager 内存泄漏(v1.8.15);GC 进入需重启才能恢复的坏状态(v1.8.11);调度器缓存 panic 与 affinity Pod 卡 creating(v1.8.5);cpumanager 双重 RLock(v1.8.13)。
- 事件写入速率过高拖慢 etcd 的规模化问题(v1.8.15,事件聚合/去噪手段配套)。
安全与合规
- v1.8.9 修复 CVE-2017-1002101;secret/configMap/downwardAPI/projected 卷默认改为只读挂载(到 v1.11 前可用
ReadOnlyAPIDataVolumes=falsefeature gate 保留旧行为);加密 key 与 provider 轮换修复;NodeRestriction 相关授权。
监控与观测
- 大批 addon 组件版本更新(metrics-server、dashboard、heapster、prometheus-to-sd、Calico 2.6.x、GLBC、cluster-autoscaler 1.0.1→1.0.6);新增 apiserver 在途请求与丢弃请求指标;新增证书剩余寿命指标;Metrics Server 暴露
/metrics端点;metrics API group 名称修正。
版本选型小结
若你维护 1.8 集群,至少要关注两条主线:v1.8.9 的安全修复(CVE-2017-1002101)与 API 数据卷只读化、v1.8.11 的 subPath 原地升级限制与 kube-dns/网络修复;v1.8.15 作为 1.8 末代补丁,集中了 JSON 解析兼容、控制器内存泄漏、etcd 高事件压力等收官修复。
在当前仓库中追踪 v1.8 的源码痕迹
虽然仓库主线已远远超出 1.8,但 1.8 引入的若干 API 与语义至今仍是代码骨架的一部分,可作为阅读入口:
- apps/v1beta2/types.go:v1.8 引入的工作负载 API 版本,selector 默认化与不可变等语义的源头;
- batch/v1beta1/types.go:CronJob 正式版对象,含
successfulJobsHistoryLimit/failedJobsHistoryLimit默认值; - rbac/v1/types.go:RBAC GA 后的角色/绑定对象;
- networking/v1/types.go:NetworkPolicy v1,egress 与 IPBlock 的载体;
- storage/v1/types.go:StorageClass 的
mountOptions、reclaimPolicy等字段定义; - core/v1/types.go:PV/PVC、Pod 的
PriorityClassName、emptyDir等核心对象,其中相当一部分 1.8 语义被沿用至今; - scheduling/v1/types.go:PriorityClass 对象(由 v1.8 的 scheduling API group 演进而来)。
阅读建议:对照本文"升级前必读"和"弃用清单",在源码中搜索对应字段的注释与校验逻辑,可快速理解 1.8 时代的设计决策如何在后续版本中被继承、修订或移除。
结语
Kubernetes v1.8 是一个"把上一轮 alpha 特性批量转正、同时坚决清理历史包袱"的版本:apps/v1beta2、RBAC v1、审计 v1beta1、Cluster Autoscaler GA、NetworkPolicy v1 一起定义了此后数年 API 的走向;而 TPR 移除、swap 默认拒绝、一堆过时标志的删除则让升级者必须严谨规划。无论你是要复现历史集群、撰写兼容性测试,还是阅读当代 Kubernetes 源码中那些"1.8 时代遗留"的字段与行为,CHANGELOG/CHANGELOG-1.8.md 都是最权威的第一手依据——把它与上文梳理的升级清单、弃用清单和补丁修复主线配合使用,即可安全穿越 1.7 → 1.8 → 后续版本这条漫长的演进通道。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0624
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00