赞
踩
图片被吞了,来这里看吧:https://juejin.cn/post/7342323580788572194
我也不道啊,老板说要咱就得上啊。咦,好像可以看到服务的各项指标,像SLA,Apdex这些,主要是能够进行请求的链路追踪,bug排查的利器。
总之就是不管三七二十一,先整上去。
部署其实很简单,参考这个仓库的内容
https://github.com/apache/skywalking-helm
oap: image: tag: 9.7.0 storageType: elasticsearch replicas: 1 env: SW_CORE_RECORD_DATA_TTL: "10" # 设置记录数据的保留时间 SW_CORE_METRICS_DATA_TTL: "10" # 经过聚合处理的指标数据的保留时间 SW_TELEMETRY: "prometheus" SW_HEALTH_CHECKER: "default" SW_ENABLE_UPDATE_UI_TEMPLATE: "true" readinessProbe: tcpSocket: port: 12800 initialDelaySeconds: 50 periodSeconds: 10 failureThreshold: 30 resources: requests: memory: 2.6Gi ui: image: tag: 9.7.0 elasticsearch: enabled: true replicas: 1 minimumMasterNodes: 1 nodeGroup: "single-node" persistence: enabled: true initResources: requests: memory: 1.5Gi clusterHealthCheckParams: "wait_for_status=yellow&timeout=1s" volumeClaimTemplate: accessModes: [ "ReadWriteOnce" ] storageClassName: ebs-hdd resources: requests: storage: 512Gi
本来我的Skywalking
版本是 9.6.0
但是有个bug,Endpoints 页面如果涉及的Endpoint过多就会报错 后面我升级了 9.7.0
版本。
底层的存储组件使用 单节点ES,存储卷我用的是hdd的,因为是测试的,就省着用。对性能有要求的同学可以使用多节点,挂载SSD类型的磁盘。
注意调整这两个参数,SW_CORE_RECORD_DATA_TTL和SW_CORE_METRICS_DATA_TTL。
我使用机械盘,保持10天的数据就到顶了。如果这个值加大,会比较慢。这个根据自己的需求来确定。
# helm chat 的版本
export SKYWALKING_RELEASE_VERSION=4.5.0
# helm 的 release name
export SKYWALKING_RELEASE_NAME=skywalking
# k8s 的命名空间
export SKYWALKING_RELEASE_NAMESPACE=skywalking
# 部署
helm install "${SKYWALKING_RELEASE_NAME}" \
oci://registry-1.docker.io/apache/skywalking-helm \
--version "${SKYWALKING_RELEASE_VERSION}" \
-n "${SKYWALKING_RELEASE_NAMESPACE}" -f ./values-my-es.yaml
执行需要一些时间,完成后可以在K8S中看到
ES 的 Stateful Sets
SkyWalking 的 Deployments
修改配置文件时,需要更新 对应的 helm release
export HELM_EXPERIMENTAL_OCI=1
export SKYWALKING_RELEASE_VERSION=4.5.0
helm upgrade -f ./values-my-es.yaml "skywalking" oci://registry-1.docker.io/apache/skywalking-helm --version "${SKYWALKING_RELEASE_VERSION}" -n skywalking
接入采用initContainer无侵入方式在K8s集成,原理是共享磁盘。
- name: skywalking-agent
emptyDir: {}
initContainers:
- name: agent-container
image: apache/skywalking-java-agent:9.1.0-alpine
imagePullPolicy: IfNotPresent
volumeMounts:
- name: skywalking-agent
mountPath: /agent
command: [ "/bin/sh" ]
args: [ "-c", "cp -R /skywalking/agent /agent/" ]
- name: skywalking-agent
emptyDir: {}
containers: - name: <example-name> image: <image> ports: - containerPort: <port> env: - name: VA_OPTS value: "-Dfile.encoding=utf-8 -Duser.timezone=UTC" - name: JAVA_TOOL_OPTIONS value: "-javaagent:/skywalking/agent/skywalking-agent.jar" - name: SW_AGENT_NAMESPACE value: "dev" - name: SW_AGENT_NAME value: "dev::example-name" - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES value: "skywalking-skywalking-helm-oap.skywalking.svc.cluster.local:11800" volumeMounts: - name: skywalking-agent mountPath: /skywalking
这样配置之后,启动 deployment 时,会先初始化一个 initContainer,然后在启动核心的 container pod。
完美
apache/skywalking-helm: Apache SkyWalking Kubernetes Deployment Helm Chart (github.com)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。