yaml存储到文件服务器,通过编写k8s的资源清单yaml文件部署gitlab服务
搭建nfs服务器
1.为什么搭建nfs服务器?
因为我们要使用nfs作为持久化存储,创建的pv后端存储时需要nfs,所以需要搭建nfs服务。
2.安装nfs服务
选择自己的任意一台机器,我选择k8s的master1节点,对应的机器ip是192.168.0.6,在192.168.0.6上执行如下步骤,大家在自己环境找一台k8s节点的机器安装就可以了~
(1)yum安装nfs
yum install nfs-utils -y
systemctl start nfs
chkconfig nfs on
(2)在master1上创建一个nfs共享目录
mkdir /data/v3 -p
mkdir /data/v4
mkdir /data/v5
cat /etc/exports
/data/v3 192.168.0.0/24(rw,no_root_squash)
/data/v4 192.168.0.0/24(rw,no_root_squash)
/data/v5 192.168.0.0/24(rw,no_root_squash)
exportfs -arv 使配置文件生效
systemctl restart nfs
(3)k8s的各个node节点也需要安装nfs
yum install nfs-utils -y
systemctl start nfs
chkconfig nfs on
创建安装gitlab需要的pv和pvc
1.创建一个名称空间
kubectl create ns kube-ops
2.创建gitlab需要的pv和pvc
cat pv_pvc_gitlab.yaml
apiVersion: v1kind: PersistentVolumemetadata: name: gitlabtspec: capacity: storage: 10Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Delete nfs: server: 192.168.0.6 #这个就是nfs服务端的机器ip,也就是k8s的master1节点ip path: /data/v5---kind: PersistentVolumeClaimapiVersion: v1metadata: name: gitlabt namespace: kube-opsspec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi
注意:
nfs: server: 192.168.0.6 #这个就是nfs服务端的机器ip,也就是k8s的master1节点ip
通过kubectl apply更新yaml文件
kubectl apply -f pv_pvc_gitlab.yaml
查看pv和pvc是否绑定
kubectl get pvc -n kube-ops
显示如下,说明绑定成功了
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGEgitlabt Bound gitlabt 10Gi RWX 2m
3.创建postsql的pv和pvc
cat pv_pvc_postsql.yaml
apiVersion: v1kind: PersistentVolumemetadata: name: postsqlspec: capacity: storage: 10Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Delete nfs: server: 192.168.0.6 path: /data/v4---kind: PersistentVolumeClaimapiVersion: v1metadata: name: postsql namespace: kube-opsspec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi
通过kubectl apply更新yaml文件
kubectl apply -f pv_pvc_postsql.yaml
查看pv和pvc是否绑定
kubectl get pvc -n kube-ops
显示如下,说明postsql的pvc和pv绑定成功了
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGEgitlabt Bound gitlabt 10Gi RWX 5m6spostsql Bound postsql 10Gi RWX 2s
4.创建redis的pv和pvc
cat pv_pvc_redis.yaml
apiVersion: v1kind: PersistentVolumemetadata: name: dataspec: capacity: storage: 20Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Delete nfs: server: 192.168.0.6 path: /data/v3---kind: PersistentVolumeClaimapiVersion: v1metadata: name: data namespace: kube-opsspec: accessModes: - ReadWriteMany resources: requests: storage: 20Gi
通过kubectl apply更新yaml文件
kubectl apply -f pv_pvc_redis.yaml
查看pv和pvc是否绑定
kubectl get pvc -n kube-ops
显示如下,说明gitlab的pvc和pv绑定成功了
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGEdata Bound data 20Gi RWX 5sgitlabt Bound gitlabt 10Gi RWX 7m7spostsql Bound postsql 10Gi RWX 2m3s
安装postgresql服务
cat gitlab-postgresql.yaml
apiVersion: apps/v1kind: Deploymentmetadata: name: postgresql namespace: kube-ops labels: name: postgresqlspec: selector: matchLabels: name: postgresql template: metadata: name: postgresql labels: name: postgresql spec: containers: - name: postgresql image: sameersbn/postgresql:10 imagePullPolicy: IfNotPresent env: - name: DB_USER value: gitlab - name: DB_PASS value: passw0rd - name: DB_NAME value: gitlab_production - name: DB_EXTENSION value: pg_trgm ports: - name: postgres containerPort: 5432 volumeMounts: - mountPath: /var/lib/postgresql name: data livenessProbe: exec: command: - pg_isready - -h - localhost - -U - postgres initialDelaySeconds: 30 timeoutSeconds: 5 readinessProbe: exec: command: - pg_isready - -h - localhost - -U - postgres initialDelaySeconds: 5 timeoutSeconds: 1 volumes: - name: data persistentVolumeClaim: claimName: postsql---apiVersion: v1kind: Servicemetadata: name: postgresql namespace: kube-ops labels: name: postgresqlspec: ports: - name: postgres port: 5432 targetPort: postgres selector: name: postgresql
通过kubectl apply更新yaml文件
kubectl apply -f gitlab-postgresql.yaml
查看postgresql是否部署成功
kubectl get pods -n kube-ops
显示如下,说明postgresql部署成功
NAME READY STATUS RESTARTS AGEpostgresql-79f85cdfb4-r64q5 1/1 Running 0 68s
安装gitlab需要的redis服务
cat gitlab-redis.yaml
apiVersion: apps/v1kind: Deploymentmetadata: name: redis namespace: kube-ops labels: name: redisspec: selector: matchLabels: name: redis template: metadata: name: redis labels: name: redis spec: containers: - name: redis image: sameersbn/redis imagePullPolicy: IfNotPresent ports: - name: redis containerPort: 6379 volumeMounts: - mountPath: /var/lib/redis name: data livenessProbe: exec: command: - redis-cli - ping initialDelaySeconds: 30 timeoutSeconds: 5 readinessProbe: exec: command: - redis-cli - ping initialDelaySeconds: 5 timeoutSeconds: 1 volumes: - name: data persistentVolumeClaim: claimName: data---apiVersion: v1kind: Servicemetadata: name: redis namespace: kube-ops labels: name: redisspec: ports: - name: redis port: 6379 targetPort: redis selector: name: redis
通过kubectl apply更新yaml文件
kubectl apply -f gitlab-redis.yaml
查看postgresql是否部署成功
kubectl get pods -n kube-ops
显示如下,说明redis部署成功
NAME READY STATUS RESTARTS AGEpostgresql-79f85cdfb4-r64q5 1/1 Running 0 4m30sredis-56c8dc76cd-q4q75 1/1 Running 0 65s
安装gitlab服务
cat gitlab.yaml
apiVersion: apps/v1kind: Deploymentmetadata: name: gitlab namespace: kube-ops labels: name: gitlabspec: selector: matchLabels: name: gitlab template: metadata: name: gitlab labels: name: gitlab spec: containers: - name: gitlab image: sameersbn/gitlab:11.8.1 imagePullPolicy: IfNotPresent env: - name: TZ value: Asia/Shanghai - name: GITLAB_TIMEZONE value: Beijing - name: GITLAB_SECRETS_DB_KEY_BASE value: long-and-random-alpha-numeric-string - name: GITLAB_SECRETS_SECRET_KEY_BASE value: long-and-RANDOM-ALPHA-NUMERIc-string - name: GITLAB_SECRETS_OTP_KEY_BASE value: long-and-random-alpha-numeric-string - name: GITLAB_ROOT_PASSWORD value: admin321 - name: GITLAB_ROOT_EMAIL value: 19xxxxxxxx@qq.com - name: GITLAB_HOST value: 192.168.0.6 - name: GITLAB_PORT value: "30852" - name: GITLAB_SSH_PORT value: "32353" - name: GITLAB_NOTIFY_ON_BROKEN_BUILDS value: "true" - name: GITLAB_NOTIFY_PUSHER value: "false" - name: GITLAB_BACKUP_SCHEDULE value: daily - name: GITLAB_BACKUP_TIME value: 01:00 - name: DB_TYPE value: postgres - name: DB_HOST value: postgresql - name: DB_PORT value: "5432" - name: DB_USER value: gitlab - name: DB_PASS value: passw0rd - name: DB_NAME value: gitlab_production - name: REDIS_HOST value: redis - name: REDIS_PORT value: "6379" ports: - name: http containerPort: 80 - name: ssh containerPort: 22 volumeMounts: - mountPath: /home/git/data name: data livenessProbe: httpGet: path: / port: 80 initialDelaySeconds: 180 timeoutSeconds: 5 readinessProbe: httpGet: path: / port: 80 initialDelaySeconds: 5 timeoutSeconds: 1 volumes: - name: data persistentVolumeClaim: claimName: gitlabt---apiVersion: v1kind: Servicemetadata: name: gitlab namespace: kube-ops labels: name: gitlabspec: ports: - name: http port: 80 targetPort: http nodePort: 30852 - name: ssh port: 22 nodePort: 32353 targetPort: ssh selector: name: gitlab type: NodePort
注意:
上面文件里的GITLAB_ROOT_EMAIL应该设置成自己的邮箱地址,不要用我的,用我的你们后面注册gitlab账号会有问题
- name: GITLAB_ROOT_EMAIL value: 19xxxxxxxx@qq.com
通过kubectl apply更新yaml文件
kubectl apply -f gitlab.yaml
查看postgresql是否部署成功
kubectl get pods -n kube-opsNAME READY STATUS RESTARTS AGEgitlab-cdff65b5f-7kfxn 1/1 Running 0 2m26spostgresql-79f85cdfb4-r64q5 1/1 Running 0 10mredis-56c8dc76cd-q4q75 1/1 Running 0 6m42s
访问gitlab web界面
上面部署都没问题的话,我们开始访问gitlab的web ui界面,具体步骤如下
1.查看gitlab在宿主机暴露的端口
kubectl get svc -n kube-ops
显示如下:
gitlab NodePort 10.98.248.116 80:30852/TCP,22:32353/TCP 5m25s
我们在浏览器访问k8s的master1节点的IP:30852即可访问到gitlab web界面,我访问的地址是192.168.0.6:30852,出现如下界面
第一次登陆,我们需要点击注册Registry
Full name:可以随便起名字,符合要求即可,也可和我的保持一致,如下gitlab-adminUsername:可以随便起名字,符合要求即可,也可和我的保持一致,如下gitlab-adminEmail: 这个写你们自己的邮箱,跟你们gitlab.yaml文件里的邮箱地址一致即可,我写的qq邮箱,如下198xxxxxxx@qq.comEmail confirmation: 这个就是跟上面Email对应的值保持一致即可,如下198xxxxxxx@qq.comPassword: 自己设置个密码,我设置的是admin123admin123
上面写好之后点击最下面的Registry即可完成注册并登陆
登陆之后显示如下:
yaml存储到文件服务器,通过编写k8s的资源清单yaml文件部署gitlab服务相关推荐
- 通过编写k8s的资源清单yaml文件部署gitlab服务
微信公众号搜索DevOps和k8s全栈技术 ,即可关注我的公众号,也可通过扫描文章最后的二维码关注,每天都会分享技术文章供大家参考阅读~,拥抱开源,同大家共同进步~~!!! 搭建nfs服务器 1.为什 ...
- k8s核心技术-资源编排(yaml)的介绍---K8S_Google工作笔记0018
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 在k8s中是通过yaml文件进行资源编排的 yaml也叫资源清单文件 然后咱们主要看yaml的语法 ...
- k8s核心技术-资源编排(yaml)的编写方式---K8S_Google工作笔记0019
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 上一节我们介绍了yaml文件,在k8s中,所有资源的部署都是基于yaml文件的 可以看到控制器部分 ...
- 已解决:pod资源清单yaml中各字段详解
1.按层级查看yaml清单 按照层级学习pod的yaml清单,比如apiVersion.kind.metadata.spec为第一层级,metadata下的name.namespace.lables为 ...
- (三)k8s资源清单
一.k8s中的资源 K8s中所有的内容都抽象为资源,资源实例化之后,叫做对象,那么这些资源不能在同一空间下重名 名称空间级别(namespace) 工作负载型资源( workload):Pod. Re ...
- Kubernetes (k8s)资源
Kubernetes系统架构简介 : https://mp.weixin.qq.com/s/GDiKrdHNOt6n05Z0hPWRyQ k8s 安全配置指南 : https://neuvector. ...
- 不会写K8S资源编排yaml文件?一文教会你如何掌握编写yaml文件的技巧
不会写K8S资源编排yaml文件?一文教会你如何掌握编写yaml文件的技巧 文章目录 不会写K8S资源编排yaml文件?一文教会你如何掌握编写yaml文件的技巧 一.熟悉下K8S常用命令参数以及资源管 ...
- k8s查看pod的yaml文件_【大强哥-k8s从入门到放弃04】Yaml语法解析
依然小福利[Python-零基础入门]2020感谢走进我的生命,Python!(已更新至206集)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com 一.K8S名称 ...
- 【云原生--K8S】 yaml文件部署Mysql数据库(一)
文章目录 前言 一.下载mysql镜像文件 二.创建deployment和service 三.进入docker容器操作mysql 四.Pod volumn存储无法持久化 五.删除deployment和 ...
最新文章
- HDU1201 18岁生日【日期计算】
- stm 32 IO重映射
- python处理excel-使用python将数据写入excel
- 文末送书啦!| Device Mapper,那些你不知道的Docker核心技术
- Python解决爬虫中文返回乱码问题
- 《我是歌手》你是歌手你会选什么时间参赛?
- PythonGUI编程|使用Tkinter制作快递查询软件
- php中的oop,php oop有什么用?
- redis学习-NoSQL数据库的四大分类
- cacti的安装和配置
- MyEclipse代码提示快捷键和常用设置
- java 与 c# 3des 加解密
- Java实现SM2算法(国密算法)
- activitymq 集群构建
- 勒索病毒:解密工具整理
- html把div做成透明背景,DIV半透明层 CSS来实现网页背景半透明
- php 数据透视表,数据透视表PHP / MySQL
- 有利于SEO的div+CSS的命名规则小结(技巧)
- 18 - java基初 数组介绍 冒泡排序
- 高斯模糊之canvas实现
热门文章
- 微信破解WiFi密码如何操作?一招帮你查看密码!
- [USACO 2.2.1] Preface Numbering
- 企业微信报错,提示无权限访问
- Json在线编辑和格式化工具
- 和99.9%的人的认知完全相反的富人思维
- 他是清华姚班的天才少年,17 科满分传奇,32 岁斩获“诺贝尔风向标”斯隆奖...
- Linux入门第三天——linux命令(二)
- 数值计算方法复习之曲线拟合的最小二乘法
- S3C2440 SDRAM驱动配置编程
- android商品销售系统,化工产品销售管理系统