资讯专栏INFORMATION COLUMN

skywalking接入容器及k8s

IT那活儿 / 1346人阅读
skywalking接入容器及k8s

点击上方“IT那活儿”,关注后了解更多内容,不管IT什么活儿,干就完了!!!

随着容器化和k8s的日益增多,skywalking监控容器化应用也成为趋势,skywalking也支持三种方式对容器化应用进行监控,如下详细描述三种方式:
  • 使用官方提供的基础镜像;

  • 将 agent 包构建到已经存在的基础镜像中;

  • sidecar模式挂在agent。






skywalking原生镜像

1


使用官方原生镜像:
FROM apache/skywalking-java-agent:8.5.0-jdk8


直接使用CMD或启动 Java 应用程序ENTRYPOINT,不需要关心启用 SkyWalking 代理的 Java 选项,它会被自动采用。






agent 包构建到基础镜像中

2


将 agent 包构建到已经存在的基础镜像中,提供这种方式的原因是:官方的镜像属于精简镜像,并且是 openjdk ,可能很多命令没有,需要自己二次安装。
  • 下载 skywalking 官方发行包,并解压:
wget https://dlcdn.apache.org/skywalking/java-agent/8.8.0/apache-skywalking-java-agent-8.8.0.tgz && tar -zxvf apache-skywalking-java-agent-8.8.0.tgz
  • 通过以下 dockerfile 构建基础镜像:
FROM alpine:3.8
ENV LANG=C.UTF-8
RUN set -eux &&
apk update && apk upgrade &&
wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub &&
wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.30-r0/glibc-2.30-r0.apk &&
apk --no-cache add unzip vim curl git bash ca-certificates glibc-2.30-r0.apk file &&
rm -rf /var/lib/apk/* &&
mkdir -p /usr/skywalking/agent/

# A streamlined jre
ADD jdk1.8.0_221/ /usr/java/jdk1.8.0_221/
ADD apache-skywalking-apm-bin/agent/ /usr/skywalking/agent/

# set env
ENV JAVA_HOME /usr/java/jdk1.8.0_221
ENV PATH ${PATH}:${JAVA_HOME}/bin

# run container with base path:/
WORKDIR /

CMD bash






sidecar模式挂载agent

3


如果微服务是直接部署在Kubernetes集群,那么采用sidecar模式来使用SkyWalking Agent会更加方便。
因为这种方式不需要修改原来的基础镜像,也不需要重新构建新的服务镜像,而是会以sidecar模式,通过共享的volume将agent所需的相关文件直接挂载到已经存在的服务镜像中。
  • 下载 skywalking 官方发行包,并解压:
wget https://dlcdn.apache.org/skywalking/java-agent/8.8.0/apache-skywalking-java-agent-8.8.0.tgz && tar -zxvf apache-skywalking-java-agent-8.8.0.tgz
  • 通过以下 dockerfile 构建镜像:
FROM busybox:latest

ENV LANG=C.UTF-8

RUN set -eux && mkdir -p /usr/skywalking/agent/

ADD apache-skywalking-apm-bin/agent/ /usr/skywalking/agent/

WORKDIR /
注意:这里没有在dockerfile中下载skywalking 发行包是因为保证构建出的 sidecar 镜像保持最小,bosybox 只有700 k左右,加上 agent 最后大小小于20M。
  • 使用 sidecar:

apiVersion: apps/v1
kind: Deployment
metadata:
labels:
name: demo-sw
name: demo-sw
spec:
replicas: 1
selector:
matchLabels:
name: demo-sw
template:
metadata:
labels:
name: demo-sw
spec:
initContainers:
- image: innerpeacez/sw-agent-sidecar:latest
name: sw-agent-sidecar
imagePullPolicy: IfNotPresent
command: [sh]
args: [-c,mkdir -p /skywalking/agent && cp -r /usr/skywalking/agent/* /skywalking/agent]
volumeMounts:
- mountPath: /skywalking/agent
name: sw-agent
containers:
- image: nginx:1.7.9
name: nginx
volumeMounts:
- mountPath: /usr/skywalking/agent
name: sw-agent
ports:
- containerPort: 80
volumes:
- name: sw-agent
emptyDir: {}
以上是挂载 sidecar 的 deployment.yaml 文件,以nginx 作为服务为例,主要是通过共享 volume 的方式挂载 agent。
首先 initContainers 通过 sw-agent 卷挂载了 sw-agent-sidecar 中的 /skywalking/agent ,并且将上面构建好的镜像中的 agent 目录 cp 到了 /skywalking/agent 目录,完成之后 nginx 启动时也挂载了 sw-agent 卷,并将其挂载到了容器的 /usr/skywalking/agent 目录,这样就完成了共享过程。



本文作者:邸仁杰

本文来源:IT那活儿(上海新炬王翦团队)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129611.html

相关文章

  • 手把手教你搭APM之Skywalking搭建指南(支持Java/C#/Node.js)

    摘要:通过跟踪请求的处理过程,来对应用系统在前后端处理服务端调用的性能消耗进行跟踪,关于的介绍可以看这个链接,大规模分布式系统的跟踪系统作者刀把五链接来源知乎著作权归作者所有。 手把手教你搭APM之Skywalking 前言 什么是APM?全称:Application Performance Management 可以参考这里: 现代APM体系,基本都是参考Google的Dapper(大规模...

    ingood 评论0 收藏0
  • serverless在微店node领域的探索应用

    摘要:参与者流量来自于内部系统和外部流量,其中大部分来自于外部流量。水平扩容服务的水平扩容重要性不言而喻。 背景 目前微店中台团队为了满足公司大部分产品、运营以及部分后端开发人员的尝鲜和试错的需求,提供了一套基于图形化搭建的服务端接口交付方案,利用该方案及提供的系统可生成一副包含运行时环境定义可立即运行的工程代码,最后,通过 某种serverless平台 实现生成后代码的部署、CI、运行、反...

    mikyou 评论0 收藏0
  • UCloud优刻得容器Cube入选2020年度十大云原生创新技术方案

    摘要:近日,由极客邦科技主办的首个年度榜单中国技术力量年度榜单评选结果揭晓,优刻得容器实例成功入选年度十大云原生创新技术方案。近日,由极客邦科技、InfoQ主办的首个年度榜单2020中国技术力量年度榜单评选结果揭晓,UCloud优刻得 Serverless容器实例Cube成功入选2020年度十大云原生创新技术方案。顶尖专家阵容 优质项目交锋 UCloud云原生实力获得认可此次极客邦科技、InfoQ...

    Tecode 评论0 收藏0
  • kube-dns的前世今生

    摘要:通过监视资源的变化,并根据的信息生成记录写入到中。是唯一保留的容器,依然提供健康检查。操作会获取最新的全量资源与本地状态进行比较来产生通知,可以避免网络原因导致的丢失通知的情况。最后一个参数用来设置处理事件的回调。 上一期我们以1.2版本为背景,介绍了K8S的服务发现和kube-dns插件的相关内容。有了上一期内容作为基础,这期了解最新版本的kube-dns就会容易很多。 本文主要对比...

    Lin_R 评论0 收藏0
  • 容器 PaaS 新技术架构下的运维实践

    摘要:王磊此次演讲的题目为容器新技术架构下的运维实践,详细为大家讲解了在基于构建容器的过程中,如何以应用为中心,通过新的技术工具对服务节点集群平台等多个方面进行管理运维,提高系统的自动化运维能力。 2018年11月16-17日,运维&容器技术盛会 CNUTCon 全球运维技术大会在上海·光大会展中心成功举办。时速云联合创始人兼 CTO 王磊受邀参加此次大会,并发表主题演讲。王磊此次演讲的题目...

    BaronZhang 评论0 收藏0
  • 构建与定制:唯品会 PaaS 基于 Kubernetes 的实践

    摘要:基于年底或年初没有推广的现状,唯品会部门目前已经做了两年的时间。唯品会现状唯品会目前线上有一千多个域,每个域之间相互的依赖比较复杂,每次的部署发布困难。这是唯品会的架构,主要包含持续集成和持续部署。 数人云上海&深圳两地容器之Mesos/K8S/Swarm三国演义的嘉宾精彩实录第三更来啦。唯品会是数人云Meetup的老朋友,去年曾做过RPC服务框架和Mesos容器化的分享。本次分享中,...

    JackJiang 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<