將pod 指定部署到特定節點(master)上的一種方法記錄

將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 節點進行部署。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章