helm部署skywalking链路追踪 java

添加helm仓库 skywalking

取别名 sw 名称可以任意写

powershell 复制代码
helm repo add sw https://apache.jfrog.io/artifactory/skywalking-helm
helm repo list

这里 sw 要与上面的 sw 名称 一样

从 Helm 仓库下载 SkyWalking 的 Chart 包,--untar 并自动解压到当前目录

powershell 复制代码
helm pull sw/skywalking --untar

进目录

powershell 复制代码
cd skywalking/

测试环境用的配置

powershell 复制代码
vim sky.yaml
yaml 复制代码
# OAP 配置
oap:
  image:
    repository: apache/skywalking-oap-server
    tag: "9.7.0"          
    pullPolicy: IfNotPresent
  storageType: "elasticsearch"  
  replicas: 1              # 单副本数
  javaOpts: "-Xmx1g -Xms1g"
  initEs: true
  service:
    type: ClusterIP

# UI 配置
ui:
  image:
    repository: apache/skywalking-ui
    tag: "9.7.0"
    pullPolicy: IfNotPresent
  replicas: 1
  service:
    type: NodePort       
    externalPort: 80
    internalPort: 8080

# Elasticsearch 配置(使用内置 ES)
elasticsearch:
  enabled: true
  imageTag: "7.17.3"      # 使用 ES 7.x,SkyWalking 9.x 兼容性好
  replicas: 1              # 单节点测试
  persistence:
    enabled: false         # 环境不持久化

  # 资源配置
  resources:
    requests:
      cpu: 500m
      memory: 1Gi
    limits:
      cpu: 1000m
      memory: 2Gi

  # 单节点配置
  minimumMasterNodes: 1
  roles:
    master: "true"
    data: "true"
    ingest: "true"

# 禁用其他功能
satellite:
  enabled: false

elasticsearch6:
  enabled: false

fullnameOverride: ""
nameOverride: ""

生产环境用的配置

powershell 复制代码
vim sky.yaml
yaml 复制代码
# OAP 配置
oap:
  image:
    repository: apache/skywalking-oap-server
    tag: "9.7.0"
    pullPolicy: IfNotPresent
  storageType: "elasticsearch"
  replicas: 2                      # OAP 可以扩展到 2 个实例
  javaOpts: "-Xmx1g -Xms1g"
  initEs: true
  service:
    type: ClusterIP

  # 资源限制
  resources:
    requests:
      memory: 2Gi    # 给 JVM 堆外内存留空间
      cpu: 500m
    limits:
      memory: 3Gi
      cpu: 1000m

  # 存活探针(防止僵尸进程)
  livenessProbe:
    httpGet:
      path: /health
      port: 12800
    initialDelaySeconds: 60
    periodSeconds: 10

  # 就绪探针(控制流量)
  readinessProbe:
    httpGet:
      path: /health
      port: 12800
    initialDelaySeconds: 30
    periodSeconds: 5

# UI 配置
ui:
  image:
    repository: apache/skywalking-ui
    tag: "9.7.0"
    pullPolicy: IfNotPresent
  replicas: 1
  service:
    type: NodePort
    externalPort: 80
    internalPort: 8080

  # 资源限制
  resources:
    requests:
      memory: 500Mi
      cpu: 100m
    limits:
      memory: 1024Mi
      cpu: 500m

  # 探针配置
  livenessProbe:
    httpGet:
      path: /health
      port: 8080
    initialDelaySeconds: 30
    periodSeconds: 10

# Elasticsearch 3节点集群配置
elasticsearch:
  enabled: true
  imageTag: "7.17.3"
  replicas: 3

  # 持久化存储(重要!)
  persistence:
    enabled: true
  volumeClaimTemplate:
      accessModes:
        - ReadWriteOnce
      storageClassName: "csi-disk"
      resources:
        requests:
          storage: 30Gi

  # 资源配置
  resources:
    requests:
      cpu: 500m
      memory: 2Gi
    limits:
      cpu: 1000m
      memory: 3Gi

  # 集群配置
  minimumMasterNodes: 2
  roles:
    master: "true"
    data: "true"
    ingest: "true"

  # 调度策略
  antiAffinity: "soft"             # 尽量分散到不同节点
  nodeAffinity: {}                 # 可指定节点标签
  tolerations: []                  # 可添加容忍度

  # 性能优化
  esJavaOpts: "-Xmx1g -Xms1g"
  sysctlVmMaxMapCount: 262144
  sysctlInitContainer:
    enabled: true

  # 服务配置
  service:
    type: ClusterIP
    httpPort: 9200
    transportPort: 9300

# 禁用其他功能
satellite:
  enabled: false

elasticsearch6:
  enabled: false

fullnameOverride: ""
nameOverride: ""

安装 skywalking

下面示例是用的 生产的 sky.yaml 配置

直接运行会报错 先替换掉所有的 v1beta1

powershell 复制代码
grep -r v1beta1
find . -type f -exec sed -i 's/v1beta1/v1/g' {} \;
helm install skywalking . --namespace skywalking --create-namespace -f sky.yaml



就可以通过 节点ip+端口访问页面

客户端deploy yaml 的配置

要实现收集数据 需要修改 yaml 主要是改下面3段

如果配置以后启动不了 看下是否是 limit的cpu限制导致的 可以适当调大limit

下面是3段参数

yaml 复制代码
      volumes:
      - name: skywalking-agent
        emptyDir: {}
      initContainers:
      - name: sw-agent-download
        image: apache/skywalking-java-agent:9.6.0-java17
        command: ["cp", "-r", "/skywalking/agent", "/target/"]
        volumeMounts:
        - name: skywalking-agent
          mountPath: /target
yaml 复制代码
        - name: JAVA_TOOL_OPTIONS
          value: "-javaagent:/skywalking/agent/skywalking-agent.jar -Dskywalking.agent.service_name=demo-app -Dskywalking.collector.backend_service=skywalking-oap.skywalking.svc.cluster.local:11800"
yaml 复制代码
        volumeMounts:
        - name: skywalking-agent
          mountPath: /skywalking
相关推荐
二十雨辰6 分钟前
[Java]-JVM面试题
java·开发语言·jvm
cfm_291410 分钟前
ConcurrentHashMap 线程安全机制与 JDK 1.8 演进
java·开发语言·安全
tqs_1234515 分钟前
值传递与引用传递
java·开发语言·python
2601_9621819618 分钟前
Spring boot从0到1 - day01
java·spring boot·后端
一直C24 分钟前
Linux系统编程|信号进阶 + SystemV IPC(消息队列、共享内存)
linux·c语言·开发语言·算法·青少年编程·vim
典典分享指南32 分钟前
短视频分镜提示词:让 AI 出片的产品口播
java·c#·bash·composer·symfony
IT_Octopus34 分钟前
G1 与 GC 日志入门课程(以本次离线菜单 Full GC 事故为教材)
java·jvm
小王C语言38 分钟前
QT 基础:QT SDK 下载、配置、新建项目、项目代码解释
开发语言·qt
cfm_291441 分钟前
ReentrantLock 中 lock 与 tryLock 核心区别
java
.Hypocritical.1 小时前
Tomcat本地部署+远程服务器部署超详细教程
java·服务器·tomcat