Skywalking8.0.1在K8s中的使用
Skywalking8.0.1在K8s中的使用
1. 准备
ElasticSearch 7.5.1
SkyWalking APM 8.0.1
2. ElasticSearch准备
此处es使用helm3部署,地址 https://github.com/elastic/helm-charts/tree/7.8.1/elasticsearch
clone
将 helm-charts clone 到本地
git clone https://github.com/elastic/helm-charts.git
git checkout 7.8.1
edit
按需修改 helm-charts/elasticsearch/values.yaml 中 imageTag,我需要7.5.1
imageTag: "7.5.1"
install
install:
cd helm-charts
helm install es4skywalking .\es4skywalking\ -n fn-rec
check
查看是否正常启动
kubectl get pods -n <your-namespace> -o wide
kubectl describe pod <pod-name> -n <your-namespace>
3. skywalking部署
同样通过helm3来安装。
clone
git clone https://github.com/apache/skywalking-kubernetes.git
使用已有的es部署
$ cd chart
$ helm repo add elastic https://helm.elastic.co
$ helm dep up skywalking
$ helm install <release_name> skywalking -n <namespace> \
--set elasticsearch.enabled=false \
--set elasticsearch.config.host=<es_host> \
--set elasticsearch.config.port.http=<es_port> \
--set elasticsearch.config.user=<es_user> \
--set elasticsearch.config.password=<es_password>
如:
helm install my-skywalking .\skywalking\ -n fn-rec --set elasticsearch.enabled=false --set elasticsearch.config.host=elasticsearch-skywalking-master-headless --set elasticsearch.config.port.http=9200
check
同样检查是否正确
kubectl get pods -n <your-namespace> -o wide
kubectl describe pod <pod-name> -n <your-namespace>
4. 项目接入skywalking agent
修改目标项目的dockerFile
FROM maven:3.6.3-openjdk-14 AS MAVEN_BUILD
ARG PROFILE
COPY pom.xml /build/
COPY src /build/src/
WORKDIR /build/
RUN mvn clean package -P${PROFILE} -Dmaven.test.skip=true
FROM adoptopenjdk/openjdk14-openj9
WORKDIR /app
COPY --from=MAVEN_BUILD /build/target/demo.jar /app
# 加javaagent参数很重要
ENTRYPOINT ["java ", "-javaagent:/sidecar/agent/skywalking-agent.jar", "--enable-preview","-jar", "demo.jar"]
k8s.yaml
注意 : 镜像中没有JAVA_OPTS这个ENV实际上这个地方不会生效,所以在docker中 -javaagent:/sidecar/agent/skywalking-agent.jar 是需要的。
示例
kind: Deployment
apiVersion: apps/v1
metadata:
name: search-zd
labels:
app: search-zd
spec:
replicas: 1
selector:
matchLabels:
app: search-zd
template:
metadata:
labels:
app: search-zd
annotations:
prometheus.io/scrape: 'true'
prometheus.io/path: '/actuator/prometheus'
prometheus.io/port: '8088'
spec:
initContainers:
- name: skywalking-agent
#使用本地打包测试镜像,正式环境可以使用dockerhub或者私服的镜像容器中心的容器
image: 'search-zd/skywalking-agent:v1.8.0.1'
command: ['cp','-rf','/skywalking/agent/','/sidecar']
imagePullPolicy: IfNotPresent
volumeMounts:
- name: sidecar
mountPath: /sidecar
containers:
- name: search-zd
image: 'search-zd/fn-es-search:1.0.0.5'
env:
# 镜像中没有JAVA_OPTS这个ENV实际上这个地方不会生效,所以在docker中 -javaagent:/sidecar/agent/skywalking-agent.jar 是需要的。
- name: JAVA_OPTS
value: -javaagent:/sidecar/agent/skywalking-agent.jar
- name: SW_AGENT_NAME
value: search-zd
- name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
value: fn-skywalking-oap:11800
ports:
- name: server
containerPort: 8080
protocol: TCP
- name: management
containerPort: 9080
protocol: TCP
livenessProbe:
tcpSocket:
port: 8080
timeoutSeconds: 5
readinessProbe:
tcpSocket:
port: 8080
timeoutSeconds: 5
resources:
limits:
cpu: 2000m
memory: 4Gi
requests:
cpu: 500m
memory: 2Gi
imagePullPolicy: IfNotPresent
volumeMounts:
- name: sidecar
mountPath: /sidecar
restartPolicy: Always
volumes:
- name: sidecar
emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
name: search-zd
spec:
type: ClusterIP
ports:
- name: server
port: 80
targetPort: 8080
- name: management
port: 9080
targetPort: 9080
selector:
app: search-zd
部署
apply:
kubectl apply -f k8s.yaml -n <namespace>
checkout:
kubectl get pods -n <your-namespace> -o wide
kubectl describe pod <pod-name> -n <your-namespace>
简单查看ui:使用 port-forward 转发一下
kubectl port-forward <target-pod> 8080:8080 -n <namespace>
5. 文档
中文文档:https://github.com/SkyAPM/document-cn-translation-of-skywalking/blob/master/docs/zh/8.0.0/README.md
官网:https://skywalking.apache.org/zh/downloads/
还没有评论,来说两句吧...