因为需要使用Nacos作为注册中心,Mysql来存储。需要对skywalking-oap进行自定义。
一、自定义镜像
注意:因为skywalking-oap中没有Mysql驱动包,所以需要下载。

  1. 下载mysql驱动Jar包,我使用的是8.0.15版本,下载地址:
    https://cdn.mysql.com//archives/mysql-connector-java-8.0/mysql-connector-java-8.0.15.zip
  2. 新建dockerfile文件,一定要将mysql驱动包放在和dockerfile文件相同文件夹下。否则,dockerfile文件build是copy不成功。
  3. 自定义skywalking-oap的dockerfile文件:
FROM apache/skywalking-oap-server

# 自定义参数
ENV SW_CLUSTER nacos
ENV SW_SERVICE_NAME SkyWalking_OAP_Cluster
ENV SW_CLUSTER_NACOS_HOST_PORT http://xxx.xxx.x.xxx:8848/
ENV SW_CLUSTER_NACOS_NAMESPACE public
ENV SW_CLUSTER_NACOS_USERNAME nacos
ENV SW_CLUSTER_NACOS_PASSWORD nacos
ENV SW_STORAGE mysql
ENV SW_JDBC_URL jdbc:mysql://xxx.xxx.x.xxx:3306/XX?useSSL=false&serverTimezone=Asia/Shanghai
ENV SW_DATA_SOURCE_USER root
ENV SW_DATA_SOURCE_PASSWORD 123456

# 设置时区
ENV Timezone=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$Timezone /etc/localtime && echo '$Timezone' > /etc/timezone

# copy数据库驱动包到lib文件夹下
COPY ./mysql-connector-java-8.0.15.jar /skywalking/oap-libs

# 暴露端口
EXPOSE 12800 11800 1234

ENTRYPOINT ["bash", "docker-entrypoint.sh"]
  1. 自定义skywalking-ui的dockerfile文件:
FROM apache/skywalking-ui

# 设置客户端时区
ENV Timezone=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$Timezone /etc/localtime && echo '$Timezone' > /etc/timezone

# 暴露8080端口
EXPOSE 8080
ENTRYPOINT ["bash", "docker-entrypoint.sh"]

到此为止,自定义skywalking-oap和skywalking-ui就已经完成。

二、k8s部署
使用k8s控制台进行操作

  1. 将build好的镜像,推送到远程仓库

  2. 在k8s控制台分别创建skywalking-oap和skywalking-ui的deployment
    在这里插入图片描述

  3. skywalking-oap和ui添加访问方式
    skywalking-oap添加访问方式:
    在这里插入图片描述
    保存后可以看到12800的访问地址,这个地址下面会用到:
    在这里插入图片描述

    skywalking-ui:
    添加环境变量:
    SW_OAP_ADDRESS=sky-walking-oap-mysql-server:12800
    在这里插入图片描述
    开放端口:
    在这里插入图片描述
    这样就可以通过任意节点IP:30828来访问ui了。
    三、agent接入

  4. 将官网下载的agent上传到服务器到服务器的文件夹下,下载地址:http://skywalking.apache.org/downloads/
    在这里插入图片描述

  5. 在你自己的服务创建数据卷,path指定skywalking-agent.jar所在路径
    在这里插入图片描述

  6. 创建挂载点,挂载点指定刚刚创建的数据卷,这样容器服务就可以访问skywalking-agent.jar
    在这里插入图片描述

  7. springboot项目的dockerfile文件中ENTRYPOINT内容修改

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar

ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ENTRYPOINT ["java","-javaagent:/var/tmp/skywalking-agent.jar","-Dskywalking.agent.service_name=XXX", "-Dskywalking.collector.backend_service=xx.xxx.xxx.xxx:11800","-jar","/app.jar"]

注意:
-javaagent:这里要指定挂载点的路径;
-Dskywalking.agent.service_name=你自己的服务名
-Dskywalking.collector.backend_service=skywalking-oap对外暴露的地址

到这里,所有的工作都已经做完,等服务启动,就可以注册进skywalking。完成效果:
在这里插入图片描述
当看到启动的服务名,说明接入成功。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐