• k8s 部署 minio


    目录

    一、k8s部署老版本minio

    二、新版本minio

    2.1、新版本特性

    2.2、 使用老版本的配置清单引入的问题

    2.3、新版本如何编写资源配置清单

    三、新版本部署minio

    3.1、docker 部署minio

    3.2、k8s 部署版本minio

    3.3、k8s 部署版本minio集群


    一、k8s部署老版本minio

    老版本使用9000端口进行业务通信 + 提供web页面 + localhost:9000/minio/health/ready提供健康检查

    1. apiVersion: extensions/v1beta1
    2. kind: Deployment
    3. metadata:
    4. labels:
    5. name: minio
    6. name: minio
    7. namespace: armory
    8. spec:
    9. progressDeadlineSeconds: 600
    10. replicas: 1
    11. revisionHistoryLimit: 7
    12. selector:
    13. matchLabels:
    14. name: minio
    15. template:
    16. metadata:
    17. labels:
    18. app: minio
    19. name: minio
    20. spec:
    21. containers:
    22. - name: minio
    23. image: harbor.od.com:180/armory/minio:latest
    24. imagePullPolicy: IfNotPresent
    25. ports:
    26. - containerPort: 9000
    27. protocol: TCP
    28. args:
    29. - server
    30. - /data
    31. env:
    32. - name: MINIO_ACCESS_KEY
    33. value: admin
    34. - name: MINIO_SECRET_KEY
    35. value: admin123
    36. readinessProbe:
    37. failureThreshold: 3
    38. httpGet:
    39. path: /minio/health/ready
    40. port: 9000
    41. scheme: HTTP
    42. initialDelaySeconds: 10
    43. periodSeconds: 10
    44. successThreshold: 1
    45. timeoutSeconds: 5
    46. volumeMounts:
    47. - mountPath: /data
    48. name: data
    49. imagePullSecrets:
    50. - name: harbor
    51. volumes:
    52. - nfs:
    53. server: hdss7-200
    54. path: /data/nfs-volume/minio
    55. name: data
    56. ---
    57. apiVersion: v1
    58. kind: Service
    59. metadata:
    60. name: minio
    61. namespace: armory
    62. spec:
    63. ports:
    64. - port: 80
    65. protocol: TCP
    66. targetPort: 9000
    67. selector:
    68. app: minio
    69. ---
    70. apiVersion: extensions/v1beta1
    71. kind: Ingress
    72. metadata:
    73. name: minio
    74. namespace: armory
    75. spec:
    76. rules:
    77. - host: minio.od.com
    78. http:
    79. paths:
    80. - path: /
    81. backend:
    82. serviceName: minio
    83. servicePort: 80

    二、新版本minio特性

    2.1、新版本特性

    1、新版本使用9000端口进行业务通信
    2、新版本把可视化独立出来,默认用动态端口进行通信,或--console-address ":5000" 自己设置端口,但主动访问IP:9000 依旧是可以访问web页面
    3、localhost:9000/minio/health/ready提供健康检查

    2.2、 使用老版本的配置清单引入的问题

    假如使用了老版本的资源配置清单,使用新的minio镜像,会出现:

    1、访问容器IP:9000是依旧可以访问web页面
    2、但是如果使用ingress域名访问,比如是minio.od.com,会出现页面返回的是minio.od.com:32154,并且页面无任何数据。
    3、如果直接访问容器IP:32154,可以直接访问web页面
    4、通过kubectl describe pod的名字,会发现有一条是Console,端口是32154
    5、总上所述,对比新版本minio特性,说明了32154是Console的端口,而且在kill掉这个pod,在启动一个新的,发现Console端口会变化,说明Console端口是随机的。
    6、按照次特性,可以修改deployment资源,增加Nodename固定在那个节点运行,修改svc资源设置nodeport,共享网络名称空间,让pod的9000端口映射宿主机的某一个端口,直接访问宿主机的端口,通过即可。

    2.3、新版本如何编写资源配置清单

    1、deployment 中需要使用命令固定Console端口,deployment 开放9000端口、Console端口
    2、service 资源中代理9000端口、Console端口
    3、ingress 资源中代理Console端口

    三、k8s部署新版本minio

    3.1、docker 部署minio

    1. docker run -p 9000:9000 -p 9090:9090 --name minio \
    2. -d --restart=always \
    3. -e "MINIO_ACCESS_KEY=admin" \
    4. -e "MINIO_SECRET_KEY=admin123456" \
    5. -v /data/minio/data:/data \
    6. -v /data/minio/config:/root/.minio \minio/minio \
    7. server /data --console-address ":9090"


    3.2、k8s 部署版本minio

    1. apiVersion: extensions/v1beta1
    2. kind: Deployment
    3. metadata:
    4. name: minio
    5. spec:
    6. replicas: 1
    7. selector:
    8. matchLabels:
    9. app: minio
    10. template:
    11. metadata:
    12. labels:
    13. app: minio
    14. spec:
    15. containers:
    16. - name: minio
    17. env:
    18. - name: MINIO_ROOT_USER
    19. value: "admin"
    20. - name: MINIO_ROOT_PASSWORD
    21. value: "root123456"
    22. image: minio/minio:latest
    23. imagePullPolicy: IfNotPresent
    24. command:
    25. - /bin/sh
    26. - -c
    27. - minio server /data --console-address ":5000"
    28. ports:
    29. - name: data
    30. containerPort: 9000
    31. protocol: "TCP"
    32. - name: console
    33. containerPort: 5000
    34. protocol: "TCP"
    35. ---
    36. apiVersion: v1
    37. kind: Service
    38. metadata:
    39. name: minio
    40. spec:
    41. ports:
    42. - name: data
    43. port: 9000
    44. targetPort: 9000
    45. protocol: TCP
    46. - name: console
    47. port: 5000
    48. targetPort: 5000
    49. protocol: TCP
    50. selector:
    51. app: minio
    52. ---
    53. apiVersion: extensions/v1beta1
    54. kind: Ingress
    55. metadata:
    56. name: minio
    57. spec:
    58. rules:
    59. - host: minio.od.com
    60. http:
    61. paths:
    62. - path: /
    63. backend:
    64. serviceName: minio
    65. servicePort: 5000

    注释:

    1、是MINIO_ROOT_USER、 MINIO_ROOT_PASSWORD 还是MINIO_ACCESS_KEY、MINIO_SECRET_KEY 具体没研究过,可以去官网看,或者直接容器启动后,查看环境变量。MINIO_ROOT_PASSWORD不得少于8位
    2、修改容器启动的第一命令/bin/sh -c minio server /data --console-address ":5000",使其固定Console端口5000

    应用配置清单后,配置访问minio.od.com,流量可以调度给ingress-controller即可


    3.3、k8s 部署版本minio集群

    1. apiVersion: apps/v1
    2. kind: StatefulSet
    3. metadata:
    4. name: minio
    5. spec:
    6. serviceName: minio
    7. replicas: 4
    8. selector:
    9. matchLabels:
    10. app: minio
    11. template:
    12. metadata:
    13. labels:
    14. app: minio
    15. spec:
    16. containers:
    17. - name: minio
    18. env:
    19. - name: MINIO_ROOT_USER
    20. value: "admin"
    21. - name: MINIO_ROOT_PASSWORD
    22. value: "root123456"
    23. image: minio/minio
    24. imagePullPolicy: IfNotPresent
    25. command:
    26. - /bin/sh
    27. - -c
    28. - minio server --console-address ":5000" http://minio-{0...3}.minio.default.svc.cluster.local/data
    29. ports:
    30. - name: data
    31. containerPort: 9000
    32. protocol: "TCP"
    33. - name: console
    34. containerPort: 5000
    35. protocol: "TCP"
    36. volumeMounts:
    37. - name: data
    38. mountPath: /data
    39. - name: date-config
    40. mountPath: /etc/localtime
    41. volumes:
    42. - name: date-config
    43. hostPath:
    44. path: /usr/share/zoneinfo/Asia/Shanghai
    45. volumeClaimTemplates:
    46. - metadata:
    47. name: data
    48. spec:
    49. accessModes:
    50. - ReadWriteMany
    51. resources:
    52. requests:
    53. storage: 10Gi
    54. storageClassName: little
    55. ---
    56. apiVersion: v1
    57. kind: Service
    58. metadata:
    59. name: minio
    60. labels:
    61. app: minio
    62. spec:
    63. clusterIP: None
    64. ports:
    65. - port: 9000
    66. name: data
    67. - port: 5000
    68. name: console
    69. selector:
    70. app: minio
    71. ---
    72. apiVersion: v1
    73. kind: Service
    74. metadata:
    75. name: minio-service
    76. spec:
    77. type: NodePort
    78. ports:
    79. - name: data
    80. port: 9000
    81. targetPort: 9000
    82. protocol: TCP
    83. nodePort:
    84. - name: console
    85. port: 5000
    86. targetPort: 5000
    87. protocol: TCP
    88. nodePort:
    89. selector:
    90. app: minio
    91. ---
    92. apiVersion: extensions/v1beta1
    93. kind: Ingress
    94. metadata:
    95. name: minio
    96. namespace: default
    97. spec:
    98. rules:
    99. - host: minio.od.com
    100. http:
    101. paths:
    102. - path: /
    103. backend:
    104. serviceName: minio-service
    105. servicePort: 5000

    应用配置清单后,配置访问minio.od.com,流量可以调度给ingress-controller即可

  • 相关阅读:
    论文翻译 | PROMPTAGATOR : FEW-SHOT DENSE RETRIEVAL FROM 8 EXAMPLES
    ubuntu22.04安装opencv4和opencv_contrib
    【配置vscode编写c或c++程序,并在外部控制台输出程序和解决中文乱码问题!!!】
    Redis持久化
    【计算机网络(二)】DNS协议
    泛型的类型擦除
    基于tensorflow的咖啡豆识别
    linux系统日志
    【web服务】nginx为什么这么受企业欢迎?看完这边文章你就懂了
    SQL学习二十、SQL高级特性
  • 原文地址:https://blog.csdn.net/Jerry00713/article/details/126010193