https://cloud.tencent.com/document/product/457/54171 # 此外 slave版本的Jenkins 和 kubecot , Prometheus 的聚合告警规则也都在这里:https://cloud.tencent.com/document/product/457/49892
NB
1 打包原始java镜像
FROM centos:7
RUN echo "ip_resolve=4" >> /etc/yum.conf
RUN yum update -y && yum install -y java-1.8.0-openjdk
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone
ENV workdir /app/
ENV jar spring-boot-hello-1.0.jar
COPY target/${jar} ${workdir}
WORKDIR ${workdir}
CMD ["sh", "-ec", "exec java ${JAVA_OPTS} -jar ${jar}"]
二 获取master端 skywalking的相关参数
部署应用
部署应用至 Kubernetes 时,需修改以下几项:
增加 Skywalking Agent 的 initContainers,以 sidecar 模式挂载 agent。qcloud-tsw/tsw-dist-of-apache-skywalking 镜像已发布到TKE公共镜像,镜像版本前三位对应 Skywalking 的版本,如示例中 v8.3.0.1 对应 Skywalking 的 v8.3.0 版本。
JAVA_OPTS 环境变量添加 agent 启动目录。
添加 Skywalking Agent 配置的环境变量,取值可以从 TSW 接入指引页面 获取。
SW_AGENT_COLLECTOR_BACKEND_SERVICES = {collector.backend_service} 后端上报地址
SW_AGENT_AUTHENTICATION = {agent.authentication} 数据上报鉴权凭证 # 这个鉴权没弄过
SW_AGENT_NAME = {agent.service_name} 服务名
三 k8s里面启动 init的 skywalking容器
apiVersion: apps/v1
kind: Deployment
metadata:name: hello-demo
spec:replicas: 1selector:matchLabels:app: hello-demotemplate:metadata:labels:app: hello-demospec:initContainers:- name: sw-agent-sidecarimage: ccr.ccs.tencentyun.com/qcloud-tsw/tsw-dist-of-apache-skywalking:v8.3.0.1imagePullPolicy: IfNotPresentcommand: ['sh']args: ['-c','mkdir -p /skywalking/agent && cp -r /usr/skywalking/agent/* /skywalking/agent']volumeMounts:- mountPath: /skywalking/agentname: sw-agentcontainers:- name: hello-demoimage: ccr.ccs.tencentyun.com/tsw_demo/tsw_demo_hello:v1.0volumeMounts:- mountPath: /usr/skywalking/agentname: sw-agentenv:- name: JAVA_OPTSvalue: "-javaagent:/usr/skywalking/agent/skywalking-agent.jar"- name: SW_AGENT_COLLECTOR_BACKEND_SERVICESvalue: "ap-guangzhou.tencentservicewatcher.com:11800"- name: SW_AGENT_NAMEvalue: "tke-hello-demo"- name: SW_AGENT_AUTHENTICATIONvalue: "tsw_site@example"volumes:- name: sw-agentemptyDir: {}------
apiVersion: v1
kind: Service
metadata:name: hello-demolabels:app: hello-demo
spec:type: ClusterIPports:- port: 80protocol: TCPname: httpselector:app: hello-demo