顺带说一下 volume 和 namespace ,咱们就开始分享一下 service 是什么
volume 是什么
还记得 docker 的 volume 吗,是一个数据卷
在 K8S 中,volume 是 pod 中可能被多个容器拜访的共享目录 ,实际上和 docker 是一样的
volume 是被定义在 pod 下面的,因而,volume 的生命周期和 pod 是雷同的
volume 会被该 pod 中的多个容器挂载到具体的文件目录上面,若某个容器挂掉了,是不会影响 volume 的,也就是说 volume 中的数据是不会失落的
咱们能够应用 volume:
- 在 pod 中指定 volume 的类型 和内容,能够应用
spec.volumes
字段 - 须要将 volume 映射到容器中,咱们能够应用
spec.containers.volumeMounts
字段
下面有说到 volume 的类型,这就可多了 , K8S 中反对的 volume 类型有:
- awsElasticBlockStore
- azureFile
- cephfs
- emptyDir
- hostPath
- configMap
- fc (光纤通道)
- 。。 。 等等
能够查看这下面的文档,每一种 卷类型都有解释到 点我开始卷一下
简略看一下 emptyDir 卷类型
emptyDir 见名知意,emptyDir 在创立 pod 的时候就会被创立,而且是个空的 , 只有 pod 在运行,这个卷就会始终存在
然而,当 pod 从节点上删除的时候,这个 emptyDir 也会被随之永恒删除了
应用 emptyDir 咱们能够这样写
emptyDir 卷存储是依赖于咱们节点的存储介质的,例如,磁盘,SSD 或者网络存储等等
再来看看 hostPath 类型
hostPath 类型的卷,可能让对应的容器拜访当以后宿主机上指定的目录
对于 hostPath 类型,咱们尽可能的少用,官网有一个这样的正告
例如,咱们须要运行一个拜访一个 docker 系统目录的容器,那么咱们能够应用 /var/lib/docker
目录作为一个 hostPath 类型的卷
然而,只有这个 pod 来到宿主机的话,hostPath 中的数据不会被永恒删除,然而数据也不会跟着 pod 迁徙到别的宿主机下面
应用 hostPath 咱们能够这样写
对于 卷 的,咱们后续能够将高阶用法,以及具体的原理能够分享一波
namespace
namespace 即 命名空间
命名空间在少数状况下是用于实现多用户的资源隔离的,通过集群外部的资源对象调配到不同的 命名空间中,造成逻辑上的分组,
这样能够让不同的组在共享应用整个集群的资源的状况下,还可能被分组治理
在 K8S 初始状态下,K8S 会有 3 个命名空间
default
无名字空间对象的默认名字空间
在 K8S 中,集群启动后,会创立一个 default
的命名空间
如果咱们创立的 rc ,service,pod,不指定命名空间的话,那么这些资源都将被零碎创立为 default 的命名空间中
kube-system
K8S 零碎创立的对象的名字空间
kube-public
是 K8S 主动创立且被所有用户可读的名字空间
对于命名空间共享集群咱们能够查看这里: 点我 进入 命名空间
咱们能够这样应用命名空间:
- 创立一个 NameSpace
apiVersion: v1kind: NameSpacemetadata: name: myns--------------------apiVersion: v1kind: Podmetadata: name: busybox namespace: mynsspec: containers: - image: busybox command: - ls name: busybox
如上,咱们创立了一个名为 myns的命名空间,创立了一个 pod ,指定命名空间为 myns
咱们能够这样查看命名空间:
kubectl get namesapces
咱们也能够间接通过命令创立命名空间
kubectl create namespace myns
创立一个 pod ,指定命名空间为 myns , 创立后,咱们能够查看指定 命名空间下的 pod 资源
kubectl get pods --namespace=命名空间
明天就到这里,学习所得,若有偏差,还请斧正
欢送点赞,关注,珍藏
敌人们,你的反对和激励,是我保持分享,提高质量的能源
好了,本次就到这里
技术是凋谢的,咱们的心态,更应是凋谢的。拥抱变动,背阴而生,致力向前行。
我是阿兵云原生,欢送点赞关注珍藏,下次见~