k8s 连接ceph集群

创建 ceph admin secret
1. 由于使用的是外部ceph,因此在获得ceph.client.admin.keyring ceph.conf    后将 将ceph的配置文件ceph.comf放在所有节点的/etc/ceph目录下:(master + node)
2. 将caph集群的ceph.client.admin.keyring文件放在k8s控制节点的/etc/ceph目录  (master)
3.将ceph.client.admin.keyring 中的key 取出并加密,例如
key = AQByfGNceA3VGhAAK0Dq0M0zNuPZOSGPJBACNA==
将key 信息存放在文本中
cat tmp1.txt |awk ‘{printf "%s",$NF}‘ |base64
记录结果

$ cat ceph-admin-secret.yaml
apiVersion: v1
data:
  key: QVFCeWZHTmNlQTNWR2hBQUswRHEwTTB6TnVQWk9TR1BKQkFDTkE9PQ==                   #为 base64 之后的结果
kind: Secret
metadata:
  name: ceph-admin-secret
  namespace: kube-system
type: kubernetes.io/rbd

kubectl create -f ceph-admin-secret.yaml
创建 Ceph pool and a user secret
ceph osd pool create kube 8 8
ceph auth add client.kube mon ‘allow r‘ osd ‘allow rwx pool=kube‘
ceph auth get-key client.kube > /tmp/key
kubectl create secret generic ceph-secret --from-file=/tmp/key --namespace=kube-system --type=kubernetes.io/rbd
创建 RBD provisioner
$ cat provisoner.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "1"
  labels:
    app: rbd-provisioner
  name: rbd-provisioner
  namespace: kube-system
  resourceVersion: "1072409"
  selfLink: /apis/extensions/v1beta1/namespaces/kube-system/deployments/rbd-provisioner
  uid: 01f18fcc-4705-4a9c-a28f-8b771eb49908
spec:
  progressDeadlineSeconds: 2147483647
  replicas: 1
  revisionHistoryLimit: 2147483647
  selector:
    matchLabels:
      app: rbd-provisioner
  strategy:
    type: Recreate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: rbd-provisioner
    spec:
      containers:
      - env:
        - name: PROVISIONER_NAME
          value: ceph.com/rbd
        image: quay.io/external_storage/rbd-provisioner:latest
        imagePullPolicy: IfNotPresent
        name: rbd-provisioner
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30

$ kubectl create -f provisoner.yaml

 

创建storage class 连接 ceph集群
$ cat ceph-class.yaml
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: rbd
provisioner: ceph.com/rbd
parameters:
  monitors: 10.4.29.134:6789,10.4.29.31:6789,10.4.29.160:6789,10.4.25.135:6789,10.4.29.36:6789
  pool: kube
  adminId: admin
  adminSecretNamespace: kube-system
  adminSecretName: ceph-admin-secret
  userId: kube
  userSecretNamespace: kube-system
  userSecretName: ceph-secret
  imageFormat: "2"
  imageFeatures: layering

$ kubectl create -f  ceph-class.yaml
创建 mongo pod进行测试 基于副本集mongo

$ cat testmongo.yaml
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: mongo
  namespace: mongo
spec:
  selector:
    matchLabels:
      app: mongo
  replicas: 2
  podManagementPolicy: Parallel
  serviceName: shared-mongo-mongodb-replicaset
  template:
    metadata:
      labels:
        app: mongo
    spec:
      terminationGracePeriodSeconds: 10
      affinity:
         podAntiAffinity:
           requiredDuringSchedulingIgnoredDuringExecution:
           - labelSelector:
               matchExpressions:
               - key: "app"
                 operator: In
                 values:
                 - mongo
             topologyKey: "kubernetes.io/hostname"
      containers:
      - name: mongo
        image: mongo:3.6
        command:
        - mongod
        - "--bind_ip_all"
        - "--replSet"
        - rs0
        ports:
        - containerPort: 27017
        volumeMounts:
        - name: mongo-data
          mountPath: /data/db
  volumeClaimTemplates:                    # Template 模板,会自动创建Pvc 和pv
  - metadata:
      name: mongo-data
      namespace: mongo
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: rbd
      resources:
        requests:
          storage: 2Gi

$ kubectl create -f testmongo.yaml
证明 连接ceph 成功

$ kubectl get pv
pvc-01474bb1-bffb-11e9-a095-5254002c2b14   2Gi        RWO            Delete           Bound    mongo/mongo-data-mongo-0    rbd                     33m
pvc-01e96076-bffb-11e9-a095-5254002c2b14   2Gi        RWO            Delete           Bound    mongo/mongo-data-mongo-1    rbd                     33m
$ kubectl get pvc -n mongo
NAME                 STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
mongo-data-mongo-0   Bound    pvc-01474bb1-bffb-11e9-a095-5254002c2b14   2Gi        RWO            rbd            33m
mongo-data-mongo-1   Bound    pvc-01e96076-bffb-11e9-a095-5254002c2b14   2Gi        RWO            rbd            33m

$ kubectl get pod -n mongo
NAME      READY   STATUS    RESTARTS   AGE
mongo-0   1/1     Running   0          34m
mongo-1   1/1     Running   0          34m

  

原文地址:https://www.cnblogs.com/lixinliang/p/12217287.html

时间: 2024-08-29 16:45:46

k8s 连接ceph集群的相关文章

Ceph client无法连接至集群问题解决

1.问题描述 今天做iptables策略,重启集群中的一台机器后,输入ceph -s发现如下状况: [[email protected] ~]# ceph -s 2015-09-10 13:50:57.688516 7f6a6b8cc700 0 monclient(hunting): authenticate timed out after 300 2015-09-10 13:50:57.688553 7f6a6b8cc700 0 librados: client.admin authentic

Centos7-单台物理机搭建ceph集群

学习ceph时,看到crush规则的时候,crush策略最小为osd,但是这个osd定义的是真实的osd还是指单块磁盘?为了验证一下,自己用测试机模拟了一下单台机器使用一块磁盘搭建ceph. 配置ceph源,这里使用的阿里云的源 # yum install --nogpgcheck -y epel-release # rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 # vim /etc/yum.repos.d/ceph.repo [Ceph] n

Ceph集群由Jewel版本升级到Luminous版本

参考文档 https://www.virtualtothecore.com/en/upgrade-ceph-cluster-luminous/http://www.chinastor.com/distristor/11033L502017.html 缘起 首先看之前安装版本链接及测试http://blog.51cto.com/jerrymin/2139045http://blog.51cto.com/jerrymin/2139046mon ceph0.ceph2.cphe3osd ceph0.c

部署CEPH集群

什么是CEPH组件 ceph-topo Ceph的底层是RADOS,它的意思是"A reliable, autonomous, distributed object storage". RADOS由两个组件组成: OSD: Object Storage Device,提供存储资源.Monitor:维护整个Ceph集群的全局状态.RADOS具有很强的扩展性和可编程性,Ceph基于RADOS开发了Object Storage.Block Storage.FileSystem.Ceph另外两

部署Ceph集群--jluocc

一 前言 分布式文件系统(Distributed File System):文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连.分布式文件系统的设计基于C/S模式 1,什么是Ceph?Ceph:是一个 Linux PB 级分布式文件系统特点:具有高扩展,高可用,高性能的特点可以提供对象存储,块存储,文件存储可以提供PB级别的存储空间(PB->TB->GB)帮助文档:http://docs.ceph.org/start/intro中文文档:http://docs.

二十八. Ceph概述 部署Ceph集群 Ceph块存储

client:192.168.4.10 node1 :192.168.4.11 ndoe2 :192.168.4.12 node3 :192.168.4.13 1.实验环境 准备四台KVM虚拟机,其三台作为存储集群节点,一台安装为客户端,实现如下功能: 创建1台客户端虚拟机 创建3台存储集群虚拟机 配置主机名.IP地址.YUM源 修改所有主机的主机名 配置无密码SSH连接 配置NTP时间同步 创建虚拟机磁盘 1.1 五台机器(包括真机)配置yum源 1.1.1 全部搭建ftp服务 1.1.2 配

配置 Jenkins 连接 Kubernetes 集群

需求:外部 Jenkins 需要连接 Rancher 中的 Kubernetes 集群. 1.集群 config 文件 Rancher 首页,"集群" --> 右上角"Kubeconfig 文件",后续需要用到该文件内容. apiVersion: v1 kind: Config clusters: - name: "cicd" cluster: server: "https://rancher.xxxxxx.com/k8s/clu

Ceph 集群搭建

Ceph 存储集群 - 搭建存储集群 2019年8月1日 16:12 Ceph 存储集群 - 搭建存储集群 目录 一.准备机器 二.ceph节点安装 三.搭建集群 四.扩展集群(扩容) 一.准备机器 本文描述如何在 CentOS 7 下搭建 Ceph 存储集群(STORAGE CLUSTER). 一共4台机器,其中1个是管理节点,其他3个是ceph节点: hostname ip role 描述 admin-node 192.168.0.130 ceph-deploy 管理节点 node1 192

22_2020年最新部署Ceph集群 Ceph块存储

1. 下载ceph nautilus 版本yum源   地址:https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/   下载三个文件夹里对应 14.2.6-0.el7 的 rpm      aarch64/    14-Jan-2020 23:20      noarch/     14-Jan-2020 23:21      x86_64/     14-Jan-2020 23:241.1 下载aarch64文件夹对应版本的rpm文件:(物理机)]