Consider there is one rollout
in K8s setting and it creates 2 replicaSet
s, each replicaSet has a single pod
. Each pod include the same application that has a volume
to directory with same value (i.e. /dir/logs/)
Rollout
|_____ReplicaSet1
|_______Pod1
|________Volume (/logs/ mount to /dir/logs/)
|_____ReplicaSet2
|_______Pod2
|________Volume (/logs/ mount to /dir/logs/)
If application in Pod1
will output log to file
/logs/application.log
And application in Pod2
has the same definition
/logs/application.log
is it going to be an locking
issue, so that application in pod1
can write data in /logs/application.log that application in pod2
can't access the file because it is being written by pod1
? How to configure K8s
so that multiple pods won't facing such issue?
CodePudding user response:
Include the pod name as an environment variable and then use this as part of your log path:
...
env:
- name: PODNAME
valueFrom:
fieldRef:
fieldPath: metadata.name
command:
- sh
- -c
- |
exec myapplication --logfile /logs/$PODNAME.log
...