首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes共享挂载点问题

Kubernetes共享挂载点问题
EN

Stack Overflow用户
提问于 2018-10-19 16:35:53
回答 2查看 223关注 0票数 0

我有一个包含logrotate和nginx容器的Pod:

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: nginx-log
  labels:
    app: nginx-log

spec:
  containers:

  - name: logrotate
    image: path/to/logrotate:latest
    volumeMounts:
    - name: logs
      mountPath: /var/log

  - name: nginx
    image: nginx:latest
    ports:
    - containerPort: 80
    volumeMounts:
    - name: logs
      mountPath: /var/log/nginx

  volumes:
  - name: logs
    emptyDir: {}

我的问题是nginx的日志是/var/ mountPath还是/var/log/ nginx,logrotate容器总是在/var/log/中看到nginx日志,而不是/var/log/nginx/。有没有可能强制nginx在emptyDir中创建nginx/文件夹并在那里登录?

EN

回答 2

Stack Overflow用户

发布于 2018-10-19 18:03:43

我认为在Pod完全部署之前,Init Containers是一个很好的选择,它可以用来运行任务。

示例如下所示:

代码语言:javascript
复制
apiVersion: v1  
kind: Pod  
metadata:  
  name: nginx-log  
spec:  
  containers:

  - name: logrotate
    image: path/to/logrotate:latest
    volumeMounts:
    - name: logs
      mountPath: /var/log

  - name: nginx  
    image: nginx:latest  
    ports:
    - containerPort: 80    
    volumeMounts:  
    - name: logs  
      mountPath: /var/log/nginx  

  initContainers:  
  - name: logs  
    image: busybox  
    command: ["mkdir","-p","/var/log/nginx"]  
    volumeMounts:  
    - name: logs  
      mountPath: /var/log/nginx 

  volumes:
  - name: logs
    emptyDir: {}

您还可以阅读Using InitContainers to pre-populate Volume data in Kubernetes

票数 0
EN

Stack Overflow用户

发布于 2018-10-19 20:42:51

好的,我已经让它工作了:

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: nginx-log
  labels:
    app: nginx-log

spec:
  containers:

  - name: logrotate
    image: path/to/image/logrotate:latest
    volumeMounts:
    - name: logs
      mountPath: /var/log

  - name: nginx
    image: nginx:latest
    ports:
    - containerPort: 80
    volumeMounts:
    - name: logs
      mountPath: /var/log/nginx
      subPath: nginx

  volumes:
  - name: logs
    emptyDir: {}

Logrotate side car取自:https://github.com/honestbee

在logrotate.tpl.conf中做了一些小的修改:

代码语言:javascript
复制
${LOGROTATE_PATTERN1} 
${LOGROTATE_PATTERN2}
{
    rotate ${LOGROTATE_ROTATE}
    ${LOGROTATE_MODE}
    size ${LOGROTATE_SIZE}
    missingok
    nocompress
    su root root
 }

在Dockerfile中:

代码语言:javascript
复制
FROM alpine:3.8

ENV CRON_SCHEDULE='*/30 * * * *' \
    LOGROTATE_SIZE='10M' \
    LOGROTATE_MODE='copytruncate' \
    LOGROTATE_PATTERN1='/var/log/*.log' \
    LOGROTATE_PATTERN2='/var/log/*/*.log' \
    LOGROTATE_ROTATE='5'

RUN apk --no-cache add logrotate tini gettext libintl \
    && mkdir -p /var/log \
    && chmod 775 /var/log \
    && mkdir -p /etc/logrotate.d

COPY logrotate.tpl.conf /logrotate.tpl.conf
COPY entrypoint.sh /usr/local/bin/entrypoint.sh

ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]

CMD ["/usr/sbin/crond", "-f", "-L", "/dev/stdout"]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52888685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档