K8S 搭建 Pinpoint (七、构建测试镜像,进行测试 )

构建测试镜像

# 下载 agent
mkdir -p /data/demo
cd /data/demo
wget https://github.com/pinpoint-apm/pinpoint/releases/download/v2.1.0/pinpoint-agent-2.1.0.tar.gz

tar zxvf pinpoint-agent-2.1.0.tar.gz
cd /data/demo/pinpoint-agent/profiles/release
cp pinpoint.config  pinpoint.config.ori

vi pinpoint.config
# 把 profiler.transport.grpc.collector.ip 的值指向 pinpoint colector 地址
profiler.transport.grpc.collector.ip=pinpoint-collector.pinpoint

cd /data/demo

# 把 demo-0.0.1-SNAPSHOT.jar 放到这里,这个jar包的功能会起一个服务,访问 /hello 接口会返回 hello spring

cat  Dockerfile
FROM openjdk:8u302-slim
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
ADD demo-0.0.1-SNAPSHOT.jar demo.jar
ADD pinpoint-agent-2.1.0 /pinpoint-agent/
COPY docker-entrypoint.sh /
CMD [ "/bin/bash", "/docker-entrypoint.sh" ]

# agentId 最大支持24个字母,必须不同,若是 K8S 多个副本,applicationName 必须一样
# agentId 如果自动取最后的值,可以写成 ${HOSTNAME##*-}; ${appName} 是通过 deployment.yml 中 env 获取 metadata.labels['app'] 中的,值,这里 app 要注意,也可能写成了其他名字
cat docker-entrypoint.sh 
#!/bin/bash
java -javaagent:/pinpoint-agent/pinpoint-bootstrap-2.1.0.jar  -Dpinpoint.agentId=${HOSTNAME} -Dpinpoint.applicationName=${appName} ${JVM:-Xmx512m -Xms512m} -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/ -Djava.security.egd=file:/dev/./urandom -Duser.timezone=GMT+08 -jar /${appName}.jar

docker build -t harbor.junengcloud.com/tmp/pinpoint-demo:0.0.11 .
docker push harbor.junengcloud.com/tmp/pinpoint-demo:0.0.11

测试,在master中创建

mkdir -p /data/yaml/default/pinpoint-demo
cd /data/yaml/default/pinpoint-demo

cat deployment.yml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo
spec:
  replicas: 2
  selector:
    matchLabels:
      app: demo
  template:
    metadata:
      labels:
        app: demo
    spec:
      containers:
      - name: demo
        image: harbor.junengcloud.com/tmp/pinpoint-demo:0.0.11
        imagePullPolicy: IfNotPresent
        env:
        - name: JVM
          value: "-Xms1024m -Xmx1024m"
        - name: appName
          valueFrom:
            fieldRef:
              fieldPath: metadata.labels['app'] 

kubectl apply -f  deployment.yml

vi svc.yaml 
apiVersion: v1
kind: Service
metadata:
  labels:
    app: pinpoint-demo
  name: pinpoint-demo
spec:
  ports:
  - name: http
    port: 8080
    targetPort: 8080
    nodePort: 30079
  selector:
    app: pinpoint-demo
  type: NodePort

kubectl apply -f  svc.yaml

在 pinpoint web 界面查看


posted @ 2021-09-17 16:58  klvchen  阅读(1097)  评论(0)    收藏  举报