kubernetes RC 与 Deployment ,Pod,Horizontal Pod Autoscaling ,replica set资源

2023-11-20

Pod:

Pod是 kubernetes 的最基本的操作单元,包含一个或多个紧密相关的容器

kubernetes 使用pod在容器之上再封装一层,其一个很重要的原因是,docker容器之间的通信受到docker网络机制的限制。在docker中,因为每个容器内的网络不同,在以前,往往需要通过link方式才能访问另一个容器提供服务,但是这种方式,docker官网已经不再推荐,docker官方推荐让两个需要通信的容器放在同一个网络,三剑客之一的docker-compose就能提供了这样的条件。kubernetes通过pod的概念将多个容器组合在一个虚拟的 主机内,可以实现容器之间仅需通过localhost就能相互通信了

kubernetes 设计了pod对象,将每个服务进程包装到相应的pod中,使其成为pod中运行的一个容器,在使用时,我们会将 pod对象打上 标签,例如 提供mysql服务功能的pod,我们会为该pod打上name=mysql的标签. 然后将 mysql service 的标签选择器设置为 mysql , 这样pod 对象 和 service 就能关联起来了

pod 的 proxy 接口的作用: 在kubernetes集群之外访问某个pod容器的服务(HTTP服务)时,可以用Proxy API实现,这种场景多用于管理目的,比如逐一排查Service的Pod副本,检查哪些Pod的服务存在异常问题

kubernetes的pod使用分两种主要方式:

(1)pod中运行一个容器 "one-container-per-pod"模式是kubernetes最常见的用法。在这种情况下,你可以将pod视为当个封装的容器,但是kubernetes是直接管理pod而不是容器

(2)pods中运行多个需要一起工作的容器。pod可以封装紧密耦合的应用,它们需要由多个容器组成,它们之间能够共享资源、

 

 

Replication Controller 简称 RC:

Replication Controller 是 kubernetes 系统中的核心概念,用于定义pod副本的数量。在master内,controller manager 进程通过RC的定义来完成pod的创建,监控,启停等操作

当我们定义了一个RC并提交到kubernetes集群中以后,master节点上的controller manager组件就得到通知,定期巡检系统中当前存活的目标pod,并确保目标pod实例的数量刚好等于此RC的期望值,如果有多个pod副本在运行,系统就会停掉一些pod,否则系统就会再自动创建一些pod。可以说,通过RC,kubernetes实现了用户应用集群的高可用性,并且大大减少了系统管理员在传统IT环境中需要完成的许多手工运维工作

在运行的时候,我们可以通过修改RC的副本数量,来实现Pod的动态缩放(scaling)

kubectl scale rc jxc --replicas=3

删除RC并不会影响通过该RC已创建好的pod,为了删除所有pod,可以设置replicas=0,然后更新该RC。另外,客户端工具kubectl提供了stop和delete命令来完成一次性删除

RC 和 RC控制的全部pod

指定容器的配额:

对指定容器实施配额管理非常简单,只要在pod或 rc 的定义文件中设定 resources属性即可为某个容器指定配额。目前支持CPU和Memory两类资源的配额限制。

例如

apiVersion: v1
kind: ReplicationController
metadata:
  name: jxc
  labels:
    name: jxc
spec:
  replicas: 1
  selector:
    name: jxc
  template:
    metadata:
      labels:
        name: jxc
    spec:
      containers:
      - name: jxc
        image: 192.168.255.128:5000/jxc:0.0.3
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8080
        resources:
          limits:
            cpu: 0.5
            memory: 500Mi

以上配置表示,系统将对容器 限制 CPU为0.5,可用内存限制为500MIB字节

kubernetes 启动一个容器时,会将CPU的配额 值乘以1024 并转为整数传递给docker run 的 --cpu-shares 参数, 之所以乘以1024 是因为docker的

cpu-shares 参数是以1024为基数基数CPU时间的。 关于 docker 的 cpu-shares 参数 解析 请参考 https://blog.csdn.net/weixin_39639119/article/details/83046676

,同样的,memory 配额也会被转换为整数传递给 docker run 的 --memory参数。

 

全局默认配额:

通常情况下,我们将会定义非常多的 rc,如果 每个 资源 都要我们 设置 配额的话,那会显得 十分麻烦,

我们可以通过 创建 LimitRange对象 设置全局默认配额。

vim pod-container-limits.yaml

apiVersion: v1
kind: LimitRange
metadata:
  name: limit-range-1
spec:
  limits:
    - type: "Pod"
      max:
        cpu: "2"
        memory: 1Gi
      min:
        cpu: 250m
        memory: 32Mi
    - type: "Container"
      max:
        cpu: "2"
        memory: 1Gi
      min:
        cpu: 250m
        memory: 32Mi
      default:
        cpu: 250m
        memory: 64Mi

~                           

上述 设置表明:

任意 pod内所有容器的CPU 使用 限制在 0.25 -2

任意 pod 内所有 容器 的内存 使用限制在 32Mi - 1Gi

任意容器的 CPU使用限制在0.25 - 2,默认值为64Mi

任意容器的内存使用限制在 32Mi - 1Gi,默认值为64Mi

 

 

kubectl replace -f pod-container-limits.yaml

kubectl describe limits limit-range-1

[root@linux-node1 kubefile]# kubectl describe limits limit-range-1

Name: limit-range-1

Namespace: default

Type Resource Min Max Default Request Default Limit Max Limit/Request Ratio

---- -------- --- --- --------------- ------------- -----------------------

Pod cpu 250m 2 - - -

Pod memory 32Mi 1Gi - - -

Container memory 32Mi 1Gi 64Mi 64Mi -

Container cpu 250m 2 250m 250m -

 

运行 kubectl create 命令 创建该 pod

[root@linux-node1 kubefile]# kubectl describe pod jxc

Limits:

cpu: 250m

memory: 64Mi

Requests:

cpu: 250m

memory: 64Mi

创建成功后,查看该pod的详细信息,可以看到系统中LimitRange的设置对新创建的容器进行了资源限制(使用了LimitRange中的默认值)

 

如果,我们在pod的定义文件中指定了配额参数,则可遵循局部覆盖全局的原则,当不能超过了全局设定的最大值

 

replica set:

由于replication controller 与kubernetes代码中的模块replication controller 同名,同时这个词也无法准确表达它的本意,所以在kubernetes 1.2 的时候,它就升级成了另外一个新的概念 -- replica set。二者之间唯一的区别是,Replica Set支持了基于集合的Label Selector功能

ReplicaSet是支持新的set-based 选择器要求的下一代 ReplicationController。它主要用作Deployment 协调pod创建,删除和更新。虽然ReplicaSets可以独立使用,但它主要被

Deployment协调pod创建,删除和更新。建议使用Deployment而不是直接使用ReplicaSets

 

 

Deployment:

学过saltstack都值得,salt有一个状态模块,只要你在salt配置文件描述好状态,salt就会将你指定的主机状态改变到你的目标状态。

Deployment也能刚这样的事情,你只需要在Deployment中描述您想要的目标状态是什么。Deployment Controller就会帮你将Pod 和

ReplicaSet的实际状态改变到您的目标状态

典型用例:

(1)创建一个Deployment对象来生成对应的ReplicaSet,并完成Pod副本的创建过程

(2) 检查Deployment的状态来查看部署动作是否完成,pod副本的数量是否达到预期的值

(3)更新Deployment以创建新的Pod,通过修改pod-template-spec字段来声明pod的新状态。这会创建一个新的

replicaSet, Deployment 会按照控制的速率将pod从旧的ReplcaSet移动到新的ReplicaSet中

(4)如果当前状态不稳定,则回滚到一个早先的Deployment版本

(5)扩容 Deployment 以满足更高的负载

(6)查看 Deployment 状态,判断发布是否成功

(7)清除旧的replicaSets

 

创建deployment

[root@linux-node1 kubefile]# vim ku-deployment.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: jxc-deployment
  labels:
    web: jxc
spec:
  replicas: 1
  selector:
    matchLabels:
      web: jxc
  template:
    metadata:
      labels:
        web: jxc
    spec:
      containers:
      - name: jxc
        image: 192.168.255.128:5000/jxc:0.0.3
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8080

创建 deployment

kubectl create -f ku-deployment.yaml --record

-- record 当我们需要查看 历史版本时,可以很方便的查看每次 revision变化

 

查看deployment 的 创建详情

[root@linux-node1 kubefile]# kubectl describe deployment jxc-deployment

[root@linux-node1 kubefile]# kubectl get deployments

[root@linux-node1 kubefile]# kubectl get rs

 

runing说明启动成功

[root@linux-node1 kubefile]# kubectl get pods

NAME READY STATUS RESTARTS AGE

jxc-deployment-3952983837-mw8df 1/1 Running 0 3m

 

 

 

更新

deployment的更新

当 使用 kubectl edit 命令 时,就可以 编辑 yaml 文件,当deployment的pod template的 label 发生更新或者镜像发生 更改时

,才会触发更新 信号(rollout)

例如将 jxc:0.0.3 更改为 jxc0.0.4

kubectl edit deployment/jxc-deployment

spec:

containers:

- image: 192.168.255.128:5000/jxc:0.0.4

imagePullPolicy: IfNotPresent

name: jxc

ports:

- containerPort: 8080

protocol: TCP

resources: {}

terminationMessagePath: /dev/termination-log

dnsPolicy: ClusterFirst

restartPolicy: Always

securityContext: {}

terminationGracePeriodSeconds: 30

 

[root@linux-node1 kubefile]# kubectl rollout status deployment/jxc-deployment

deployment "jxc-deployment" successfully rolled out

 

 

回退

当deployment 更新时,就会创建一个revision。我们可以通过设置.spec.revisionHistoryLimit来指定deployment最多保留多少个

revision历史记录。默认会保留所有的revision;如果将该项设置为0,deployment就不允许回退了

 

我们先用 kubectl edit deployment/jxc-deployment 将 版本 修改为一个不存在的版本

spec:

containers:

- image: 192.168.255.128:5000/jxc:0.0.6

imagePullPolicy: IfNotPresent

name: jxc

ports:

- containerPort: 8080

protocol: TCP

resources: {}

terminationMessagePath: /dev/termination-log

dnsPolicy: ClusterFirst

restartPolicy: Always

securityContext: {}

terminationGracePeriodSeconds: 30

 

[root@linux-node1 kubefile]# kubectl rollout status deployment/jxc-deployment

Waiting for rollout to finish: 0 of 1 updated replicas are available...

通过 该 命令 , 我们可以得知 版本更新 卡住了

[root@linux-node1 kubefile] kubectl get pods

NAME READY STATUS RESTARTS AGE

jxc-deployment-4197170976-8sph2 0/1 ImagePullBackOff 0 2m

pods 也处于 ImagePullBackOff 状态

 

我们 需要 回退到稳定的版本

我们 先 查看 deployment 历史版本记录

[root@linux-node1 kubefile]# kubectl rollout history deployment/jxc-deployment

deployments "jxc-deployment"

REVISION CHANGE-CAUSE

1 kubectl create -f ku-deployment.yaml --record

2 kubectl edit deployment/jxc-deployment

3 kubectl edit deployment/jxc-deployment

 

查看当个 version 信息

kubectl rollout history deployment/jxc-deployment --revision=2

deployments "jxc-deployment" with revision #2

Labels: pod-template-hash=4034379550

web=jxc

Annotations: kubernetes.io/change-cause=kubectl edit deployment/jxc-deployment

Containers:

jxc:

Image: 192.168.255.128:5000/jxc:0.0.4

Port: 8080/TCP

Volume Mounts: <none>

Environment Variables: <none>

No volumes.

回退到 上一个版本

 kubectl rollout undo deployment/jxc-deployment

[root@linux-node1 kubefile]# kubectl rollout undo deployment/jxc-deployment

deployment "jxc-deployment" rolled back

[root@linux-node1 kubefile]# kubectl get pods

NAME READY STATUS RESTARTS AGE

jxc-deployment-4034379550-pjfp9 1/1 Running 0 3s

回退到指定版本

kubectl rollout undo deployment/jxc-deployment --to-revision=2

[root@linux-node1 kubefile]# kubectl rollout undo deployment/jxc-deployment --to-revision=1

deployment "jxc-deployment" rolled back

[root@linux-node1 kubefile]# kubectl get pods

NAME READY STATUS RESTARTS AGE

jxc-deployment-3952983837-tq31x 1/1 Running 0 4s

 

扩容

kubectl scale deployment deployment/jxc-deployment --replicas 2

[root@linux-node1 kubefile]# kubectl scale deployment jxc-deployment --replicas 2

deployment "jxc-deployment" scaled

[root@linux-node1 kubefile]# kubectl get pods

NAME READY STATUS RESTARTS AGE

jxc-deployment-3952983837-jzzzv 1/1 Running 0 4s

jxc-deployment-3952983837-tq31x 1/1 Running 0 2m

 

暂停和 恢复

当需要对 deployment 进行多次修改时, 我们可以 先暂时,再恢复,防止 不必要的rollout

kubectl rollout pause deployment/jxc-deployment

[root@linux-node1 kubefile]# kubectl rollout pause deployment/jxc-deployment

deployment "jxc-deployment" paused

 

我 把 镜像的版本改为 0.0.4 ,然后恢复

kubectl rollout resume deploy jxc-deployment

[root@linux-node1 kubefile]# kubectl rollout resume deploy jxc-deployment

deployment "jxc-deployment" resumed

 

 

Horizontal Pod Autoscaling

HPA 的操作对象是RC,RS 或 Deployment对应的Pod,根据观察到的CPU等实际使用量与用户的期望值进行比对,做出是否需要增减实例数量的决策

kubernetes 根据 pod当前系统的负载来自动扩容,如果系统负载超过预定值,就开始增加pod的个数,如果低于某个值,就自动减少pod的个数。在v1.6

版本之前,仅支持使用CPU负载作为是否扩容的判定条件;自v1.6版本开始提供了根据应用自定义指标进行自动扩容和缩容的功能

我们可以通过创建 yaml 文件,来实现自动扩容

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: jxc
  namespace: default
spec:
  maxReplicas: 10
  minReplicas: 1
  scaleTargetRef:
    kind: Deployment
    name: jxc
  targetCPUUtilizationPercentage: 90

kubectl create -f jxc-hpa.yaml

上述 脚本的意思 是 当名为 jxc 的 deployment 的 pod副本的CPU使用率 超过 90%时,会触发自动扩容行为。但 扩容或缩容都必须满足约束条件

pod 的副本数量 在 1-10 之间

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

kubernetes RC 与 Deployment ,Pod,Horizontal Pod Autoscaling ,replica set资源 的相关文章

  • 后疫情时代企业云原生成本优化指南

    在本篇文章的末为还有福利 在等着大家哦 前言 近年来 公有云 混合云等技术在全球迅速发展 云的普及度越来越高 Docker Kubernetes DevOps Service Mesh等云原生技术蓬勃发展 但在 上云 之后 企业却往往发现
  • Jenkins 管道确定分支是否用于 Bitbucket 拉取请求

    我将 Jenkins 与Bitbucket分支源插件 一切都很好 但我希望能够根据分支是否与拉取请求关联来运行 排除管道中的某些阶段 例如 pipeline stages stage build compile stage package
  • Azure DevOps API 添加公钥

    我希望能够通过 API 添加用于 SSH 访问 Azure DevOps 的公钥 但我似乎无法在 doco 中找到实现此操作的方法 通过 UI 手动执行此操作是不可行的 因为这适用于许多用户和许多项目 谢谢 API 没有记录 但是我们可以使
  • Pod 在 Kubernetes 中启动但不工作

    创建了具有 3 个 Pod 的 Kubernetes 集群部署 并且全部运行良好 但是当尝试运行它们时无法做到这一点 尝试在描述部分中执行卷曲 Pod 的 Ip 内部 我可以看到此错误 MountVolume SetUp failed fo
  • 在 CI 管道中运行开发服务器

    我有一个使用 Github Action Workflows 的 CI 管道设置 我想在其中运行 Cypress 自动化测试 但是我在如何运行我的开发服务器方面遇到了一些逻辑问题 让我向你展示我的管道 name Nuxt CI Pipeli
  • 如何在docker中安装.net框架?

    我想将 dotnet Framework 4 6 1 安装到 microsoft dotnet latest 映像中 net core 需要此映像 但我还需要该框架 首先 建议更新您的标签使用情况以引用 MCR 位置 请参阅https gi
  • AWS CodePipeline:在 CodeBuild 中获取 CloudFormation 输出

    我正在使用 AWS CodePipeline Cloudformation 和 CodeBuild 学习一些开发运营技术 我的 简化的 管道是这样的 推送到 github 存储库会触发管道 CloudFormation 构建 更新后端基础设
  • 如何计算 docker 限制

    我创建了我的码头工人 Python Flask 如何计算内存和 CPU 的限制 我们是否有一些工具可以在具有不同限制的 docker 上运行性能测试 然后建议设置的最佳限制数字是多少 对于已经在容器内运行的应用程序 您可以使用docker
  • 如何解决现有文件和符号链接之间的 npm install 冲突?

    我遇到了一个问题NPM https www npmjs com 它似乎正在检测具有相同名称的现有文件和符号链接之间的冲突 运行时我没有看到任何符号链接ls l从我的项目的根文件夹 我如何弄清楚 NPM 发生了什么并解决这个冲突 持续集成构建
  • 在 vscode 扩展的集成测试期间打开工作区

    我有一个用例 我需要在主机环境中打开一个工作区以进行 vscode 测试 我想知道一个打开默认工作区的函数和另一个可以与await 一起使用的函数 以便测试函数等待工作区打开 None
  • Azure Linux 应用服务:从 DevOps 管道部署后安装包

    我目前正在 Azure Devops 中设置 CI CD 管道 以在 Linux 托管应用程序服务 而不是 VM 上部署 NodeJS 应用程序 我的构建和部署都很顺利 但我需要确保在部署应用程序后在环境中安装一些软件包 问题是 无论如何a
  • 如何使用 IBM Bluemix Track & Plan 管理多个组件

    我们有一个由多个不同组件 不同功能 语言 组成的应用程序 在 IBM Bluemix 中是否可以使用单个 Track Plan 功能来管理组件的工作项 但将源代码保留在单独的 git 存储库中 例如 我希望整个应用程序有一个积压工作 然后由
  • 在ansible中使用连字符

    我正在学习 Ansible 但我很困惑何时在剧本中使用连字符 何时不使用连字符 据我所知 连字符用于 Ansible 中的列表 例如 my first playbook hosts webservers why did we use hyp
  • 组名称变量在天蓝色管道中可以是动态的吗?

    我在 azure 上有两个环境 它们之间的区别之一只是来自变量组的环境变量 是否可以为一个管道动态设置组名称 而不是设置两个可以映射自己的组变量的管道 这是我的构建管道的示例 trigger master develop jobs job
  • 如何在前端js应用程序(如后端应用程序)中使用变量替换?

    我正在尝试为一些应该非常简单的事情找到一个优雅的解决方案 我正在使用 create react app 开发一个 React 应用程序 并且在将代码部署到不同环境 例如在 Azure 中 时 我试图找到一种简单的方法来替换变量 例如 API
  • Terraform - 我应该使用 user_data 还是 Provisioner 来引导资源?

    看来我可以使用user data使用模板文件或 远程执行 provisioner使用内联命令进行引导 那么哪一个被认为更惯用呢 你应该使用user data The 用户数据 http docs aws amazon com AWSEC2
  • 即使从 BIOS 设置启用虚拟化后,也无法在 Windows 10 Home 上运行 Docker Toolbox

    在运行 docker faststart 终端时出现以下错误 运行预创建检查 预创建检查出错 这 计算机未启用 VT X AMD v 在 BIOS 中启用它是 强制 看起来步骤 检查是否 出了问题 机器默认存在 按任意键继续 我已经尝试了从
  • 具有 Spring Boot 应用程序的 docker Secret 无法在 docker swarm 模式/run/secrets 下工作

    我正在尝试设置 MySQL 容器和 Spring Boot 应用程序的数据库密码的环境变量 该密码通常在 docker 秘密中声明 echo db secured password docker secret create secret 这
  • 无法将 SonarQube 分析结果与 VSTS 集成

    我正在 VSTS 中使用准备 运行和发布分析任务来运行 SonarQube 分析并发布结果以构建摘要 前两个步骤成功执行 但 发布分析 任务失败 因为它无法获取分析 ID 的任务 我收到以下错误消息 无法获取 ID AWE9 wu8 fbf
  • 将容器推送到 Azure 容器注册表时资源访问被拒绝

    使用 Docker Compose 将容器推送到私有 Azure 容器注册表时 Azure DevOps 管道返回以下错误 正在推送 容器 注册表 应用程序 最新 推送引用存储库 docker io registry container 被

随机推荐

  • 机器学习分类模型-线性回归Linear regression

    Linear regression module from collections import Counter import numpy as np import pandas as pd from imblearn over sampl
  • 阿里云ftp配置

    yum install vsftpd 安装ftp rpm Uvh http mirror centos org centos 6 os x86 64 Packages ftp 0 17 54 el6 x86 64 rpm 安装ftp插件 v
  • 学习PostgreSQL

    参考链接 https www runoob com postgresql postgresql tutorial html
  • Mysql 批量update和批量insert详解

    为了减少与数据库的连接 减少服务器的负荷 需要我们时常对SQL进行分析 优化等操作 针对mysql的批量更新 insert 和 update 就是使用一条INSERT UPDATE语句来更新多条记录 由于不是标准的SQL语法 只能在MySQ
  • 构建知识图谱,让自己更值钱 #CSDN博文精选# #知识图谱# #IT技术#

    大家好 我是小C 又见面啦 文章过滤器 精选大咖干货 助力学习之路 5天20篇CSDN精选博文带你掌握系统化学习方法 专栏将挑选有关 系统化学习方法 的20篇优质文章 帮助大家掌握更加科学的学习方法 在这里 你将收获 快速掌握系统化学习的理
  • Android 弹出通知

    Android 8 0
  • fatal error C1083: 无法打开包含文件:“iostream.h”: No such file or directory

    刚开始用Visual studio net 2003 一个这样的例子 新建了一个win 32项目 include stdafx h include
  • 使用Mask-RCNN在实例分割应用中克服过拟合

    点击上方 AI公园 关注公众号 选择加 星标 或 置顶 作者 Kayo Yin 编译 ronghuaiyang 导读 只使用1349张图像训练Mask RCNN 有代码 代码 https github com kayoyin tiny in
  • 【react】回调函数形式的ref

    回调函数有3个特点 是我定义的函数 我没有调用这个函数 在我没有调用的情况下这个函数自己执行了 ref绑定一个箭头函数作为回调函数 可以输出以下这段看下 ref绑定的箭头函数是会自己执行的 class Demo extends React
  • 关于运发的知识点123(个人笔记 持续更新)

    前言 作为一个物联网的小辣鸡 硬件设计水平不能说没有 只能说一点点 正好要做新项目 自己学着去处理信号 滤波 在这里做一点笔记 参考书一 杨建国老师 新概念模拟电路 pdf 参考书二 单电源运放图集 pdf 原版 翻译中文版 注 想要的自己
  • redis配置 -详情-redis.config

    Redis config 启动的时候 就通过配置文件来启动 单位 配置文件 unit单位 对大小写不敏感 不区分大小写 INCLUDES 包含 include path to local conf include path to other
  • 加糖的CRM---开源项目Sugar CRM中文化安装过程

    目前CRM满天飞 一直也没什么兴趣 好象从几百万美刀到几百块的都有 这次试了试安装Sugar CRM 把安装过程梳理了一下 记下来 以下在环境为windows XP sp2 IIS5 1 MYSQL4 18 PHP5 0下安装成功 首先是要
  • 如何修改NuGet默认全局包文件夹的位置?

    由于一些历史原因 重装系统成为Windows用户解决疑难杂症的祖传手艺 受此影响 给硬盘分区几乎成为了一种执念 少则C D两个盘 夸张一点的5 6个盘的也不是没有 PS macOS和Linux一直都不鼓励给磁盘分区 虽然不禁止但也不提倡 随
  • webpack基础配置

    webpack基础配置 关键字记录 module exports require entry main mode development production output filename path publicPath devServe
  • Git高级之配置多个SSH key

    最近我们在代码托管平台上使用SSH的方式下拉代码 通常是用一个ssh key来拉取所有托管平台的代码 如码云 GitHub GitLab等 但是总用一个不是太好 会有安全风险 这就需要为每个托管平台设置单独的SSH key 下面我们下简单介
  • tensorRT-lenet C++代码分析【附代码】

    前面的文章中已经写了一个tensorRT简单的demo lenet推理 tensorRT lenet 实现了从torch模型转wts 同时也展示出了wts内网络的详细信息 再转engine后的推理过程 本文章是在之前的基础上去分析C 代码的
  • 约瑟夫环生死小游戏-报数下船

    30 个人在一条船上 超载 需要 15 人下船 于是人们排成一队 排队的位置即为他们的编号 报数 从 1 开始 数到 9 的人下船 如此循环 直到船上仅剩 15 人为止 问都有哪些编号的人下船了呢 totalNumber 30 总共人数 n
  • 【网络】传输层-UDP协议

    文章目录 UDP报文格式 UDP协议特性 无连接 不可靠 面向数据报 UDP缓冲区 UDP特性对于编程的影响 基于UDP的应用层协议 netstat工具 pidof命令 UDP报文格式 查看Linux系统下的 usr include net
  • 使用opencv实现简单的人脸识别

    一 opencv模块的使用 1 简介 opencv python是一个python绑定库 旨在解决计算机视觉问题 使用opencv模块 可以实现一些对图片和视频的操作 2 安装 安装opencv之前需要先安装numpy matplotlib
  • kubernetes RC 与 Deployment ,Pod,Horizontal Pod Autoscaling ,replica set资源

    Pod Pod是 kubernetes 的最基本的操作单元 包含一个或多个紧密相关的容器 kubernetes 使用pod在容器之上再封装一层 其一个很重要的原因是 docker容器之间的通信受到docker网络机制的限制 在docker中