在Kubernetes集群里安装微服务DevOps平台fabric8
2017-05-15 12:35
826 查看
使用官方工具包模板
添加helm源
使用官方安装模板
服务访问
修改exposecontroller的ConfigMap
让内部dns提供泛域名解析
提供PersistentVolume
查看PersistentVolumeClaim
创建PersistentVolume
查看PersistentVolume的使用情况
处理pod启动失败
预留更长的启动时间
自行下载并tag镜像
处理CD流水线错误
下载pipeline Groovy library失败
运行privileged容器
访问devops平台
Ops的界面
Dev的界面
添加helm源
使用官方安装模板
服务访问
修改exposecontroller的ConfigMap
让内部dns提供泛域名解析
提供PersistentVolume
查看PersistentVolumeClaim
创建PersistentVolume
查看PersistentVolume的使用情况
处理pod启动失败
预留更长的启动时间
自行下载并tag镜像
处理CD流水线错误
下载pipeline Groovy library失败
运行privileged容器
访问devops平台
Ops的界面
Dev的界面
使用官方工具包模板
前提是在k8s上安装好了kube-dns和ingress-controller组件,和helm工具。添加helm源
helm repo add fabric8 https://fabric8.io/helm[/code]使用官方安装模板
会自动安装一堆的deployment、PersistentVolumeClaim和ConfigMap;
在提供足够的PersistentVolume,并根据实际情况修改好必要的ConfigMap之前,大部分组件是不可能正常运行的。helm install fabric8/fabric8-platform --name fabric8-platform服务访问
修改exposecontroller的ConfigMap
fabric8平台包含一个exposecontroller服务,负责把集群内运行的各个DevOps组件暴露到集群外部;
如下修改,使exposecontroller通过Ingress让各DevOps组件对外提供服务,使用统一的域名,如”wzp.local”。cat <<EOF | kubectl apply -f - apiVersion: "v1" data: config.yml: |- exposer: "Ingress" domain: "wzp.local" kind: "ConfigMap" metadata: name: "exposecontroller" EOF
exposecontroller正常运行后,就会发现集群内多了很多ingress;
用于从k8s集群外部(如浏览器)访问内部运行的GIT仓库、Maven仓库、image仓库、jenkins、fabric8平台。让内部dns提供泛域名解析
由于内部组件除了使用k8s的service名称外,也有可能使用与外部访问相同的地址,如”wzp.local”,来访问内部其他组件;所以需要给内部dns添加启动参数,配置上泛域名解析规则:--address=/wzp.local/192.168.175.83提供PersistentVolume
查看PersistentVolumeClaim
先看看各devops组件具体的存储需求kubectl get pvc --all-namespaces kubectl get pvc <pvc名称> -n <pvc的namespace> -o yaml创建PersistentVolume
只有一个node的时候,才可使用hostPath作为存储路径。
建议先把所有pvc的定义记录后删除pvc,再手动一对一对地创建pv和pvc。mkdir -p /kube-pv1/jenkins-mvn-local-repo-dev cat <<EOF | kubectl apply -f - apiVersion: v1 kind: PersistentVolume metadata: annotations: volume.beta.kubernetes.io/storage-class: standard labels: provider: fabric8 project: jenkins version: 2.2.311 group: io.fabric8.devops.apps name: jenkins-mvn-local-repo-dev spec: capacity: storage: 2Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain hostPath: path: /kube-pv1/jenkins-mvn-local-repo-dev --- apiVersion: v1 kind: PersistentVolumeClaim metadata: namespace: dev annotations: volume.beta.kubernetes.io/storage-class: standard labels: provider: fabric8 project: jenkins version: 2.2.311 group: io.fabric8.devops.apps name: jenkins-mvn-local-repo spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi EOF查看PersistentVolume的使用情况
kubectl get pv处理pod启动失败
预留更长的启动时间
如果不能及时启动成功,k8s会反复重启pod;
可修改deployment里的initialDelaySeconds配置,在性能不足的机器上给pod预留更多的启动时间。自行下载并tag镜像
如果从原始地址下载镜像失败,需要自行使用docker pull命令从阿里云下载对应的image,并使用docker tag命令给pull下来的image打上和错误描述里一模一样的标签;
然后删除错误pod,让ReplicaSet立即重新创建pod。
许多功能还依赖busybox,需要预先下载image并打上各种标签。docker pull googlecontainer/busybox:latest docker tag googlecontainer/busybox:latest busybox:latest docker tag googlecontainer/busybox:latest gcr.io/google_containers/busybox:latest处理CD流水线错误
下载pipeline Groovy library失败
“@Library”命令只能从github.com网站在线下载和运行library,想从本地git地址下载library,除非自行修改插件:
https://github.com/jenkinsci/pipeline-github-lib-plugin/blob/master/src/main/java/org/jenkinsci/plugins/pipeline/github/library/GitHubLibraryResolver.java
由于github强制使用https,需要在jenkins的deployment配置里添加GIT_SSL_NO_VERIFY环境变量,值为”1”。运行privileged容器
jenkinsci/kubernetes-plugin会启动新的pod来运行jenkins slave,而slave需要进行docker image的制作与上传;于是每台k8s node上都要允许运行privileged容器,k8s node上的docker deamon会监听/var/run/docker.sock,响应由privileged容器发出的docker build等命令。
修改/etc/kubernetes/config参数文件KUBE_ALLOW_PRIV="--allow-privileged=true"访问devops平台
Ops的界面
提供web console,可在页面上直接登入容器,执行命令。
安装fabric8提供的Management模块,还可以统一查看集群资源占用(使用Heapster+InfluxDB+Grafana)与进行日志搜索(使用ElasticSearch+Logstash+Kibana)。Dev的界面
利用jenkins pipeline与jenkinsci/kubernetes-plugin,自动进行编译、制作镜像、部署、测试等任务。
由于整个CD过程按照pipeline脚本进行,务必保持各种命名规范,比如编译打包结果的名称需与项目的名称一致,打包结果的输出位置不可变动。
相关文章推荐
- 在Kubernetes集群里安装微服务DevOps平台fabric8
- 在RHEL5下构建LAMP网站服务平台之MySQL、PHP的安装与配置
- 在Red Hat Linux5下构建LAMP网站服务平台之安装phpMyAdmin数据库管理套件
- cloudera安装hadoop集群和相关服务
- Windows 平台下安装Cygwin后,sshd服务无法启动
- Linux平台下安装和配置Hadoop集群
- Linux系列-Red Hat5平台下的Samba服务搭建(RPM安装)
- 微信管家第三方服务平台安装问题解决
- Windows 平台下安装Cygwin后,sshd服务无法启动
- Ice服务的集群开发--安装篇
- Hadoop2.2.0完全分布式集群平台安装与设置-入门级手把手
- 在Red Hat Linux5下构建LAMP网站服务平台之MySQL、PHP的安装与配置
- Nginx平台安装Nagios监控服务(0608更新) 推荐
- 使用AppFabric 承载WCF和WF服务-安装和使用
- cloudera安装hadoop集群和相关服务
- 在RHEL5下构建LAMP网站服务平台之安装phpMyAdmin数据库管理套件
- Linux Server 平台上安装FTP服务
- 在RHEL5下构建LAMP网站服务平台之安装phpMyAdmin数据库管理套件
- Windows 平台下安装Cygwin后,sshd服务无法启动
- Windows 平台下安装Cygwin后,sshd服务无法启动