将pod 指定部署到特定节点(master)上的一种方法记录

简介: 将pod 指定部署到特定节点(master)上的一种方法记录 -nodeSelector需求是这样的,我要搭一个集群,这个集群要走 CI/CD 流程,还要管理 CI/CD 流程的产出物,将其保存在 Harbor 中,让后让产出物在另外两个节点上运行起来。

将pod 指定部署到特定节点(master)上的一种方法记录 -nodeSelector

需求是这样的,我要搭一个集群,这个集群要走 CI/CD 流程,还要管理 CI/CD 流程的产出物,将其保存在 Harbor 中,让后让产出物在另外两个节点上运行起来。咨询了我司 DevOps 大佬,大佬建议将 Jenkins 部署到 Master 节点,可以避免各种证书相关的问题。

那么问题来了, pod 部署一般都是 k8s 来分配,怎么将 Jenkins 部署到特定 master 节点呢?

接下来对我的操作做一个记录。

为master 节点打标签

[root@master ~]# kubectl label nodes master labelName=master

编写yaml

部署文档如下

apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins-deployment
  labels:
    app: jenkins
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      containers:
      - name: jenkins
        image: jenkins:latest
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8080
          name: web
          protocol: TCP
        - containerPort: 50000
          name: agent
          protocol: TCP
        volumeMounts:
        - name: jenkins-home
          mountPath: /var/jenkins_home
      volumes:
      - name: jenkins-home
        hostPath:
          path: /root/jenkins-home
      nodeSelector:
        labelName: master
---
apiVersion: v1
kind: Service
metadata:
  name: jenkins-service
  labels:
    app: jenkins
spec:
  ports:
  - port: 8080
    targetPort: 8080
    name: web
    nodePort: 32019
  - port: 50000
    targetPort: 50000
    name: agent
  selector:
    app-name: jenkins
  type: NodePort

正是由于 Demployment 中spec 中制定了 nodeSelecter 的 label 为 labelName:master, Jenkins 会自动选在 master 节点进行部署。

目录
相关文章
|
Linux
Linux 查看进程PID和线程CPU和内存占用情况
Linux 查看进程PID和线程CPU和内存占用情况
1476 0
|
安全 Linux Shell
CentOS7下快速升级至OpenSSH9.3p2安全版本
CentOS7下快速升级至OpenSSH9.3p2安全版本
921 0
|
Ubuntu Linux C++
Ubuntu20.4配置arm交叉编译环境
我是在虚拟机中配置的,如果你的嵌入式设备足够完成自己的编译,可以不考虑虚拟机的。
1739 0
|
11月前
欧拉系统服务启动及停止及常见问题
在 openeuler系统,启动服务、重启服务、停止服务是一个常见的操作。
1198 60
|
10月前
|
编解码 虚拟化 Windows
Hyper分辨率调整是确保虚拟机图形表现符合期望的重要步骤,怎么调呢
在Hyper-V中调整虚拟机分辨率是确保图形表现符合预期的重要步骤。首先,通过增强会话模式调整:打开Hyper-V管理器,启用增强会话模式,启动虚拟机后在桌面右键选择“屏幕分辨率”进行设置。其次,在虚拟机内部(Windows系统)右键点击桌面空白处,选择“显示设置”,调整分辨率并应用更改。注意事项包括:确保安装Hyper-V集成服务、以管理员权限操作、注意虚拟机类型兼容性、检查显卡驱动并备份数据。这些步骤能帮助你顺利完成分辨率调整。
|
JavaScript 前端开发 Java
JMETER也会遇到加密难题,一并处理中文响应乱码
本文讨论了在JMeter中处理加密数据和中文响应乱码的问题,提供了使用BeanShell后处理器进行AES加密的示例代码,说明了如何将自定义的jar包放入JMeter的lib/ext目录以扩展功能,并给出了解决中文乱码的几种方法。
640 1
JMETER也会遇到加密难题,一并处理中文响应乱码
|
网络协议 Unix C语言
C语言 网络编程(十六)广播和组播
广播和组播是网络通信的重要方式。广播允许一台主机向子网内所有主机发送数据包,常用于局域网内的消息传播;组播则将数据包发送给特定的一组主机,适用于视频会议等应用场景。广播地址如 `192.168.1.255` 用于同一子网的所有主机。组播地址如 `224.0.0.0` 至 `239.255.255.255` 标识特定主机群。C语言示例展示了如何通过 UDP 实现广播和组播通信。此外,UNIX域套接字用于同一机器上进程间的高效通信。
985 14
|
JavaScript 前端开发 安全
【TypeScript技术专栏】TypeScript在Electron桌面应用中的实践
【4月更文挑战第30天】本文介绍了如何在Electron桌面应用中采用TypeScript以提升代码质量和可维护性。Electron利用Chromium和Node.js让前端开发者能创建桌面应用,而TypeScript的强类型系统和高级语言特性有助于管理复杂项目。通过初始化项目、安装依赖、配置TypeScript、编写主进程和渲染进程代码,开发者可以在Electron中实践TypeScript。一个简单的文本编辑器案例展示了TypeScript在确保类型安全方面的优势。尽管有学习成本,但TypeScript对大型Electron项目来说是值得的。
1365 0
|
编解码 移动开发 Shell
【论文精读】ICLR2022 - 语言驱动的语义分割
【论文精读】ICLR2022 - 语言驱动的语义分割
392 0