K8s学习与实践

K8s学习 Kubernetes 1. Kubernetes介绍 1.1 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源,而且程序之间容易产生影响 虚拟化部署:可以在一台物理机上运行多个虚拟机,每个虚拟机都是独立的一个环境 优点:程序环境不会相互产生影响,提供了一定程度的安全性 缺点:增加了操作系统,浪费了部分资源 容器化部署:与虚拟化 阅读详情

一、Kubernetes 核心原理

1. Kubernetes 设计哲学

Kubernetes(k8s)是一个开源的容器编排平台,旨在自动化容器化应用的部署、扩展和管理。其核心设计围绕以下目标:

  • 声明式配置:用户描述期望状态(如 YAML 文件),系统自动驱动实际状态匹配期望状态。
  • 自愈能力:自动重启故障容器、替换不可用节点、动态扩展副本等。
  • 松耦合架构:组件模块化,通过 API 交互,支持灵活扩展。

2. Kubernetes 架构概览

Kubernetes 集群由 Master 节点(控制平面)和 Worker 节点(计算节点)组成:

二、Master 节点组件原理

1. API Server

  • 功能:Kubernetes 的前端接口,接收并处理所有 REST 请求(如 kubectl 命令)。
  • 原理:
    • 验证请求合法性(Authentication)。
    • 鉴权(Authorization)与准入控制(Admission Control)。
    • 将资源状态持久化到 etcd。
  • 高可用:多实例部署,通过负载均衡对外服务。

2. etcd

  • 功能:分布式键值存储,保存集群所有配置数据(如 Pod、Service 状态)。
  • 原理:
    • 基于 Raft 算法实现强一致性。
    • 监听机制(Watch)支持组件实时感知状态变更。
  • 优化:定期备份数据,分离 Kubernetes 数据与其他业务数据。

3. Scheduler

  • 功能:将未调度的 Pod 分配到合适的 Worker 节点。
  • 调度流程:
    1. 过滤(Predicate):排除不满足条件的节点(如资源不足)。
    2. 打分(Priority):对剩余节点评分(如 CPU 空闲率最高者优先)。
  • 扩展性:支持自定义调度策略(如 GPU 亲和性)。

4. Controller Manager

  • 功能:运行控制器循环,确保系统实际状态匹配期望状态。
  • 核心控制器:
    • Deployment Controller:管理 ReplicaSet 的副本数。
    • Node Controller:监控节点状态,驱逐不可用节点上的 Pod。
    • Service Controller:为 Service 配置负载均衡器(如 AWS ELB)。

三、Worker 节点组件原理

1. kubelet

  • 功能:节点代理,管理 Pod 生命周期(创建/销毁容器)。
  • 核心职责:
    • 监听 API Server 分配的 Pod 清单。
    • 调用容器运行时(如 Docker、Containerd)启动容器。
    • 定期上报节点状态(CPU、内存使用率)到 API Server。

2. kube-proxy

  • 功能:实现 Service 的负载均衡和网络规则。
  • 实现模式:
    • iptables(默认):为每个 Service 生成 iptables 规则。
    • IPVS:基于内核级负载均衡,性能更优。
  • 原理:将访问 Service VIP 的流量转发到后端 Pod。

3. 容器运行时

  • 功能:执行容器生命周期操作(如 Docker、Containerd、CRI-O)。
  • CRI(Container Runtime Interface):Kubernetes 定义的容器运行时标准接口。

四、核心对象与资源模型

1. Pod

  • 最小调度单元:包含一个或多个共享网络/存储的容器。
  • 生命周期:Pending → Running → Succeeded/Failed。
  • 设计模式:
    • Sidecar:辅助容器(如日志收集)。
    • Init Container:在主容器前运行初始化任务。

2. Deployment

  • 功能:管理 Pod 副本集,支持滚动更新和回滚。
  • 示例 YAML:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.19
            ports:
            - containerPort: 80
    

3. Service

  • 功能:为一组 Pod 提供稳定的访问入口(VIP 或 DNS)。
  • 类型:
    • ClusterIP(默认):集群内部访问。
    • NodePort:通过节点端口暴露服务。
    • LoadBalancer:云平台负载均衡器集成。

五、实践指南:从零部署应用

1. 环境准备

安装 Minikube(本地单节点集群)
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
minikube start --driver=docker
验证集群状态
kubectl get nodes
kubectl cluster-info

2. 部署 Nginx 应用

创建 Deployment
kubectl create deployment nginx --image=nginx:1.19
kubectl get pods -l app=nginx
暴露 Service
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get svc nginx
访问应用
minikube service nginx --url  # 获取访问URL
curl http://<NodeIP>:<NodePort>

3. 应用扩展与更新

水平扩展副本
kubectl scale deployment nginx --replicas=5
kubectl get pods -l app=nginx
滚动更新版本
kubectl set image deployment/nginx nginx=nginx:1.21
kubectl rollout status deployment/nginx
回滚到旧版本
kubectl rollout undo deployment/nginx

六、高级实践:持久化存储与配置管理

1. PersistentVolume (PV) 与 PersistentVolumeClaim (PVC)

创建 PV 和 PVC
# pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /data/pv
---
# pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi
挂载到 Pod
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: app
    image: nginx
    volumeMounts:
    - name: data
      mountPath: /usr/share/nginx/html
  volumes:
  - name: data
    persistentVolumeClaim:
      claimName: my-pvc

2. ConfigMap 与 Secret

管理配置
# 创建 ConfigMap
kubectl create configmap app-config --from-file=config.properties

# 创建 Secret
kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=123456
在 Pod 中使用
apiVersion: v1
kind: Pod
metadata:
  name: config-demo
spec:
  containers:
  - name: app
    image: busybox
    command: ["/bin/sh", "-c", "env"]
    envFrom:
    - configMapRef:
        name: app-config
    - secretRef:
        name: db-secret

七、监控与日志

1. 部署 Prometheus + Grafana

安装监控组件
kubectl create namespace monitoring
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/setup/prometheus-operator-0servicemonitorCustomResourceDefinition.yaml
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/
访问 Grafana
kubectl port-forward -n monitoring svc/grafana 3000:3000

访问 http://localhost:3000,使用默认账号 admin/admin。

2. 集中日志(EFK 栈)

部署 Elasticsearch、Fluentd、Kibana
kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/fluentd-elasticsearch/

八、总结与最佳实践

1. 核心原则

  • 声明式配置:所有资源通过 YAML 文件管理,纳入版本控制。
  • 资源限制:为 Pod 设置 CPU/内存请求与上限(requests/limits)。
  • 滚动更新策略:配置 maxUnavailable 和 maxSurge 确保服务可用性。

2. 生产环境建议

  • 集群高可用:多 Master 节点 + 负载均衡。
  • 网络策略:使用 Calico 或 Cilium 实现网络隔离。
  • 安全加固:启用 RBAC、Pod 安全策略(PSP)。

通过掌握 Kubernetes 的核心原理与实践技巧,您将能够构建高效、稳定的容器化应用平台,应对从开发到生产的全流程挑战。

扩展阅读:

零基础学kubernetes(k8s)必看教程,带你10分钟快速实战入门k8s 作为一个工作十余年,拥有比较丰富的计算机网络运维、主机运维、云计算平台运维、自动化运维开发经验的老鸟,我来说说我当初刚接触Kubernetes时的一些感受以及学习技巧。 阅读详情

相关推荐

k8s学习

优点: 可以保证每个容器拥有自己的文件系统、CPU、内存、进程空间等 运行应用程序所需要的资源都被容器包装,并和底层基础架构解耦 容器化的应用程序可以跨云服务商、跨Linux操作系统发行版进行部署。kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。Pod:kubernetes的最小控制单元,容器都是运行在pod中的,一个pod中可以有1个或者多个容器。Pod可以认为是容器的封装,一个Pod中可以存在一个或者多个容器。

lemonth的博客 2111

Kubernetes(k8s)基础入门

K8S是Kubernetes的全称,官方称其是across multiple hosts. It provides basic mechanisms for deployment, maintenance, and scaling of applications. 用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。容器就是一个包,其中包含了应用及其所有依赖。容器中的应用与主机系统是隔离的,不关注环境。

沉浸式Study 1万+

Kubernetes(k8s)学习大纲(十一):Kubernetes最佳实践与案例

本文总结了Kubernetes在生产环境中的最佳实践与案例研究,涵盖存储集成、高可用架构、性能优化、安全合规等多个维度。重点包括:MySQL与WordPress的存储配置实现高可用;控制平面三节点部署保证稳定性;HPA动态扩缩容提升性能;金融、智能制造等行业应用案例;RBAC权限控制等安全措施;以及CI/CD自动化流程。通过实际应用验证,这些实践可显著提升集群稳定性、资源利用率和开发效率,满足企业级应用的严苛需求。

专业深耕,技术前沿 632

k8s教程----零基础快速入门

K8S入门教学,帮助小白快速理解,应对面试

小青年的博客 7万+

机器学习模型生产化落地:从Notebook到Kubernetes的全链路实践

机器学习模型部署不是简单的代码打包与服务启动,而是涉及数据契约、服务契约与运维契约的系统工程。其核心原理在于通过标准化(如ONNX模型格式)、容器化(多阶段Docker构建)、Kubernetes健康探针设计及可观测性体系(OpenTelemetry+Prometheus+StatsD),构建高可用、可复现、易诊断的推理服务。技术价值体现在消除环境差异导致的运行时错误、保障p99延迟与SLA稳定性、支持跨硬件无缝迁移,并实现模型版本、代码依赖与数据Schema的强一致性管控。典型应用场景包括实时风控、推荐系

csobhtdx34120的博客 460

全面掌握Kubernetes:深入学习与实践资源

Kubernetes,源自希腊语中的“舵手”或“领航员”一词,是一种开源的容器编排系统,最初由Google设计并捐给了Cloud Native Computing Foundation(CNCF)。它用于自动化部署、扩展和管理容器化应用程序。Kubernetes的目标是使部署容器化的应用程序更加简单和高效。在探讨Kubernetes之前,需要了解容器化技术的基础。容器是一种轻量级、可移植的执行环境,它允许应用程序及其依赖包被打包在一起,几乎在任何地方都可以运行。

weixin_36289813的博客 433

k8s深入学习及企业项目实践

持久化:通过 PV/PVC/StorageClass 将数据与 Pod 解耦,确保数据长期可用。灵活性:支持多种存储后端(本地磁盘、NFS、云存储等),适配不同场景。自动化:通过 StorageClass 动态供应 PV,减少人工操作,提升集群扩展性。安全性:通过 Secret 管理敏感信息,避免配置硬编码。临时缓存用emptyDir或tmpfs;数据库数据用PV+PVC结合StorageClass动态供应;应用配置用ConfigMap,密码用Secret。yaml。

tt666qq的博客 1540

FLUENT UDF编译及蒸发冷凝相关问题

蒸发冷凝与相间传质

weixin_48029137的博客 1万+

【K8S实践】关于Kubernetes Dashboard的实践学习

前言: 陆陆续续,学k8s一个月了,从开始看docker容器书,视频,怎么都无法上手;到后来闷着头实践地傻瓜式操作;到今天整个完全串通好!感觉到学习也是一段深刻的成长经历! 过程: 这个过程中使用的工具 svn,Jenkins,harbor,k8s Dashboard,xshell 整个过程其实是将原来的服务发布过程分类自动集成管理。 1. 首先,虽然我们使用的是docker容器,但每次的镜像...

follow your heart 1060

从实验室到生产线:Qwen3-Omni后训练技术在实际业务中的落地挑战

本文探讨了Qwen3-Omni后训练技术在实际业务中的落地挑战,重点分析了多模态AI在工业应用中的关键问题与解决方案。通过金融风控、跨境电商等场景案例,揭示了通用模型与垂直需求的矛盾,并提供了知识蒸馏、语音合成优化等实战经验,助力企业实现技术到业务的转化。

weixin_29035147的博客 266

nature子刊:MCNN基于电池故障诊断的模型约束的深度学习方法

本研究提出了一种基于模型约束神经网络(MCNN)的锂离子电池在线故障诊断方法,整合物理模型与深度学习,有效解决了随机工况下传统方法诊断精度低、依赖故障样本等问题。通过统计修正电池包模型和双向LSTM网络,实现了电池状态的高精度预测(平均RMSE 3.9%),并设计模型耦合自动编码器提取可解释特征。在包含18.2百万条真实车辆数据的验证中,该方法故障检测TPR在FPR=0.1时达85%,较基准方法提升超46.5%,且能提前30分钟预警内部短路等故障。研究还展示了算法在跨电池包结构迁移中的优越性,为工业应用提供

hasakie的博客 1757

.NET Core on K8S 学习与实践系列文章索引 (更新至20191116)

更新记录:-- 2019-11-16 增加Docker容器监控系列文章// 此外,今天是11月17日,我又老了一岁,祝我自己生日快乐!近期在学习Kubernetes,基于之前做笔记的习惯,已经写了一部分文章,因此给自己立一个flag:完成这个《.NET Core on K8S学习实践》系列文章!这个系列会持续更新,先发个草稿列表,后续更新,保持关注!01—关于这个系列自从去年(2018年)底离开工...

dotNET跨平台 448

物联网技术(AIR780E cat1-4G模块+小程序+腾讯云MQTT)驱动的智能井盖系统设计(连载01)

终端设备采用AIR780E模块作为主控器,电子模块有三轴加速度传感器、可燃气体传感器,AIR780E模块(4G模块)通过MQTT通信协议进行数据打包上传至EMQX服务器,在EMQX服务器中,用户可以自行订阅主题和发布主题,小程序通过MQTT通信协议订阅EMQX服务器的主题,服务器通过接收到硬件发布的数据,转发到微信小程序。

leida_3669的博客 2218

CentOS7+Kubeadm+K8S集群部署学习实践手册:从入门到精通

CentOS7+Kubeadm+K8S集群部署学习实践手册:从入门到精通 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在当今的云计算和容器化时代,Kubernetes(简称K8S)已经成为管理和编排容器化应用的事实标准。然而,对于许多初学者和运维人员来说,K8S的部署和管理仍然是一个挑战。为了帮助大家更好地掌握这一技能,我们推出了《CentOS7+Kubeadm+K...

gitblog_06614的博客 422

Unity 升级引擎版本后构建报错:script class layout is incompatible between the editor and the player

Unity升级引擎版本后,项目报错:script class layout is incompatible between the editor and the player。

学习与分享 593

Linux -- 图形界面配置Samba;system-config-samba工具

图形界面配置Samba6.6.1 system-config-sambasystem-config-samba是Red Hat公司专门为Samba服务器管理编写的图形界面的管理工具,通过system-config-samba几乎可以完成对Samba服务器的所有配置,所以在只希望通过Samba服务器实现一些简单的资源共享时,system-config-samba是一个不错的选...

weixin_33695450的博客 2200

.NET Core on K8S 学习与实践系列文章索引 (更新至20191126)

更新记录:-- 2019-11-26 增加Docker容器日志系列文章近期在学习Kubernetes,基于之前做笔记的习惯,已经写了一部分文章,因此给自己立一个flag:完成这个《.NE...

dotNET跨平台 294

【教程4>第2章>第18节】 GMSK调制系统的FPGA开发与matlab对比验证

GMSK(高斯最小频移键控)是一种连续相位的频移键控(CPFSK)调制方法,它在数字通信中得到了广泛应用,特别是在移动通信系统中。GMSK通过限制频率偏差的累积来减少带外辐射,并通过使用高斯滤波器对。

FPGA/MATLAB学习教程/源码/项目合作开发 998

Kubernetes与机器学习工作负载最佳实践

资源管理:合理分配GPU等计算资源数据管理:高效处理和存储训练数据分布式训练:利用多节点加速模型训练模型部署:优化模型服务性能监控可观测:实时监控训练和推理性能性能优化:GPU利用、网络优化、内存管理通过以上实践,可以构建一个高效、可扩展的机器学习平台,加速模型开发和部署过程。

2609_95049439的博客 1079

lammps剪切模拟的三种实现方法

本文介绍了LAMMPS分子动力学模拟中三种剪切方法:fix deform全局盒子剪切、速度边界剪切和外力加载剪切。fix deform通过改变盒子形状实现均匀剪切,适合宏观力学参数计算;速度边界剪切通过固定边界原子施加速度模拟非均匀剪切,适合界面摩擦研究;外力加载剪切则通过施加恒定力研究材料屈服行为。文章详细说明了每种方法的适用场景、核心原理和关键命令,并强调应根据具体研究目标选择合适方法。这些方法为金属、聚合物等材料的剪切模拟提供了实用解决方案,可直接套用文中命令进行建模计算。

lammps_jiayou的博客 64

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

k8s系统学习路径

先学习 Docker,理解容器化概念(镜像、容器、仓库)、Dockerfile 编写和容器生命周期管理。:包括 Kubelet、Kube-proxy、容器运行时(如 containerd)。• 参与开源 Kubernetes 生态项目(如 Prometheus、Istio)。:如 AWS EKS、Google GKE、Azure AKS(推荐新手使用)。• 理解 Kubernetes 网络模型(Pod 网络、Service 网络)。• Pod 安全策略(Pod Security Admission)。

LCY133的博客 3240

深度学习工具包 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'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('DeepLearnToolbox'));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('state',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'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',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 = 'sigm';%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, 'Too big error');```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('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';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)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';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, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% 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'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 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, 'Too big error');```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('state',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, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',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, 'Too big error');%% ex3 neural net with dropoutrand('state',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, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % 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, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % 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, 'Too big error');%% 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('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % 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, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

283页K8S实践指南,内容详实,涵盖K8S所有核心知识点!

云时代,搞懂 Kubernetes,跟上新的生产技术标准,十分有必要!

Y525698136的博客 1048

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

网安283页K8S实践指南,内容详实涵盖K8S所有核心知识点!

k8s本身比较复杂业务,里面涉及的技术细节也十分繁杂,因而不少朋友理解起来,并不容易。但K8s涉及IT行业的方方面面,不论什么岗位,懂K8s已成为燃眉之急。

Y525698136的博客 431

机器学习模型生产化落地:从Notebook到Kubernetes的完整实践

机器学习模型部署不是简单保存和启动,而是涉及数据契约、服务契约与运维契约的系统工程。其核心原理在于通过标准化(如ONNX格式)、环境隔离(定制Docker镜像)与可观测性(Prometheus指标+OpenTelemetry追踪)构建确定性推理能力。技术价值体现在SLA保障(99.95%可用性)、低延迟(p99<350ms)与跨平台稳定性(CPU/GPU无缝迁移)。典型应用场景包括实时风控、推荐系统与图像识别等高并发线上服务。本文聚焦模型导出、容器化、Kubernetes编排与生产级监控四大关键环节,深入解

weixin_30800987的博客 489

Kubernetes 与机器学习集成最佳实践

资源管理:合理配置 GPU 和 CPU 资源存储优化:选择高性能存储,配置适当的参数模型管理:使用 GitOps 管理模型版本监控告警:配置机器学习工作负载的监控和告警高可用设计:配置多副本和故障转移安全管理:实施网络隔离和访问控制Kubernetes 与机器学习集成是现代 AI 应用的重要趋势。按照本文的最佳实践,你可以构建一个高效、可靠的机器学习系统,炸了!

2609_95049439的博客 4154

从入门到实践:Kubernetes(K8s)完全指南

微服务架构:统一管理数十到数千个微服务容器。CI/CD 集成:与 Jenkins、ArgoCD 等工具结合,实现自动化部署流水线。弹性负载场景:电商促销、实时数据处理等需要动态扩缩容的业务。多云部署:通过 K8s 实现跨云厂商的统一管理,避免厂商锁定。

qq_35800459的博客 6068
上一篇: Flink反压问题解析
Debug_TheWorld
博客等级 码龄7年 263粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Debug_TheWorld

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值