使用 kubernetes 的 Minio 部署没有按预期工作
Minio deployment using kubernetes doesn't work as expected
我正在试验 kubernetes 和 minio 部署。我有一个 k3s 4 节点集群,每个集群有 4 个 50GB 磁盘。按照说明 here 我已经这样做了:
首先我安装了krew in order to install the minio and the directpv个运算符。
我安装了这两个没有问题。
我使用 kubectl directpv drives format --drives /dev/vd{b...e} --nodes k3s{1...4}
格式化了节点中每个 可用 硬盘
然后我继续进行部署,首先我使用 kubectl create namespace minio-tenant-1
创建命名空间,然后我实际创建租户:
kubectl minio tenant create minio-tenant-1 --servers 4 --volumes 8 --capacity 10Gi --storage-class direct-csi-min-io --namespace minio-tenant-1
然后我唯一需要做的就是公开要访问的端口,我这样做是:kubectl port-forward service/minio 443:443
(我猜这应该是实现此目的的更好方法,因为最后一个命令显然不是永久性的,可能在 kubernetes 集群中使用 LoadBalancer 或 NodePort 类型的服务。
到目前为止一切顺利,但我遇到了一些问题:
- 当我尝试使用 mc 创建服务器的别名时,提示回答我:
mc: Unable to initialize new alias from the provided
credentials. Get
"https://127.0.0.1/probe-bucket-sign-9aplsepjlq65/?location=": x509:
cannot validate certificate for 127.0.0.1 because it doesn't contain
any IP SANs
我可以通过简单地添加 --insecure
选项来超越这个,但我不知道为什么它会抛出这个错误,我猜是 k3s 管理 TLS 自动签名证书的方式。
使用 --insecure
选项创建服务器的别名(我将其命名为 test)后,我尝试创建一个存储桶,但服务器总是回复我:
mc mb test/hello
mc: <ERROR> Unable to make bucket \test/hello. The specified bucket does not exist.
所以...我真的不能使用它...任何帮助将不胜感激,我需要知道我做错了什么。
以 Minio documentation 中的信息为指导。您必须生成 public 证书。首先生成私钥使用命令:
certtool.exe --generate-privkey --outfile NameOfKey.key
之后创建一个名为 cert.cnf
的文件,内容如下:
# X.509 Certificate options
#
# DN options
# The organization of the subject.
organization = "Example Inc."
# The organizational unit of the subject.
#unit = "sleeping dept."
# The state of the certificate owner.
state = "Example"
# The country of the subject. Two letter code.
country = "EX"
# The common name of the certificate owner.
cn = "Sally Certowner"
# In how many days, counting from today, this certificate will expire.
expiration_days = 365
# X.509 v3 extensions
# DNS name(s) of the server
dns_name = "localhost"
# (Optional) Server IP address
ip_address = "127.0.0.1"
# Whether this certificate will be used for a TLS server
tls_www_server
运行certtool.exe
并指定生成证书的配置文件:
certtool.exe --generate-self-signed --load-privkey NameOfKey.key --template cert.cnf --outfile public.crt
最后将public证书放入:
~/.minio/certs/CAs/
我正在试验 kubernetes 和 minio 部署。我有一个 k3s 4 节点集群,每个集群有 4 个 50GB 磁盘。按照说明 here 我已经这样做了:
首先我安装了krew in order to install the minio and the directpv个运算符。
我安装了这两个没有问题。
我使用
格式化了节点中每个 可用 硬盘kubectl directpv drives format --drives /dev/vd{b...e} --nodes k3s{1...4}
然后我继续进行部署,首先我使用
kubectl create namespace minio-tenant-1
创建命名空间,然后我实际创建租户:kubectl minio tenant create minio-tenant-1 --servers 4 --volumes 8 --capacity 10Gi --storage-class direct-csi-min-io --namespace minio-tenant-1
然后我唯一需要做的就是公开要访问的端口,我这样做是:
kubectl port-forward service/minio 443:443
(我猜这应该是实现此目的的更好方法,因为最后一个命令显然不是永久性的,可能在 kubernetes 集群中使用 LoadBalancer 或 NodePort 类型的服务。
到目前为止一切顺利,但我遇到了一些问题:
- 当我尝试使用 mc 创建服务器的别名时,提示回答我:
mc: Unable to initialize new alias from the provided credentials. Get "https://127.0.0.1/probe-bucket-sign-9aplsepjlq65/?location=": x509: cannot validate certificate for 127.0.0.1 because it doesn't contain any IP SANs
我可以通过简单地添加 --insecure
选项来超越这个,但我不知道为什么它会抛出这个错误,我猜是 k3s 管理 TLS 自动签名证书的方式。
使用
--insecure
选项创建服务器的别名(我将其命名为 test)后,我尝试创建一个存储桶,但服务器总是回复我:mc mb test/hello
mc: <ERROR> Unable to make bucket \test/hello. The specified bucket does not exist.
所以...我真的不能使用它...任何帮助将不胜感激,我需要知道我做错了什么。
以 Minio documentation 中的信息为指导。您必须生成 public 证书。首先生成私钥使用命令:
certtool.exe --generate-privkey --outfile NameOfKey.key
之后创建一个名为 cert.cnf
的文件,内容如下:
# X.509 Certificate options
#
# DN options
# The organization of the subject.
organization = "Example Inc."
# The organizational unit of the subject.
#unit = "sleeping dept."
# The state of the certificate owner.
state = "Example"
# The country of the subject. Two letter code.
country = "EX"
# The common name of the certificate owner.
cn = "Sally Certowner"
# In how many days, counting from today, this certificate will expire.
expiration_days = 365
# X.509 v3 extensions
# DNS name(s) of the server
dns_name = "localhost"
# (Optional) Server IP address
ip_address = "127.0.0.1"
# Whether this certificate will be used for a TLS server
tls_www_server
运行certtool.exe
并指定生成证书的配置文件:
certtool.exe --generate-self-signed --load-privkey NameOfKey.key --template cert.cnf --outfile public.crt
最后将public证书放入:
~/.minio/certs/CAs/