k8s部署单机模式的minio

k8s部署单机模式的minio

  • 一、说明
  • 二、yaml内容
  • 三、步骤
    • 3.1 创建资源
    • 3.2 查看启动日志
    • 3.2 查看svc并访问控制台

一、说明

项目使用minio,准备在k8s环境部署一套minio试用。

1.关于minio的原理和概念参考:
https://mp.weixin.qq.com/s?__biz=MzI3MDM5NjgwNg==&mid=2247487162&idx=1&sn=39c683a43ec2678fbf6d767f6ab6dcc6&chksm=ead0f253dda77b459edaf514cf72fc03546f2c5075c7b131c34b34772ca3517cab170d94c056#rd
2. 官网k8s部署minio方法说明:
https://min.io/docs/minio/kubernetes/upstream/index.html

二、yaml内容

参考:
https://www.jianshu.com/p/2d45990dd652

https://raw.githubusercontent.com/minio/docs/master/source/extra/examples/minio-dev.yaml文档yaml内容:

# Deploys a new Namespace for the MinIO Pod
apiVersion: v1
kind: Namespace
metadata:
  name: minio-dev # Change this value if you want a different namespace name
  labels:
    name: minio-dev # Change this value to match metadata.name
---
# Deploys a new MinIO Pod into the metadata.namespace Kubernetes namespace
#
# The `spec.containers[0].args` contains the command run on the pod
# The `/data` directory corresponds to the `spec.containers[0].volumeMounts[0].mountPath`
# That mount path corresponds to a Kubernetes HostPath which binds `/data` to a local drive or volume on the worker node where the pod runs
# 
apiVersion: v1
kind: Pod
metadata:
  labels:
    app: minio
  name: minio
  namespace: minio-dev # Change this value to match the namespace metadata.name
spec:
  containers:
  - name: minio
    image: quay.io/minio/minio:latest
    command:
    - /bin/bash
    - -c
    args: 
    - minio server /data --console-address :9090
    volumeMounts:
    - mountPath: /data
      name: localvolume # Corresponds to the `spec.volumes` Persistent Volume
  nodeSelector:
    kubernetes.io/hostname: kubealpha.local # Specify a node label associated to the Worker Node on which you want to deploy the pod.
  volumes:
  - name: localvolume
    hostPath: # MinIO generally recommends using locally-attached volumes
      path: /mnt/disk1/data # Specify a path to a local drive or volume on the Kubernetes worker node
      type: DirectoryOrCreate # The path to the last directory must exist

实际使用到的minio.yaml配置文件:

apiVersion: v1
kind: PersistentVolume
metadata:
  labels:
    app: minio
    release: minio
  name: minio
  namespace: sscs-dev
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  hostPath:
    path: /home/cicd/sscs-dev/minio
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  # This name uniquely identifies the PVC. Will be used in deployment below.
  name: minio-pv-claim
  labels:
    app: minio-storage-claim
  namespace: sscs-dev
spec:
  # Read more about access modes here: https://kubernetes.io/docs/user-guide/persistent-volumes/#access-modes
  accessModes:
    - ReadWriteOnce
  resources:
    # This is the request for storage. Should be available in the cluster.
    requests:
      storage: 10Gi
  # Uncomment and add storageClass specific to your requirements below. Read more https://kubernetes.io/docs/concepts/storage/persistent-volumes/#class-1
  #storageClassName:
---
apiVersion: apps/v1
kind: Deployment
metadata:
  # This name uniquely identifies the Deployment
  name: minio-deployment
  namespace: sscs-dev
spec:
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: minio
  template:
    metadata:
      labels:
        # Label is used as selector in the service.
        app: minio
    spec:
      # Refer to the PVC created earlier
      volumes:
      - name: storage
        persistentVolumeClaim:
          # Name of the PVC created earlier
          claimName: minio-pv-claim
      imagePullSecrets:
      - name: sscs-secret
      containers:
      - name: minio
        # Pulls the default MinIO image from Docker Hub
        image: artifact.srdcloud.cn/khala_insight-release-docker-local/minio:latest
        # 注意:--console-address ":5000"用来固定控制台访问端口,否则页面会无法访问控制台
        command:
          - /bin/sh
          - -c
          - minio server /data --console-address ":5000"
        args:
        - server
        - /storage
        env:
        # MinIO access key and secret key
        - name: MINIO_ACCESS_KEY
          value: "admin123"
        - name: MINIO_SECRET_KEY
          value: "admin123"

        ports:
        - name: data
          containerPort: 9000
          protocol: "TCP"
        - name: console
          containerPort: 5000
          protocol: "TCP"
        # Mount the volume into the pod
        volumeMounts:
        - name: storage # must match the volume name, above
          mountPath: "/storage"
---
apiVersion: v1
kind: Service
metadata:
  namespace: sscs-dev
  name: minio-service

spec:
  type: NodePort
  ports:
  - name: data
    port: 9000
    targetPort: 9000
    protocol: TCP
  - name: console
    port: 5000
    targetPort: 5000
    protocol: TCP
  selector:
    app: minio

注意事项:
要添加--console-address ":5000"命令参数来固定控制台端口,否则页面会无法访问。

三、步骤

3.1 创建资源

执行命令:kubectl apply -f minio.yaml

3.2 查看启动日志

kubectl get pod -n sscs-dev | grep minio查看pod运行状态,正常:
在这里插入图片描述
kubectl logs -f minio-deployment-54648b586-kxcbn -n sscs-dev查看pod运行日志:

可以看到控制台端口5000,说明命令参数--console-address ":5000"生效。

3.2 查看svc并访问控制台

执行命令:kubectl get svc -n sscs-dev | grep minio
在这里插入图片描述
yaml中使用的svc是nodePort类型,可以看到以上控制台5000端口映射主机32108端口,则访问地址为: 服务器ip:32108
k8s部署单机模式的minio_第1张图片

出现以上页面表示成功

你可能感兴趣的:(minio,kubernetes,容器,minio,docker)