当我尝试使用默认参数在 Fedora 37(禁用 selinux)上的 minikube v1.29.0 上运行 cockroachdb 时,3 个节点中有 2 个失败并出现以下错误:
Creating data directory: mkdir /cockroach/cockroach-data/auxiliary: permission denied
不知道是和cockroachdb、minikube还是我的linux系统更相关。 但如果您有一些信息或提示,我会洗耳恭听。
谢谢!!
重现步骤
minikube start --cpus=2 --memory=2g --nodes=3
helm repo add cockroachdb https://charts.cockroachdb.com/
helm repo update
helm upgrade --install cockroachdb cockroachdb/cockroachdb
结果
$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/cockroachdb-0 0/1 CrashLoopBackOff 1 (8s ago) 26s
pod/cockroachdb-1 0/1 CrashLoopBackOff 1 (2s ago) 26s
pod/cockroachdb-2 0/1 Running 0 26s
pod/cockroachdb-init-gkb2z 1/1 Running 0 26s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/cockroachdb ClusterIP None <none> 26257/TCP,8080/TCP 26s
service/cockroachdb-public ClusterIP 10.100.59.219 <none> 26257/TCP,8080/TCP 26s
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 6m34s
NAME READY AGE
statefulset.apps/cockroachdb 0/3 26s
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
cronjob.batch/cockroachdb-rotate-self-signer 0 0 1 */11 * False 0 <none> 26s
cronjob.batch/cockroachdb-rotate-self-signer-client 0 0 */26 * * False 0 <none> 26s
NAME COMPLETIONS DURATION AGE
job.batch/cockroachdb-init 0/1 26s 26s
$ kubectl get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
cockroachdb-0 0/1 CrashLoopBackOff 2 (15s ago) 52s 10.244.2.2 minikube-m03 <none> <none>
cockroachdb-1 0/1 CrashLoopBackOff 2 (11s ago) 52s 10.244.1.4 minikube-m02 <none> <none>
cockroachdb-2 0/1 Running 0 52s 10.244.0.3 minikube <none> <none>
cockroachdb-init-gkb2z 1/1 Running 0 52s 10.244.1.3 minikube-m02 <none> <none>
$ kubectl logs cockroachdb-0
Defaulted container "db" out of: db, copy-certs (init)
++ hostname
+ exec /cockroach/cockroach start --join=cockroachdb-0.cockroachdb.datastore.svc.cluster.local:26257,cockroachdb-1.cockroachdb.datastore.svc.cluster.local:26257,cockroachdb-2.cockroachdb.datastore.svc.cluster.local:26257 --advertise-host=cockroachdb-0.cockroachdb.datastore.svc.cluster.local --certs-dir=/cockroach/cockroach-certs/ --http-port=8080 --port=26257 --cache=25% --max-sql-memory=25% --logtostderr=INFO
Flag --logtostderr has been deprecated, use --log instead to specify 'sinks: {stderr: {filter: ...}}'.
E230321 11:03:10.501705 1 1@cli/clierror/check.go:35 [-] 1 ERROR: connection lost.
E230321 11:03:10.501705 1 1@cli/clierror/check.go:35 [-] 1 +creating data directory: mkdir /cockroach/cockroach-data/auxiliary: permission denied
ERROR: connection lost.
creating data directory: mkdir /cockroach/cockroach-data/auxiliary: permission denied
Failed running "start"
在向 ChatGPT 询问此事后,他指出 SecurityContext 功能可能是一个问题:应该在 Helm 图表中的
securityContext
中禁用 values.yml
,因为它会阻止写入这些文件。
不过,关于 Kube,我还有很多东西需要学习。
我遇到了同样的问题,我设法通过使用具有以下配置的values.yaml 文件来解决它:
statefulSet:
securityContext:
enabled: false
然后使用以下命令安装 cockroachdb helm 图表:
helm install {Custom name} --values values.yaml cockroachdb/cockroachdb
更详细信息请参阅官方文档:
https://www.cockroachlabs.com/docs/stable/deploy-cockroachdb-with-kubernetes?filters=helm
如果问题仍然存在,则可能是有状态集的文件夹权限问题。使用 chmod 修复。
问候。