当前位置:   article > 正文

k8s使用hostpath卷持久化数据_k8s mountpath hostpath

k8s mountpath hostpath

为什么需要数据卷?

容器中的文件在磁盘上是临时存放的,这给容器中运行比较重要的应用程序带来一些问题。

• 问题1:当容器升级或者崩溃时,kubelet会重建容器,容器内文件会丢失

• 问题2:一个Pod中运行多个容器需要共享文件 Kubernetes 卷(Volume) 这一抽象概念能够解决这两个问题。

hostPath卷:挂载Node文件系统(Pod所在节点)上文件或者目 录到Pod中的容器。

应用场景:Pod中容器需要访问宿主机文件

在yaml文件中:

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: htf-unify-data-service
  5. namespace: prod
  6. labels:
  7. app: htf-unify-data-service
  8. annotations:
  9. deployment.kubernetes.io/revision: "1"
  10. spec:
  11. selector:
  12. matchLabels:
  13. app: htf-unify-data-service
  14. replicas: 2
  15. strategy:
  16. type: RollingUpdate
  17. rollingUpdate:
  18. maxUnavailable: 0
  19. maxSurge: 1
  20. template:
  21. metadata:
  22. labels:
  23. app: htf-unify-data-service
  24. spec:
  25. nodeSelector:
  26. type: network
  27. containers:
  28. - name: htf-unify-data-service
  29. image: k8s-registry.qhtx.local/haitong/htf-unify-data-service-0.0.6-snapshot:7574
  30. imagePullPolicy: Always
  31. resources:
  32. requests:
  33. cpu: 200m
  34. memory: 1000Mi
  35. limits:
  36. cpu: 8000m
  37. memory: 10000Mi
  38. ports:
  39. - name: http
  40. containerPort: 8080
  41. protocol: TCP
  42. env:
  43. - name: LANG
  44. value: en_US.utf8
  45. - name: LC_ALL
  46. value: en_US.utf8
  47. volumeMounts:
  48. - name : varlibdockercontainers
  49. mountPath: /var/lib/docker/containers
  50. - name: timezone
  51. mountPath: /etc/localtime
  52. - name : logs
  53. mountPath: /root/logs
  54. volumes:
  55. - name: varlibdockercontainers
  56. hostPath:
  57. path: /var/lib/docker/containers
  58. - name: timezone
  59. hostPath:
  60. path: /usr/share/zoneinfo/Asia/Shanghai
  61. - name: logs
  62. hostPath:
  63. path: /root/logs
  64. ---
  65. apiVersion: v1
  66. kind: Service
  67. metadata:
  68. creationTimestamp: null
  69. labels:
  70. app: htf-unify-data-service
  71. name: htf-unify-data-service
  72. namespace: prod
  73. spec:
  74. ports:
  75. - name: htf-unify-data-service
  76. port: 8080
  77. protocol: TCP
  78. targetPort: 8080
  79. selector:
  80. app: htf-unify-data-service
  81. sessionAffinity: None
  82. type: ClusterIP
  83. status:
  84. loadBalancer: {}

其中:

  1. volumeMounts:
  2. - name : logs
  3. mountPath: /root/logs ------容器内部路径
  4. volumes:
  5. - name: logs
  6. hostPath:
  7. path: /root/logs ------宿主机内部路径(node节点)

看应用部署在哪个node节点,可以通过以下命令来查看:

  1. [root@qhtx-k8s-master-001 yaml]# kubectl get pods -n prod -o wide
  2. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
  3. htf-unify-data-service-c44d655cc-fjfbk 1/1 Running 0 38m 10.226.97.9 qhtx-k8s-node-002 <none> <none>
  4. htf-unify-data-service-c44d655cc-wprk8 1/1 Running 0 38m 10.226.96.16 qhtx-k8s-node-001 <none> <none>

得知这个应用部署在 qhtx-k8s-node-002,和 qhtx-k8s-node-001节点下

  1. [root@qhtx-k8s-node-001 ~]# cd /root/logs/
  2. [root@qhtx-k8s-node-001 logs]# ls
  3. nacos

会在qhtx-k8s-node-001和qhtx-k8s-node-002节点下自动创建/root/logs目录,并且把容器中目录下的文件给同步过来,当容器关闭,文件仍然会存在

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/214362
推荐阅读
相关标签
  

闽ICP备14008679号