kubernetes下jenkins 搭建实例
之前用Docker搭建过Jenkins,使用Ubuntu14的镜像,开通ssh后自己上传tomcat、jdk、jenkins包。所有东西都放到了容器里,整个容器体积会越来越大,不方便备份恢复数据。
最近开始测试kubernetes下自动化测试环境的搭建(参考:http://dockone.io/article/859)。
考虑到k8s的容器分散在各个机器上,不太方便ssh来ssh去,于是不再采用ssh的方法登录容器,而是直接把jenkins需要的软件环境放到物理机上(比如都在 /ceph/docker/下),通过volumeMounts把目录挂载到容器里。 即解决了容器体积大的难题,同时方便了修改配置,有什么需要修改的东西直接改物理容器上的即可,一经修改,所有容器都生效。
这应该是k8s下创建容器比较正规的方法,即所有应用数据都通过volumeMounts挂载到容器里来运行,镜像只提供一个应用运行的环境,这样做好处大大地。
rc_jenkins.yaml:
apiVersion: v1
kind: ReplicationController
metadata:
name: rc-jenkins
spec:
replicas: 1
selector:
name: jenkins
template:
metadata:
labels:
name: jenkins
spec:
containers:
- name: jenkins
image: kimqcn/u14.04
# command: ["/usr/sbin/sshd","-D"]
# command: ["/tomcat_rc_9999/bin/catalina.sh","run"]
command: ["/tomcat/bin/catalina.sh","run"]
ports:
- containerPort: 22
- containerPort: 8080
# - containerPort: 9999
volumeMounts:
- name: jdk-home
mountPath: /jdk1.7.0_75
# - name: app-rc-home
# mountPath: /tomcat_rc_9999
- name: app-tomcat-home
mountPath: /tomcat
- name: jenkins-home
mountPath: /jenkins_home
- name: docker-home
mountPath: /docker_home
- name: tool-home
mountPath: /tool
- name: grails-home
mountPath: /root/.grails
- name: m2-home
mountPath: /root/.m2
- name: mozilla-home
mountPath: /root/.mozilla
volumes:
- name: jdk-home
hostPath:
path: /ceph/docker/jdk1.7.0_75
# - name: app-rc-home
# hostPath:
# path: /ceph/docker/tomcat_rc_9999
- name: app-tomcat-home
hostPath:
path: /ceph/docker/jenkins_8080
- name: jenkins-home
hostPath:
path: /ceph/docker/jenkins_home
- name: docker-home
hostPath:
path: /ceph/docker/
- name: tool-home
hostPath:
path: /ceph/docker/tool
- name: grails-home
hostPath:
path: /ceph/docker/root/.grails
- name: m2-home
hostPath:
path: /ceph/docker/root/.m2
- name: mozilla-home
hostPath:
path: /ceph/docker/root/.mozilla
说明:
image: kimqcn/u14.04 是定制过的ubuntu14.04镜像,主要是安装了unzip和wget,增加了zh_CN字符集的支持,调整了时区设置为Asia/Harbin等等,这都是对jenkins正常工作需要的东西。
command: ["/tomcat/bin/catalina.sh","run"] 是启动jenkins的命令。这个地方是个小陷阱,如果不在rc里指定一个可以持续运行的脚本,容器启动后马上就会自动停止,然后k8s会欠欠儿的去执行自己的本职工作:重新再启动一个容器,然后容器又自动停止,再创建,直到永远...
app-tomcat-home 是jenkins的volumeMounts挂载配置。其他volumeMounts配置也都是jenkins运行所需要的,比如jdk和.grails目录等。
启动rc:kubectl create -f rc_jenkins.yaml
再启动一个svc: kubectl create -f svc_jenkins.yaml
svc_jenkins.yaml :
apiVersion: v1
kind: Service
metadata:
name: jenkins-svc-nodeport
spec:
ports:
- port: 8022
name: ssh-port
targetPort: 22
protocol: TCP
- port: 8080
name: tomcat-app-port
targetPort: 8080
protocol: TCP
# - port: 8099
# name: tomcat-rc-port
# targetPort: 9999
# protocol: TCP
type: NodePort
selector:
name: jenkins
测试通过,工作正常。
本文转自掘金-kubernetes下jenkins 搭建实例
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
kubernetes资源对象--pod和job
pod Pod是K8S的最小操作单元,一个Pod可以由一个或多个容器组成; 整个K8S系统都是围绕着Pod展开的,比如如何部署运行Pod、如何保证Pod的数量、如何访问Pod等。 特点 Pod是能够被创建、调度和管理的最小单元; 每个Pod都有一个独立的IP; 一个Pod由一个或多个容器构成,并共享命名空间和共享存储等;Pod所有容器 在同一个Node上; 容器生命周期管理; 对资源使用进行限制,resources(requests、limits); 对容器进行探测:livenessProbe; 集群内的Pod之间都可以任意访问,这一般是通过一个二层网络来实现的。 Pod与容器 在Docker中,容器是最小的处理单元,增删改查的对象是容器,容器是一种虚拟化技术,容器之间是隔离的,隔离是基于Linux Namespace实现的。 而在K8S中,Pod包含一个或者多个相关的容器,Pod可以认为是容器的一种延伸扩展,一个Pod也是一个隔离体,而Pod内部包含的一组容器又是共享的(包括PID、Network、IPC、UTS)。除此之外,Pod中的容器可以访问共同的数据卷来实现文件系统的共享。 ...
- 下一篇
第四十三章 微服务CICD(5)- gitlab + jenkins + docker + dockerregsitry
一、总体流程 部署: 开发机(mac) ip:11.11.11.11 docker:1.12.1 部署机(centos7) ip:10.211.55.4 docker:1.12.3 生产机(centos7) ip:10.211.55.3 docker:1.10.3(装k8s1.4的时候自带安装的版本) 总体流程: 在开发机开发代码后提交到gitlab 之后通过webhook插件触发jenkins进行构建,jenkins将代码打成docker镜像,push到docker-registry, 之后将该镜像推到生产机。(之后引入k8s,会将该镜像推到云上,云自己分配机器) 这一步这里不做了,之后引入k8s后再做 二、gitlab安装 第三十九章 gitlab搭建与使用(docker版) 三、jenkins安装 第四十章 jenkins(2016-11-01 10:25) 四、gitlab通知jenkins进行构建 第四十一章 jenkins + gitlab + webhooks + publish-over-ssh(1) 第四十二章 jenkins + gitlab + webhooks ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- MySQL8.0.19开启GTID主从同步CentOS8
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Hadoop3单机部署,实现最简伪集群