K8s将Pod指定部署到特定节点(master)上的一种方法

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

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

节点打标签

为 master 节点打标签

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

nodeSelector

编写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

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

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/26/k8s-deploy-pods-to-specific-nodes-masters/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
K8s将Pod指定部署到特定节点(master)上的一种方法
需求:搭建一个集群,这个集群要走 CI/CD 流程,还要管理 CI/CD 流程的产出物,将其保存在 Harbor 中,让后让产出物在另外两个节点上运行起来。建议将 Jenkins……
<<上一篇
下一篇>>
文章目录
关闭
目 录