【K8s】通过卷在容器之间共享数据
本例使用emptyDir卷类型,用于存储临时数据的简单空目录。图解:1.为安装fortune命令,用Dockerfile自定义镜像[root@k8s-node1 ~]#mkdir build[root@k8s-node1 ~]#cd build[root@k8s-node1 build]# vim fortuneloop.sh#!/bin/bashtrap "exit" SIGIN...
·
**本例使用emptyDir卷类型,用于存储临时数据的简单空目录。
图解:pod内
1.为安装fortune命令,用Dockerfile自定义镜像**
[root@k8s-node1 ~]#mkdir build
[root@k8s-node1 ~]#cd build
[root@k8s-node1 build]# vim fortuneloop.sh
#!/bin/bash
trap "exit" SIGINT
mkdir /var/htdocs
while:
do
echo $(date) Writing fortune to /var/htdocs/index.html
/usr/games/fortune > /var/htdocs/index.html
sleep 10
done
[root@k8s-node1 build]# vim Dockerfile
FROM ubuntu:latest
RUN apt-get update; apt-get -y install fortune
ADD fortuneloop.sh /bin/fortuneloop.sh
ENTRYPOINT /bin/fortuneloop.sh
[root@k8s-node1 build]# docker build -t luksa/fortune .
2.yaml创建pod和service(请把注释删除再创建)
---
apiVersion: v1
kind: Pod
metadata:
name: fortune
lable:
app: fortune
spec:
containers:
- name: html-generator
image: luksa/fortune
imagePullPolicy: IfNotPresent
volumeMounts: # 名为html的卷挂载在容器的/var/htdocs中
- name: html
mountPath: /var/htdocs
- name: web-server
image: nginx:alpine # 与上面相同的卷挂载在/usr/share/nginx/html
imagePullPolicy: IfNotPresent
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
readOnly: true # 该容器对卷内容只读
ports:
- containerPort: 80
protocol: TCP
volumes: # 一个名为html的单独emptyDir卷,挂载在上面的两个容器中
- name: html # 理解为在pod中建立一个创建一个文件系统提供给容器挂载
emptyDir: {}
#运作流程:fortune往html卷写入数据,web-server从html读取数据
---
apiVersion: v1
kind: Service
metadata:
name: fortune-svc # 服务名
spec:
ports:
- port: 80 # 该服务监听端口端口
targetPort: 80 # 服务将连接转发到pod中匹配容器声明的端口
nodePort: 30008
type: NodePort
selector:
app: fortune # 具有app=fortune标签的pod都隶属于该服务
# 创建了一个名叫fortune-svc的服务,它将在端口80接收请求并将连接路由到具有标签选择器是app=fortune的pod的80端口
验证(每10秒更新index页面,ip可指定集群任一节点ip,包括主节点)
浏览器访问:http://<ip>:30008
卷的内容会存储在pod所在节点上,如果想要卷的内容存储在内存中可如下修改:
volumes:
- name: html
emptyDir:
medium: Memory # emptyDIr中文件将会存储在内存中
更多推荐
已为社区贡献10条内容
所有评论(0)