实验环境依旧是三个节点拉取镜像,然后在master节点拉取资源清单:
然后同步会话,导入镜像;
存储入门
ConfigMap
volume卷--》volumemount(挂载卷)
Glusterfs
NFS
ISCSI
HostPath
ConfigMap
Secret
EmptyDir
PVC
云原生存储技术:cephFS
emptydir:并不会在主机上体现出来,会在同一个pod内不同容器间体现出来;
pod(容器1和容器2):两个容器间共享目录;
docker主机
k8s主机
apiVersion: apps/v1
这指定了使用的Kubernetes API版本,apps/v1是Deployment资源的稳定版本,用于定义和管理应用部署。
kind: Deployment
这指定了YAML文件中定义的资源类型为Deployment。Deployment是Kubernetes中用于声明式地更新应用和服务的高级抽象。
metadata
metadata部分包含了Deployment的元数据。
-
labels: 定义了一组键值对,用于标识和选择对象。这里定义了app: nginx标签,用于选择和标识这个Deployment。
-
name: Deployment的名称,这里是nginx。
-
namespace: Deployment所在的命名空间,默认是default。命名空间用于将集群内的资源逻辑上隔离。
spec
spec部分定义了Deployment的规格。
-
replicas: 指定了需要运行的Pod副本数量,这里是1。
-
selector: 一个标签选择器,用于指定Deployment管理的Pods的标签。这里选择了标签为app: nginx的Pods。
-
template: 定义了Pod的模板,用于创建新的Pods。
-
metadata: Pod模板的元数据,同样包含了labels来定义Pod的标签。
-
spec: Pod模板的规格。
-
containers: 定义了Pod中运行的容器列表。
-
第一个容器使用了nginx:1.7.9镜像,设置了imagePullPolicy为IfNotPresent(如果本地没有镜像,则从远程仓库拉取),并挂载了名为share-volume的卷到/opt目录。
-
第二个容器同样使用了nginx:1.7.9镜像,但通过设置command覆盖了容器的默认启动命令,使容器在启动后执行sh -c sleep 3600命令(即睡眠3600秒),并挂载了share-volume卷到/mnt目录。
-
-
volumes: 定义了Pod中使用的卷。
-
这里定义了一个名为share-volume的空目录卷(emptyDir),它将在Pod的每个容器中共享。注释掉的#medium: Memory表示如果取消注释,这个卷将会存储在内存中,而不是默认的磁盘上,但这通常不是emptyDir卷的标准用法,因为emptyDir卷默认就是基于节点的磁盘存储的。
-
-
-
总结
这个Deployment配置定义了一个包含两个nginx容器的Pod,它们都挂载了同一个空目录卷(share-volume),但第二个容器在启动后不会运行nginx服务,而是睡眠3600秒。这种配置可能用于测试、日志收集或需要容器间共享数据的场景。注意,由于两个容器都试图使用同一个端口(nginx默认端口80),这种配置在实际部署中可能无法正常工作,除非nginx配置被修改以监听不同的端口或使用其他网络配置。
创建出来:
然后登录到容器中进行验证:
然后登录到另外一个容器中应该能够看到创建的文件;
-
UTC与本地时间的差异