轉載於https://www.cnblogs.com/ericnie/p/7733281.html
pv,pvc的概念不解釋了,之前在registry中已經使用過PV和PVC,現在想把WebLogic Server中的日志給放到外部的存儲中來,過程如下:
首先在需要放日志的目標節點上建立一個文件夾,比如/k8s/weblogic
在/etc/exports中加入一個nfs的mount點
[root@k8s-node-1 weblogic]# cat /etc/exports /k8s/test *(insecure,rw,async,no_root_squash) /k8s/weblogic *(insecure,rw,async,no_root_squash)
重新啟動nfs
service nfs restart
nfs是否成功,可以通過下面命令來進行驗證。
mount -t nfs -o rw 192.168.0.103:/k8s/weblogic /mnt/nfs
建立一個pv
[root@k8s-master pv]# cat pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv0003
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
nfs:
path: /k8s/weblogic
server: 192.168.0.103
再建立一個pvc
[root@k8s-master pv]# cat pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: weblogiclogs
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
通過get pv查看是否關聯上
[root@k8s-master pv]# kubectl get pv NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM REASON AGE pv0003 5Gi RWO Recycle Bound default/weblogiclogs 41m pv01 20Gi RWX Recycle Bound default/myclaim2 36d
這里遇到一個問題,開始建立的pv死活claim為空,查看pv以及pvc的配置發現並沒有任何名稱上的關聯,繼續研究,發現純粹是通過storage大小進行匹配的,之前因為照抄書本,一個是5G,一個是8G所以就無法匹配了,修改后成功。
最后是weblogic的rc的配置。
[root@k8s-master pv]# cat rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: helloworld-service
spec:
replicas: 1
template:
metadata:
labels:
weblogic-app: "helloworld"
version: "0.1"
spec:
containers:
- name: weblogichelloworld
image: 1213-helloworld:v1
volumeMounts:
- mountPath: "/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/logs"
name: mypd
ports:
- containerPort: 7001
volumes:
- name: mypd
persistentVolumeClaim:
claimName: weblogiclogs
---
apiVersion: v1
kind: Service
metadata:
name: helloworldsvc
labels:
weblogic-app: helloworld
spec:
type: NodePort
ports:
- port: 7001
protocol: TCP
targetPort: 7001
name: http
nodePort: 30005
selector:
weblogic-app: helloworld
這里又遇到一個問題,之前想法是把Servers/AdminServer下面所有的都放在pv中,后來發現pod死活不啟動。修改成最后log的路徑后,啟動成功。
隨后我們也在pv中看到滿屏的日志了。


==========================================================================
值得探討的是,這種PV/PVC模式並不是存放WebLogic日志的好的方式,因為如果RC擴展為多個WebLogic Pod,意味着多個AdminServer都需要去訪問和讀寫同一個目錄和同一個文件,因為他們都是AdminServer,所以必然造成文件的損壞,所以以上只是做一個驗證,日志的收集還是通過官方推薦的EFK方式比較合適,一方面能夠記錄應用日志,另一方面也可以記錄Pod name, 但PV/PVC最適合什么場景,還需要繼續探討。

