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
相关推荐
自信150413057599 分钟前
重生之从0开始学习c++之string(上)
开发语言·c++·学习
wangjialelele12 分钟前
从零入门 LangChain:Python 语法详解 + 工具开发 + 结构化输出实战
开发语言·人工智能·python·语言模型·langchain
jinanwuhuaguo14 分钟前
OpenClaw智能体的涌现与异化——复杂系统演化、知识权力重构与文明纪元跃迁(第五篇)
大数据·开发语言·人工智能·重构·安全架构·openclaw
Dillon Dong19 分钟前
【系列主题】拯救 OOM 与构建中断:Next.js 在 Docker 中的静态生成(SSG)避坑指南
开发语言·javascript·docker
AI人工智能+电脑小能手21 分钟前
【大白话说Java面试题】【Java基础篇】第10题:HashMap中的元素是有序存放的吗
java·开发语言·数据结构·后端·面试·哈希算法·哈希表
南境十里·墨染春水25 分钟前
linux学习进展 线程
java·linux·学习
itzixiao26 分钟前
L1-049 天梯赛座位分配(20 分)[java][python][c]
java·开发语言·python
子非鱼@Itfuture36 分钟前
ThreadLocal 是什么?如何用?以及最佳使用场景
java·开发语言·spring
杨凯凡37 分钟前
【024】JVM 参数入门:堆、栈、元空间与典型模板
java·开发语言·jvm
不懒不懒39 分钟前
【PaddleOCR实战指南:图像文字识别、实时摄像头与PyQt5 GUI开发】
开发语言·python