在k8s中将gitlab-runner的运行pod调度到指定节点

本篇和前面的 基于helm的方式在k8s集群中部署gitlab 具有很强的关联性,因此如果有不明白的地方可以查看往期分享:

文章目录

    • [1. 背景](#1. 背景)
    • [2. 配置](#2. 配置)
      • [step1: 在集群上打标签](#step1: 在集群上打标签)
      • [step2: 修改gitlab的values文件](#step2: 修改gitlab的values文件)
      • [step3: 配置生效](#step3: 配置生效)
      • [step4: 验证](#step4: 验证)

1. 背景

  • 在某些场景下,我们在使用kubernetes作为gitlab-runner的执行器的时候,希望将ci文件运行的runner pod调度到指定的节点上,便于运行某些job,如调度到有gpu资源上的node。
  • 对此,我们可以使用gitlab-runner的高级配置,使用node_selector关键字可以将runner运行的pod调度到某个节点上。
  • 参考文档:gitlab-runner高级配置

2. 配置

step1: 在集群上打标签

master节点打上runner_node=M1,slave节点打上runner_node=S1

bash 复制代码
kubectl label nodes k8s-master01 runner_node=M1
kubectl label nodes k8s-worker01 runner_node=S1

step2: 修改gitlab的values文件

添加 [runners.kubernetes.node_selector]配置,并配置指定调度的label的key和value

复制代码
gitlab-runner:
  ...
  ...
  runners:
    ...
    config: |
      [[runners]]
        [runners.kubernetes]
        ...
        {{- if .Values.global.minio.enabled }}
        [runners.cache]
          ...
          [runners.cache.s3]
            ...
          [runners.kubernetes.node_selector]
            runner_node = "S1"
        {{ end }}

step3: 配置生效

执行helm upgrade命令

复制代码
helm upgrade  gitlab gitlab-jh/gitlab --version 7.3.6 --timeout 600s --set certmanager.install=false --set global.ingress.configureCertmanager=false  --set global.ingress.tls.enabled=true --set gitlab.webservice.ingress.tls.secretName=gitlab-jihulab-cn-ssl --set registry.ingress.tls.secretName=registry-jihulab-cn-ssl --set minio.ingress.tls.secretName=minio-jihulab-cn-ssl --values values.yaml -n jihulab

step4: 验证

运行gitlab-ci流水线,通过命令查看runner的运行pod在哪个节点上;以下分别是调度到master节点和slave节点的展示

相关推荐
运维-大白同学5 小时前
2025最全面开源devops运维平台功能介绍
linux·运维·kubernetes·开源·运维开发·devops
敲上瘾11 小时前
【探索实战】:Kurator分布式统一应用分发平台的全面解析与实践指南
分布式·容器·kubernetes·serverless
Connie14511 天前
记一次K8s故障告警排查(Grafna告警排查)
云原生·容器·kubernetes·grafana
谷隐凡二1 天前
Kubernetes主从架构简单解析:基于Python的模拟实现
python·架构·kubernetes
陈陈CHENCHEN1 天前
SuperMap iManager for K8s 离线环境镜像仓库 Containerd 部署
kubernetes
会飞的小蛮猪1 天前
Ubuntu24.04 基于Containerd部署K8s1.34(私服部署)
docker·云原生·kubernetes
间彧2 天前
Kubernetes滚动发布详解
kubernetes
间彧2 天前
在实际生产环境中,Kubernetes声明式API如何实现蓝绿部署、金丝雀发布等高级部署策略?
kubernetes
间彧2 天前
Kubernetes声明式API相比传统命令式API在故障恢复场景下的具体优势有哪些?
kubernetes·github
间彧2 天前
为什么说Kubernetes的API设计是其成功的关键因素之一?
kubernetes