kubeadm部署k8s教程(5)---容器挂载本地磁盘
容器目录挂载外部目录
·
1、场景
我们在使用docker run启动Docker的时候,可以直接指定-v参数,将容器中需要持久化的目录持久化到本地目录。就是将每个容器要挂载的目录,映射到该容器所在宿主机指定的目录,从而完成挂载。在k8s中,引入了存储层的概念,这个存储层的存储空间,所有结点共享,是分布式存储。一个结点挂掉,它上面的 Pod 进行故障转移后,依旧能继续从共享的存储空间中,访问之前的数据。
2、搭建nfs环境
直接启动docker的挂载方式:
docker run -d -p 80:80 -p 8080:8080 --net=host -v /data/logs:/logs -v /etc/timezone/timezone:/etc/timezone:ro --name nginx nginx
主从节点的nfs环境搭建
https://blog.csdn.net/qq_26993175/article/details/125415430
k8s的pods中挂载:
a、修改Deployment.yaml
增加红框里的两部分内容:
kind: Deployment
apiVersion: apps/v1
metadata:
name: nginx
namespace: default
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx
creationTimestamp: null
labels:
app: nginx
spec:
volumes: # 映射Pod对外的挂载
- name: uploadfile # Pod要挂载的名称指代,即指向volumeMounts的name
nfs: # 采用nfs挂载
server: 192.168.1.15 # Pod要挂载的宿主机ip
path: /data/upload # Pod挂载到外部宿主机上的目录
- name: timezone
hostPath: # 采用主机目录的挂载方式
path: /etc/timezone
type: Directory ###这个类型在下面会有介绍
containers:
- name: sms-web-api
image: '192.168.1.15:20001/library/nginx:v6'
ports:
- containerPort: 4008
protocol: TCP
resources: {}
volumeMounts: # Pod的数据卷挂载
- name: uploadfile # Pod的数据卷挂载到外面的名称
mountPath: /data/upload # Pod的内部要挂载出去的目录
- name: timezone
mountPath: /etc/timezone
restartPolicy: Always
terminationGracePeriodSeconds: 30
dnsPolicy: ClusterFirst
securityContext: {}
schedulerName: default-scheduler
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 25%
revisionHistoryLimit: 10
progressDeadlineSeconds: 600
修改完成后应用即可。本文并未涉及PV,PVC方式挂载。有兴趣可以参考下面两个链接。
挂载卷类型介绍:
https://blog.csdn.net/weixin_46069582/article/details/114069043
PV、PVC方式介绍:
https://blog.csdn.net/Crezfikbd/article/details/124569094
更多推荐
已为社区贡献2条内容
所有评论(0)