K8S 上部署 SkyWalking 链路追踪系统

部署后端

一:安装 Helm

由于 SkyWalking 官方提供 Helm 的安装方式,因此我们需要先安装 Helm。

  1. SSH 登录可以执行 kubectl 的节点服务器。

  2. Helm官方提供如下一键安装命令

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3

但由于墙的问题,可能无法访问。因此可以本地通过下面的地址直接下载 helm 二进制文件,地址:https://get.helm.sh/helm-v3.7.2-linux-amd64.tar.gz,解压缩后,将 helm 二进制文件移动到 bin 目录下。

mv linux-amd64/helm /usr/local/bin/helm
  1. 确认可以执行 helm 命令即可。

二:添加 Helm 仓库

参考下列命令,先设置环境变量,然后添加 skywalking 的helm 官方仓库。

export SKYWALKING_RELEASE_NAME=skywalking
export SKYWALKING_RELEASE_NAMESPACE=ops-share
export REPO=skywalking
helm repo add ${REPO} https://apache.jfrog.io/artifactory/skywalking-helm

三:修改配置文件并安装

  1. 下载 skywalking-kubernetes 安装文件。
https://github.com/apache/skywalking-kubernetes
  1. 修改 chart/skywalking/values-my-es.yaml 文件,参考下列内容进行修改。
oap:
  image:
    tag: 8.8.1
  storageType: elasticsearch

ui:
  image:
    tag: 8.8.1

elasticsearch:
  enabled: false
  config:               # For users of an existing elasticsearch cluster,takes effect when `elasticsearch.enabled` is false
    host: es-external-svc
    port:
      http: 9200
    user: "elastic"         # [optional]
    password: "********"     # [optional]
  1. 保存后,返回 chart 目录,执行下面的命令进行安装。
helm install "${SKYWALKING_RELEASE_NAME}" ${REPO}/skywalking -n "${SKYWALKING_RELEASE_NAMESPACE}"   -f ./skywalking/values-my-es.yaml
  1. 执行下面的命令,检查 skywalking 的安装进度。
helm list -n ops-share
image.png
  1. 确认 skywalking 安装成功。

四:创建 ingress

在 ack 控制台,创建 ingress。


image.png

五:增加访问限制

由于 skywalking 新版本不支持 Dashboard 访问增加账户密码,因此需要自行通过 nginx 的 access auth 来实现,过程如下:

  1. 通过在线工具,生成访问的账户和密码。

  2. 复制生成的加密内容,在 ack 控制台的 保密字典 中创建 Secret。

    image.png

  3. 编辑上文中创建的 ingress,参考下面的注解进行配置。


    image.png

Agent 注入

不同的编程语言,注入方式不同,不同的启动方式,注入方式也不同

Tomcat & Java

一:下载 Agent 包

由于我们大多是 Java 程序,所以从 Github 下载 Java Agent。使用的是 V8.8.0版本的。

下载后,上传至 OSS,后续在 Dockerfile 中可直接使用。

二:更新 Dockerfile

主要是增加从 OSS 下载并解压到 /skywalking 目录,记录解压后删除,减小镜像大小。

FROM tomcat:8.5.73-jdk8
RUN mkdir /usr/local/tomcat/webapps/pdos-admin
COPY pdos-admin/target/*.war /usr/local/tomcat/webapps/pdos-admin
RUN cd /usr/local/tomcat/webapps/pdos-admin && jar -xvf *.war \
    && mkdir /skywalking && cd /skywalking \
    && wget https://xxxx.oss-cn-hangzhou.aliyuncs.com/skywalking/skywalking-agent.tar \
    && tar xvf skywalking-agent.tar \
    && rm -rf /usr/local/tomcat/webapps/pdos-admin/*.war \
    && rm -rf /skywalking/skywalking-agent.tar
WORKDIR /usr/local/tomcat

三:Deployment 上增加相关配置

需要在 Deployment 上增加下列配置:

环境变量

# Tomcat 启动时添加的重要参数
- name: CATALINA_OPTS
  value: >-
    -javaagent:/skywalking/skywalking-agent/skywalking-agent.jar

# 指定客户端分组和名称,规则为[Project-ENV]::[Service]
- name: SW_AGENT_NAME
  value: Group_Name::App_Name

# 指定 SkyWalking 后端,此处以公网地址为例,如果是 ACK 集群内,可使用内网地址
- name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
  value: skywalking-oap.xxx.com:443

# 强制 Agent 使用 TLS 协议,否则会出现报错
- name: SW_AGENT_FORCE_TLS
  value: 'true'
  • Group_Name::App_Name 自定义
  • skywalking-oap.xxx.com:443 根据实际环境填写

外置存储卷
SkyWalking 会生成日志,将日志外置,避免容器越来越大。

- name: uploadfile
  mountPath: /skywalking/skywalking-agent/logs
  subPath: logs

结果验证

确认通过 ingress 中设置的域名可以正常访问 skywalking 后台,并且首次访问会弹出登录框。


image.png

输入正确的账户密码后,可以正常访问到后台即可。


image.png

参考文档

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容