揭秘Docker Rollout配置文件:99%开发者忽略的3个关键参数

产业园区如何高效对接企业技术需求与高校科研成果?.docx 科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。 立即下载

第一章:Docker Rollout配置文件的核心作用

Docker Rollout 配置文件是实现容器化应用自动化部署与版本控制的关键组件。它通过声明式语法定义服务的部署策略、副本数量、更新机制和健康检查规则,确保应用在不同环境中的一致性与可靠性。

配置文件的核心功能

  • 定义服务拓扑结构,包括容器镜像、端口映射和依赖关系
  • 设定滚动更新策略,支持逐步替换旧实例以降低停机风险
  • 集成健康检查机制,自动判断容器是否就绪并决定是否继续发布
典型配置示例
version: '3.8'
services:
  web-app:
    image: my-web-app:v1.2.0
    deploy:
      replicas: 6
      update_config:
        parallelism: 2
        delay: 10s
        order: start-first
      rollback_config:
        parallelism: 2
        delay: 10s
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
      interval: 30s
      timeout: 10s
      retries: 3

上述配置中,update_config 指定了每次更新两个容器,间隔10秒;rollback_config 定义了回滚策略,确保异常时可快速恢复;健康检查每30秒执行一次,连续失败三次则判定为不健康。

配置驱动的优势

优势说明
可重复性同一配置可在测试、预发、生产环境一致运行
版本追踪配置文件纳入Git管理,便于审计与回溯
自动化集成与CI/CD流水线无缝对接,实现一键发布
graph LR A[编写配置文件] --> B[构建镜像] B --> C[推送至仓库] C --> D[执行Rollout] D --> E{健康检查通过?} E -- 是 --> F[完成部署] E -- 否 --> G[触发回滚]

第二章:关键参数深度解析

2.1 理论剖析:replicaStrategy 参数的调度逻辑与高可用意义

调度策略核心机制

replicaStrategy 是分布式系统中控制副本分布的关键参数,决定副本在节点间的放置逻辑。其主要目标是实现负载均衡与故障隔离。

replicaStrategy:
  type: "zone-aware"
  replicas: 3
  zones: ["us-east", "us-west", "eu-central"]

上述配置表示采用“区域感知”策略,将3个副本均匀分布于不同地理区域,避免单点故障导致整体不可用。

高可用性保障
  • 通过跨节点、跨机架或跨区域部署副本,降低共因失效风险;
  • 支持动态扩缩容时的自动再平衡,确保集群稳定性;
  • 结合健康检查机制,实现故障节点的快速切换与数据恢复。
典型策略对比
策略类型容灾能力网络开销
random中等低
zone-aware高中

2.2 实践演示:如何通过 replicaStrategy 实现平滑扩缩容

在 Kubernetes 环境中,`replicaStrategy` 是控制工作负载副本数的核心机制。通过合理配置策略,可实现服务在流量波动下的自动适应。
策略配置示例
replicaStrategy:
  scalingPolicy: "auto"
  minReplicas: 2
  maxReplicas: 10
  metrics:
    - type: "cpu"
      targetAverageUtilization: 70
上述配置定义了基于 CPU 使用率的弹性伸缩规则。当平均利用率持续高于 70% 时,控制器将逐步增加副本数,最多扩展至 10 个;反之则缩容至最低 2 个,保障资源效率与服务稳定性。
执行流程

监控指标 → 评估阈值 → 触发扩容/缩容 → 副本调整 → 状态同步

该机制依赖 HorizontalPodAutoscaler(HPA)协同工作,确保变更过程中请求不中断,实现真正意义上的平滑扩缩容。

2.3 理论剖析:updateOrder 参数对发布顺序的精确控制机制

在服务发布流程中,updateOrder 参数是决定组件更新时序的核心控制字段。该参数通常以整型数值形式嵌入配置元数据中,调度器依据其值进行拓扑排序,确保依赖服务优先就绪。
参数作用机制
updateOrder 越小,优先级越高。系统在发布前构建依赖图谱,并按该参数升序排列更新序列,从而避免因上下游未就绪导致的发布失败。
典型配置示例
{
  "service": "user-api",
  "updateOrder": 10,
  "dependencies": ["auth-service", "config-center"]
}
上述配置表示 user-api 将在 updateOrder 大于10的服务之后更新,确保其依赖项已稳定。
调度流程示意
排序 → 依赖解析 → 按 updateOrder 升序执行发布

2.4 实践演示:配置 updateOrder 实现滚动更新优先级管理

在 Kubernetes 的滚动更新策略中,updateOrder 是控制 Pod 更新顺序的关键字段。通过合理配置,可实现高可用与低风险的发布流程。
启用有序更新
设置 updateOrder: OrderedReady 可确保新 Pod 在旧 Pod 成功终止前按序创建:
strategy:
  rollingUpdate:
    updateOrder: OrderedReady
该配置保证更新过程逐个进行,适用于有状态服务,避免因并发更新导致数据竞争。
优先级控制机制
结合 Pod 的标签与控制器调度策略,可通过以下方式定义优先级:
  • 为关键业务 Pod 添加高优先级标签(如 priority=high)
  • 利用控制器按标签排序执行更新
  • 确保核心节点最后更新,降低服务中断风险

2.5 理论结合实践:maxUnavailable 与 maxSurge 的弹性窗口调控策略

在 Kubernetes 滚动更新机制中,`maxUnavailable` 和 `maxSurge` 是控制应用升级过程中实例可用性与扩展性的核心参数。合理配置二者可实现服务稳定与发布效率的平衡。
参数定义与约束关系
  • maxUnavailable:允许不可用的 Pod 最大数量,确保服务不中断;
  • maxSurge:超出期望副本数的额外 Pod 数量,提升发布速度。
两者共同构成“弹性窗口”,总实例数 = 副本数 + maxSurge - maxUnavailable。
典型配置示例
strategy:
  rollingUpdate:
    maxUnavailable: 25%
    maxSurge: 25%
  type: RollingUpdate
该配置下,若副本数为 4,则最多同时新增 1 个 Pod(maxSurge),并允许 1 个 Pod 不可用。更新过程平滑,资源消耗可控。
动态调节建议
高可用系统宜设置 maxUnavailable=0 配合低值 maxSurge,优先保障服务连续性;非关键服务可适当放宽限制以加速发布。

第三章:被忽视的性能优化参数

3.1 lifecycleTimeoutSeconds:容器生命周期超时控制的实战影响

在 Kubernetes 容器生命周期管理中,`lifecycleTimeoutSeconds` 决定了钩子(如 preStop)执行的最大容忍时间。若超出该时限,容器将被强制终止,直接影响服务优雅关闭。
preStop 钩子中的超时配置示例
lifecycle:
  preStop:
    exec:
      command: ["/bin/sh", "-c", "sleep 30"]
timeoutSeconds: 45
上述配置中,`timeoutSeconds` 设置为 45 秒,表示即使 `preStop` 命令未完成,Kubernetes 最多等待 45 秒后发送 SIGKILL。这确保了 Pod 终止不会无限阻塞,避免节点资源僵死。
超时策略对业务的影响
  • 设置过短可能导致数据未完成持久化;
  • 设置过长会延迟 Pod 重建,影响滚动更新效率。
合理配置需结合应用停止耗时压测结果,平衡稳定性与发布速度。

3.2 readinessProbeInitialDelay 的合理设置与健康检查联动

在 Kubernetes 中,`readinessProbeInitialDelay` 决定了容器启动后首次就绪检查的等待时间。设置过短可能导致应用未完成初始化即被标记为就绪,进而接收流量;设置过长则延长服务可用时间。
典型配置示例
readinessProbe:
  httpGet:
    path: /health
    port: 8080
  initialDelaySeconds: 15
  periodSeconds: 10
上述配置中,`initialDelaySeconds: 15` 表示容器启动后等待 15 秒再执行首次就绪检查,适用于启动耗时约 10~12 秒的应用,留出安全裕量。
与启动时间的协同策略
  • 初始延迟应略大于应用冷启动最大耗时
  • 结合日志分析确定实际就绪时间窗口
  • 避免与 livenessProbe 冲突,确保健康检查逻辑一致

3.3 理论+实践:minReadySeconds 如何避免过早流量注入

在 Kubernetes 的滚动更新过程中,新创建的 Pod 虽然通过了就绪探针(readinessProbe),但仍可能未完全加载数据或缓存,导致短暂的服务抖动。`minReadySeconds` 字段正是为解决此类“过早流量注入”问题而设计。
参数机制解析
该字段定义 Pod 在变为就绪状态后,还需持续健康运行的最短时间,才被视为可用并纳入服务端点。
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
spec:
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  minReadySeconds: 30  # 新Pod需稳定就绪30秒后才加入负载均衡
  template:
    spec:
      containers:
      - name: nginx
        image: nginx:1.25
        readinessProbe:
          httpGet:
            path: /health
            port: 80
          initialDelaySeconds: 5
          periodSeconds: 5
上述配置中,即使容器 `/health` 接口立即返回成功,Kubernetes 仍会等待额外 30 秒确认其稳定性,才将该 Pod 加入 Endpoints。这有效规避了因初始化延迟导致的请求失败。
实际效果对比
  • 未设置 minReadySeconds:Pod 就绪即接收流量,存在短暂不可用风险
  • 设置 minReadySeconds=30:确保服务充分预热,显著降低错误率

第四章:配置文件中的安全与稳定性陷阱

4.1 设置 progressDeadlineSeconds 防止 rollout 卡死无响应

在 Kubernetes 的 Deployment 滚动更新过程中,若新版本 Pod 无法正常启动,更新可能无限期挂起。为避免此类问题,可通过设置 `progressDeadlineSeconds` 定义最大等待时长。
参数说明与默认行为
该字段指定控制器在声明部署失败前等待 Pod 就绪的秒数,默认值为 600 秒(10 分钟)。超时后,Deployment 状态将标记为 `ProgressDeadlineExceeded`。
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
spec:
  progressDeadlineSeconds: 120
  replicas: 3
  template:
    spec:
      containers:
      - name: nginx
        image: nginx:1.25
上述配置将等待时限缩短至 120 秒,加快故障发现与回滚响应速度。结合 `kubectl rollout status` 可实现自动化监控与熔断机制。

4.2 理解 revisionHistoryLimit 对回滚能力的影响与资源权衡

版本历史控制的核心机制
在 Kubernetes 的 Deployment 控制器中,revisionHistoryLimit 字段用于指定保留的旧 ReplicaSet 数量。这一设置直接影响集群的回滚能力与资源消耗。
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
spec:
  revisionHistoryLimit: 5
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.25
上述配置将保留最多 5 个旧版本的 ReplicaSet。若设置为 0,则仅保留当前版本,导致无法回滚到更早状态。
资源与可恢复性的平衡
  • 较高的 revisionHistoryLimit 增强回滚灵活性,但增加 etcd 存储压力;
  • 较低的值节省资源,但可能丢失关键恢复点;
  • 建议生产环境设置为 5–10,兼顾安全与效率。

4.3 使用 paused 参数实现手动控制发布的灰度验证

在灰度发布流程中,`paused` 参数为发布过程提供了关键的手动控制能力。通过将该参数设置为 `true`,可以暂停部署的滚动更新,便于在真实环境中验证新版本的稳定性。
配置示例
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-deployment
spec:
  replicas: 3
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  paused: true  # 手动暂停发布,等待人工确认
该配置下,Deployment 创建后不会立即触发滚动更新,Kubernetes 将等待用户显式执行 `kubectl rollout resume` 指令后才继续发布流程。
典型使用流程
  1. 设置 paused: true 推送新版本镜像
  2. 在小范围节点或特定流量下验证服务状态
  3. 确认无误后执行 kubectl rollout resume deployment/myapp-deployment

4.4 enableServiceLinks 安全隐患与命名空间隔离实践

Kubernetes 中的 `enableServiceLinks` 机制会自动将同命名空间下的服务环境变量注入到 Pod 中。虽然便利,但可能引发安全风险,尤其是在多租户环境中。
潜在安全隐患
启用 `enableServiceLinks` 后,Pod 会自动接收所有 Service 的环境变量(如 `_SERVICE_HOST`),可能导致敏感信息泄露或命名冲突。
apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  enableServiceLinks: true
  containers:
    - name: app
      image: nginx
上述配置会自动注入 Service 环境变量。建议在不需要时显式关闭:
enableServiceLinks: false
命名空间隔离策略
通过禁用该功能并结合 NetworkPolicy,可强化命名空间间的安全隔离,防止横向移动和信息探测。
  • 默认关闭 enableServiceLinks
  • 使用明确的 DNS 或配置注入替代隐式环境变量
  • 配合 RBAC 和 NetworkPolicy 实现纵深防御

第五章:构建高效可靠的容器发布体系

持续集成与镜像构建自动化
在现代 DevOps 实践中,容器发布体系的核心在于自动化。通过 GitLab CI 或 GitHub Actions 触发流水线,每次代码提交后自动执行测试、构建 Docker 镜像并推送到私有仓库。以下是一个典型的 GitHub Actions 工作流片段:

name: Build and Push Image
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
      - name: Build Docker image
        run: docker build -t myapp:${{ github.sha }} .
      - name: Push to Registry
        run: |
          echo ${{ secrets.DOCKER_PASSWORD }} | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
          docker push myapp:${{ github.sha }}
多环境发布策略
为确保发布稳定性,采用蓝绿部署或金丝雀发布模式。Kubernetes 中可通过 Service 和 Deployment 的标签选择器实现流量切换。例如,在生产环境中先将 10% 流量导向新版本,结合 Prometheus 监控错误率与延迟指标。
  • 开发环境:全自动快速迭代
  • 预发布环境:手动审批 + 自动化回归测试
  • 生产环境:灰度发布 + 健康检查强制回滚
安全与合规控制
所有镜像需经过 Trivy 等工具扫描漏洞,并集成到 CI 流程中作为准入门槛。以下是镜像扫描的典型步骤:

# 扫描关键漏洞
trivy image --severity CRITICAL myapp:${TAG}
if [ $? -ne 0 ]; then
  echo "镜像存在严重漏洞,禁止发布"
  exit 1
fi
环境发布方式回滚机制
Staging自动部署手动重建
Production金丝雀发布自动回滚(基于健康检查)
Python量化投资——mplfinance实现全功能动态交互式K线图(蜡烛图)【源码+详解】 特别鸣谢:@szFoxtech 同学热心提供了通过键盘操作平移和缩放K线图的代码!!在我的另一篇文章《七行代码利用tushare和mplfinance生成K线图》中,我介绍了两个非常好用的python库,结合起来可以非常方便容易地生成股票的K线图,对于使用python进行量化投资研究的朋友可谓是必备良方。如下图所示,仅仅几行代码,就能生成下面这张K线图:不过,仅仅使用七行代码生成的K线图,虽然看上去也像那么回事了,但是对于真正需要使用K线图作为研究工具或者可视化工具的朋友们来说,是远远不够的。在我看来,至少 阅读详情

相关推荐

嵌入式系统实战:DroneCAN协议栈移植与避坑指南

本文详细介绍了在嵌入式系统中移植DroneCAN协议栈的完整流程与实战技巧。内容涵盖移植前的准备工作、内存管理优化、CRC校验实现、多帧数据处理及硬件平台适配等关键环节,并以STM32F4为例提供了具体的移植步骤和避坑指南,帮助开发者高效完成DroneCAN在嵌入式设备上的集成与应用。

solidity8miner的博客 548

k8s滚动更新

k8s滚动更新

ApexPredator的博客 2058

配电网故障重构/孤岛划分/故障恢复

程序主要复现《基于GA_BFGS算法的配电网故障恢复性重构研究_郑海广》,采用matlab编程软件实现,依据网络结构和DG供电方式对配电网进行孤岛划分,将含有 DG 的配电网拓扑结构看成一个树,搭建成连通图模型,使得将孤岛的划分变成了求取最小生成树,以网损和开关开断次数作为目标,采用 IEEE33 节点配电网为算例,通过遗传算法寻优计算,从而得到最佳的重构方案。

zhangxd212489的博客 2500

什么是deployment 声明式升级应用

前言 环境:centos7.9 docker-ce-20.10.9 kubernetes-version v1.22.6 deployment资源对象 deployment是企业中用的最多的pod控制器。 Deployment为Pod和Replica Set提供声明式更新,只需要在 Deployment 中描述想要的目标状态是什么,,比如pod副本数等,Deployment controller 就会帮您将 Pod 和ReplicaSet 的实际状态改变到您的目标状态。 Deployment、Replica

MssGuo的博客 1911

Eureka自我保护机制

Eureka自我保护机制 默认情况下,当eureka server在一定时间内没有收到实例的心跳,便会把该实例从注册表中删除(默认是90秒),但是,如果短时间内丢失大量的实例心跳,便会触发eureka server的自我保护机制,比如在开发测试时,需要频繁地重启微服务实例,但是我们很少会把eureka server一起重启(因为在开发过程中不会修改eureka注册中心),当一分钟内收到的心跳数大量减少时,会触发该保护机制。可以在eureka管理界面看到Renews threshold和Renews(last

Soul_Ming的博客 543

Homebrew 必备软件清单:我的 macOS 开发环境搭建全记录

本文详细介绍了如何使用Homebrew在macOS上搭建高效的开发环境,包括基础配置、核心开发工具链、高效编码工具集等30个必备工具。通过Homebrew这一macOS缺失的包管理器,开发者可以一键安装命令行工具和GUI应用,大幅提升工作效率。文章还提供了日常维护命令和疑难问题解决方案,适合从新手到资深开发者的所有用户。

weixin_28836507的博客 353

kubernetes

安装 master节点 yum install etcd -y 数据库,原生支持集群 vim /etc/etcd/etcd.conf 6行:ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" 支持flannel 21行:ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379" 在集群中的信息 systemctl...

春风吹尽叁佰里的博客 1388

FDTD Solutions-入射波长模式

经常在文献中看到仿真光源使用TM/TE模式,这个确定是十分必要的,决定了仿真结果。 但是也不能局限于选择TM/TE,因为不同领域、不同软件之间的使用习惯和命名可能不同。并且在现代光波导器件中,几乎全部 都是混合模式,或者称之为quasi-TE(准TE模式)和quasi-TM(准TM模式),多数情况下都简称为TE模式和TM模式。要知道 到底是TE模式还是TM模式,需要查看其电场的主分量(即振幅...

HECHUANWANG的博客 1万+

k8s知识点拾遗

Headless和Service 以ES集群部署为例子,elasticsearch-client是ClusterIP模式,elasticsearch-data是Headless模式 ClusterIP模式 # servers有两个endpoints kubectl describe svc elasticsearch-client -n ops # DNS解析只解析ServerIp,然后...

孔小发 1286

嵌入式RTOS实战:uC/OS-III最新版移植指南(附项目源码)

本文提供uC/OS-III实时操作系统的完整移植指南,涵盖源码配置、工程搭建到任务调度的全流程。针对移植中的常见编译错误,给出关键修改方案(如中断重定义、配置使能等),附已验证的工程源码,通过LED任务实验验证稳定性,帮助开发者高效完成移植。适合嵌入式工程师及RTOS学习者参考。

Bit_Dong的博客 2472

【python数据处理】python实现vlookup字符串模糊匹配及在实战中的应用(FuzzyWuzzy库)

利用FuzzyWuzzy库匹配字符串1. 背景前言2. FuzzyWuzzy库介绍2.1 安装2.1 fuzz模块2.1.1 简单匹配(Ratio)2.1.2 非完全匹配(Partial Ratio)2.1.3 忽略顺序匹配(Token Sort Ratio)2.1.4 去重子集匹配(Token Set Ratio)2.2 process模块2.2.1 extract提取多条数据2.2.2 extractOne提取一条数据3. pandas实战应用3.1 公司名称字段模糊匹配3.1.1 参数讲解:3.1.2

lys_828的博客 8322

Kubernetes笔记(六):了解控制器 —— Deployment

Pod(容器组)是 Kubernetes 中最小的调度单元,可以通过 yaml 定义文件直接创建一个 Pod。但 Pod 本身并不具备自我恢复(self-healing)功能。如果一个 Pod 所在的节点出现故障,或者调度程序自身出现问题,以及节点资源不够或节点进入维护而驱逐 Pod 时,Pod 将被删除,且不能自我恢复。 因此,Kubernetes 中我们一般不直接创建 Pod, 而是通过 Controller(控制器)来管理 Pod。 Controller Controller 能为 Pod 提供如

半路雨歌 2243

2024年11月架构设计师案例分析真题回顾,附参考答案、解析及所涉知识点(二)

软考高级系统架构设计师考试包含三个科目:信息系统综合知识、案例分析和系统架构设计论文。考试形式为机考。本文主要回顾2024年下半年(2024-11-10)系统架构设计师考试上午第二科案例分析的题目,同时附带参考解答、解析和所涉知识点。

一几文的编程学习笔记。 1661

k8s 探针

k8s 探针

ApexPredator的博客 3996

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

k8s技术预研2--Kubernetes中的13项重要概念或术语

Node,Pod,Replication Controller,Service等都是k8s中的一种“资源对象”,都可以通过工具kubectl执行增、删、改的管理操作。其配置结果是保存在etcd中。k8s就像是一个自动化的资源控制系统,通过对etcd库中保存的资源期望状态和实际资源状态进行差异对比,来发现、控制和进行“纠错”。1、k8s集群管理角色——Master每个k8s集群里需要一个Master...

watermelonbig的专栏 5752

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Kubernetes控制器之Deployment

Deployment为Pod和ReplicaSet提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationController来方便的管理应用。只需要在Deployment中描述一个期望状态,Deployment控制器以受控速率更改实际状态以达到期望状态。

RtxTitanV的博客 2165

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Kubernetes(k8s)报错error: deployment “nginx-deployment“ exceeded its progress deadline

执行命令报错:error: deployment "nginx-deployment" exceeded its progress deadline 报错原因:Pod升级超过了最大的时间限制,变成了超时状态,Pod升级失败

向之 所欣 4239

k8s基础(4)之Deployment

k8s基础(4)之Deployment Deployment 相对于RC的一个最大升级是我们可以随时知道当前Pod"部署"的进度,实际上由于一个Pod的创建、调度、绑定节点及在Node上启动对应的容器这一完整过程需要一定的时间,所以我们期待系统启动N个Pod副本的目标状态,实际上是一个连续变化的"部署过程"导致的最终状态。 Deployment经典常用场景 1.创建一个Deployment对象来生成对应的Replica Set并完成Pod副本的创建过程 2.检查Deployment的状态来看部署动作是否完

qq_23435961的博客 3381

4.Kubernetes资源对象之控制器(一)

Pod控制器是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试 进行重启,当根据重启策略无效,则会重新新建pod的资源。

java程序鱼的博客 1301

【云原生|Kubernetes】13-Deployment资源控制器详解

kubernetes中有很多资源控制器,这些资源控制器我们只说一些重要且常用的。在介绍Deploymen之前,我们会逐个介绍这些控制器。​ Pod控制器是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试 进行重启,当根据重启策略无效,则会重新新建pod的资源。ReplicaSet 的目的是维护一组在任何时候都处于运行状态的 Pod 副本的稳定集合。因此,它通常用来保证给定数量的、完全相同的 Pod 的可用性一个 Deployment 为Pod和ReplicaSet。

qq_43714097的博客 3180

K8s deployment 进阶

默认情况下,deployment 的所有上线记录都保存在系统中,以便随时回滚。滚动更新 (RoILingupdate),一次仅更新一批Pod,当更新的Pod就绪后,在更新另一批,直到全部更新完成为止;重建 (Recreate),当更新策略设定为 Recreate,在更新镜像时,它会先杀死正在运行的Pod,等彻底杀死后,重新创建新的RS,然后启动对应的Pod,那么在这个更新过程中,会造成服务一段时问无法提供服务;使用灰度发布的模式,可以及时发现问题,调整问题,以减少影响的速度,保证整体系统的稳定运行。

go|Python的个人博客 905

k8s之Deployment滚动更新

k8s滚动更新 deployment是一个三级结构,deployment管理replicaset,replicaset管理pod busybox-red/blue [root@k8s-master-1 autoupdate]# cat busybox-red-blue.yaml apiVersion: apps/v1 kind: Deployment metadata: name: busybox-red-blue spec: minReadySeconds: 20 paused: false

jiayu的博客 2707

kubernetes系列二:概念梳理

文章目录一、资源对象管理1、资源对象概述(1)Pod(2)Replication Controller &amp;amp; RC (副本控制器)(3)Replica Set &amp;amp; RS (副本集)(4)Deployment (部署)(5)Service (服务)(6)Job (任务)(7)DaemonSet (后台支撑服务集)(8)StatefulSet (有状态服务集)(9)Volume (存储卷...

jiangmingfei的博客 1万+

K8S实战-配置中心(四)分环境使用apollo配置中心

要进行分环境,需要将现有实验环境进行拆分 portal服务,可以各个环境共用,但是apollo-adminservice和apollo-configservice必须要分开。 1、zk环境拆分为test和prod环境 添加dns解析: # vi /var/named/od.com.zone zk-test.od.com A 10.4.7.11 zk-prod.od.com A 10.4.7.12 2、namespace 分环境,创建test ...

1488

Kubernetes部署单Redis

Kubernetes集群中,我们时常要部署中间件,nginx,redis等等 首先,这些中间件要容器化,才可以部署到Kubernetes集群中。 (1)一般我们到dockerhub官方,寻找镜像https://hub.docker.com/search?q=redis&type=image (2)我们可以自己定制,,公司需要的docker 镜像 部署单个Redis (1)首先下载redis的镜像(版本:) docker pull redis:5.0.4-alpine (2)编写c..

南宫乘风-Linux运维-虚拟化容器-Python编程 ownit.top 606

用户数从 0 到亿,我的 K8s 踩坑血泪史

作者 |平名 阿里服务端开发技术专家 导读:容器服务 Kubernetes 是目前炙手可热的云原生基础设施,作者过去一年上线了一个用户数极速增长的应用:该应用一个月内日活用户从零至四千万,用户数从零到一亿的裂变式增长,充分享受了容器服务快速简便的扩容操作和高可用特性。作者使用容器服务 Kubernetes 集群将公司内系统完全上云 1 年多,本篇文章记录了其中的踩坑与优化记录。 ...

weixin_30362801的博客 315
上一篇: 为什么你的CI/CD流水线总出错?可能是Git工作树切换没用对——Docker最佳实践曝光
下一篇: Docker资源占用过高怎么办:7个实战技巧让你的容器效率提升200%
FastProceed
博客等级 码龄1年 143粉丝 2005原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值