在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节点的展示

相关推荐
青衫客361 天前
浅谈Kubernetes在systemd cgroup模式下的Slice/Scope组织结构
云原生·容器·kubernetes
王九思1 天前
Podman 介绍
docker·云原生·kubernetes·podman
Gold Steps.1 天前
K8S基于 Argo Rollouts 的高级版本发布实践
云原生·容器·kubernetes
孤岛悬城1 天前
61 K8s之Pod控制器与配置资源管理
云原生·容器·kubernetes
噎住佩奇1 天前
kubeadm方式部署单节点k8s
云原生·容器·kubernetes
十月南城1 天前
Kubernetes入门地图——核心对象、网络与存储的抽象关系与心智模型
网络·容器·kubernetes
Java程序员威哥1 天前
Java应用容器化最佳实践:Docker镜像构建+K8s滚动更新(生产级完整模板+避坑指南)
java·开发语言·后端·python·docker·kubernetes·c#
不做码农好多年,该何去何从。2 天前
云原生k8s(一)
云原生·容器·kubernetes
Y.O.U..2 天前
Kubernetes-PV(PersistentVolume)和PVC(PersistentVolumeClaim)
云原生·容器·kubernetes
Curvatureflight2 天前
Kubernetes完全指南:从集群搭建到生产部署
云原生·容器·kubernetes