首页 > 其他分享 >K8S-Pod挂载数据卷权限问题

K8S-Pod挂载数据卷权限问题

时间:2023-07-19 14:57:52浏览次数:36  
标签:name tomcat app POD 挂载 Pod K8S ccas logs

  • 场景:需要将同一个服务的多个Pod副本的日志持久化到本地,为方便根据Pod的名称快速查看日志,在Pod挂载数据卷时,可以通过subPathExpr和env变量配合使用为每个Pod副本自动创建以Pod名称命名的文件夹
  • 故障:自动创建的文件夹属主属组为root,业务进程使用appuser启动,导致程序无法进行写操作
  • 解决:
[root@master-176 ccas]# cat ccas-tomcat.yaml 
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: ccas-tomcat-deploy
spec:
  replicas: 3
  selector:
    matchLabels:
      app: ccas-tomcat
  template:
    metadata:
      name: ccas-tomcat
      labels:
        app: ccas-tomcat
    spec:
      volumes:
      - name: webapps
        nfs:
          path: /app/data/kubernetes/ccas/tomcat/webapps
          server: 172.16.52.62
      - name: tomcat-logs
        hostPath:
          path: /app/data/ccas
          type: DirectoryOrCreate
      - name: app-logs
        hostPath:
          path: /app/data/ccas
          type: DirectoryOrCreate
      - name: backup
        hostPath:
          path: /app/data/ccas
          type: DirectoryOrCreate
      initContainers:
      - name: volume-init
        image: alpine:3.18
        env:
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        volumeMounts:
        - name: tomcat-logs
          mountPath: /app/apache-tomcat-9.0.0.M15/logs
          subPathExpr: $(POD_NAME)/tomcat_logs
        - name: app-logs
          mountPath: /app/logs
          subPathExpr: $(POD_NAME)/app_logs
        - name: backup
          mountPath: /app/backup
          subPathExpr: $(POD_NAME)/backup
        command: ["sh", "-c", "adduser -D appuser; chown -R appuser.appuser /app; ls -l /app"]
      containers:
      - name: tomcat
        env:
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        image: 172.16.52.62:18082/lancoo/tomcat:9.0.0
        volumeMounts:
        - name: webapps
          mountPath: /app/apache-tomcat-9.0.0.M15/webapps
        - name: tomcat-logs
          mountPath: /app/apache-tomcat-9.0.0.M15/logs
          subPathExpr: $(POD_NAME)/tomcat_logs
        - name: app-logs
          mountPath: /app/logs
          subPathExpr: $(POD_NAME)/app_logs
        - name: backup
          mountPath: /app/backup
          subPathExpr: $(POD_NAME)/backup

---

kind: Service
apiVersion: v1
metadata:
  name: ccas-tomcat-svc
spec:
  type: NodePort
  selector:
    app: ccas-tomcat
  ports:
  - port: 8082
    protocol: TCP
    targetPort: 8080
    nodePort: 30086

标签:name,tomcat,app,POD,挂载,Pod,K8S,ccas,logs
From: https://www.cnblogs.com/driverli/p/17565544.html

相关文章

  • 一篇有趣的K8S问题排查思路
    在K8S这个平台里,Pod是一种被广泛使用的概念。但是,Pod有时也会变得不稳定,让开发者感到很困惑。特别是当您第一次面对Pod问题时,可能感觉像一只无力的小猫,完全无法解决问题。常见的问题如下:Pod无法启动:像个拒绝上班的员工,这个Pod可能根本就不想工作!请检查相关的日志或配置文件,以找......
  • 应对突发流量,如何快速为自建 K8s 添加云上弹性能力
    作者:庄宇以Kubernetes为代表的容器技术带来的是一种应用交付模式的变革,其正迅速成为全世界数据中心的统一API。为了保证业务持续稳定、用户访问不中断,高可用、高弹性等能力是应用架构设计不变的追求,多集群架构天然具备这样的能力。而只有在Kubernetes这层统一且标准的API......
  • crane-scheduler基于真实负载进行k8s调度
    介绍kubernetes的原生调度器只能通过资源请求来调度pod,这很容易造成一系列负载不均的问题:对于某些节点,实际负载与资源请求相差不大,这会导致很大概率出现稳定性问题。对于其他节点来说,实际负载远小于资源请求,这将导致资源的巨大浪费。为了解决这些问题,动态调度器根据实际的......
  • k8s中,secret中有多条数据,如何将某条数据挂载为一个单独的文件?
    secrete中,包含以下两条数据db-password,原内容是123456db-username,原内容是:admin 这里都是base64编码的结果。 在pod中,volumemounts中,subPath指定某个数据项的key值mountPath:为具体的某个文件的名字这样挂载之后,就是具体的文件了,文件的内容,就是key对应的值。......
  • kubeasz K8S测试环境删除多余 node 节点
    kubeaszK8S测试环境删除多余node节点背景:公司之前存在3套test环境,有1套环境部署的生产环境老系统,目前生产环境已经完成了新老系统切换,不在需要老系统test环境,需要进行回收1|查看节点列表使用kubectl命令来查看当前集群中的节点列表,以确认要删除的节点的名称。kub......
  • 使用podman-compose快速部署应用
    我们对于docker-compose并不陌生,它是一个用于编排多个可能相互依赖的容器的工具。而PodmanCompose项目的目标是作为docker-ompose的替代品,而不需要对docker-compose.yaml文件进行任何修改。要想使用podman-compose需要先安装podman,然后安装podman-compose。Rocky8下安装po......
  • Pod生命周期
    创建Pod内容器删除Pod资源status.phasestatus.phase是Pod的当前状态。Phase的5种取值1.PendingAPI对象已经被创建并保存在Etcd中。Pod里有些容器因为某种原因而不能被顺利创建。例如,调度不成功。2.RunningPod调度成功,容器都已经创建成功,并且至少有一个正在运行中。3.Su......
  • 【Azure K8S】记录AKS VMSS实例日志收集方式
    问题描述如何从AKS的VMSS集群中收集实例日志? 参考步骤第一步:登陆VMSS实例参考官网步骤:使用SSH连接到AzureKubernetes服务(AKS)群集节点以进行维护或故障排除: https://docs.azure.cn/zh-cn/aks/ssh#configure-virtual-machine-scale-set-based-aks-clusters-for-ssh......
  • 下载k8s源码
    设置GOPATH环境变量goenv-wGO111MODULE=autocd$GOPATHmkdir-psrc/k8s.iocdsrc/k8s.iogitclonehttps://github.com/kubernetes/kubernetes.gitcdkubernetesgitcheckoutrelease-1.15设置GolandFile->Settings->GO->GOPATH勾选UseGOPATHthat's......
  • Loki+Promtail+Grafana 监控 K8s 日志
    Loki架构:1、loki:服务端,负责存储日志和处理查询2、promtail:采集端,负责采集日志发送给loki3、grafana:负责采集日志的展示创建yml文件cat>loki-rbac.yaml<<EOFapiVersion:v1kind:ServiceAccountmetadata:name:lokinamespace:thanos-monitoringapiVersion:rbac......