我用 cephadm 配置了一个简单的 Ceph 集群,如下所示:
cephadm bootstrap --mon-ip 192.168.0.4
ssh-copy-id -f -i /etc/ceph/ceph.pub root@host2
ssh-copy-id -f -i /etc/ceph/ceph.pub root@host3
ceph orch host add host2
ceph orch host add host3
ceph orch apply osd --all-available-devices
Run Code Online (Sandbox Code Playgroud)
它工作正常。现在我想在192.168.1.0/24上建立一个集群网络。
我试过了,ceph config set global cluster_network 192.168.1.0/24
但没有任何效果。我在辅助 NIC 上没有看到任何流量。
我该如何解决这个问题?让 cephadm 注意到变化的推荐方法是什么?
我使用kubernetes v1.16.10和Ceph 13.2.2 Mimic集群通过ceph -csi进行动态卷配置。
但后来我找到了ceph-rbd
Ceph RBD (kubernetes.io/rbd)
https://kubernetes.io/docs/concepts/storage/storage-classes/#ceph-rbd
根据:
Ceph CSI (rbd.csi.ceph.com)
https://docs.ceph.com/docs/master/rbd/rbd-kubernetes/#block-devices-and-kubernetes
您可以通过 ceph-csi 将 Ceph 块设备映像与 Kubernetes v1.13 及更高版本一起使用,该映像动态提供 RBD 映像以支持 Kubernetes 卷,并将这些 RBD 映像映射为工作节点上的块设备(可选择挂载包含在映像中的文件系统)运行引用 RBD 支持的卷的 pod。
那么……我应该使用哪一种?
优点缺点?
提前致谢。
provisioning block-device ceph kubernetes persistent-volumes
我有一个运行 Ceph 的测试节点,其中大约 10TB 的数据存储在 CephFS 文件系统中。我想让 CephFS 文件中的某些子路径可用于 Docker 容器,在那里它可以通过 NFS 和 SMB 共享。
osds、mons 和 mds' 在同一节点上运行,这会禁止在 fstab 中安装 CephFS。
我还能如何将 CephFS 文件系统的子路径挂载到容器中?
我定义了从文件中分解出来的对象,这些文件存储在对象存储云中,作为存储对象.
我所知道的:我已阅读有关对象存储云的文档和论文.大多数情况下,文档假定已经创建了文件(待存储)中的存储对象,并且主要解释了存储过程的其余部分.存储对象是一个容器,它具有一些固定大小的数据,带有数字ID和一些元数据.
我想知道的是:
在 Spark 2.2.0 上执行我的 scala 作业时,我不时遇到以下错误:
引起:java.io.FileNotFoundException:/spark/temporary/spark-927d72b5-154d-4fd5-a18e-4aefc0e05a59/executor-cdd8da76-bb86-4e4c-bf26-55acbcc761bf15cbc761bf/spark-927fd5-a18e-4aefc0e05a59 0f/shuffle_1_0_0.index(没有那个文件或目录)
我的 spark-submit 命令如下所示:
/spark/bin/spark-submit --verbose --conf spark.local.dir=/spark/temporary --conf spark.dynamicAllocation.enabled=true --conf spark.shuffle.service.enabled=true --conf spark.dynamicAllocation.executorIdleTimeout=2m --conf spark.shuffle.service.index.cache.entries=4096 --conf spark.memory.offHeap.enabled=true --conf spark.memory.offHeap.size=3g --conf spark.executor.extraJavaOptions="-XX:ParallelGCThreads=4 -XX:+UseParallelGC" --conf spark.file.transferTo=false --conf spark.shuffle.file.buffer=5MB --conf spark.shuffle.unsafe.file.output.buffer=5MB --conf spark.unsafe.sorter.spill.reader.buffer.size=1MB --conf spark.io.compression.lz4.blockSize=512KB --conf spark.shuffle.registration.timeout=2m --conf spark.shuffle.registration.maxAttempts=5 --conf spark.memory.useLegacyMode=true --conf spark.shuffle.memoryFraction=0.32 --conf spark.storage.memoryFraction=0.18 --conf spark.shuffle.io.maxRetries=10 --conf spark.dynamicAllocation.maxExecutors=3 --conf spark.dynamicAllocation.initialExecutors=3 --conf spark.task.cpus=2 --conf spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version=2 --master spark://spark-master.spark:7077 --deploy-mode client --class control.TimeLensDriver --executor-cores 2 --executor-memory 2g --driver-memory 2g /spark/spark-job.jar /spark/s3Credential.conf 2017-09-08 7 /spark/public-holydays.json /spark/school-holydays.json /spark/de_postal_codes.json prometheus-pushgateway.monitoring-mida:9091 …
Run Code Online (Sandbox Code Playgroud) 我正准备为生产使用设置我的第一个 Ceph 集群(Fedora 上的 Luminous),到目前为止,我已经完成了在大型 ZFS 池上为每个节点运行单个 OSD 的过程,因此我有读取校验和具有自动修复功能的 bitrot 保护(如果可能)。
我这样做的原因是因为我所读到的所有内容都是 Ceph 并没有真正将 bitrot 保护作为其目标之一,包括 Bluestore。深度清理有效,但显然在运行时会严重影响性能,更重要的是,会创建一个时间窗口,在此期间可以读取损坏的数据。
不过,今天,我已经阅读了一些关于 Bluestore 的关于读取校验和的内容,这些内容表明我可能是不正确的。但是,我找不到任何似乎权威地说“这就是它的作用”的文档。
所以希望这是一个很好的发问方式:任何人都可以有信心地谈论 Bluestore 是否提供比特腐烂检测,并在其他 OSD 的帮助下,通过其校验和机制进行自动修复?
我在公司的 Kubernetes 集群上运行了多个 WordPress 实例。每个实例都有自己的持久性卷和容器。我的设置的唯一特点是我将 PV 的多个路径安装到容器的多个路径上。
\n自从几周前我们将 Kubernetes 升级到当前版本以来,我的所有容器都运行良好。从那时起,地狱就开始了。
\n$ kubectl version\nClient Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.11", GitCommit:"637c7e288581ee40ab4ca210618a89a555b6e7e9", GitTreeState:"clean", BuildDate:"2018-11-26T14:38:32Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"darwin/amd64"}\nServer Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.11", GitCommit:"637c7e288581ee40ab4ca210618a89a555b6e7e9", GitTreeState:"clean", BuildDate:"2018-11-26T14:25:46Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}\n
Run Code Online (Sandbox Code Playgroud)\n重新启动 pod 时,如果它被安排在不同的节点上运行,它将卡在PodInitializing上,并显示以下事件消息
\n\n\n卷“pvc-ac6b35f3-7716-11e8-adda-b60483de6a40”的多重附加错误卷已专门附加到一个节点,无法附加到另一个节点
\n
这是我的资源。
\n它包含两个目录和一个文件
\nhtml/
: 包含 php 文件的目录logs/
:包含日志文件的目录container-data.txt
:包含一些信息的文本文件定义为:
\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n name: …
Run Code Online (Sandbox Code Playgroud) 我得到了具有 1 个主节点和 3 个工作节点的 Kubernetes 集群。
通过 kubespray https://github.com/kubernetes-sigs/kubespray安装的 calico v3.7.3 kubernetes v1.16.0
在此之前,我通常没有任何问题地部署了所有 Pod。
我无法启动几个 pod (Ceph):
kubectl get all --namespace=ceph
NAME READY STATUS RESTARTS AGE
pod/ceph-cephfs-test 0/1 Pending 0 162m
pod/ceph-mds-665d849f4f-fzzwb 0/1 Pending 0 162m
pod/ceph-mon-744f6dc9d6-jtbgk 0/1 CrashLoopBackOff 24 162m
pod/ceph-mon-744f6dc9d6-mqwgb 0/1 CrashLoopBackOff 24 162m
pod/ceph-mon-744f6dc9d6-zthpv 0/1 CrashLoopBackOff 24 162m
pod/ceph-mon-check-6f474c97f-gjr9f 1/1 Running 0 162m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/ceph-mon ClusterIP None <none> 6789/TCP 162m
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE …
Run Code Online (Sandbox Code Playgroud) 我正在使用VM(主服务器)和3台裸机服务器(均运行Ubuntu 14.04)设置一个小的Kubernetes集群。我遵循了Ubuntu的Kubernetes 安装教程。每个裸机服务器还具有使用Ceph 0.94.5导出的2T磁盘空间。一切工作正常,但是当我尝试启动复制控制器时,得到以下信息(kubectl get pods):
NAME READY STATUS RESTARTS AGE
site2-zecnf 0/1 Image: site-img is ready, container is creating 0 12m
Run Code Online (Sandbox Code Playgroud)
吊舱将永远处于这种“未就绪”状态,但是,如果我杀死它并再次启动它,它将运行良好(尽管有时我必须重复几次此操作)。吊舱运行后,一切正常。
如果由于某种原因Pod死了,它会被Kubernetes重新启动,但是可以再次进入此Not Ready状态。运行:
kubectl describe pod java-site2-crctv
Run Code Online (Sandbox Code Playgroud)
我得到(某些字段已删除):
Namespace: default
Status: Pending
Replication Controllers: java-site2 (1/1 replicas created)
Containers:
java-site:
Image: javasite-img
State: Waiting
Reason: Image: javasite-img is ready, container is creating
Ready: False
Restart Count: 0
Conditions:
Type Status
Ready False
Events:
FirstSeen LastSeen Count From SubobjectPath Reason Message
Sat, 14 Nov …
Run Code Online (Sandbox Code Playgroud) 我与一群非开发人员一起工作,他们通过 radosgw 将对象上传到 s3 风格的存储桶。所有上传的对象都需要公开可用,但它们不能以编程方式执行此操作。有没有办法让对象的默认权限公开读取,这样就不必每次都手动设置?必须有一种方法来做到这一点boto
,但我还没有找到任何例子。使用 AWS 的 GUI 有一些浮动,但这对我来说不是一个选择。:(
我正在创建一个这样的桶:
#!/usr/bin/env python
import boto
import boto.s3.connection
access_key = "SAMPLE3N84XBEHSAMPLE"
secret_key = "SAMPLEc4F3kfvVqHjMAnsALY8BCQFwTkI3SAMPLE"
conn = boto.connect_s3(
aws_access_key_id = access_key,
aws_secret_access_key = secret_key,
host = '10.1.1.10',
is_secure=False,
calling_format = boto.s3.connection.OrdinaryCallingFormat(),
)
bucket = conn.create_bucket('public-bucket', policy='public-read')
Run Code Online (Sandbox Code Playgroud)
我将策略设置为 public-read 这似乎允许人们将存储桶作为目录浏览,但存储桶中的对象不继承此权限。
>>> print bucket.get_acl()
<Policy: http://acs.amazonaws.com/groups/global/AllUsers = READ, S3 Newbie (owner) = FULL_CONTROL>
Run Code Online (Sandbox Code Playgroud)
澄清一下,我知道我可以像这样在每个对象的基础上解决这个问题:
key = bucket.new_key('thefile.tgz')
key.set_contents_from_filename('/home/s3newbie/thefile.tgz')
key.set_canned_acl('public-read')
Run Code Online (Sandbox Code Playgroud)
但是我的最终用户无法执行此操作,因此我需要一种方法将其设置为上传文件的默认权限。