共计 1752 个字符,预计需要花费 5 分钟才能阅读完成。
顺带说一下 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: v1
kind: NameSpace
metadata:
name: myns
--------------------
apiVersion: v1
kind: Pod
metadata:
name: busybox
namespace: myns
spec:
containers:
- image: busybox
command:
- ls
name: busybox
如上,咱们创立了一个名为 myns 的命名空间,创立了一个 pod,指定命名空间为 myns
咱们能够这样查看命名空间:
kubectl get namesapces
咱们也能够间接通过命令创立命名空间
kubectl create namespace myns
创立一个 pod,指定命名空间为 myns,创立后,咱们能够查看指定 命名空间下的 pod 资源
kubectl get pods --namespace= 命名空间
明天就到这里,学习所得,若有偏差,还请斧正
欢送点赞,关注,珍藏
敌人们,你的反对和激励,是我保持分享,提高质量的能源
好了,本次就到这里
技术是凋谢的,咱们的心态,更应是凋谢的。拥抱变动,背阴而生,致力向前行。
我是 阿兵云原生,欢送点赞关注珍藏,下次见~