每日禪語
古代,一位官員被革職遣返,心中苦悶無處排解,便來到一位禪師的法堂。禪師靜靜地聽完了此人的傾訴,將他帶入自己的禪房之中。禪師指著桌上的一瓶水,微笑著對官員說:?“你看這瓶水,它已經放置在這里許久了,每天都有塵埃、灰燼落在里面,但它依然澄清透明。你知道這是何故嗎??”官員思索了良久,似有所悟:?“所有的灰塵都沉淀到瓶底了。?”禪師點了點頭,說道:?“世間煩惱之事數之不盡,有些事越想忘掉卻越揮之不去,那就索性記住它好了。就像瓶中水,如果你不停地振蕩它,就會使整瓶水都不得安寧,混濁一片;如果你愿意慢慢地、靜靜地讓它們沉淀下來,用寬廣的胸懷容納它們,那么心靈不但并未因此受到污染,反而更加純凈。?”官員恍然大悟。觀水學做人,時常自省,便能和光同塵,愈深邃愈安靜;便能至柔而有骨,執著而穿石,以“天下之至柔,馳騁天下之至堅”?。時常自省,便能靈活處世,不拘泥于形式,因時而變,因勢而變,因器而變,因機而動,生機無限;時常自省,便能清澈透明,纖塵不染;時常自省,便能潤澤萬物,有容乃大,通達而廣濟天下,奉獻而不圖回報
文章背景
一般常用的日志掛載方式有elk,grafana等工具連接查看,但是這些方式都是需要充足的資源的,而且部署方式比較麻煩。但是搭建k8s集群以后,日志分布在不同的機器上面,需要用一種簡單便捷的日志收集方式統一收集到一臺機器上面做日志查看。對于自己學習或者是公司的內部系統需要做應用的日志收集,使用nfs的日志收集方式無不是一種簡單且便捷的方式,本文以nfs作為遠程存儲,統一存放pod日志。?
?1.安裝nfs服務(所有節點)
yum install -y nfs-utils rpcbind
2.創建共享目錄設置日志收集服務器地址
本文所有日志都收集在172.17.12.24服務器上面,在24服務上面創建共享目錄
mkdir -p /home/apps/nfs
chmod -R 755 /home/apps/nfs
3.編輯 /etc/exports,添加以下內容
/home/apps/nfs/ *(rw,no_root_squash,sync)
4.使配置生效
exportfs -r
5.啟動服務(所有節點)
systemctl start rpcbind
systemctl start nfs
systemctl enable rpcbind
systemctl enable nfs
6.創建pv(k8s集群控制節點操作)
apiVersion: v1
kind: PersistentVolume
metadata:name: pv-nfs-prod-24namespace: prodlabels:env: uat
spec:capacity:storage: 60GivolumeMode: FilesystemaccessModes:- ReadWriteManypersistentVolumeReclaimPolicy: RetainstorageClassName: ""nfs:path: /home/apps/nfs/server: 172.17.12.24
7.創建pvc(k8s集群控制節點操作)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: pvc-nfs-prod-24namespace: prod
spec:accessModes: # 訪問模式- ReadWriteManyvolumeMode: Filesystem # 存儲卷模式resources: # 資源請求requests:storage: 30GistorageClassName: ""selector:matchLabels:env: "uat"
8.配置pod使用pvc(k8s集群控制節點操作)
---
apiVersion: apps/v1
kind: Deployment
metadata:name: deploy-myapp
spec:replicas: 3selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:affinity:nodeAffinity: # pod調度preferredDuringSchedulingIgnoredDuringExecution:- weight: 1preference:matchExpressions:- key: typeoperator: Invalues:- "app"- key: envoperator: Invalues:- "uat"containers:- name: myappimage: harbor.neiwang.com/demo/myapp:1.0.2imagePullPolicy: IfNotPresentports:- name: main-httpcontainerPort: 8201- name: main-dubbocontainerPort: 28201env:- name: POD_NAME # 使用Downward API獲取POD名稱valueFrom:fieldRef:apiVersion: v1fieldPath: metadata.nameenvFrom: # 引用configMap中的環境變量- configMapRef:name: cm-common- configMapRef:name: cm-springvolumeMounts:- mountPath: /app/logname: logdirsubPathExpr: myapp/$(POD_NAME) # 使用子目錄, 便于定位指定pod的日志volumes:- name: logdirpersistentVolumeClaim:claimName: pvc-nfs-prod-24imagePullSecrets: # 從私有harbor倉庫拉取鏡像需要配置賬戶信息的secret- name: registry-harbor---
apiVersion: v1
kind: Service
metadata:name: svc-myapp
spec:selector:app: myappports:- name: main-httpprotocol: TCPport: 8201targetPort: 8201- name: main-dubboprotocol: TCPport: 28201targetPort: 28201
9.啟動并且查看日志
使用yaml文件創建deployment和service
kubectl create -f myapp.yaml
查看pod是否啟動
kubectl get pods
到nfs服務端查看是否有新生成的pod文件