Kubenetes:卷

编程

简介

1、卷是Pod的一个组成部分,和pod共享生命周期,不是独立的Kubenetes对象,也不能单独创建或删除。

2、可用的卷类型如下:

  • emptyDir——用于存储临时数据的简单空目录。
  • hostPath——用于将目录从工作节点的文件系统挂载到Pod中。
  • gitRepo——通过检出Git仓库的内容来初始化的卷。
  • nfs——挂载到Pod中的NFS共享卷。
  • gcepersistentDisk(Google高效能型存储磁盘卷)、awsElasticBlockStore(AmazoneWeb服务弹性块存储卷)、azureDisk(MicrosoftAzure磁盘卷)——用于挂载云服务商提供的特定存储类型。
  • cinder、cephfs、iscsi、flocker、glusterfs、quobyte、rbd、flexVolume、vsphere-Volume、photonPersistentDisk、scaleIO用于挂载其他类型的网络存储。
  • configMap、secret、downwardAPI——用于将Kubenetes部分资源和集群信息公开给pod的特殊类型的卷。
  • persistentVolumeClaim——一种使用预置或者动态配置的持久存储类型。

3、单个容器可以同时使用不同类型的多个卷,每个容器都可以装载或不装载卷。

4、emptyDir卷是最简单的卷类型,但是其他类型的卷都是在它的基础上构建的。

使用emptyDir卷

1、构建fortune镜像

1)编辑fortuneloop.sh

#!/bin/bash

trap "exit" SIGINT

sudo mkdir /var/htdocs

sudo chmod 777 -R /var/htdocs

while :

do

echo $(date) Writing fortune to /var/htdocs/index.html

/usr/games/fortune > /var/htdocs/index.html

sleep 10

done

2)分配执行权限

chmod 777 fortuneloop.sh

3)编辑Dockerfile

FROM ubuntu:latest

RUN apt-get update ; apt-get -y install fortune

ADD fortuneloop.sh /bin/fortuneloop.sh

ENTRYPOINT /bin/fortuneloop.sh

4)构建docker镜像

docker build -t registry.cn-hangzhou.aliyuncs.com/rogueq/fortune:v1 .

5)推送docker镜像

docker push registry.cn-hangzhou.aliyuncs.com/rogueq/fortune:v1

6)编辑fortune-pod.yaml

apiVersion: v1

kind: Pod

metadata:

name: fortune

spec:

containers:

- image: registry.cn-hangzhou.aliyuncs.com/rogueq/fortune:v1

name: html-generator

volumeMounts:

- name: html

mountPath: /var/htdocs

- image: nginx:alpine

name: web-server

volumeMounts:

- name: html

mountPath: /usr/share/nginx/html

readOnly: true

ports:

- containerPort: 80

protocol: TCP

volumes:

- name: html

emptyDir: {}

7)创建pod

kubectl create -f fortune-pod.yaml

8)将端口从本地机器转发到pod(也可以通过服务来访问pod)

kubectl port-forward fortune 8080:80

9)在另一个客户端访问pod,每隔一段时间访问pod,会得到不同的消息

crul http:localhost:8080

 

 

 

 

以上是 Kubenetes:卷 的全部内容, 来源链接: utcz.com/z/511442.html

回到顶部