docker. k8s

基于k8s部署带skywalking agent的微服务工程

2019-05-21  本文已影响0人  do_young

背景

在应用程序中添加 SkyWalking Agent,就可以将接口、服务、数据库、MQ等进行追踪,将追踪结果通过 HTTP 或 gRPC 发送到 OAPServer,经过分析和聚合,将结果存储到 Elasticsearch 或 H2,SkyWalking 同时提供了一个 SkyWalking UI 的可视化界面,UI 以 GraphQL + HTTP 方式获取存储数据进行展示。


image.png

要想为微服务添加SkyWalking Agent需要引入SkyWalking 组件中 agent目录,并修改启动配置。

实现思路

如果为每一个微服务生成镜像的时候都将SkyWalking 组件中 agent目录打入镜像中,镜像文件将明显增大。
所以通过以下方式来实现:

实现步骤

生成SkyWalking agent镜像

image.png
FROM busybox:latest
ADD /agent //agent
docker build -t skywalking-agent:6.0.0 .

修改微服务的deployment配置文件

apiVersion: extensions/v1beta1
kind: Deployment
... ...
    spec:
      initContainers:
      - name: skywalking-agent-gateway
        image: skywalking-agent:6.0.0 
        command: ["cp", "-rf", "/agent", "/tmp"]
        volumeMounts:
        - mountPath: /tmp
          name: sky-agent-volume    
      containers:
      - name: user-center-containers
        image: user-center:latest
        imagePullPolicy: IfNotPresent
        ports:
          - containerPort: 7000
        env: 
        - name: SW_AGENT_NAMESPACE
          value: #namespace name
        - name: SW_AGENT_NAME
          value: #app name
        - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
          value: #skywalking aop server
        volumeMounts:
        - mountPath: /tmp
          name: tmp
        - mountPath: /skywalking
          name: sky-agent-volume              
      volumes:
      - name: tmp
        hostPath:
          path: /home/k8s/containers/tmp/user-center          
      - name: sky-agent-volume
        emptyDir: {}          
上一篇 下一篇

猜你喜欢

热点阅读