k8s部署服务接入skywalking之java agent使用(基于sideCar模式)

这篇具有很好参考价值的文章主要介绍了k8s部署服务接入skywalking之java agent使用(基于sideCar模式)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景

  1. java应用在接入skywalking的时候,需要在启动参数指定 java agent的jar包-javaagent:/usr/local/skywalking/apache-skywalking-apm-bin/agent/skywalking-agent/skywalking-agent.jar
  2. 目前不打算将agent相关文件制作到java服务镜像里面
  3. 希望通过挂载的方式将agent包提供出来供java服务使用
  4. 决定采用基于sideCar模式部署java服务

原来采用过另外一种方案,是使用daemonset将agent包挂载每个node的主机目录,然后容器使用主机目录挂载的方式共享该目录就能使用到agent包。但是由于换了一个新的环境,没有权限操作主机目录,所以此方案作罢.
该方案的实现参考:
https://blog.csdn.net/qq_44209563/article/details/129591624

二、sideCar模式介绍

参考文章:
https://juejin.cn/post/6844903998382669832#heading-3

sideCar模式实现简单来说就是在同一个pod中,启动两个容器,容器A为正常的服务容器,容器B为辅助容器。同时让两个容器共享存储

辅助容器在启动后将前提条件准备好, 例如把服务容器需要使用到的agent包,提前放到共享目录当中,等到服务容器启动时就能直接使用共享目录中的agent包了

以上只是sideCar模式的其中一种用法。

三、部署

3.1 要点

  1. 同一个pod中启动两个容器
  2. 容器之间会共享存储
  3. 要保证容器启动的先后顺序

3.2 创建deployment文件

monitor-demo.yaml文件内容如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: monitor-demo-test-deployment
  namespace: kube-monitor
spec:
  replicas: 1
  selector:
    matchLabels:
      app: monitor-demo
  template:
    metadata:
      labels:
        app: monitor-demo
        api: try
    spec:
      nodeName: 192.168.116.178
      initContainers:  #1.表示初始化容器,当作辅助容器使用,在启动时执行命令将agent包复制到共享存储中
        - name: agent-c
          image: 192.168.116.126:18080/monitor-test/sk-agent:8.14.1
          imagePullPolicy: Always
          command: [ "/bin/bash", "-c", "--" ]
          args: [ "cp -r /data/paasops/sk/agent/* /data/paasops/sk/mount/agent;" ]  #2.执行命令
          volumeMounts:  # 共享存储设置
          - name: side-car-share-volume
            mountPath: /data/paasops/sk/mount/agent
      containers:
        - name: monitor-demo  # 服务容器
          image: 192.168.116.126:18080/monitor-test/monitor-test-demo:20230518154109
          imagePullPolicy: "IfNotPresent"
          ports:
            - containerPort: 8080
          env:
            - name: TZ
              value: Asia/Shanghai
          volumeMounts:   # 共享存储设置
            - name: side-car-share-volume
              mountPath: /data/paasops/sk/mount/agent
      volumes:  # 声明共享存储
        - name: side-car-share-volume
          emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
  name: monitor-demo-test-service
  namespace: kube-monitor
spec:
  type: NodePort
  ports:
    - port: 8080
      nodePort: 30280
  selector:
    app: monitor-demo

主要关心的内容:

  1. 声明共享存储
      volumes:  # 声明共享存储
        - name: side-car-share-volume
          emptyDir: {}
  1. 分别在两个容器中使用共享存储
          volumeMounts:   # 共享存储设置
            - name: side-car-share-volume
              mountPath: /data/paasops/sk/mount/agent

解释一下以上资源文件的执行情况:

  1. 执行时会先启动init容器 agent-c, 该容器会执行cp命令把agent包移动到共享目录/data/paasops/sk/mount/agent中(此目录时agent-c的容器目录,映射到共享存储side-car-share-volume)
  2. int容器执行完毕后退出,然后启动monitor-demo容器, 此容器使用到了共享存储side-car-share-volume,映射的是容器内目录/data/paasops/sk/mount/agent
  3. 也就相当于agent-c容器的/data/paasops/sk/mount/agent目录和monitor-demo容器的/data/paasops/sk/mount/agent映射成同一个地方

3.3 执行资源文件

执行命令kubectl apply -f monitor-demo.yaml文章来源地址https://www.toymoban.com/news/detail-470085.html

到了这里,关于k8s部署服务接入skywalking之java agent使用(基于sideCar模式)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Prometheus接入AlterManager配置邮件告警(基于K8S环境部署)

    Prometheus接入AlterManager配置邮件告警(基于K8S环境部署)

    基于 此环境做实验 1.创建AlertManager ConfigMap资源清单 执行YAML资源清单: 2.配置文件核心配置说明 group_by: [alertname]:采用哪个标签来作为分组依据。 group_wait:10s:组告警等待时间。就是告警产生后等待10s,如果有同组告警一起发出。 group_interval: 10s :上下两组发送告警的间隔

    2024年04月17日
    浏览(12)
  • 教你使用k8s来部署springboot服务

    在看到此文章之前,想必你已经知道如何启动一个 spring boot 应用,知道如何通过 docker 运行你的 spring boot 服务。 你可能会有这样得疑问,已经了解如上部署方式,是否还有必须去了解如何通过 k8s 部署 spring boot 应用? 如果你有这样的疑问,那么请继续往下看。 在介绍 k8s 部

    2024年02月15日
    浏览(9)
  • 搭建NFS服务器,部署k8s集群,并在k8s中使用NFS作为持久化储存

    搭建NFS服务器,部署k8s集群,并在k8s中使用NFS作为持久化储存

    🐇明明跟你说过:个人主页 🏅个人专栏:《Kubernetes航线图:从船长到K8s掌舵者》 🏅 🔖行路有良友,便是天堂🔖 目录 一、前言 1、k8s概述 2、NFS简介 二、NFS服务器搭建 1、准备NFS 服务器 2、搭建NFS服务 三、安装k8s集群 1、环境准备 2、禁用防火墙和SELinux 3、设置时间同步

    2024年04月13日
    浏览(10)
  • Prometheus接入AlterManager配置企业微信告警(基于K8S环境部署)

    Prometheus接入AlterManager配置企业微信告警(基于K8S环境部署)

    注意:请基于 Prometheus+Grafana监控K8S集群(基于K8S环境部署)文章之上做本次实验。 1、创建企业微信机器人 点击登入企业微信网页版: 应用管理 机器人 创建应用 创建好之后如上图,我们获取 点击查看获取 Secret 值。 2、获取企业ID 1、创建AlterManager ConfigMap资源清单 执行YAML资源

    2024年02月04日
    浏览(9)
  • Devops系列四(使用argocd部署java应用到k8s容器)

    Devops系列四(使用argocd部署java应用到k8s容器)

    上文已为我们准备好了以下内容: 制作java应用的docker镜像,并推送至镜像仓库 上传helm yaml代码至gitlab仓库(此gitlab和java应用所在的gitlab可以独立,也可以在一起,但是不宜在同一个工程,所以这里特此区分) 安装k8s和argocd argocd的权限设计和对接ldap(非必须) 本文先梳理出整

    2024年02月13日
    浏览(33)
  • 深入了解Kubernetes(k8s):安装、使用和Java部署指南(持续更新中)

    深入了解Kubernetes(k8s):安装、使用和Java部署指南(持续更新中)

    Docker和Kubernetes是两个不同的概念和技术,它们在容器化应用和容器编排方面有着不同的功能和作用。 Docker: Docker是一个开源的容器化平台,用于构建、打包和运行应用程序。通过使用Docker,你可以将应用程序及其依赖项打包到一个独立的轻量级容器中,使其可以在不同的环

    2024年02月10日
    浏览(10)
  • 【Chrome】使用k8s、docker部署无头浏览器Headless,Java调用示例

    【Chrome】使用k8s、docker部署无头浏览器Headless,Java调用示例

    无头浏览器是一种没有图形用户界面的浏览器。无头浏览器不通过其图形用户界面( GUI )控制浏览器的操作,而是使用命令行。 Chrome Headless 用于抓取(谷歌)、测试(开发者)和黑客(黑客)。 搜索引擎,使用它来呈现页面、生成动态内容和索引来自单页 Web 应用程序的数据。 SEO 工

    2024年02月08日
    浏览(10)
  • 微服务探索之路06篇k8s配置文件Yaml部署Redis使用Helm部署MongoDB和kafka

    微服务探索之路06篇k8s配置文件Yaml部署Redis使用Helm部署MongoDB和kafka

    1.1创建配置文件redis.conf 切换到自己的目录下如本文是放在/home/ubuntu下 cd /home/ubuntu vim redis.conf 1.2创建deployment配置文件 vim redis.yaml 1.创建k8sConfig Maps配置文件 kubectl create cm redis-conf --from-file=redis.conf 2.部署redis Deployments kubectl create -f redis.yaml 3.将资源公开一个新的服务service`kube

    2024年02月16日
    浏览(66)
  • K8S系列文章之 Kind 部署K8S的 服务发布

    K8S系列文章之 Kind 部署K8S的 服务发布

    下载  https://github.com/kubernetes-sigs/kind/releases/download/0.17.0/kind-linux-amd64 执行以下命令:  之前需要先在本地主机安装好docker  kubectl是Kubernetes的命令行工具,可以让我们通过命令访问、操作、管理Kubernetes集群。brew安装方法如下 安装完毕后,查看kubectl版本信息,确认安装成功

    2024年02月14日
    浏览(32)
  • Devops系列二(使用helm chart,将java应用发布部署至k8s的示例)

    Devops系列二(使用helm chart,将java应用发布部署至k8s的示例)

    docker镜像已经有了,本文我们将接着演示如何使用helm部署应用到k8s。 分为两大部分: 制作helm chart,推送到私有仓库nexus helm拉取chart,部署到k8s 要求你先安装helm,随便一台linux机器即可,不要求你要有k8s或者docker环境。 这里,我删除了没用到的一些文件,最后保留的见下:

    2024年02月12日
    浏览(16)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包