一、准备工作
官网下载链接Downloads | Apache SkyWalking
1.构建agent镜像,上传至镜像仓库
# Dockerfile
FROM busybox:latest
ENV LANG=C.UTF-8
RUN set -eux && mkdir -p /usr/skywalking/agent/
ADD ./ /usr/skywalking/agent/
WORKDIR /
2.oap和ui的镜像在hub仓库找对应的版本,然后搞到自己的私有仓库(过程省略....)也可以自己编译构建GitHub - apache/skywalking: APM, Application Performance Monitoring System
地址:
Docker Hubhttps://hub.docker.com/r/apache/skywalking-oap-serverDocker Hub
https://hub.docker.com/r/apache/skywalking-ui
准备工具及安装包:
registry.cn-hangzhou.aliyuncs.com/zj-test-k8s/skywalking:oap-8.5.0-es7 # docker官方镜像
registry.cn-hangzhou.aliyuncs.com/zj-test-k8s/skywalking:ui-8.5.0 # docker官方镜像
registry.cn-hangzhou.aliyuncs.com/zhongjunkeji/skywalking-agent:8.5.0 # 自己编译
elasticsearch 7.0以上作为存储
1.创建skywalking-oap
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: skywalking-oap
name: skywalking-oap
namespace: skywalking
spec:
replicas: 1
selector:
matchLabels:
app: skywalking-oap
template:
metadata:
labels:
app: skywalking-oap
spec:
initContainers:
- image: registry.cn-hangzhou.aliyuncs.com/zhongjunkeji/skywalking-agent:8.2.0
name: sw-agent-sidecar
imagePullPolicy: IfNotPresent
command: ["sh"]
args:
[
"-c",
"mkdir -p /skywalking/agent && cp -r /usr/skywalking/agent/* /skywalking/agent",
]
volumeMounts:
- mountPath: /skywalking/agent
name: sw-agent
containers:
- name: skywalking-oap
image: registry.cn-hangzhou.aliyuncs.com/zj-test-k8s/skywalking:oap-8.5.0-es7
imagePullPolicy: IfNotPresent
ports:
- containerPort: 12800
name: http
protocol: TCP
- containerPort: 11800
name: grpc
protocol: TCP
resources:
limits:
cpu: '2'
memory: 2Gi
requests:
cpu: '1'
memory: 2Gi
volumeMounts:
- mountPath: /etc/localtime
name: volume-localtime
- mountPath: /usr/skywalking/agent
name: sw-agent
env:
- name: JAVA_OPTS
value: "-Xmx3g -Xms3g"
- name: SW_AGENT_NAME
value: skywalking-oap
- name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
value: skywalking-oap.skywalking:11800 # FQDN: servicename.namespacename.svc.cluster.local
- name: SW_STORAGE
value: elasticsearch7
- name: SW_NAMESPACE
value: "skywalking"
- name: SW_STORAGE_ES_CLUSTER_NODES
value: es-cn-ndgdfghgfjdgyrtg.elasticsearch.aliyuncs.com:9200
- name: SW_ES_USER
value: "elastic"
- name: SW_ES_PASSWORD
value: "XXXXXXX"
- name: SW_CORE_DATA_KEEPER_EXECUTE_PERIOD
value: "25"
- name: SW_CORE_TOPN_REPORT_PERIOD
value: "60"
- name: SW_STORAGE_ES_INDEX_REPLICAS_NUMBER
value: "0"
- name: SW_STORAGE_ES_FLUSH_INTERVAL
value: "15"
- name: SW_STORAGE_ES_BULK_ACTIONS
value: "1500"
volumes:
- emptyDir: {}
name: sw-agent
- hostPath:
path: /etc/localtime
type: ''
name: volume-localtime
---
apiVersion: v1
kind: Service
metadata:
name: skywalking-oap
namespace: skywalking
labels:
service: skywalking-oap
spec:
type: ClusterIP
ports:
- name: http
port: 12800
protocol: TCP
targetPort: 12800
- name: grpc
port: 11800
protocol: TCP
targetPort: 11800
selector:
app: skywalking-oap
2.创建skywalking-ui
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: skywalking-ui
name: skywalking-ui
namespace: skywalking
spec:
replicas: 1
selector:
matchLabels:
app: skywalking-ui
template:
metadata:
labels:
app: skywalking-ui
spec:
containers:
- env:
- name: SW_OAP_ADDRESS
value: "skywalking-oap:12800" # 注意修改成自己的oap地址(k8s-services:port)
image: registry.cn-hangzhou.aliyuncs.com/zj-test/skywalking:ui-8.5.0
imagePullPolicy: IfNotPresent
name: skywalking-ui
ports:
- containerPort: 8080
name: http
protocol: TCP
resources:
limits:
cpu: '2'
memory: 1Gi
requests:
cpu: '1'
memory: 1Gi
volumeMounts:
- mountPath: /etc/localtime
name: volume-localtime
volumes:
- hostPath:
path: /etc/localtime
type: ''
name: volume-localtime
---
apiVersion: v1
kind: Service
metadata:
name: skywalking-ui
namespace: skywalking
labels:
service: skywalking-ui
spec:
ports:
- port: 8080
name: page
nodePort: 31000
type: NodePort
selector:
app: skywalking-ui
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: skywalking-ui-ingress
namespace: skywalking
annotations:
nginx.ingress.kubernetes.io/service-weight: ""
spec:
rules:
- host: skywalking.xxxx.com # 访问域名
http:
paths:
- path:
backend:
serviceName: skywalking-ui
servicePort: 8080
path: /
pathType: ImplementationSpecific
3.接入项目
apiVersion: apps/v1
kind: Deployment
metadata:
name: smart
namespace: production
spec:
replicas: 1
selector:
matchLabels:
app: smart
template:
metadata:
labels:
app: smart
spec:
initContainers:
- image: registry.cn-hangzhou.aliyuncs.com/zhongjunkeji/skywalking-agent:8.2.0-pro
name: sw-agent-sidecar
imagePullPolicy: IfNotPresent
command: ["sh"]
args:
[
"-c",
"mkdir -p /skywalking/agent && cp -r /usr/skywalking/agent/* /skywalking/agent",
]
volumeMounts:
- mountPath: /skywalking/agent
name: sw-agent
containers:
- image: ${IMAGE}
name: smart
ports:
- containerPort: 9534
protocol: TCP
readinessProbe: #就绪探针
tcpSocket:
port: 9534
initialDelaySeconds: 5
periodSeconds: 5
env:
- name: TZ
value: Asia/Shanghai
- name: JAVA_TOOL_OPTIONS
value: -javaagent:/usr/skywalking/agent/skywalking-agent.jar -XX:MaxRAMPercentage=75.0
- name: SW_AGENT_NAME
value: etc-data
- name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
value: skywalking-oap.default:11800 # FQDN: servicename.namespacename.svc.cluster.local
- name: spring.profiles.active
value: dev
- name: logging.file
value: /var/logs/smart.log
- name: aliyun_logs_smart
value: /var/logs/smart.log
resources:
#硬限制
limits:
cpu: 2
memory: 3Gi
#运行pod时请求的资源数量
requests:
cpu: 100m
memory: 1Gi
volumeMounts:
- mountPath: /usr/skywalking/agent
name: sw-agent
volumes:
- name: sw-agent
emptyDir: {}
4.大功告成:访问skywalking地址 http://skywalking.xxxx.com