【云原生 | 从零开始学Kubernetes二十一、kubernetes持久化存储

持久化存储
- 上篇文章补充
-
- Service 服务发现:coredns 组件详解
-
- DNS 是什么?
- CoreDNS?
- Kubernetes持久化存储
-
- 快速了解
- k8s 持久化存储详解
-
- 在 k8s 中为什么要做持久化存储?
- k8s 持久化存储:emptyDir
- 写在最后
上篇文章补充
Service 服务发现:coredns 组件详解
DNS 是什么?
DNS 全称是 Domain Name System(域名系统),是整个互联网的电话簿,它能够将可被人理解的域名翻译成可被机器理解 IP 地址,使得互联网的使用者不再需要直接接触很难阅读和理解的 IP 地址。域名系统在现在的互联网中非常重要,因为服务器的 IP 地址可能会经常变动,如果没有了 DNS,那么可能 IP 地址一旦发生了更改,当前服务器的客户端就没有办法连接到目标的服务器了,如果我们为 IP 地址提供一个『别名』并在其发生变动时修改别名和 IP 地址的关系,那么我们就可以保证集群对外提供的服务能够相对稳定地被其他客户端访问。DNS 其实就是一个分布式的树状命名系统,它就像一个去中心化的分布式数据库,存储着从域名到 IP 地址的映射。
CoreDNS?
CoreDNS 其实就是一个 DNS 服务,而 DNS 作为一种常见的服务发现手段,所以很多开源项目以及工程师都会使用 CoreDNS 为集群提供服务发现的功能,Kubernetes 就在集群中使用 CoreDNS 解决服务发现的问题。 作为一个加入 CNCF(Cloud Native Computing Foundation)的服务, CoreDNS 的实现非常简单。
验证 coredns #把 dig.tar.gz 上传到 xianchaonode2 和 xianchaonode1 机器上,手动解压: [root@k8snode2 ~]# docker load -i dig.tar.gz [root@k8snode1 ~]# docker load -i dig.tar.gz [root@xianchaomaster1 ~]# vim dig.yaml apiVersion: v1 kind: Pod metadata: name: dig namespace: default spec: containers: - name: dig image: xianchao/dig:latest command: - sleep - "3600" imagePullPolicy: IfNotPresent restartPolicy: Always #更新资源清单文件 [root@k8smaster node]# kubectl apply -f dig.yaml pod/dig created #查看默认名称空间的 kubernetes 服务 [root@k8smaster node]# kubectl get svc | grep kubernetes kubernetes ClusterIP 10.96.0.1443/TCP 16d #解析 dns,如有以下返回说明 dns 安装成功 [root@k8smaster node]# kubectl exec -it dig -- nslookup kubernetes Server: 10.96.0.10 Address: 10.96.0.10#53 Name: kubernetes.default.svc.cluster.local Address: 10.96.0.1 kubernetes.default.svc.cluster.local 服务名.名称空间.默认后缀 不屑也会搜索到,因为默认/etc/resolv里面dns服务中会搜索default svc cluster.local这些后缀 在 k8s 中创建 service 之后,service 默认的 FQDN 是 . .svc.cluster.local,那么 k8s 集群内部的服务就可以通过 FQDN 访问
Kubernetes持久化存储
快速了解
之前我们有提到数据卷:emptydir ,是本地存储,pod重启,数据就不存在了,需要对数据持久化存储 对于数据持久化存储【pod重启,数据还存在】,有两种方式
- nfs:网络存储【通过一台服务器来存储】
k8s 持久化存储详解
在 k8s 中为什么要做持久化存储?
在 k8s 中部署的应用都是以 pod 容器的形式运行的,假如我们部署 MySQL、Redis 等数据库,需要对这些数据库产生的数据做备份。因为 Pod 是有生命周期的,如果 pod 不挂载数据卷,那 pod 被删除或 重启后这些数据会随之消失,如果想要长久的保留这些数据就要用到 pod 数据持久化存储。
k8s 持久化存储:emptyDir
#查看 k8s 支持哪些存储 [root@k8smaster node]# kubectl explain pods.spec.volumes KIND: Pod VERSION: v1 RESOURCE: volumes <[]Object> DESCRIPTION: List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes Volume represents a named volume in a pod that may be accessed by any container in the pod. FIELDS: awsElasticBlockStore
持久化存储还有三种,我们下篇文章再细细讲解!
写在最后
创作不易,如果觉得内容对你有帮助,麻烦给个三连关注支持一下我!如果有错误,请在评论区指出,我会及时更改! 目前正在更新的系列:从零开始学k8s 感谢各位的观看,文章掺杂个人理解,如有错误请联系我指出~