基于k8s部署带skywalking agent的微服务工程
1、访问skywalking官网,下载所需的压缩文件。选择自己需要的文件,分为linux和windows的压缩包(注:这里只部署客户端,服务端另行查找资料)
2、解压文件,将agent文件夹单独拷贝出来
3、配置agent.config文件
主要配置
#用户ui显示的应用名称
agent.service_name=${SW_AGENT_NAME:myapp}
#服务器端收集器地址
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:skywalking-skywalking-oap:11800}
4、在与agent同级目录编写Dockerfile文件,用于打包镜像
FROM busybox:latest
# Add a volume pointing to /tmp
VOLUME /tmp
ADD /agent //agent
5、打包镜像
docker build -t harbor.k8s-dev.com/library/skywalking-agent:6.4.0 .
6、上传镜像到私有仓库
7、项目里的Dockerfile如下
这一行是集成skywalking的关键
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-javaagent:/tmp/agent/skywalking-agent.jar","-jar","app.jar"]
8、部署至k8s的yml文件(注:内容只做参考,请勿直接复制使用)
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
labels:
app: myapp
spec:
replicas: 1
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
initContainers:
- name: skagent
image: harbor.k8s-dev.com/library/skywalking-agent:6.4.0
command: ['cp','-rf','/agent','tmp']
volumeMounts:
- mountPath: /tmp
name: sky-agent-volume
containers:
- name: myapp
env:
- name: APOLLO_META
value: http://172.18.3.129:8080
- name: APP_ID
value: myapp
- name: ENV
value: dev
- name: server_port
value: "80"
image: {appImage}
imagePullPolicy: Always
ports:
- containerPort: 80
volumeMounts:
- mountPath: /tmp
name: sky-agent-volume
imagePullSecrets:
- name: jenkins-harbor-registry
volumes:
- name: sky-agent-volume
emptyDir: {}
9、在k8s中部署应用
kubectl create -f deployment.yml
部署之后使用下面命令查看pod状态
kubectl -n infra describe po myapp-bddddfd5c-lrf9v
10、部署成功,访问skywalking的ui界面,如下图