k8s部署jenkins

 
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: jenkins   
  name: ssx-jenkins-dm
  namespace: ssx
spec:
  replicas: 1 
  selector: #标签选择器,与上面的标签共同作用
    matchLabels: #选择包含标签app:mysql的资源
       app: jenkins
  template: #这是选择或创建的Pod的模板
    metadata: #Pod的元数据
      labels: #Pod的标签,上面的selector即选择包含标签app:mysql的Pod
        app: jenkins
    spec: #期望Pod实现的功能(即在pod中部署)
      containers: #生成container,与docker中的container是同一种
      - name: ssx-jenkins-c
        image: node102:5000/ssx-jenkins:v1.0 
        ports:
        - containerPort: 8080  # 开启本容器的80端口可访问
        volumeMounts:
        - mountPath: /var/jenkins_home   #这是mysql容器内保存数据的默认路径
          name: c-v-path-jenkins
        - mountPath: /etc/localtime   #这是mysql容器内保存数据的默认路径
          name: c-v-path-time
      volumes:
      - name: c-v-path-jenkins #和上面保持一致 这是本地的文件路径,上面是容器内部的路径
        hostPath:
          path: /root/apps/k8s/for_docker_volume/jenkins  #此路径需要实现创建 注意要给此路径授权777权限 不然pod访问不到
      - name: c-v-path-time #设置容器的时区和宿主机保持一致
        hostPath:
          path: /etc/localtime
      nodeSelector: #把此pod部署到指定的node标签上
        kubernetes.io/hostname: node101
---
apiVersion: v1
kind: Service
metadata:
  labels:
   app: jenkins
  name: ssx-jenkins-sv
  namespace: ssx
spec:
  ports:
  - port: 9000 #我暂时不理解,这个设置 明明没用到?
    name: ssx-jenkins-last
    protocol: TCP
    targetPort: 8080 # 容器nginx对外开放的端口 上面的dm已经指定了
    nodePort: 30200 #外网访问的端口
  selector:
    app: jenkins
  type: NodePort 


发布后操作

  1. 因为jenkins脚本很大概率会执行ssh命令,要配置和宿主机免密登陆
    执行kubectl exec xxx-jenkins-container -it /bin/bash进入容器,然后ssh-keygen然后ssh-copy-id 宿主机信息完成。
  2. 上述步骤必须基于配置了容器挂载点,不然重启应用我们的免密信息丢失
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值