猪齿鱼创建微服务共享目录

1.创建NFS动态存储卷

创建 NFS 服务器

NFS 允许系统将其目录和文件共享给网络上的其他系统。通过 NFS,用户和应用程序可以访问远程系统上的文件,就象它们是本地文件一样。

安装nfs-utils

  • 在集群每一个节点安装nfs-utils

    sudo yum install -y nfs-utils
    

配置nfs-server

  • 创建共享目录

    mkdir -p /u01/prod
    
  • 编辑/etc/exports文件添加需要共享目录,每个目录的设置独占一行,编写格式如下:

    NFS共享目录路径 客户机IP段(参数1,参数2,...,参数n)
    
  • 例如:

    /u01 192.168.1.1/16(rw,sync,insecure,no_subtree_check,no_root_squash)
    
    参数说明
    ro只读访问
    rw读写访问
    sync所有数据在请求时写入共享
    asyncnfs在写入数据前可以响应请求
    securenfs通过1024以下的安全TCP/IP端口发送
    insecurenfs通过1024以上的端口发送
    wdelay如果多个用户要写入nfs目录,则归组写入(默认)
    no_wdelay如果多个用户要写入nfs目录,则立即写入,当使用async时,无需此设置
    hide在nfs共享目录中不共享其子目录
    no_hide共享nfs目录的子目录
    subtree_check如果共享/usr/bin之类的子目录时,强制nfs检查父目录的权限(默认)
    no_subtree_check不检查父目录权限
    all_squash共享文件的UID和GID映射匿名用户anonymous,适合公用目录
    no_all_squash保留共享文件的UID和GID(默认)
    root_squashroot用户的所有请求映射成如anonymous用户一样的权限(默认)
    no_root_squashroot用户具有根目录的完全管理访问权限
    anonuid=xxx指定nfs服务器/etc/passwd文件中匿名用户的UID
    anongid=xxx指定nfs服务器/etc/passwd文件中匿名用户的GID
    • 注1:尽量指定IP段最小化授权可以访问NFS 挂载的资源的客户端
    • 注2:经测试参数insecure必须要加,否则客户端挂载出错mount.nfs: access denied by server while mounting

启动NFS服务

  • 配置完成后,您可以在终端提示符后运行以下命令来启动 NFS 服务器:

    sudo systemctl enable nfs-server
    sudo systemctl start nfs-server
    

检查NFS服务提供是否正常

  • 到客户机上执行showmount命令进行检查

    $ showmount -e <NFS服务器IP地址>
    Exports list on <NFS服务器IP地址>:
    /u01
    

安装 nfs-client-provisioner

添加choerodon chart仓库

helm repo add c7n https://openchart.choerodon.com.cn/choerodon/c7n/
helm repo update
  • 在集群每一个节点安装nfs-utils

    sudo yum install -y nfs-utils
    
  • 在任意一个master节点执行下面helm命令,安装nfs-client-provisioner

    helm install c7n/nfs-client-provisioner \
    
        --set rbac.create=true \
    
        --set persistence.enabled=true \
    
        --set storageClass.name=nfs-provisioner \
    
    
        --set persistence.nfsServer=127.0.0.1 \
    
        --set persistence.nfsPath=/u01/prod \
    
        --version 0.1.1 \
        --name nfs-client-provisioner \
        --namespace kube-system
    

    提供NFS服务的主机IP地址或域名

    NFS服务共享的目录

验证安装

  • 新建write-pod.yaml文件,粘贴以下内容:

    kind: Pod
    apiVersion: v1
    metadata:
      name: write-pod
    spec:
      containers:
      - name: write-pod
        image: busybox
        command:
          - "/bin/sh"
        args:
          - "-c"
          - "touch /mnt/SUCCESS && exit 0 || exit 1"
        volumeMounts:
          - name: nfs-pvc
            mountPath: "/mnt"
      restartPolicy: "Never"
      volumes:
        - name: nfs-pvc
          persistentVolumeClaim:
            claimName: myclaim
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: myclaim
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: nfs-provisioner
      resources:
        requests:
          storage: 1Mi
    
  • 部署测试用例

    kubectl apply -f write-pod.yaml
    
  • 验证是否正常

    $ kubectl get po
    NAME                            READY     STATUS      RESTARTS   AGE
    write-pod                       0/1       Completed   0          8s
    

    pod状态为Completed则为正常,若长时间为ContainerCreating状态则为不正常,请确认安装操作步骤是否正确。

  • 清除测试用例

    kubectl delete -f write-pod.yaml
    

2.查看并创建PV

在这里插入图片描述

在这里插入图片描述

[root@register ~]# kubectl get pv
NAME           CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
custompro-pv   8Gi        RWX            Retain           Available                                   8m2s

我们可以看到 pv1 已经创建成功了,状态是 Available,表示 pv1 就绪,可以被 PVC 申请。

一个 PV 的生命周期中,可能会处于4中不同的阶段:

  • Available(可用):表示可用状态,还未被任何 PVC 绑定
  • Bound(已绑定):表示 PV 已经被 PVC 绑定
  • Released(已释放):PVC 被删除,但是资源还未被集群重新声明
  • Failed(失败): 表示该 PV 的自动回收失败

3.查看并创建PVC

在这里插入图片描述
这里创建失败

在这里插入图片描述

删除PVC并重启agent

[root@register ~]# kubectl get deployment --all-namespaces
NAMESPACE              NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
choerodon              choerodon-cluster-agent-ja-pro   1/1     1            1           11d
ingress-controller     nginx-ingress-controller         2/2     2            2           11d
ja-proc                bjja-front-integration-74a24     2/2     2            2           21h
ja-proc                hzero-admin-3e7e8                2/2     2            2           22h
ja-proc                hzero-asgard-66974               2/2     2            2           17h
ja-proc                hzero-config-49906               2/2     2            2           41h
ja-proc                hzero-file-bad34                 2/2     2            2           20h
ja-proc                hzero-gateaway-6aa6d             2/2     2            2           29h
ja-proc                hzero-iam-d7ef7                  2/2     2            2           27h
ja-proc                hzero-import-a948b               2/2     2            2           17h
ja-proc                hzero-interface-974e1            2/2     2            2           17h
ja-proc                hzero-message-1a3d4              2/2     2            2           4h47m
ja-proc                hzero-oauth-6db46                2/2     2            2           28h
ja-proc                hzero-platform-5df08             2/2     2            2           22h
ja-proc                hzero-register-fa59f             1/1     1            1           2d4h
ja-proc                hzero-report-b58be               2/2     2            2           3h46m
ja-proc                hzero-scheduler-d1475            2/2     2            2           124m
ja-proc                hzero-swagger-1022c              2/2     2            2           22h
ja-proc                hzero-workflow-plus-b8a9d        2/2     2            2           4h59m
ja-proc                register-backup-be763            1/1     1            1           24h
ja-proc                wms-mdm-7bf92                    2/2     2            2           89m
kube-system            coredns                          2/2     2            2           11d
kube-system            metrics-server                   1/1     1            1           11d
kube-system            nfs-client-provisioner           1/1     1            1           11d
kube-system            tiller-deploy                    1/1     1            1           11d
kubernetes-dashboard   dashboard-metrics-scraper        1/1     1            1           11d
kubernetes-dashboard   kubernetes-dashboard             1/1     1            1           11d
[root@register ~]# kubectl scale deployment -n choerodon --replicas=0 choerodon-cluster-agent-ja-pro
deployment.apps/choerodon-cluster-agent-ja-pro scaled
[root@register ~]# kubectl get deployment --all-namespaces
NAMESPACE              NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
choerodon              choerodon-cluster-agent-ja-pro   0/0     0            0           11d
ingress-controller     nginx-ingress-controller         2/2     2            2           11d
ja-proc                bjja-front-integration-74a24     2/2     2            2           21h
ja-proc                hzero-admin-3e7e8                2/2     2            2           22h
ja-proc                hzero-asgard-66974               2/2     2            2           17h
ja-proc                hzero-config-49906               2/2     2            2           41h
ja-proc                hzero-file-bad34                 2/2     2            2           20h
ja-proc                hzero-gateaway-6aa6d             2/2     2            2           29h
ja-proc                hzero-iam-d7ef7                  2/2     2            2           27h
ja-proc                hzero-import-a948b               2/2     2            2           17h
ja-proc                hzero-interface-974e1            2/2     2            2           17h
ja-proc                hzero-message-1a3d4              2/2     2            2           4h48m
ja-proc                hzero-oauth-6db46                2/2     2            2           28h
ja-proc                hzero-platform-5df08             2/2     2            2           22h
ja-proc                hzero-register-fa59f             1/1     1            1           2d4h
ja-proc                hzero-report-b58be               2/2     2            2           3h47m
ja-proc                hzero-scheduler-d1475            2/2     2            2           125m
ja-proc                hzero-swagger-1022c              2/2     2            2           22h
ja-proc                hzero-workflow-plus-b8a9d        2/2     2            2           5h
ja-proc                register-backup-be763            1/1     1            1           24h
ja-proc                wms-mdm-7bf92                    2/2     2            2           90m
kube-system            coredns                          2/2     2            2           11d
kube-system            metrics-server                   1/1     1            1           11d
kube-system            nfs-client-provisioner           1/1     1            1           11d
kube-system            tiller-deploy                    1/1     1            1           11d
kubernetes-dashboard   dashboard-metrics-scraper        1/1     1            1           11d
kubernetes-dashboard   kubernetes-dashboard             1/1     1            1           11d
[root@register ~]# kubectl scale deployment -n choerodon --replicas=1 choerodon-cluster-agent-ja-pro
deployment.apps/choerodon-cluster-agent-ja-pro scaled
[root@register ~]# kubectl get deployment --all-namespaces
NAMESPACE              NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
choerodon              choerodon-cluster-agent-ja-pro   0/1     1            0           11d
ingress-controller     nginx-ingress-controller         2/2     2            2           11d
ja-proc                bjja-front-integration-74a24     2/2     2            2           21h
ja-proc                hzero-admin-3e7e8                2/2     2            2           22h
ja-proc                hzero-asgard-66974               2/2     2            2           17h
ja-proc                hzero-config-49906               2/2     2            2           41h
ja-proc                hzero-file-bad34                 2/2     2            2           20h
ja-proc                hzero-gateaway-6aa6d             2/2     2            2           29h
ja-proc                hzero-iam-d7ef7                  2/2     2            2           27h
ja-proc                hzero-import-a948b               2/2     2            2           17h
ja-proc                hzero-interface-974e1            2/2     2            2           17h
ja-proc                hzero-message-1a3d4              2/2     2            2           4h48m
ja-proc                hzero-oauth-6db46                2/2     2            2           28h
ja-proc                hzero-platform-5df08             2/2     2            2           22h
ja-proc                hzero-register-fa59f             1/1     1            1           2d4h
ja-proc                hzero-report-b58be               2/2     2            2           3h47m
ja-proc                hzero-scheduler-d1475            2/2     2            2           125m
ja-proc                hzero-swagger-1022c              2/2     2            2           22h
ja-proc                hzero-workflow-plus-b8a9d        2/2     2            2           5h
ja-proc                register-backup-be763            1/1     1            1           24h
ja-proc                wms-mdm-7bf92                    2/2     2            2           90m
kube-system            coredns                          2/2     2            2           11d
kube-system            metrics-server                   1/1     1            1           11d
kube-system            nfs-client-provisioner           1/1     1            1           11d
kube-system            tiller-deploy                    1/1     1            1           11d
kubernetes-dashboard   dashboard-metrics-scraper        1/1     1            1           11d
kubernetes-dashboard   kubernetes-dashboard             1/1     1            1           11d
[root@register ~]# kubectl get deployment --all-namespaces
NAMESPACE              NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
choerodon              choerodon-cluster-agent-ja-pro   0/1     1            0           11d
ingress-controller     nginx-ingress-controller         2/2     2            2           11d
ja-proc                bjja-front-integration-74a24     2/2     2            2           21h
ja-proc                hzero-admin-3e7e8                2/2     2            2           22h
ja-proc                hzero-asgard-66974               2/2     2            2           17h
ja-proc                hzero-config-49906               2/2     2            2           41h
ja-proc                hzero-file-bad34                 2/2     2            2           20h
ja-proc                hzero-gateaway-6aa6d             2/2     2            2           29h
ja-proc                hzero-iam-d7ef7                  2/2     2            2           27h
ja-proc                hzero-import-a948b               2/2     2            2           17h
ja-proc                hzero-interface-974e1            2/2     2            2           17h
ja-proc                hzero-message-1a3d4              2/2     2            2           4h48m
ja-proc                hzero-oauth-6db46                2/2     2            2           28h
ja-proc                hzero-platform-5df08             2/2     2            2           22h
ja-proc                hzero-register-fa59f             1/1     1            1           2d4h
ja-proc                hzero-report-b58be               2/2     2            2           3h47m
ja-proc                hzero-scheduler-d1475            2/2     2            2           125m
ja-proc                hzero-swagger-1022c              2/2     2            2           22h
ja-proc                hzero-workflow-plus-b8a9d        2/2     2            2           5h
ja-proc                register-backup-be763            1/1     1            1           24h
ja-proc                wms-mdm-7bf92                    2/2     2            2           90m
kube-system            coredns                          2/2     2            2           11d
kube-system            metrics-server                   1/1     1            1           11d
kube-system            nfs-client-provisioner           1/1     1            1           11d
kube-system            tiller-deploy                    1/1     1            1           11d
kubernetes-dashboard   dashboard-metrics-scraper        1/1     1            1           11d
kubernetes-dashboard   kubernetes-dashboard             1/1     1            1           11d

重新绑定pvc,成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C2BZeLgf-1589107259444)(D:/hap/mdfile/Image/image-20200509161637566.png)]

4.微服务POD配置PVC共享目录

修改deployeement.yaml和value.yaml
在这里插入图片描述

deployeement.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Release.Name }}
  labels:
{{ include "service.labels.standard" . | indent 4 }}
{{ include "service.logging.deployment.label" . | indent 4 }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
{{ include "service.labels.standard" . | indent 6 }}
  template:
    metadata:
      labels:
{{ include "service.labels.standard" . | indent 8 }}
{{ include "service.microservice.labels" . | indent 8 }}
      annotations:
{{ include "service.monitoring.pod.annotations" . | indent 8 }}
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - customs
            topologyKey: "kubernetes.io/hostname"
      containers:
        - name: {{ .Release.Name }}
          image: "{{ .Values.image.repository }}:{{ .Chart.Version }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          env:
{{- range $name, $value := .Values.env.open }}
{{- if not (empty $value) }}
          - name: {{ $name | quote }}
            value: {{ $value | quote }}
{{- end }}
{{- end }}
          ports:
            - name: http
              containerPort: {{ .Values.service.port }}
              protocol: TCP
{{- if .Values.volumes.enabled }}
          volumeMounts:
          - name: {{ .Values.volumes.name }}  # volumes名称
            mountPath: {{ .Values.volumes.mountPath }}  # 挂载路径
{{- end }}
          readinessProbe:
            exec:
              command: ["/bin/sh","-c",
              "curl -s localhost:{{ .Values.deployment.managementPort }}/actuator/health"]
            failureThreshold: 3
            initialDelaySeconds: 60
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 10
          resources:
{{ toYaml .Values.resources | indent 12 }}
{{- if .Values.volumes.enabled }}
      volumes:
      - name: {{ .Values.volumes.name }}  # volumes名称
        persistentVolumeClaim:
          claimName: {{ .Values.volumes.claimName }}  # pvc名称
{{- end }}

value.yaml

# Default values for manager-service.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

replicaCount: 1

image:
  repository: registry.cn-hangzhou.aliyuncs.com/operation-ja0146/hzero-customs
  pullPolicy: Always

preJob:
  preConfig:
    enable: false
  preInitDB:
    enable: false

deployment:
  managementPort: 8181

volumes:
  enabled: true
  name: customsv1
  claimName: customs-pvc
  mountPath: /home/hctm/myshare

env:
  open:
    ## log
    LOG_LEVEL: debug
    ## register-server 
    EUREKA_DEFAULT_ZONE: http://register.hzero.org/eureka
    ## redis
    SPRING_REDIS_HOST: 172.28.8.110
    SPRING_REDIS_PORT: 6379
    SPRING_REDIS_DATABASE: 1
    ## mysql
    SPRING_DATASOURCE_URL: jdbc:mysql://172.28.8.110:3306/hzero_customs?useUnicode=true&characterEncoding=utf-8&useSSL=false
    SPRING_DATASOURCE_USERNAME: hzero
    SPRING_DATASOURCE_PASSWORD: hzero
    ## config
    SPRING_PROFILES_ACTIVE: default
    SPRING_CLOUD_CONFIG_URI: http://config.hzero.org
    ## oauth && gateway
    ## other
metrics:
  path: /prometheus
  group: spring-boot

logs:
 parser: spring-boot

persistence:
  enabled: false
  ## A manually managed Persistent Volume and Claim
  ## Requires persistence.enabled: true
  ## If defined, PVC must be created manually before volume will be bound
  # existingClaim:
  # subPath:

service:
  name: hzero-customs
  enabled: true
  type: ClusterIP
  port: 8180
  
ingress:
  enabled: false

resources:
  # We usually recommend not to specify default resources and to leave this as a conscious
  # choice for the user. This also increases chances charts run on environments with little
  # resources,such as Minikube. If you do want to specify resources,uncomment the following
  # lines,adjust them as necessary,and remove the curly braces after 'resources:'.
  limits:
    # cpu: 100m
    memory: 2Gi
  requests:
    # cpu: 100m
    memory: 1.5Gi

重点关注

volumes:
  enabled: true   # 是否启用
  name: customsv1 # volumes名称
  claimName: customs-pvc # PVC名称
  mountPath: /home/hctm/myshare # 挂载路径
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Choerodon猪齿是一个开源多云技术平台,是基于开源技术Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境的一致性。平台通过提供精益敏捷、持续交付、容器环境、微服务、DevOps等能力来帮助组织团队来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。 Choerodon提供: 1、全面的工具链支持DevOps最佳实践,从计划,编程,构建,测试,发布和运营支持Scrum管理。 2、一套基于Spring Cloud的微服务应用程序框架,可帮助公司更快,更高效地进行微服务开发。 Choerodon的特征: 1、协作 -结合精益敏捷对业务需求、工作任务进行管理,打造高效协作生态。提供工作列表、故事地图、知识管理等协作工具,是贯穿开发、测试、部署的价值链,促进团队成员沟通交流,降低项目管理成本,提高沟通协作效率。 2、开发 -提供迭代规划和持续集成的流水线,帮助规范应用服务开发,实现快速迭代。以DevOps理念为指引,结合精益看板和Gitlab的分支管理,提供持续集成的流水线,缩短应用服务开发周期,同时提高团队效率,高效频繁向测试团队或者用户交付软件新版本。 3、测试 -敏捷化的持续测试工具,可以有效地提高软件测试的效率和质量。测试管理为用户提供敏捷化的持续测试工具,包括测试用例管理、测试循环、测试分析等,可以有效地提高软件测试的效率和质量,提高测试的灵活性和可视化水平,最终减少测试时间,让用户将主要精力放到软件功能构建上。 4、部署 -流水线式多环境一键部署。用户客户可以方便地使用部署功能管理各种使用Choerodon开发部署的应用服务,包括应用启停、状态监控,以及应用服务对应的版本控制、容器管理等,同时还包括应用服务涉及到的各种资源管理,例如网络、域名、数据库服务、缓存服务等。 5、运营 -汇集辅助项目进行管理的各种报表,多维度展示项目进展详情和问题。包含了敏捷报表(累积流量图、燃尽图等)、DevOps报表(代码提交图、代码质量图等)、测试报表。 6、微服务框架 - 基于汉得微服务技术平台HZERO的微服务架构,使用此开发框架,用户可以轻松构建应用服务。 另外,您可以查看Choerodon的屏幕快照以最直观地了解Choerodon,还可以访问Choerodon的网站。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潘顾昌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值