在Kubernetes集群里安装微服务DevOps平台fabric8
转载于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源
helm repo add fabric8 https://fabric8.io/helm
使用官方安装模板
会自动安装一堆的deployment、PersistentVolumeClaim和ConfigMap;
在提供足够的PersistentVolume,并根据实际情况修改好必要的ConfigMap之前,大部分组件是不可能正常运行的。
helm install fabric8/fabric8-platform --name fabric8-platform
- 1
服务访问
修改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"
- 1
访问devops平台
Ops的界面
提供web console,可在页面上直接登入容器,执行命令。
安装fabric8提供的Management模块,还可以统一查看集群资源占用(使用Heapster+InfluxDB+Grafana)与进行日志搜索(使用ElasticSearch+Logstash+Kibana)。
Dev的界面
利用jenkins pipeline与jenkinsci/kubernetes-plugin,自动进行编译、制作镜像、部署、测试等任务。
由于整个CD过程按照pipeline脚本进行,务必保持各种命名规范,比如编译打包结果的名称需与项目的名称一致,打包结果的输出位置不可变动。
在Kubernetes集群里安装微服务DevOps平台fabric8的更多相关文章
- 如何使用Istio 1.6管理多集群中的微服务?
假如你正在一家典型的企业里工作,需要与多个团队一起工作,并为客户提供一个独立的软件,组成一个应用程序.你的团队遵循微服务架构,并拥有由多个Kubernetes集群组成的广泛基础设施. 由于微服务分布在 ...
- Blazor+Dapr+K8s微服务之基于WSL安装K8s集群并部署微服务
前面文章已经演示过,将我们的示例微服务程序DaprTest1部署到k8s上并运行.当时用的k8s是Docker for desktop 自带的k8s,只要在Docker for deskto ...
- 给Clouderamanager集群里安装可视化分析利器工具Hue步骤(图文详解)
扩展博客 以下,是我在手动的CDH版本,安装Hue. CDH版本大数据集群下搭建Hue(hadoop-2.6.0-cdh5.5.4.gz + hue-3.9.0-cdh5.5.4.tar.gz)(博主 ...
- 给Clouderamanager集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)
这个很简单,在集群机器里,选择就是了,本来自带就有Impala的. 扩展博客 给Ambari集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)
- 给Ambari集群里安装可视化分析利器工具Hue步骤(图文详解)
扩展博客 以下,是我在手动的CDH版本平台下,安装Hue. CDH版本大数据集群下搭建Hue(hadoop-2.6.0-cdh5.5.4.gz + hue-3.9.0-cdh5.5.4.tar.gz) ...
- 给Ambari集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)
不多说,直接上干货! Impala和Hive的关系(详解) 扩展博客 给Clouderamanager集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解) 参考 horton ...
- k8s 集群管理和微服务 适合做啥
k8s 集群管理和微服务 适合做啥 都知道k8s是集群 适合微服务 有很多教程 但你可以先了解他能干啥 traefix 是负载均衡工具 k8s 适合部署无状态依赖的微服务 可以按需求开启多个微服务 管 ...
- Kubernetes集群的安装部署
此文参照https://www.cnblogs.com/zhenyuyaodidiao/p/6500830.html,并根据实操过程略作修改. 1.环境介绍及准备: 1.1 物理机操作系统 物理机操作 ...
- (转)实验文档3:在kubernetes集群里集成Apollo配置中心
使用ConfigMap管理应用配置 拆分环境 主机名 角色 ip HDSS7-11.host.com zk1.od.com(Test环境) 10.4.7.11 HDSS7-12.host.com zk ...
随机推荐
- python判断文件和文件夹是否存在、没有则创建文件夹
原文出处:https://www.cnblogs.com/hushaojun/p/4533241.html >>> import os >>> os.path.ex ...
- TeamWork#1,Week 2,Learn In Team
我觉得做为一个团队,每个人的能力固然重要,但是更重要的是几个人能同心协力. 俗话说“三个臭皮匠,赛过诸葛亮”,团队合作往往能激发出团体不可思议的潜力,集体协作干出的成果往往能超过成员个人业绩的总和.在 ...
- 始入OO课程的殿堂,初识面向对象的奥妙——OO第一次博客总结
当我满怀期待叩开OO的大门,却发现宝藏藏在层层阻难之后 第一次作业 1.度量分析 >关于第一次作业的metrics图分析没有出现标红的McCabe Cyclomatic Complexity或者 ...
- 树莓派 Raspberry-Pi 折腾系列:系统安装及一些必要的配置
入手树莓派将近一个月了,很折腾,许多资源不好找,也很乱.简单整理一下自己用到的东西,方便以后自己或别人继续折腾. 0. 操作系统下载 树莓派官方 Raspbian 系统下载:http://www.ra ...
- spring冲刺第八天
昨天使人物成功的在地图上运动,并设计炸弹爆炸效果. 今天使炸弹可以炸死人物并可以炸没砖块,并试着将小怪加入地图. 遇到的问题:现在还没有将小怪加入地图,各个模块的整合是比较麻烦的,我还要在这方面下点功 ...
- 读《构建之法》一、二、十六章随笔a
第一章 概论 “软件团队要从需求分析开始,把合适的需求梳理出来,然后逐步开展后续工作”:——p3 问题:好的用户体验要从软件分析开始,那么软件分析仅仅是从用户的需求出发吗? 我的看法:需求分析是 ...
- 微信小程序之Flex布局
微信小程序页面布局方式采用的是Flex布局.Flex布局,是W3c在2009年提出的一种新的方案,可以简便,完整,响应式的实现各种页面布局.Flex布局提供了元素在容器中的对齐,方向以及顺序,甚至他们 ...
- IDEA小插件之快速修改Maven多模块的工程版本
Github:https://github.com/zwjlpeng/versions 问题在Maven构建的多模块块程中,如果我们需要修改工程的版本号,会怎么操作呢example例如工程A包括了A- ...
- 远程修改VMware ESXi服务器的密码(SSH)
1,用vSphere client登录到服务器,将SSH启用. 2,使用ssh连接工具(我用的是secureCRT)远程登录,输入passwd,键入两次新密码,OK.
- 一次DHCP故障排错
关于DHCP授权,我一直遇到这样一个问题:服务器明明已经在授权列表中了,但是服务就是起不来,看日志会告诉你服务器未授权或者局域网内已有DHCP服务器,但是实际上却并不是这样.现在终于知道原因了,老旧D ...