首页
/ Kubernetes v1.8 发布说明深度解读:版本能力全景、升级避坑与实践指南

Kubernetes v1.8 发布说明深度解读:版本能力全景、升级避坑与实践指南

2026-09-06 18:23:23作者:咎岭娴Homer

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。每个版本条目都遵循相同模板:

  • Downloadskubernetes.tar.gzkubernetes-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/v2beta1API 形态不变,但必须把现有 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 编码;
  • 审计策略文件缺少 apiVersionkind 字段将被视为非法;
  • 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 被删除

  • CronJobbatch/v1beta1 默认启用;v2alpha1 需显式开启且已被弃用;
  • 若继续使用弃用版本滚动升级可能遇到 Resource Not Found 错误(新控制器在滚动期间会查找新版本对象);
  • batch/v2alpha1.ScheduledJob 被整体移除,改用 batch/v1beta1.CronJob。当前仓库 batch/v1beta1/types.go 即该对象形态。

9. 部分 alpha API 默认关闭

rbac/v1alpha1settings/v1alpha1scheduling/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 分组,全部"意图在未来移除":

  • Appsextensions/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-providerauto-detect 行为弃用(仅 GCE/AWS/Azure 有效,v1.9 默认变空字符串,推荐 --cloud-provider=external 使用树外云厂商);apiserver 的 PersistentVolumeLabel 准入控制器弃用(改由带 PersistentVolumeLabel 控制器的 cloud-controller-manager 承担)。
  • OpenStackkube-upopenstack-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-uninitializedcronjobs.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 priorityPriorityClass 创建(新增 scheduling API group 承载 PriorityClass,见当前仓库 scheduling/v1/types.go);
  • 支持基于优先级的 Pod 抢占(preemption)
  • 支持按节点条件添加污点(如 node.kubernetes.io/network-unavailablenode.kubernetes.io/disk-pressurenode.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 GArbac.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-info ConfigMap)。
  • 自托管(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 0kubeadm 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)APIListChunking feature gate 控制(默认关闭,v1.9 默认启用)。客户端指定 limit,若结果未尽则返回 continue token,可反复续拉直至取完;服务端因此大幅降低大 LIST 的内存/CPU 消耗。
  • CRD 校验(alpha)CustomResourceValidation feature 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 特性需显式 Initializers feature 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 内置 kubernetes service 指向、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=false feature 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 的 mountOptionsreclaimPolicy 等字段定义;
  • core/v1/types.go:PV/PVC、Pod 的 PriorityClassNameemptyDir 等核心对象,其中相当一部分 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 → 后续版本这条漫长的演进通道。

登录后查看全文
热门项目推荐
相关项目推荐