首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

何在 Kubernetes 环境搭建 MySQL(三):使用 PVC 挂接 RBD

MySQL in Kubernetes MySQL 的数据是关键信息,是有状态的,不可能随着 MySQL pod 的销毁而被销毁,所以数据必须要外接到一个可靠的存储系统,目前已经有了 Ceph 系统...1.3 环境信息 本文在 Ubuntu 物理机环境下,使用 kubeadm 部署 Kubernetes,连接已经部署好的 Ceph 集群,后文会对部署过程做详细说明。...使用 keyring 文件连接 RBD 首先让我们用最基础的方式连接 Ceph,以下就是 yaml 文件,简要介绍一下关键字段: monitors: 连接的 Ceph monitor 地址,注意要更改成环境对应的...使用 secret 连接 RBD 直接挂载密钥文件既不正规,也不安全,我们可以使用 Kubernetes 的 secret 来加密密钥文件。...参考文档 初试 Kubernetes 集群使用 Ceph RBD 块存储 Kubernetes concept: Volume Kubernetes concept: Persistent Volumes

94730

何在 Kubernetes 环境搭建 MySQL(四):使用 StorageClass 挂接 RBD

简介 在系列文章的第三篇,讲到了如何使用 PV 和 PVC 挂载 RBD 上建立好的块存储镜像,但这还是不足以满足 cloud native 环境下的需求,试想如果部署一个应用,需要申请十个 RBD...provisioner 是默认的 kubernetes.io/rbd,注意要改成 ceph.com/rbd,kubernetes.io/rbd 是无法正常使用的,原因是 kubernetes.io/rbd...adminId | userId:连接 ceph 的权限,admin 已存在,如果有需要创建其他用户,可以在 Ceph 集群创建,并赋予对应的权限,简单使用的话,admin 也足够了。...external-storage 中提供的方式是部署在 default namespace 的,如果要部署在其他 namespace ,需要做对应的修改。...参考资料 初试 Kubernetes 动态卷配置使用 RBD 作为 StorageClass Kubernetes doc: Storageclass Run a Replicated Stateful

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

何在 Kubernetes 集群玩转 Fluid + JuiceFS

近期,云知声团队与 Juicedata 团队合作开发了 Fluid JuiceFS 加速引擎,使用户能够更好地在 Kubernetes 环境中使用 JuiceFS 缓存管理能力。...本篇文章讲解如何在 Kubernetes 集群玩转 Fluid + JuiceFS。...使用 JuiceFS 存储数据,数据本身会被持久化在对象存储(例如,Amazon S3),而数据所对应的元数据可以根据场景需求被持久化在 Redis、MySQL、TiKV 等多种数据库引擎。...缓存数据集无法像 Kubernetes 自定义资源一样能够被 kubernetes 进行调度。...创建 Dataset 在使用 JuiceFS 之前,需要提供元数据服务( redis)及对象存储服务( minio)的参数,并创建对应的 secret: kubectl create secret

81220

何在Kubernetes实现容器原地升级

Author: xidianwangtao@gmail.com, Based Kubernetes 1.12 摘要:在Kubernetes,Pod是调度的基本单元,也是所有内置Workload管理的基本单元...然而,在部署业务时,Pod除了业务容器,经常会有一个甚至多个SideCar Container,如何在不影响业务Container的情况下,完成对SideCar Container的原地升级呢,这正是本文需要探讨的技术实现...因此,我们迫切希望能实现,只升级Pod的某个Container,而不用重建整个Pod,这就是我们说的容器原地升级能力。 Kubernetes是否已经支持Container原地升级 答案是:支持!...很多同学肯定会觉得可疑,Kubernetes连真正的ReStart都没有,都是ReCreate Pod,怎么会只更新Container呢?...,对应的流程图如下: [zsnct0daiu.jpeg] 验证 使用StatefulSet部署一个Demo,然后修改某个Pod的Specnginx容器的镜像版本,通过kubelet日志可以发现的确如此

6.4K72

何在 Kubernetes 环境搭建 MySQL (一):简介

MySQL in Kubernetes   最近因为工作上的需求,搭建了一套部署在 Kubernetes 环境的 MySQL,可能听起来就是让 MySQL 的 docker image 跑在 Kubernetes...所以要把数据存放在安全可靠的地方,数据外挂有多种方案,这系列文章中选用的是 Ceph RBD,Ceph 是目前开源分布式存储系统,最为流行的,RBD 是其中的块存储方案。   ...,我会把教程中用到的资源全部下载下来,放在国内可以访问到的服务器上,系列文章 Kubernetes 对应的版本为 1.10.2,如果有其他版本的需求,大家可以联系我。   ...最后 MySQL 服务已经就为了,如果只是在 Kubernetes 集群内使用的话,已经没有任何问题了,但是如果要对外开放的话,目前还做不到,原因是 Kubernetes 内部网络不对外开放,那么如何让...Kubernetes 提供了 NodePort、Load Balance 和 Ingress 三种方式,系列文章的最后会重点谈到如何使用 Ingress。

1K50

kubernetes的探针使用

Kubernetes,探针(Probe)是一种用于检查容器是否正常运行的机制。探针分为两种类型:Liveness探针和Readiness探针。...探针可以使用以下三种方式之一定义在Pod:HTTP GET使用HTTP GET探测器时,Kubernetes会向Pod的容器发送HTTP GET请求,并等待容器返回200状态码。...TCP使用TCP探针时,Kubernetes会尝试连接Pod的容器的指定端口,并等待成功的连接。如果连接成功,则Kubernetes认为容器正在运行,并继续向容器发送流量。...Exec使用Exec探针时,Kubernetes会在Pod的容器执行指定的命令,并等待命令成功执行。如果命令成功执行,则Kubernetes认为容器正在运行,并继续向容器发送流量。...如果命令成功执行,则Kubernetes认为容器已准备好接收流量。探针的初始化延迟为5秒,间隔为10秒,失败阈值为3。需要注意的是,Exec探针需要在容器安装支持执行命令的工具,例如bash或sh。

47420

Kubernetes Informer 的使用

Object runtime.Object } 这个接口虽然我们可以直接去使用,但是实际上并不建议这样使用,因为往往由于集群的资源较多,我们需要自己在客户端去维护一套缓存,而这个维护成本也是非常大的,...Informers 的这些高级特性以及超强的鲁棒性,都足以让我们不去直接使用客户端的 Watch() 方法来处理自己的业务逻辑,而且在 Kubernetes 也有很多地方都有使用到 Informers...但是在使用 Informers 的时候,通常每个 GroupVersionResource(GVR)只实例化一个 Informers,但是有时候我们在一个应用往往有使用多种资源对象的需求,这个时候为了方便共享...共享 Informer 工厂允许我们在应用为同一个资源共享 Informer,也就是说不同的控制器循环可以使用相同的 watch 连接到后台的 APIServer,例如,kube-controller-manager...,然后我们又在下面使用 Lister() 来获取 default 命名空间下面的所有 Deployment 数据,这个时候的数据是从本地的缓存获取的,所以就看到了上面的结果,由于我们还配置了每30s重新全量

2K20

kubernetes informer 的使用

一、kubernetes 集群的几种访问方式 在实际开发过程,若想要获取 kubernetes 某个资源(比如 pod)的所有对象,可以使用 kubectl、k8s REST API、client-go...二、Informer 的机制 cient-go 是从 k8s 代码抽出来的一个客户端工具,Informer 是 client-go 的核心工具包,已经被 kubernetes 众多组件所使用。...:k8s-controller-custom-resource 四、使用的一些问题 1、Informer 二级缓存的同步问题 虽然 Informer 和 Kubernetes 之间没有 resync...k8s.io/kubernetes/pkg/controller/statefulset/stateful_set.go ? 2、使用 Informer 如何监听所有资源对象?...参考: 如何用 client-go 拓展 Kubernetes 的 API https://www.kubernetes.org.cn/2693.html Kubernetes 大咖秀徐超《使用 client-go

3.5K10

KubernetesConfigMap的使用

KubernetesConfigMap的使用 王先森2023-08-012023-08-01 ConfigMap ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对。...使用时, Pods 可以将其用作环境变量、命令行参数或者存储卷的配置文件。...ConfigMap ConfigMap 创建成功了,那么我们应该怎么在 Pod 使用呢?...另外我们也可以使用 ConfigMap来设置命令行参数,ConfigMap 也可以被用来设置容器的命令或者参数值,如下 Pod: apiVersion: v1 kind: Pod metadata:...ConfigMap 的方式:通过数据卷使用,在数据卷里面使用 ConfigMap,就是将文件填入数据卷,在这个文件,键就是文件名,键值就是文件内容,如下资源对象所示: apiVersion: v1

28510

kubernetes informer 的使用

一、kubernetes 集群的几种访问方式 在实际开发过程,若想要获取 kubernetes 某个资源(比如 pod)的所有对象,可以使用 kubectl、k8s REST API、client-go...后来了解到官方推出一个客户端工具 client-go ,client-go 的 Informer 对 watch 操作做了封装,使用起来非常方便,下面会主要介绍一下 client-go 的使用。...二、Informer 的机制 cient-go 是从 k8s 代码抽出来的一个客户端工具,Informer 是 client-go 的核心工具包,已经被 kubernetes 众多组件所使用。...:k8s-controller-custom-resource 四、使用的一些问题 1、Informer 二级缓存的同步问题 虽然 Informer 和 Kubernetes 之间没有 resync...参考: 如何用 client-go 拓展 Kubernetes 的 API https://www.kubernetes.org.cn/2693.html Kubernetes 大咖秀徐超《使用 client-go

4K30

HPA 还是 KEDA,如何在 Kubernetes 更有效的使用弹性扩缩容?

一旦你深入到 Kubernetes 的自动缩放领域,它就会出现。HPA 基于 CPU、内存或任何外部指标源执行自动缩放。 虽然表面上 HPA 似乎是完美的,但有一些挑战限制了它在现代应用使用。...在基于 HTTP 的 API ,我们使用 API 速率限制器。对于消息传递代理,我们限制了我们的服务可以同时处理的事件数量。...让我们以使用 Prometheus 作为扩展部署的度量源为例。 Prometheus 已成为存储 Kubernetes 指标的标准。...为避免此问题,您可以有 2 个解决方案: 使用 Kubernetes 生命周期管理钩子SIGTERM,您可以利用它来延迟终止。...结论 KEDA 是一个轻量级组件,可以添加到任何 Kubernetes 集群以扩展其功能。它解决了 K8s HPA 无法解决的现代世界应用程序自动扩展问题。

1.3K10

何在 Kubernetes 环境检测和阻止 DDoS 攻击

Kubernetes 环境,当服务暴露于 Internet 时,DDoS 可能会从外部源攻击应用程序。...使用 Calico 检测 Kubernetes 的 DoS 攻击 Calico 嵌入到 Kubernetes 的网络层,可以访问集群中所有网络流量的丰富的流日志(第 3 层和第 4 层)、应用程序层...使用 Calico 响应 DDoS 由于我们正在处理 Kubernetes 的 DDoS 攻击,因此我们将首先验证基本的 Kubernetes 网络策略是否可以帮助响应 DDoS 攻击。...默认的 Kubernetes 网络策略无法执行两项对于阻止 Kubernetes 的 DDoS 攻击至关重要的操作。...本博客阐述了 Kubernetes DDoS 攻击的各种概念,以及使用 Calico 创建逐步缓解解决方案的一些示例。

40620

何在 Helm Chart 兼容不同的 Kubernetes 版本?

随着 Kubernetes 的版本不断迭代发布,很多 Helm Chart 包压根跟不上更新的进度,导致在使用较新版本的 Kubernetes 的时候很多 Helm Chart 包不兼容,所以我们在开发...获取集群版本集合 Capabilities.APIVersions.Has $version 判断集群的某个版本 (e.g., batch/v1) 或是资源 (e.g., apps/v1/Deployment...版本使用方式基本一致,但是和前面的 extensions/v1beta1 这个版本在使用上有很大的不同,资源对象的属性上有一定的区别,所以要兼容不同的版本,我们就需要对模板的 Ingress 对象做兼容处理...,首先我们在 Chart 包的 _helpers.tpl 文件添加几个用于判断集群版本或 API 的命名模板: {{/* Allow KubeVersion to be overridden. */}...else }} serviceName: portal servicePort: 80 {{- end }} 在 Ingress 模板中使用命名模板的变量来判断应该使用哪些属性

1.2K10

何在Kubernetes更好地管理有状态应用

在以基于容器的微服务为特征的云原生计算的动态世界Kubernetes 已成为编排容器化应用程序的标准。它在管理无状态应用程序方面的灵活性得到了广泛认可。...在 Kubernetes 增强可靠性的策略 有几种方法可以尝试提高 Kubernetes 在有状态应用程序的可靠性: 高级可观察性和自动化:实施强大的可观察性工具并自动化修复可以帮助预先解决和解决可能影响应用程序可用性的问题...这凸显了对更全面的方法的必要性,该方法可以增强有状态应用程序在动态云原生环境的弹性和可靠性,确保依赖 Kubernetes 进行关键操作的企业持续可用和性能。...因此,Kubernetes 在云原生生态系统的作用正在从编排容器化应用程序的平台演变为更全面的解决方案,有助于确保关键有状态服务的可靠性和可用性。...这种演变不仅仅是适应变化,而是引领重新定义 Kubernetes 环境无状态应用程序的性能和可靠性标准,在云基础设施弹性方面可能实现的目标。

8610
领券