当前位置: 首页 > news >正文

海南定安建设局网站雄县网站建设

海南定安建设局网站,雄县网站建设,零基础学网站建设 知乎,电子商务课程和 Docker 类似#xff0c;Kubernetes 中也提供了 Volume 来实现数据卷挂载#xff0c;但 Kubernetes 中 Volume 是基于 Pod#xff0c;而不是容器#xff0c;它可被 Pod 中多个容器共享#xff0c;另外 Kubernetes 中提供比较丰富的 Volume 类型[1]#xff0c;如#… 和 Docker 类似Kubernetes 中也提供了  Volume 来实现数据卷挂载但 Kubernetes 中 Volume 是基于 Pod而不是容器它可被 Pod 中多个容器共享另外 Kubernetes 中提供比较丰富的 Volume 类型[1]如emptyDir、hostPath、nfs、persistentVolumeClaim、downwardAPI、secret、configMap 等每种类型都有其特点及使用场景。下面将介绍几种常用 Volume 类型的使用方式在这之前先在 k8sdemo .NET Core 服务中添加以下两个接口镜像版本升级为 1.2.0以方便后面效果演示。[HttpGet] public string GetConfig([FromQuery]string key) {// ...... }[HttpGet] public string GetVolumeData() {// ...... } GetConfig通过传入配置文件 appsettings.json 的 key 获取对应值GetVolumeData获取容器内 /Data/data.txt 的文件内容emptyDiremptyDir 的初始状态是一个没有任何内容的 Volume其生命周期与 Pod 一致当 Pod 中的容器挂掉时emptyDir Volume 中的内容不会被清除容器重启后数据依然可见。只有当整个 Pod 从集群中被删除emptyDir Volume 中的内容才会被清除。如下emptyDir Volume 位于 Pod 内。通过以下配置文件创建的 Pod 中将包含 k8sdemo 和 busybox 两个 containerbusybox 是一个集成了一些常用 linux 命令的镜像这里将使用它在 Pod 内进行文件内容修改。k8sdemo 容器的 /app/Data/ 目录文件与 busybox 容器的 /data/ 目录文件将通过 emptyDir Volume 进行共享。apiVersion: apps/v1 kind: Deployment metadata:name: emptydir-demo spec:replicas: 1selector:matchLabels:name: emptydir-demotemplate:metadata:labels:name: emptydir-demospec:containers:- name: k8sdemoimage: beckjin/k8sdemo:1.2.0volumeMounts:- mountPath: /app/Data/name: shareports:- containerPort: 80- name: busyboximage: busyboxcommand:- /bin/sh- -c- sleep 3600volumeMounts:- mountPath: /data/name: sharevolumes:- name: shareemptyDir: {} --- apiVersion: v1 kind: Service metadata:name: emptydir-demo-service spec:selector:name: emptydir-demotype: NodePortports:- port: 80targetPort: 80 执行命令 kubectl exec -it emptydir-demo-746f49b55b-p6pzz -c busybox -- /bin/sh 进入 busybox  容器然后执行 echo emptyDir Volume /data/data.txt最后访问 k8sdemo 服务的 GetVolumeData 接口获取文件内容hostPathhostPath 类型是挂载宿主机上的文件或目录到 Pod 中与 Pod 所在的 Node 是强关联的所以当 Pod 因重启被重新调度时一定要确保所在主机的相关文件或目录的正确性如下如下配置中 replicas 字段设置为 2 正常情况下 Pod 将会在 node1 和 node2 上分别被创建另外 hostPath 字段中的 path 指定了 /data/k8sdemo/ 目录挂载到容器内的 /app/Data/所以分别在 node1 和 node2 创建 /data/k8sdemo/data.txt 内容为 node1 hostPath Volume 和 node2 hostPath Volume。kind: Deployment metadata:name: hostpath-demo spec:replicas: 2selector:matchLabels:name: hostpath-demotemplate:metadata:labels:name: hostpath-demospec:containers:- name: k8sdemoimage: beckjin/k8sdemo:1.2.0volumeMounts:- mountPath: /app/Data/name: shareports:- containerPort: 80volumes:- name: sharehostPath:path: /data/k8sdemotype: Directory --- apiVersion: v1 kind: Service metadata:name: hostpath-demo-service spec:selector:name: hostpath-demotype: NodePortports:- port: 81targetPort: 80 访问 k8sdemo 服务的 GetVolumeData 接口获取文件内容当路由到不同 Pod即不同的 node 返回内容将不一样如下nfsNFS(network file system) 网络文件系统类似 Windows 中的文件夹共享。首先在 Kubernetes 集群外搭建一个 NFS Server然后指定文件目录进行共享最终与  Pod 内的容器关联实现数据卷挂载如下NFS Server 搭建在机器上安装依赖组件集群外的机器 192.168.1.13并关闭防火墙yum install -y nfs-utils rpcbind 将主机上的 /share 目录作为共享目录如果多个目录可以添加多行[rootlocalhost ~]# vim /etc/exports /share 192.168.1.0/24(insecure,rw,no_root_squash) 启动 NFSsystemctl start rpcbind.service systemctl enable rpcbind.servicesystemctl start nfs.service systemctl enable nfs.service Kubernetes 集群内各节点安装 nfs-utils方便使用 showmountyum install -y nfs-utils 完成以上步骤后在 Kubernetes 集群中任意节点执行  showmount -e 192.168.1.13 验证是否正常如下配置中 volumes 指定了 nfs 字段配置即将  NFS Server 中的 /share 目录挂载到容器内的 /app/Data/与 hostPath Volume 类型的主要区别是依赖单独的 NFS Server和 node 本身并不耦合。apiVersion: apps/v1 kind: Deployment metadata:name: nfs-demo spec:replicas: 2selector:matchLabels:name: nfs-demotemplate:metadata:labels:name: nfs-demospec:containers:- name: k8sdemoimage: beckjin/k8sdemo:1.2.0volumeMounts:- mountPath: /app/Dataname: shareports:- containerPort: 80volumes:- name: sharenfs:server: 192.168.1.13path: /share --- apiVersion: v1 kind: Service metadata:name: nfs-demo-service spec:selector:name: nfs-demotype: NodePortports:- port: 82targetPort: 80 在 NFS Server 中执行 echo nfs Volume /share/data.txt然后访问 k8sdemo 服务的 GetVolumeData 接口获取文件内容如下persistentVolumeClaimPersistentVolumeClaim(PVC) 与 PersistentVolume(PV) 在使用上是一对密不可分的组合PV 主要是资源对象定义PVC 主要是对应资源对象的引用PV 支持 多种插件类型[2] 进行实现以下将继续使用 NFS 来作为 PV 插件。如下图首先基于 PV 插件在 Kubernetes 集群中创建各种资源规格的 PV根据 Pod 需要存储卷资源创建 PVCKubernetes 将符合资源规格要求且消耗资源最小的 PV 绑定到 PVCPV 和 PVC 是一对一的关系如果找不到符合条件的 PVPVC 会一直处于未绑定状态PVC 绑定成功后可被 Pod 内的容器引用。NFS Server 添加 mount 目录修改 NFS Server /etc/exports 并生效 在 Kubernetes 集群中任意节点执行 showmount -e 192.168.1.13 验证是否正常创建 PV以下配置将会创建3个 PVstorage 分别为 500M、1G、2G。apiVersion: v1 kind: PersistentVolume metadata:name: pv-share-a spec:nfs:path: /share_aserver: 192.168.1.13accessModes:- ReadWriteManycapacity:storage: 500Mi --- apiVersion: v1 kind: PersistentVolume metadata:name: pv-share-b spec:nfs:path: /share_bserver: 192.168.1.13accessModes:- ReadWriteManycapacity:storage: 1Gi --- apiVersion: v1 kind: PersistentVolume metadata:name: pv-share-c spec:nfs:path: /share_cserver: 192.168.1.13accessModes:- ReadWriteManycapacity:storage: 2Gi 创建 PVCapiVersion: v1 kind: PersistentVolumeClaim metadata:name: pvc-k8sdemo spec:accessModes:- ReadWriteManyresources:requests:storage: 1Gi PVC 创建成功后pv-share-b 的 STATUS 会变为 Bound同时 CLAIM 属性会显示相关的 PVC从上图也可以看出使用的是最小符合资源规格的 PV并不会将 pv-share-c 绑定到当前 PVC。更多关于 PV 和 PVC 属性说明可参考persistent-volumes[3]。创建 Pod如下配置中 volumes 指定了 persistentVolumeClaim 字段配置这里只需要设置 claimName 为前面创建的 PVC 名称 pvc-k8sdemo 即可使用上比较简单。apiVersion: apps/v1 kind: Deployment metadata:name: pvc-demo spec:replicas: 2selector:matchLabels:name: pvc-demotemplate:metadata:labels:name: pvc-demospec:containers:- name: k8sdemoimage: beckjin/k8sdemo:1.2.0volumeMounts:- mountPath: /app/Dataname: shareports:- containerPort: 80volumes:- name: sharepersistentVolumeClaim:claimName: pvc-k8sdemo --- apiVersion: v1 kind: Service metadata:name: pvc-demo-service spec:selector:name: pvc-demotype: NodePortports:- port: 83targetPort: 80 在 NFS Server 中执行 echo pvc Volume share_a /share_a/data.txtshare_b、share_c 类似然后访问 k8sdemo 服务的 GetVolumeData 接口获取文件内容如下configMapconfigMap 主要使镜像和配置文件解耦以便实现镜像的可移植性和可复用性configMap 是配置信息的集合可直接注入到 Pod 的容器中使用扮演着配置中心的角色。configMap 可以以数据卷的形式挂载也可以基于环境变量的形式注入到 Pod 容器中使用。另外 secret 是一种相对安全的 configMap它默认会将配置信息进行 base64 编码使配置不是明文直接存储在 configMap 中起到一定的保护作用。下面主要介绍 configMap 以数据卷挂载方式的使用如下图在 Kubernetes 集群中创建一个 configMap 资源类型然后供 Pod 内的容器使用。如下创建一个数据卷形式的 ConfigMapappsettings.json 是 .NET Core 程序内使用的配置文件。apiVersion: v1 kind: ConfigMap metadata:name: configmap-k8sdemo data:appsettings.json: |-{ServiceName: k8sdemo} 如下配置中 volumes 指定了 configMap 资源的名称为以上创建的 configMap 对象configmap-k8sdemo。apiVersion: apps/v1 kind: Deployment metadata:name: configmap-demo spec:replicas: 2selector:matchLabels:name: configmap-demotemplate:metadata:labels:name: configmap-demospec:containers:- name: k8sdemoimage: beckjin/k8sdemo:1.2.0volumeMounts:- name: configfilemountPath: /app/appsettings.jsonsubPath: appsettings.jsonports:- containerPort: 80volumes:- name: configfileconfigMap:name: configmap-k8sdemoitems:- key: appsettings.jsonpath: appsettings.json --- apiVersion: v1 kind: Service metadata:name: configmap-demo-service spec:selector:name: configmap-demotype: NodePortports:- port: 84targetPort: 80 通过访问 k8sdemo 服务的 GetConfig 接口获取指定 key 的值参考资料[1]Volume 类型: https://kubernetes.io/docs/concepts/storage/volumes/#types-of-volumes[2]多种插件类型: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#types-of-persistent-volumes[3]persistent-volumes: https://kubernetes.io/docs/concepts/storage/persistent-volumes/
http://www.zqtcl.cn/news/84087/

相关文章:

  • 代码编写网站中国公路建设协会网站
  • 找代理做网站网站域名归属谁当当网站建设的目标
  • 鹤壁建设网站推广渠道电话wordpress iis 500.50
  • 淘宝优惠券网站怎么做广州网站建设专业乐云seo
  • 天津重型网站建设方案公司网站建设项目背景
  • 营销型企业网站的建设方案大城网站制作
  • 网站策划常用软件微信小程序在哪里?
  • 个人备案网站投放广告一般上什么网站
  • 建立一个网站宁波江北区城市建设档案馆网站
  • 公众号建网站深圳企业网站建设设计
  • 东营网站建设服务软件开发工程师证书含金量高吗
  • 全网网站建设设计济南做网站维护的公司
  • 东莞高埗做网站哪个公司好软件 开发公司
  • 广州市住房和城乡建设厅网站首页wordpress纯静态
  • 音乐网站建设教程视频教程照片网站模板
  • 淮南 网站建设 有限公司宝塔配置wordpress和dz伪静态
  • 东莞想做网站商铺设计
  • 西宁电商网站建设发布软文平台
  • 济南网站制作方案成都idc机房托管
  • 手机网站设计立找亿企邦wordpress 自动内链
  • 山东省建筑住房和城乡建设厅网站网络卖东西的平台有哪些
  • 宜宾网站建设08keji做网站投广告赚钱么
  • 做资源网站怎么赚钱网站开发中遇到的技术问题
  • 导航 网站 分析佛山网站建设服务公司
  • 西宁建设公司网站免实名域名购买
  • 网站公司名称大全调用wordpress栏目列表
  • 网站入口模板东莞阿里巴巴代运营公司
  • 柳州网站建设33wordpress建站模版
  • 网站建设提供ftp医院网站前置审批文件
  • 丘北网站建设南阳做网站推广