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
相关推荐
学长毕设1 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
C^h1 小时前
c++ string
开发语言·c++
raindayinrain1 小时前
c++高性能--原子操作,无锁编程,操作顺序
开发语言·c++·性能优化
学逆向的1 小时前
C++ 合并命名空间
开发语言·c++·网络安全
Zhao-Jichao2 小时前
VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具
开发语言·c++
zzu123zsw2 小时前
从臃肿的模板调用到声明式契约:深入 UniHttp 动态代理与多渠道生命周期扩展
java·spring boot·microsoft·unihttp
学逆向的2 小时前
C 局部静态变量
c语言·开发语言·网络安全
大都督会赢的3 小时前
C++第一节课
开发语言·c++
“AI国潮设计-小江”3 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
源码集结号3 小时前
云诊所门诊系统源码,基于SpringBoot+Vue.js架构,支持多租户设计与Docker容器化部署
java·spring boot·源码·医院信息系统·门诊系统·诊所系统