搭建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服务相关推荐

  1. 通过编写k8s的资源清单yaml文件部署gitlab服务

    微信公众号搜索DevOps和k8s全栈技术 ,即可关注我的公众号,也可通过扫描文章最后的二维码关注,每天都会分享技术文章供大家参考阅读~,拥抱开源,同大家共同进步~~!!! 搭建nfs服务器 1.为什 ...

  2. k8s核心技术-资源编排(yaml)的介绍---K8S_Google工作笔记0018

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 在k8s中是通过yaml文件进行资源编排的 yaml也叫资源清单文件 然后咱们主要看yaml的语法 ...

  3. k8s核心技术-资源编排(yaml)的编写方式---K8S_Google工作笔记0019

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 上一节我们介绍了yaml文件,在k8s中,所有资源的部署都是基于yaml文件的 可以看到控制器部分 ...

  4. 已解决:pod资源清单yaml中各字段详解

    1.按层级查看yaml清单 按照层级学习pod的yaml清单,比如apiVersion.kind.metadata.spec为第一层级,metadata下的name.namespace.lables为 ...

  5. (三)k8s资源清单

    一.k8s中的资源 K8s中所有的内容都抽象为资源,资源实例化之后,叫做对象,那么这些资源不能在同一空间下重名 名称空间级别(namespace) 工作负载型资源( workload):Pod. Re ...

  6. Kubernetes (k8s)资源

    Kubernetes系统架构简介 : https://mp.weixin.qq.com/s/GDiKrdHNOt6n05Z0hPWRyQ k8s 安全配置指南 : https://neuvector. ...

  7. 不会写K8S资源编排yaml文件?一文教会你如何掌握编写yaml文件的技巧

    不会写K8S资源编排yaml文件?一文教会你如何掌握编写yaml文件的技巧 文章目录 不会写K8S资源编排yaml文件?一文教会你如何掌握编写yaml文件的技巧 一.熟悉下K8S常用命令参数以及资源管 ...

  8. k8s查看pod的yaml文件_【大强哥-k8s从入门到放弃04】Yaml语法解析

    依然小福利[Python-零基础入门]2020感谢走进我的生命,Python!(已更新至206集)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com 一.K8S名称 ...

  9. 【云原生--K8S】 yaml文件部署Mysql数据库(一)

    文章目录 前言 一.下载mysql镜像文件 二.创建deployment和service 三.进入docker容器操作mysql 四.Pod volumn存储无法持久化 五.删除deployment和 ...

最新文章

  1. HDU1201 18岁生日【日期计算】
  2. stm 32 IO重映射
  3. python处理excel-使用python将数据写入excel
  4. 文末送书啦!| Device Mapper,那些你不知道的Docker核心技术
  5. Python解决爬虫中文返回乱码问题
  6. 《我是歌手》你是歌手你会选什么时间参赛?
  7. PythonGUI编程|使用Tkinter制作快递查询软件
  8. php中的oop,php oop有什么用?
  9. redis学习-NoSQL数据库的四大分类
  10. cacti的安装和配置
  11. MyEclipse代码提示快捷键和常用设置
  12. java 与 c# 3des 加解密
  13. Java实现SM2算法(国密算法)
  14. activitymq 集群构建
  15. 勒索病毒:解密工具整理
  16. html把div做成透明背景,DIV半透明层 CSS来实现网页背景半透明
  17. php 数据透视表,数据透视表PHP / MySQL
  18. 有利于SEO的div+CSS的命名规则小结(技巧)
  19. 18 - java基初 数组介绍 冒泡排序
  20. 高斯模糊之canvas实现

热门文章

  1. 微信破解WiFi密码如何操作?一招帮你查看密码!
  2. [USACO 2.2.1] Preface Numbering
  3. 企业微信报错,提示无权限访问
  4. Json在线编辑和格式化工具
  5. 和99.9%的人的认知完全相反的富人思维
  6. 他是清华姚班的天才少年,17 科满分传奇,32 岁斩获“诺贝尔风向标”斯隆奖...
  7. Linux入门第三天——linux命令(二)
  8. 数值计算方法复习之曲线拟合的最小二乘法
  9. S3C2440 SDRAM驱动配置编程
  10. android商品销售系统,化工产品销售管理系统