Kubernetes学习
1. Kubernetes存储抽象
- 存储抽象
- 存储抽象就是实现多个集群机器中的存储共享
- NFS文件系统实现挂载
-
存储抽象就是实现多个集群机器中的存储共享,可以通过NFS文件系统进行实现,此时需要每个机器都先安装NFS文件系统,任何主节点将其创建的共享文件暴露出去,从节点将自己的某个目录与主节点暴露的目录挂载起来,此时就可以实现目录共享,从而实现存储共享
-
NFS文件系统就是在一个集群中多个机器中实现一个共享文件,此时集群中容器就可以挂载到NFS文件系统中,从而实现数据存储更加安全,因为被同时保存在多个机器中
-
k8s将每个pod挂载的目录抽象出来,形成存储层
-
可以使用NFS文件系统实现存储抽象,NFS文件系统环境配置
-
k8s基于NFS实现数据挂载,通过以下配置创建的deployement中的容器会将指定的文件挂载到配置的NFS文件系统中存储共享的文件中,此时容器挂载的文件会通过NFS文件系统被共享到每台机器中,且多个容器中文件可以挂载到同一个数据卷中
-
要挂载到NFS文件系统中,则必须在NFS文件系统中创建指定的目录,只有目录存在时才可以挂载
-
NFS文件系统的挂载,当容器删除之后,其挂载的文件(NFS中)不会被删除,且每个容器挂载的文件不会被限制
-
- PV&PVC持久卷(静态/动态供应)
-
PV:持久卷,将应用需要持久化的数据保存到指定位置
-
PVC:持久卷申明,申明需要使用的持久卷的规格,即文件大小
-
PV&PVC:此时pod需要持久化数据挂载时,通过PVC申请一块持久化空间PV,并指定空间大小,然后就可以实现数据持久化挂载,然后当pod结束时,就会删除PVC并回收分配的PV,从而取消挂载
-
使用PVC申请PV时,会根据申请的空间大小分配一个合适的PV,且一个PV只可以被一个PVC申请,同一个PV只可以被一个PVC申请
-
先创建PVC申请PV,然后在创建pod时指定所创建的PVC,此时就会在指定的PV中进行数据持久化
-
- ConfigMap
-
挂载目录推荐使用PV&PVC,因为此时当pod删除时也会释放其上挂载的PVC,且可以指定分配的空间
-
但PV&PVC主要用于挂载目录,对于配置文件,推荐使用ConfigMap进行挂载
-
可以使用ConfigMap单独挂载配置文件
-
可以通过 kubectl create cm cmName --from-file=xxx.conf 将pod的配置文件单独创建为一个配置集cm(ConfigMap),此时会存放在k8s的etcd中进保存,此时启动容器时,就可以使用配置集中的配置文件进行启动
-
使用创建的配置集来启动pod容器
-
且使用ConfigMap来挂载配置文件时,此时对CM修改会直接同步更新容器内部的配置文件,修改ConfigMap会自动修改挂载改cm的pod容器内部的配置文件,但不会生效,因为**配置文件修改后必须重启才会生效
-
- Secret
- Secret对象类型用来保存敏感信息,将这些信息放在Secret中比放在pod的定义或者容器镜像中更加安全灵活
- 就比如当创建pod时要从私有镜像库中拉取镜像,此时需要密码权限才可以拉取,如果直接在pod的yaml文件中配置密码是很不安全的,故可以将密码放到Secret中保存,此时就可以通过在yaml配置文件中配置Secret来进行访问
2. KubeSphere简介+安装
- 简介+安装
- KubeSphere平台基于Kubenetes构建的分布式、多租户、多集群、企业级开源平台,有强大且完善的网络与存储能力,并通过极简的人机交互提供完善的管理
- 在 www.kubeshere.com.cn 官网中进行安装,可以在Kubernetes或者Linux中进行安装
- 在Kubernetes中安装KubeSphere,前提是安装好Kubernetes集群
- 当Kubernetes安装完成后就可以安装KubeSphere前置环境