转载于https://blog.csdn.net/wzp1986/article/details/72128063?utm_source=itdadao&utm_medium=referral#ops%E7%9A%84%E7%95%8C%E9%9D%A2
- 使用官方工具包模板
- 添加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
- 1
使用官方安装模板
会自动安装一堆的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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
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-namespaceskubectl get pvc <pvc名称> -n <pvc的namespace> -o yaml
- 1
- 2
创建PersistentVolume
只有一个node的时候,才可使用hostPath作为存储路径。
建议先把所有pvc的定义记录后删除pvc,再手动一对一对地创建pv和pvc。
mkdir -p /kube-pv1/jenkins-mvn-local-repo-devcat <<EOF | kubectl apply -f -apiVersion: v1kind: PersistentVolumemetadata: ?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-devspec: ?capacity: ???storage: 2Gi ?accessModes: ???- ReadWriteOnce ?persistentVolumeReclaimPolicy: Retain ?hostPath: ???path: /kube-pv1/jenkins-mvn-local-repo-dev---apiVersion: v1kind: PersistentVolumeClaimmetadata: ?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-repospec: ?accessModes: ???- ReadWriteOnce ?resources: ???requests: ?????storage: 1GiEOF
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
查看PersistentVolume的使用情况
kubectl get pv
- 1
处理pod启动失败
预留更长的启动时间
如果不能及时启动成功,k8s会反复重启pod;
可修改deployment里的initialDelaySeconds配置,在性能不足的机器上给pod预留更多的启动时间。
自行下载并tag镜像
如果从原始地址下载镜像失败,需要自行使用docker pull命令从阿里云下载对应的image,并使用docker tag命令给pull下来的image打上和错误描述里一模一样的标签;
然后删除错误pod,让ReplicaSet立即重新创建pod。
许多功能还依赖busybox,需要预先下载image并打上各种标签。
docker pull googlecontainer/busybox:latestdocker tag googlecontainer/busybox:latest busybox:latestdocker tag googlecontainer/busybox:latest gcr.io/google_containers/busybox:latest
- 1
- 2
- 3
处理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
原文地址:https://www.cnblogs.com/cheyunhua/p/8989403.html