Docker
本身有自己的目錄掛載, 但功能太單一, 一般也只能掛載本地目錄, K8S
作為Docker
容器的管理服務, 除了能夠掛載本地的還能在線文件存儲目錄, 比如說nfs
1. 本地目錄掛載
yml
文件中配置如下
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: goserver
spec:
replicas: 2
template:
metadata:
labels:
run: goserver
spec:
containers:
- name: goserver
image: registry.cn-hangzhou.aliyuncs.com/magina-centos7/goserver:1.0
ports:
- containerPort: 4040
volumeMounts:
- mountPath: /mnt/logs
name: go-logs
volumes:
- name: go-logs
hostPath:
path: /mnt/logs/kubernetes/goserver
最后的
volumes
指定掛載目錄的名稱和路徑, 這個目錄是本地的, 也就是說pod
只會掛載當前宿主機的目錄, 但當我們有多個節點, 而這些節點上又有運行著相同的項目, 而我們需要收集這些項目的日志, 用本地掛載的方式顯得很麻煩, 當然, 我們可以用分布式日志工具
去處理, 這里介紹另外一種方式, 網絡文件系統nfs
2. 網絡文件系統nfs
yml
文件中配置如下
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: goserver
spec:
replicas: 2
template:
metadata:
labels:
run: goserver
spec:
containers:
- name: goserver
image: registry.cn-hangzhou.aliyuncs.com/magina-centos7/goserver:1.0
ports:
- containerPort: 4040
volumeMounts:
- mountPath: /mnt/logs
name: go-logs
volumes:
- name: go-log
nfs:
server: nfs4.yinnote.com
path: /prod/logs/goserver
這里使用了
nfs
標簽, 也就是將當前目錄掛載到了遠程文件系統, 這里的server
指的是遠程文件系統路徑, 需要自己去配置, 或者直接買其他云服務廠商的文件系統, 這樣做的好處是, 不管哪個節點, 哪個pod
, 都可以將日志打到統一的地方
另外, 如果我們使用了nfs
文件系統, 必須要在每臺節點上面安裝nfs-utils
工具包, 否則pod
會無法啟動
yum install nfs-utils