kubernetes 1.5安装 jenkins
配置kubernetes1.5 jenkins,自动创建节点,使用完后自动注销节点的配置方法。 最后包括NFS的配置。
1. 配置要求
在kubernetes中运行jenkins,并自动创建节点完成编译任务。
2. 环境介绍
k8s使用三台服务器配置 192.168.7.206 centos-master 192.168.7.207 centos-minion-1 192.168.7.208 centos-minion-2 kubernetes使用操作系统为: Centos 7
3. 配置过程
3.1 下载镜像
下载最新的jenkins镜像,当前时间为2017年1月3日。
在每一台服务器上面都下载,下载完成后,再进行下一步,这也不是必须,有时候网络的问题,直接创建服务镜像会下载不下来。
docker pull index.tenxcloud.com/loulan/docker-jenkins:latest
3.2 创建服务
jenkins-deployment.yaml 文件内容
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: jenkins
spec:
replicas: 1
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 2
maxUnavailable: 0
template:
metadata:
labels:
app: jenkins
spec:
containers:
- name: jenkins
image: index.tenxcloud.com/loulan/docker-jenkins:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
name: web
protocol: TCP
- containerPort: 50000
name: agent
protocol: TCP
volumeMounts:
- name: jenkinshome
mountPath: /var/jenkins_home
env:
- name: JAVA_OPTS
value: "-Duser.timezone=Asia/Shanghai"
volumes:
- name: jenkinshome
nfs:
server: 192.168.7.206
path: "/opt/jenkins"
在文件jenkins-deployment.yaml 中,查看镜像地址是否是刚才下载的地址。
注意最后使用的是nfs,nfs服务的安装部署网上有很多的教程。我们在文章的最后会把nfs的配置写上。最好在jenkins部署之前就将nfs配置好。
执行创建命令:
kubectl create -f jenkins-deployment.yaml
[root@centos-master jenkins]# kubectl create -f jenkins-deployment.yaml
deployment "jenkins" created
检查:
kubectl get pod
NAME READY STATUS RESTARTS AGE
jenkins-4182169461-jg8fc 1/1 Running 0 4m
查看日志:
kubectl logs jenkins-4182169461-jg8fc
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@5e74728b: defining beans [filter,legacy]; root of factory hierarchy
Jan 04, 2017 11:18:19 AM jenkins.install.SetupWizard init
INFO:
*************************************************************
*************************************************************
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
819f56242a9140cfbdb8f9645ae00ecd
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
Jan 04, 2017 11:18:25 AM hudson.model.UpdateSite updateData
INFO: Obtained the latest update center data file for UpdateSource default
Jan 04, 2017 11:18:25 AM hudson.WebAppMain$3 run
INFO: Jenkins is fully up and running
--> setting agent port for jnlp
--> setting agent port for jnlp... done
红色的部分在网页登录可用。
jenkins-service.yaml 文件内容
kind: Service
apiVersion: v1
metadata:
labels:
app: jenkins
name: jenkins
spec:
ports:
- port: 8080
targetPort: 8080
name: web
- port: 50000
targetPort: 50000
name: agent
selector:
app: jenkins
创建服务命令:
kubectl create -f jenkins-service.yaml
[root@centos-master jenkins]# kubectl create -f jenkins-service.yaml
service "jenkins" created
kubectl get svc
[root@centos-master jenkins]# kubectl get svc
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
jenkins 10.108.27.146 <none> 8080/TCP,50000/TCP 7m
jenkins-ingress.yaml 文件内容
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: jenkins
spec:
rules:
- host: jenkins.xxx.lan
http:
paths:
- path: /
backend:
serviceName: jenkins
servicePort: 8080
创建ingress命令:
kubectl create -f jenkins-ingress.yaml
[root@centos-master jenkins]# kubectl create -f jenkins-ingress.yaml
ingress "jenkins" created
检查:
kubectl get ing
[root@centos-master jenkins]# kubectl get ing
NAME HOSTS ADDRESS PORTS AGE
jenkins jenkins.xxx.lan 192.168.7.207 80 6m
通过网页进去jenkins,安装插件Kubernetes plugin.
4. 配置节点
4.1 配置系统
4.2 点击Configure System
4.3 增加Kubernetes配置
4.5 配置Kubernetes
Kubernetes URL 为: https://kubernetes.default
这个应该是在kubernetes中解析的。
Jenkins URL 为: http://jenkins.default:8080
也应该是自动解析的。
image配置中:
Docker Image 配置为: jenkinsci/jnlp-slave
这个是一个镜像,可以先下载到每个node中。其他的按照图片上随便填写。
这样,所有的配置基本完成。接下来就是测试。
测试如下图:
测试效果图:
NFS服务器配置
1. 服务安装
yum -y install nfs-utils rpcbind
2. 服务配置
vi /etc/exports
/opt/jenkins *(rw,no_root_squash,no_all_squash,sync)
3. 使用配置生效
exportfs -r
4. 一般的操作
systemctl restart nfs rpcbind
systemctl enable nfs
systemctl enable rpcbind
5. 节点操作
yum install nfs-utils -y
必须要在所有的节点安装nfs-utils。
问题解决:
1 .Jan 3 22:02:49 centos-minion-2 kubelet: Output: mount: wrong fs type, bad option, bad superblock on 192.168.7.206:/opt/jenkins,
yum install nfs-utils -y
缺少nfs相关的命令
2. [root@centos-master jenkins]# kubectl logs jenkins-1859637992-554k0
touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
nfs 目录不可写。