k3s x GitLab Runner Operator,GitLab CI 云原生构建新体验

GitLab CI与DOKS生产级CI/CD流水线实战指南 CI/CD流水线是现代云原生应用交付的核心基础设施,其本质是将代码变更自动转化为可验证、可发布、可回滚的运行态服务。实现这一目标需兼顾Kubernetes集群稳定性、流水线安全性与开发者体验三重维度。GitLab CI凭借内置权限模型和MR深度集成,天然适配最小权限与审计合规要求;DigitalOcean Managed Kubernetes(DOKS)则通过托管控制平面、预置可观测组件与区域亲和部署,显著降低K8s运维复杂度。二者组合在真实交付中可将MTTD压缩至秒级、MTTI控制在分钟级,支撑灰度发布、 阅读详情

GitLab CI 是非常常用的一款 CI/CD 工具,只需要在 .gitlab-ci.yml 文件中用 YAML 语法编写 CI/CD 流水线即可。而 GitLab CI 能够运行的关键组件是 GitLab Runner。GitLab Runner 是一个轻量级、高扩展的代理,主要用来执行 GitLab CI/CD 流水线中的 Job,然后将 Job 的执行结果返回 GitLab 实例。

GitLab Runner 的安装方式有很多种,包括安装包、Docker、Helm Chart 等,本文将用 GitLab Runner Operator 的方式来在 k3s 上安装 GitLab Runner,并执行 CI/CD 流水线。关于其他安装方式的详情,可以查看 GitLab Runner 安装文档。

GitLab Runner Operator 主要是在 Kubernetes 平台上来管理 GitLab Runner。在 Kubernetes 平台上安装 GitLab Runner 有两个先决条件:

  • Kubernetes 的版本必须是 v1.21.1 以上
  • Cert manager 的版本为 v1.7.1 以上

本文使用 k3s 来搭建一个 Kubernetes 平台。


k3s 的安装


k3s 是经 CNCF 一致性认证的 Kubernetes 发行版,专为物联网及边缘计算而设计。简言之,k3s 是一个轻量级的 Kubernetes 发行版。

k3s 的安装非常简单,对于国内用户来讲,执行如下命令可以加速 k3s 的安装:

$ curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
[INFO]  Finding release for channel stable
[INFO]  Using v1.28.5+k3s1 as release
[INFO]  Downloading hash rancher-mirror.rancher.cn/k3s/v1.28.5-k3s1/sha256sum-amd64.txt
[INFO]  Downloading binary rancher-mirror.rancher.cn/k3s/v1.28.5-k3s1/k3s
[INFO]  Verifying binary download
[INFO]  Installing k3s to /usr/local/bin/k3s
[INFO]  Skipping installation of SELinux RPM
[INFO]  Creating /usr/local/bin/kubectl symlink to k3s
[INFO]  Creating /usr/local/bin/crictl symlink to k3s
[INFO]  Skipping /usr/local/bin/ctr symlink to k3s, command exists in PATH at /usr/bin/ctr
[INFO]  Creating killall script /usr/local/bin/k3s-killall.sh
[INFO]  Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO]  env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO]  systemd: Creating service file /etc/systemd/system/k3s.service
sh: 1014: restorecon: not found
sh: 1015: restorecon: not found
[INFO]  systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO]  systemd: Starting k3s

接着可以查看 k3s 是否安装成功:

#查看 k3s 版本
$ k3s --version
k3s version v1.28.5+k3s1 (5b2d1271)
go version go1.20.12

# 查看 k3s 集群
$ kubectl get nodes
NAME             STATUS   ROLES                  AGE   VERSION
vm-0-12-ubuntu   Ready    control-plane,master   38s   v1.28.5+k3s1

上述命令已经快速构建了一个单节点的 k3s 集群。接下来就可以在这个 k3s 集群上使用 GitLab Runner Operator 来安装 GitLab Runner 了。安装详情可以在 OperatorHub.io 上查看详细步骤。


GitLab Runner Operator 的安装

在安装之前首先需要安装 cert-manager。


安装 cert-manager

使用如下命令即可完成安装。

$ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.7.1/cert-manager.yaml

customresourcedefinition.apiextensions.k8s.io/certificaterequests.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/certificates.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/challenges.acme.cert-manager.io created

......太长了,删除一部分输出日志......

mutatingwebhookconfiguration.admissionregistration.k8s.io/cert-manager-webhook created
validatingwebhookconfiguration.admissionregistration.k8s.io/cert-manager-webhook created

上述过程中安装了 N 多 Kubernetes 资源。

安装 Operator Lifecycle Manager

接下来要安装 Operator Lifecycle Manager(OLM),这是一个能够对 Kubernetes 集群上 Operator 进行管理的工具。使用如下命令安装:

$ curl -sL https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.26.0/install.sh | bash -s v0.26.0

customresourcedefinition.apiextensions.k8s.io/catalogsources.operators.coreos.com created
customresourcedefinition.apiextensions.k8s.io/clusterserviceversions.operators.coreos.com created

......太长了,删除一部分输出日志......

Waiting for deployment "olm-operator" rollout to finish: 0 of 1 updated replicas are available...
deployment "olm-operator" successfully rolled out
deployment "catalog-operator" successfully rolled out
Package server phase: Installing
Package server phase: Succeeded
deployment "packageserver" successfully rolled out

可以将上面的版本换成自己想要的版本,比如 `v0.22.0`。


安装 Operator

接下来执行如下命令来完成 Operator 的安装:

$ kubectl create -f https://operatorhub.io/install/stable/gitlab-runner-operator.yaml
subscription.operators.coreos.com/my-gitlab-runner-operator created

查看安装的 Operator

使用如下命令查看 Operator 是否安装成功

# 查看 csv 资源
$ kubectl get csv -n operators
NAME                             DISPLAY         VERSION   REPLACES                         PHASE
gitlab-runner-operator.v1.15.1   GitLab Runner   1.15.1    gitlab-runner-operator.v1.15.0   Succeeded

# 查看 pod 状态
$ kubectl -n operators get pods
NAME                                                READY   STATUS    RESTARTS   AGE
gitlab-runner-controller-manager-5b7f856fc5-fhk2f   2/2     Running   0          20h

接下来就可以使用 GitLab Runner Operator 来创建 GitLab Runner 了。

使用 Operator 创建 GitLab Runner

本文使用 GitLab 中国发行版——极狐GitLab 来进行测试。极狐GitLab 是 GitLab 除 CE/EE 之外发行的另外一个版本,专门面向中国用户。可以私有化部署,也可以使用 SaaS(jihulab.com)。

创建 GitLab Runner 之前,需要明确创建什么样的 Runner,是共享的还是专有的,是群组级别的还是项目级别的。关于 GitLab Runner 的作用范围可以查看 GitLab Runner 官方文档。

获取 Runner 注册 token

以注册项目 Runner 为例来说,在项目 --> 设置 --> CI/CD --> Runner 中,选择新建项目 Runner:

点击新建项目 Runner 选项,在出现的界面中填写好对于的信息,包括 Runner 标签、描述等:

点击创建 Runner就会出现注册 Runner 的命令,在命令中就有 Runner 注册的 token,默认以 plrt 开头。

一定要保存好此 token,后面会用到。

创建包含注册 token 的 secret

将上一步中获取的 Runner 注册 token 存入下方的 yaml 文件:

cat > gitlab-runner-secret.yml << EOF
  apiVersion: v1
  kind: Secret
  metadata:
    name: jh-gitlab-runner-secret
  type: Opaque
  stringData:
    runner-registration-token: REPLACE_ME # 上一步中创建的 Runner 注册 token
  EOF

使用如下命令创建 secret

$ kubectl  apply -f gitlab-runner-secret.yml
secret/jh-gitlab-runner-secret created

创建 Runner CRD

Runner CRD yaml 文件内容如下:

cat > gitlab-runner.yml << EOF
apiVersion: apps.gitlab.com/v1beta2
kind: Runner
metadata:
    name: gitlab-runner
spec:
    gitlabUrl: https://jihulab.com
    buildImage: alpine
    token: jh-gitlab-runner-secret
EOF

参数说明:

  • gitlabUrl:GitLab/极狐GitLab 实例的地址,本文使用极狐GitLab SaaS,地址为 https://jihulab.com。
  • token:上一步创建的 secret 名称。

使用如下命令完成 Runner CRD 的创建:

$ kubectl apply -f gitlab-runner.yml
runner.apps.gitlab.com/jh-gitlab-runner created

接着确认一下 Runner CRD 是否创建成功:

# 查看 Runner CRD 资源
kubectl get runner
NAME               AGE
jh-gitlab-runner   20h

# 查看 Runner pod
$ kubectl  get pods
NAME                                       READY   STATUS    RESTARTS   AGE
jh-gitlab-runner-runner-6f7c4bf7dc-r9lzh   1/1     Running   0          16h

接着就可以在项目的 Runner 页面查看 Runner 是否注册成功:

可以看到有一个该项目专用的 Runner 已经注册成功。接下来测试此 Runner。


Runner 测试

在项目的 .gitlab-ci.yml 文件中写入一个构建容器镜像并推送到极狐GitLab 内置的镜像仓库的 Job 配置:

build:
  image: docker:latest
  stage: build
  tags:
    - jh
  services:
    - docker:20.10.7-dind
  script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
    - docker build -t $CI_REGISTRY_IMAGE:v1.0.0 .
    - docker push $CI_REGISTRY_IMAGE:v1.0.0


触发流水线,然后在项目 --> 构建 --> 流水线中查看结果:

可以看到流水线构建成功。再查看构建日志,确认构建此次流水线所需的 Runner 是否为上面创建的 Runner:

从红色方框的信息看,此次 CI/CD 流水线构建使用的就是上述用 GitLab Runner Operator 创建出来的 Runner。

过程中遇到的问题及修复方案


operators 中 gcr.io 镜像不可用问题

在安装 Operator 的过程中,gitlab-runner-controller-manager 依赖镜像 gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0。由于此镜像在国内无法正常拉取,会导致以下错误:

$ kubectl -n operators get pods -w
NAME                                                READY   STATUS              RESTARTS   AGE
gitlab-runner-controller-manager-6d88d9d9d4-tdf5m   0/2     ContainerCreating   0          15s
gitlab-runner-controller-manager-6d88d9d9d4-tdf5m   1/2     ErrImagePull        0          31s
gitlab-runner-controller-manager-6d88d9d9d4-tdf5m   1/2     ImagePullBackOff    0          32s

镜像拉取失败的详细日志:

Warning  Failed     45s                kubelet            Failed to pull image "gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0": rpc error: code = DeadlineExceeded desc = failed to pull and unpack image "gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0": failed to resolve reference "gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0": failed to do request: Head "https://gcr.io/v2/kubebuilder/kube-rbac-proxy/manifests/v0.8.0": dial tcp 173.194.174.82:443: i/o timeout
Warning  Failed     45s                kubelet            Error: ErrImagePull
Normal   Pulled     45s                kubelet            Container image "registry.gitlab.com/gitlab-org/gl-openshift/gitlab-runner-operator/gitlab-runner-operator:v1.15.1" already present on machine
Normal   Created    45s                kubelet            Created container manager
Normal   Started    45s                kubelet            Started container manager
Normal   BackOff    44s (x2 over 45s)  kubelet            Back-off pulling image "gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0"
Warning  Failed     44s (x2 over 45s)  kubelet            Error: ImagePullBackOff
Normal   Pulling    29s (x2 over 75s)  kubelet            Pulling image "gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0"

提示无法拉取 gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0。解决办法为将上述镜像替换为 kubesphere/kube-rbac-proxy:v0.8.0。替换完成后,pod 运行正常:

$ kubectl  -n operators get pods
NAME                                                READY   STATUS    RESTARTS   AGE
gitlab-runner-controller-manager-5b7f856fc5-fhk2f   2/2     Running   0          20h

看这个镜像应该是 kubesphere 制作的,在此感谢 kubesphere 团队所做的贡献。


pod 中执行 docker 命令

上面测试的 Job 是现在在 kubernetes pod 中执行 docker 命令来构建容器镜像:

build:
  image: docker:latest
  stage: build
  tags:
    - jh
  services:
    - docker:20.10.7-dind
  script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
    - docker build -t $CI_REGISTRY_IMAGE:v1.0.0 .
    - docker push $CI_REGISTRY_IMAGE:v1.0.0

这个过程中其实需要将宿主机的 docker.sock 文件挂在到 Runner pod 里面。这个时候就需要对于 Runner 的 config.toml 文件进行修改了。

使用 Operator 安装的 Runner,其配置文件以 configmap 的形式存在,可以在 Runner 所在的 namespace 下面查看:

$ kubectl  get cm
NAME                             DATA   AGE
jh-gitlab-runner-runner-config   6      20h


查看上述 configmap 的内容,默认情况下对于 config.toml 文件的描述仅有一下内容:

  config.toml: |-
    concurrent = 10
    check_interval = 30
    log_level = "info"
    listen_address = '[::]:9252'

在 Runner pod 中查看 `config.toml` 文件的配置:

[runners.kubernetes]
    host = ""
    bearer_token_overwrite_allowed = false
    image = "alpine"
    namespace = "default"
    namespace_overwrite_allowed = ""
    node_selector_overwrite_allowed = ""
    helper_image = "registry.gitlab.com/gitlab-org/ci-cd/gitlab-runner-ubi-images/gitlab-runner-helper-ocp:v16.0.1"
    poll_timeout = 180
    pod_labels_overwrite_allowed = ""
    service_account_overwrite_allowed = ""
    pod_annotations_overwrite_allowed = ""
    [runners.kubernetes.pod_security_context]
    [runners.kubernetes.init_permissions_container_security_context]
    [runners.kubernetes.build_container_security_context]
    [runners.kubernetes.helper_container_security_context]
    [runners.kubernetes.service_container_security_context]
    [runners.kubernetes.volumes]
    [runners.kubernetes.dns_config]

可以看到在 `[runners.kubernetes.volumes]` 配置中并没有挂载 docker.sock 文件。这时候就需要通过自定义 config.toml 文件的形式来完成文件的挂载了。整个自定义的过程可以查看GitLab config.toml 文件自定义官方文档。

首先,创建一个 `custome-config.toml` 文件,写入挂载文件的内容:

[[runners]]
  [runners.kubernetes]
    [runners.kubernetes.volumes]
      [[runners.kubernetes.volumes.host_path]]
          name = "docker"
          mount_path = "/var/run/docker.sock"
          host_path = "/var/run/docker.sock"

然后,以文件的形式创建 configmap:

$ kubectl create configmap custom-config-toml --from-file config.toml=custom-config.toml
configmap/custom-config-toml created

然后将上述新增的 configmap 添加到 Runner 的 CRD 中:

apiVersion: apps.gitlab.com/v1beta2
kind: Runner
metadata:
  name: jh-gitlab-runner
spec:
  gitlabUrl: https://jihulab.com
  buildImage: alpine
  token: jh-gitlab-runner-secret
  config: custom-config-toml

以 config 为关键字将自定义的 configmap 内容引入。然后创建 Runner 即可。最后可以在 Runner pod 中看到如下内容:

    [runners.kubernetes.volumes]
      [[runners.kubernetes.volumes.host_path]]
        name = "docker"
        mount_path = "/var/run/docker.sock"
        host_path = "/var/run/docker.sock"

说明宿主机的 docker.sock 文件被挂载到了 Runner pod 中,这样就可以在 pod 中使用 docker 命令了。当然,这种方式存在一定的安全问题,建议使用 `kaniko` 进行镜像构建。详情可以查看过往的技术文章Kaniko- 以一种更安全可靠的方式在Kubernetes平台上构建容器镜像。

GitHub 无法链接

在安装 Operator 的时候,因为会从 Operator GitHub 仓库拉取资源直接安装,这时候可能会遇到 GitHub 无法链接的问题(看你服务器在哪儿了)。这时候就可以在Operator Lifycycle Manager GitHub Repo上看一下内容,把无法拉取的文件内容想办法搞到本地,然后在本地执行即可。比如 install.sh、crds.yml、olm.yml文件。当然,前提是要看懂这些文件里面的内容,适当的时候要做一些调整。当然,调整不会影响安装使用。
 

Ubuntu下GitLab手动部署与生产级配置指南 GitLab作为集代码托管、CI/CD、安全扫描于一体的全生命周期DevOps平台,其在Linux系统中的稳定运行依赖于底层环境的精准适配。理解Omnibus包封装原理(嵌入式PostgreSQL/Redis/Nginx)是规避Docker权限陷阱与升级断层的关键;掌握gitlab.rb配置DSL机制,则能实现external_url、shared_buffers、default_language等核心参数的工程化调优。该方案特别适用于需对接LDAP、Nginx反向代理或内网离线部署的企业场景,兼顾安全性、 阅读详情

相关推荐

Kimi K2.6:可编程的AI协作者,深度集成CI/CD与Kubernetes自动化

AI工程助手正从泛化对话走向确定性执行——以Kimi K2.6为代表的新一代模型,依托超长上下文(200万token)与结构化输出控制,实现对CI/CD流水线、Kubernetes声明式配置等核心工程语言的深度语义理解。其技术价值在于将故障诊断、修复建议、合规校验等能力封装为机器可消费的JSON或Bash指令,直接嵌入GitLab CI脚本、Argo CD插件等生产环境。典型应用场景包括自动识别Jest测试flakiness、定位imagePullSecret缺失根因、生成安全合规的Helm变更建议等。本文

技术百科 459

.sh 报错 command not found 解决方法

如果你不是在linux服务器上直接编写的.sh,而是不知道从哪复制粘贴再修改出来的.sh。

GZKPeng的博客 6042

FDE实战进阶:100个云原生与AI部署项目构建高竞争力作品集

在云原生和人工智能技术普及的背景下,基础设施的自动化部署与管理已成为现代软件工程的核心环节。其原理在于通过容器化、编排和持续交付等技术,将应用的生命周期管理工程化,从而提升交付效率、系统可靠性与资源利用率。这一技术体系的价值在于弥合开发与运维的鸿沟,实现快速、稳定且可重复的软件交付。其应用场景广泛覆盖了微服务架构、大数据平台及AI模型服务化等前沿领域。本文聚焦于前沿部署工程师(FDE)的核心技能,围绕容器化、Kubernetes、CI/CD流水线、可观测性、基础设施即代码(IaC)以及AI集成部署等【热词】

weixin_33981932的博客 385

gitlab+docker+jenkins+nexus+k3s实现cicd

cicd持续集成本地部署遇到的问题记录

欢迎留言 732

Kubernetes供应链安全七层纵深防御实战

Kubernetes供应链安全并非单一镜像扫描或RBAC配置问题,而是覆盖代码提交、CI构建、镜像签名、Helm分发、YAML策略、运行时监控与全链路审计的系统性工程。其核心原理在于打破‘默认信任’,通过GPG提交签名、cosign镜像签名、SLSA构建证明等可信验证机制,建立从开发源头到Pod运行的持续校验闭环。该技术方案显著提升云原生环境对投毒攻击、恶意依赖和未授权变更的免疫能力,广泛适用于金融、电商等高合规要求场景下的K8s生产平台加固。

weixin_30825581的博客 412

GLM-5.1国产编程大模型实测:32B dense架构如何提升代码生成准确率

编程大模型正从‘能写代码’迈向‘可交付代码’的关键阶段。其核心在于模型对真实工程语义的理解深度与推理稳定性,而非单纯参数规模。dense架构通过全连接建模强化跨文件依赖与错误归因能力,显著提升代码生成准确率;结合2024年Q1前沿技术栈语料(Rust/eBPF/TS Operator等),使模型具备对K8s、asyncio、gRPC-Gateway等复杂场景的原生适配力。本地化推理部署则依托KV Cache动态预取与bfloat16精度优化,在A10G等中端显卡上实现低延迟、零OOM的CI级稳定服务。本文基

chouzu8463的博客 401

K8S 数据卷volumes之Secret

文章目录一、Secret介绍二、Secret的创建(一)通过命令行创建secret1. 通过文件创建secret2. 通过文件夹创建secret3. 命令行声明键值对创建secret(二)通过资源清单文件创建secret三、Secret的使用1. 将Secret中的数据设置为容器的环境变量2. 使用Volume将Secret作为文件或目录挂载 一、Secret介绍 应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名密码或者秘钥。将这些信息直接保存在容器镜像中显然不妥,Kubernetes 提供的解

weixin_45880055的博客 2494

Kubernetes高频部署架构:千万级CI/CD的控制平面重构实践

Kubernetes作为云原生时代的事实标准容器编排系统,其核心价值不仅在于自动化调度,更在于提供可扩展的状态协调与资源仲裁能力。然而,当CI/CD部署频率突破每秒1次、日均超百万量级时,标准K8s控制平面的etcd写入瓶颈、apiserver连接耗尽、CNI网络初始化延迟等底层约束迅速暴露——此时‘用K8s’必须升级为‘改造K8s’。本文聚焦高频部署场景下的架构范式迁移,深入解析如何通过自研轻量级部署编排器(Deployment Orchestrator)、etcd写入减负策略、Cilium eBPF数据

weixin_34008933的博客 576

kubernetes基于helm部署gitlab-operator

这篇博文介绍如何在 Kubernetes 中使用helm部署 GitLab-operator。为上文gitlab-nginx-ingress-controller service的。获取gitlab UI 登陆的URL地址,如果设置。添加gitlab-operator helm 仓库。查看运行的gitlab-operator pods。使用helm部署gitlab-operator。创建 GitLab 自定义资源 (CR)查看service,确认。获取gitlab UI。部署gitlab实例。

IT 2357

Kubernetes单机部署实战:从Minikube到MetalLB的完整指南

容器编排是现代云原生架构的核心技术,它通过自动化部署、扩展和管理容器化应用,解决了微服务架构下的运维复杂性难题。其核心原理在于将应用及其依赖打包成标准化的容器单元,并通过声明式API和控制器模式实现期望状态的维护。这一技术为开发者和运维团队带来了巨大的价值,包括提升资源利用率、实现快速弹性伸缩、简化环境一致性管理以及支持持续交付。在众多应用场景中,本地开发与测试环境搭建是工程师学习和验证Kubernetes概念的首要环节。针对这一需求,单机部署方案应运而生,它通过在个人开发机上快速构建一个功能完备的Kube

chunchan1381的博客 448

Harness GitOps Agent实战指南:K8s集群中声明式部署的神经中枢

GitOps是一种以Git仓库为唯一事实源、通过声明式配置驱动基础设施与应用状态同步的现代运维范式。其核心原理在于持续比对代码声明(如Helm Chart、Kustomize清单)与集群实际状态,并自动修复偏差。该模式显著提升部署可审计性、可回滚性与环境一致性,技术价值体现在降低人工误操作风险、加速CI/CD反馈闭环、支撑AI原生应用等动态场景的灰度发布与A/B测试。典型应用场景包括金融级多环境交付、LLM服务编排、混合云集群统一治理等。本文聚焦Harness GitOps Agent——一个深度集成Arg

weixin_30756499的博客 315

K3s集群搭建及配置

文章目录一、k3s离线部署准备工作1. 准备节点2. 安装Docker3. [k3s官网](https://github.com/k3s-io/k3s/releases/tag/v1.18.6%2Bk3s1) 中下载部署文件。部署步骤1. 导入镜像:2. 修改文件权限:3. 安装4. 检查是否安装成功:5. 卸载k3s问题解决:1.出现kubernetes cluster unreachable:2.出现The connection to the server localhost:8080 was refu

lonely喆的博客 3994

【信息科学与工程学】【数据中心】第三十五篇 云计算数据中心的学科知识04

编号学科(课程)核心知识点在云计算/云存储/云网络/云安全/云MaaS中的作用代表教材/资料/论文 + 数学方程式列表工业界应用D1421​云原生数据库:TiDB​HTAP(混合事务/分析处理)、分布式SQL、水平扩展、强一致(Raft)、自动故障恢复、与MySQL兼容、TiFlash列式引擎提供弹性扩展的分布式数据库;支撑高并发在线交易与实时分析教材:《TiDB in Action》PingCAP(2020) 论文:《TiDB: A Raft-based HTAP Database》(2017)

weixin_49199313的博客 401

Kubernetes

habor,master,node1,node2都要做“1.安装docker” 1.安装docker 2.在harbor上生成key 3.编辑harbor配置文件 4.启动并验证 2.构建部署kubernetes所需主机 主机名 ip 配置 角色 harbor.timinglee.org 172.25.254.254 cpu1、mem 1G harbor仓库 master-node 172.25.254.100 cpu4、mem>4G master,k8s集群控制节点 node1 1

2301_81717288的博客 512

【信息科学与工程学】计算机科学与自动化—第十五篇 云计算 11 算法篇02

但若第一个应用需求40GB/s,第二个10GB/s,总需求50GB/s>40GB/s,第一个得32GB/s,第二个得8GB/s,不公平。但若分区负载不均(分区1-2各有100任务/s,分区3-4各有50任务/s),A负责1-2(200/s),B负责3-4(100/s),仍均衡。任务 τi​ 的计算需求 Wi​(CPU周期),在频率 f 下执行时间 Ti​=Wi​/f,能耗 Ei​=Pdyn​⋅Ti​=Ceff​⋅V2⋅f⋅(Wi​/f)=Ceff​⋅V2⋅Wi​。若 Mneed​>Mi​,需使用远程显存。

weixin_49199313的博客 107

ROS新手必看:如何用URDF快速搭建UR5机械臂模型(附完整代码)

本文为ROS新手提供了一份详细的UR5机械臂URDF建模实战指南。通过解析URDF核心概念,逐步讲解如何定义link与joint,并整合官方网格文件,最终构建出完整的、可在RViz中可视化与控制的UR5模型。文章还介绍了模型验证、调试技巧以及如何添加碰撞与惯性属性,为后续的物理仿真与算法开发奠定坚实基础。

pz89012345的博客 498

Flutter for OpenHarmony 实战:基于HarmonyOS API 24 计算器

使用 StatefulWidget 管理计算器的状态,确保 UI 能实时响应输入和计算操作setState:核心状态更新机制,用于触发 UI 重建,确保界面与数据同步InkWell:实现按钮的点击效果,提供流畅的视觉反馈。

xiaoqi922的博客 194

nacos3.1.0适配国产数据库

Nacos 3.1.0适配国产数据库指南 本文介绍了Nacos 3.1.0版本适配达梦数据库和人大金仓数据库的具体步骤。主要内容包括:添加达梦和人大金仓的JDBC驱动依赖,修改nacos-persistence模块的配置文件及相关Java类,以及打包和运行注意事项。文章特别指出3.1.0版本需要JDK17环境,并提供了解决常见问题的建议,如添加VM options配置和不同启动方式等。通过本文的配置指导,可以实现Nacos服务在国产数据库环境下的正常运行。

梦昼初的博客 1465

Triton模型服务化实战:GPU推理的稳定性、可观测性与K8s部署

模型服务化是机器学习落地的核心环节,它超越了训练准确率,聚焦于推理阶段的低延迟、高并发、资源可控与故障可溯。其本质是将模型封装为可生产级API服务,涉及模型格式优化(如TensorRT加速)、请求批处理调度、GPU显存与CUDA内核监控、Kubernetes弹性编排等关键技术。Triton Inference Server因其多框架支持、细粒度动态批处理、原生Prometheus指标暴露及热更新能力,成为高压力场景下替代TensorFlow Serving与Flask的关键选择。本文结合金融风控、电商推荐等

图灵教育官方博客 434

基于PID的定速巡航控制系统设计【MATLAB源码+Word文档】

本文详细介绍了定速巡航控制是一种车辆驾驶辅助系统,它能让驾驶者在高速或长途驾驶时,设定一个固定的车速,然后车辆会自动维持这个速度行驶,无需驾驶者持续踩油门。这大大减轻了驾驶者的疲劳,同时也提高了行驶的安全性。PID定速巡航控制系统是一种利用比例(Proportional)、积分(Integral)和微分(Derivative)控制算法来实现车辆定速巡航的先进系统。这种系统能够根据设定的速度,自动调整油门开度或制动力度,使车辆保持恒定的速度行驶。这种控制系统具有响应速度快、控制精度高、稳定性好等优点。

weixin_761237174的博客 1669

开心消消乐

1)当点击一个1时,该1变被反转为0,同时相邻的上、下、左、右,以及左上、左下、右上、右下8个方向的1(如果存在1)均会自动反转为0;2)进一步地,一个位置上的1被反转为0时,与其相邻的8个方向的1(如果存在1)均会自动反转为0;上述样例中,四个角上的1均在中间的1的相邻8个方向上,因此只需要点击一次即可。给定一个N行M列的二维矩阵,矩阵中每个位置的数字取值为0或1。在上述4 * 4的矩阵中,只需要点击2次,即可将所有的1进行消除。接下来N行表示矩阵的初始值,每行均为M个数,取值范围[0,1]

面试高手的博客 2729

OpenCode开源AI编程系统:本地化、可调试、可编排的开发增强方案

AI编程工具正从黑盒式代码补全迈向工程级可控辅助。其核心在于将大模型能力解耦为可调度、可验证、可审计的原子技能,并通过本地化运行保障数据主权。OpenCode与Oh My OpenCode组合正是这一演进的典型代表——它不依赖云端API,支持Ollama等本地模型后端,提供AST解析、上下文感知与Skill Flow编排能力,使AI介入全过程可追溯、可干预、可调试。该方案特别适用于金融、医疗等强合规场景,也契合开发者对‘确定性AI辅助’的实践诉求:不是替代编码,而是增强架构决策、安全审查与文档生成等高价值环

weixin_34226706的博客 345

【CVPR2025 DEIM】超详细!手把手训练自己的数据集教学:从源码下载,配置虚拟环境,准备数据集、训练、验证、推理测试 ,实现0到1的完整教学过程。本文在win系统上训练,最强实时目标检测算法!

本文详细介绍了CVPR2025 DEIM目标检测模型的完整使用流程。内容包含:1)源码下载与虚拟环境配置;2)Visdrone2019数据集准备与配置文件修改;3)训练参数设置及Windows系统常见问题解决方案;4)模型验证、推理测试及热力图生成方法。特别针对Windows用户提供了虚拟环境配置指导,并详细说明了数据集路径设置、参数调整等关键步骤。通过本文的指导,小伙伴可以快速掌握DEIM模型的使用方法,用于学术论文研究和实验分析。

Ai缝合怪、助力小伙伴高效发论文 7627
上一篇: 极狐GitLab Helm Registry 的使用
下一篇: GitLab 中国发行版如何设置镜像拉取策略?
DevOps008
博客等级 码龄8年 75粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值