转载于https://blog.csdn.net/wzp1986/article/details/72128063?utm_source=itdadao&utm_medium=referral#ops%E7%9A%84%E7%95%8C%E9%9D%A2

使用官方工具包模板

前提是在k8s上安装好了kube-dns和ingress-controller组件,和helm工具。

添加helm源

  1. helm repo add fabric8 https://fabric8.io/helm

使用官方安装模板

会自动安装一堆的deployment、PersistentVolumeClaim和ConfigMap; 
在提供足够的PersistentVolume,并根据实际情况修改好必要的ConfigMap之前,大部分组件是不可能正常运行的。

  1. helm install fabric8/fabric8-platform --name fabric8-platform
  • 1

服务访问

修改exposecontroller的ConfigMap

fabric8平台包含一个exposecontroller服务,负责把集群内运行的各个DevOps组件暴露到集群外部; 
如下修改,使exposecontroller通过Ingress让各DevOps组件对外提供服务,使用统一的域名,如”wzp.local”。

  1. cat <<EOF | kubectl apply -f -
  2. apiVersion: "v1"
  3. data:
  4. config.yml: |-
  5. exposer: "Ingress"
  6. domain: "wzp.local"
  7. kind: "ConfigMap"
  8. metadata:
  9. name: "exposecontroller"
  10. 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组件具体的存储需求

  1. kubectl get pvc --all-namespaces
  2. kubectl get pvc <pvc名称> -n <pvcnamespace> -o yaml

创建PersistentVolume

只有一个node的时候,才可使用hostPath作为存储路径。 
建议先把所有pvc的定义记录后删除pvc,再手动一对一对地创建pv和pvc。

  1. mkdir -p /kube-pv1/jenkins-mvn-local-repo-dev
  2. cat <<EOF | kubectl apply -f -
  3. apiVersion: v1
  4. kind: PersistentVolume
  5. metadata:
  6. annotations:
  7. volume.beta.kubernetes.io/storage-class: standard
  8. labels:
  9. provider: fabric8
  10. project: jenkins
  11. version: 2.2.311
  12. group: io.fabric8.devops.apps
  13. name: jenkins-mvn-local-repo-dev
  14. spec:
  15. capacity:
  16. storage: 2Gi
  17. accessModes:
  18. - ReadWriteOnce
  19. persistentVolumeReclaimPolicy: Retain
  20. hostPath:
  21. path: /kube-pv1/jenkins-mvn-local-repo-dev
  22. ---
  23. apiVersion: v1
  24. kind: PersistentVolumeClaim
  25. metadata:
  26. namespace: dev
  27. annotations:
  28. volume.beta.kubernetes.io/storage-class: standard
  29. labels:
  30. provider: fabric8
  31. project: jenkins
  32. version: 2.2.311
  33. group: io.fabric8.devops.apps
  34. name: jenkins-mvn-local-repo
  35. spec:
  36. accessModes:
  37. - ReadWriteOnce
  38. resources:
  39. requests:
  40. storage: 1Gi
  41. EOF
  • 查看PersistentVolume的使用情况
  1. kubectl get pv

处理pod启动失败

预留更长的启动时间

如果不能及时启动成功,k8s会反复重启pod; 
可修改deployment里的initialDelaySeconds配置,在性能不足的机器上给pod预留更多的启动时间。

自行下载并tag镜像

如果从原始地址下载镜像失败,需要自行使用docker pull命令从阿里云下载对应的image,并使用docker tag命令给pull下来的image打上和错误描述里一模一样的标签; 
然后删除错误pod,让ReplicaSet立即重新创建pod。 
许多功能还依赖busybox,需要预先下载image并打上各种标签。

  1. docker pull googlecontainer/busybox:latest
  2. docker tag googlecontainer/busybox:latest busybox:latest
  3. 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参数文件

  1. KUBE_ALLOW_PRIV="--allow-privileged=true"
  • 1

访问devops平台

Ops的界面

提供web console,可在页面上直接登入容器,执行命令。


安装fabric8提供的Management模块,还可以统一查看集群资源占用(使用Heapster+InfluxDB+Grafana)与进行日志搜索(使用ElasticSearch+Logstash+Kibana)。

Dev的界面

利用jenkins pipeline与jenkinsci/kubernetes-plugin,自动进行编译、制作镜像、部署、测试等任务。 
由于整个CD过程按照pipeline脚本进行,务必保持各种命名规范,比如编译打包结果的名称需与项目的名称一致,打包结果的输出位置不可变动。 

在Kubernetes集群里安装微服务DevOps平台fabric8的更多相关文章

  1. 如何使用Istio 1.6管理多集群中的微服务?

    假如你正在一家典型的企业里工作,需要与多个团队一起工作,并为客户提供一个独立的软件,组成一个应用程序.你的团队遵循微服务架构,并拥有由多个Kubernetes集群组成的广泛基础设施. 由于微服务分布在 ...

  2. Blazor+Dapr+K8s微服务之基于WSL安装K8s集群并部署微服务

         前面文章已经演示过,将我们的示例微服务程序DaprTest1部署到k8s上并运行.当时用的k8s是Docker for desktop 自带的k8s,只要在Docker for deskto ...

  3. 给Clouderamanager集群里安装可视化分析利器工具Hue步骤(图文详解)

    扩展博客 以下,是我在手动的CDH版本,安装Hue. CDH版本大数据集群下搭建Hue(hadoop-2.6.0-cdh5.5.4.gz + hue-3.9.0-cdh5.5.4.tar.gz)(博主 ...

  4. 给Clouderamanager集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)

    这个很简单,在集群机器里,选择就是了,本来自带就有Impala的. 扩展博客 给Ambari集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)

  5. 给Ambari集群里安装可视化分析利器工具Hue步骤(图文详解)

    扩展博客 以下,是我在手动的CDH版本平台下,安装Hue. CDH版本大数据集群下搭建Hue(hadoop-2.6.0-cdh5.5.4.gz + hue-3.9.0-cdh5.5.4.tar.gz) ...

  6. 给Ambari集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)

    不多说,直接上干货! Impala和Hive的关系(详解) 扩展博客 给Clouderamanager集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解) 参考 horton ...

  7. k8s 集群管理和微服务 适合做啥

    k8s 集群管理和微服务 适合做啥 都知道k8s是集群 适合微服务 有很多教程 但你可以先了解他能干啥 traefix 是负载均衡工具 k8s 适合部署无状态依赖的微服务 可以按需求开启多个微服务 管 ...

  8. Kubernetes集群的安装部署

    此文参照https://www.cnblogs.com/zhenyuyaodidiao/p/6500830.html,并根据实操过程略作修改. 1.环境介绍及准备: 1.1 物理机操作系统 物理机操作 ...

  9. (转)实验文档3:在kubernetes集群里集成Apollo配置中心

    使用ConfigMap管理应用配置 拆分环境 主机名 角色 ip HDSS7-11.host.com zk1.od.com(Test环境) 10.4.7.11 HDSS7-12.host.com zk ...

随机推荐

  1. 互评Beta版本——杨老师粉丝群——Pinball

    互评beta版本    杨老师粉丝群——<PinBall> 一.基于NABCD评论作品,及改进建议 1.根据(不限于)NABCD评论作品的选题 (1)N(Need,需求) 随着年龄的增长, ...

  2. 【Alpha】阶段第九次Scrum Meeting

    [Alpha]阶段第九次Scrum Meeting 工作情况 团队成员 今日已完成任务 明日待完成任务 刘峻辰 编写获得所有学院接口 登出接口 赵智源 编写alpha版后测试点测试用例 编写脚本实现测 ...

  3. Leetcode题库——6.Z字形变换

    @author: ZZQ @software: PyCharm @file: convert.py @time: 2018/9/20 20:12 要求: Z字形变换 将字符串 "PAYPAL ...

  4. 【贪心算法】POJ-1328 区间问题

    一.题目 Description Assume the coasting is an infinite straight line. Land is in one side of coasting, ...

  5. 使用java开发微信公众平台(1)

    目录 开发服务器 域名验证 获取access_token 自定义菜单 个人账号不能定义url访问服务器,使用测试号就不用认证添加url了,进入公众平台测试账号 开发服务器 域名验证 进入公众平台测试账 ...

  6. 【CSAPP笔记】5. 汇编语言——数据

    本博客对于汇编的介绍基于32位机器的Intel x86系列处理器和IA32指令集,也涉及少部分x86-64.由于汇编知识相对复杂,这里只做简单介绍和记录,详细请参照书本! 数据格式 下面这张表格中体现 ...

  7. AWS上的实例无法ping通的解决方案

    首先Ping只是向服务器发送ICMP的数据包,如果在服务器的防火墙没有允许ICMP协议的数据包的话,那么即使服务器正常运行,那也是ping不同的. 对于亚马逊云服务器,首先我们要确保实例绑定的安全组允 ...

  8. TCP连接 三次握手 四次挥手

    前言: TCP协议是面向连接.安全可靠.基于字节流的传输层协议,在进行http协议访问时就用到了tcp连接.在建立TCP连接时需要经历三次握手,断开连接时需要经历四次挥手.在此进行记录. 内容: TC ...

  9. windows多线程(八) 信号量Semaphore

    如果你看到了这里,我就认为你已经对掌握了有关关键段 CriticalSection.互斥量Mutex和事件Event有关的内容,所以最基本的东西就不再介绍了.如果没有掌握上面说的内容,可以看这里: 关 ...

  10. [转帖]Ubuntu 安装VNC的一个方法

    来源: https://blog.csdn.net/CSDN_duomaomao/article/details/75270271 Ubuntu 16.04 LTS 安装VNC,在百度和谷歌找了很多教 ...