使用Helm部署 skywalking
·
使用Helm部署 skywalking
SkyWalking-Kubernetes 仓库提供了在 Kubernetes 集群中安装和配置 SkyWalking 的方法。
环境
- Helm v3.6.3
- ACK 集群
简述
在部署 SkyWalking 时,必须显式设置一些必需的值。
| name | description | example |
|---|---|---|
| oap.image.tag | the OAP docker image tag | 8.1.0-es6, 8.1.0-es7, etc. |
| oap.storageType | the storage type of the OAP | elasticsearch, elasticsearch7, etc. |
| ui.image.tag | the UI docker image tag | 8.0.1, 8.1.0, ect. |
你可以通过命令行设置这些必要的值(例如–set oap.image.tag=8.1.0-es6 --set oap.storageType=elasticsearch),或者在一个单独的文件中编辑它们(例如values-es6.Yaml, values-es7.Yaml),并使用 -f 或 --values=。
准备工作
克隆项目,更新chart仓库
git clone https://github.com/apache/skywalking-kubernetes
cd skywalking-kubernetes/chart
helm repo add elastic https://helm.elastic.co
helm dep up skywalking
export SKYWALKING_RELEASE_NAME=skywalking
export SKYWALKING_RELEASE_NAMESPACE=skywalking-dev
创建elastic-pv.yaml,持久化elasticsearch数据
注意:磁盘可用区一定要跟节点可用区一致。
apiVersion: v1
kind: PersistentVolume
metadata:
name: d-bp12te2l9pjl5nccecn5
labels:
alicloud-pvname: d-bp12te2l9pjl5nccecn5
failure-domain.beta.kubernetes.io/zone: cn-hangzhou-i
failure-domain.beta.kubernetes.io/region: cn-hangzhou
spec:
capacity:
storage: 20Gi
storageClassName: disk
accessModes:
- ReadWriteOnce
csi:
driver: "diskplugin.csi.alibabacloud.com"
fsType: "ext4"
volumeHandle: "d-bp12te2l9pjl5nccecn5"
readOnly: false
应用elastic-pv.yaml,创建pv卷
kubectl apply -f elastic-pv.yaml
部署 SkyWalking 8.7.0 & Elasticsearch 7.5.2
部署 Elasticsearch 7.5.2
手动部署Elasticsearch,官方chart部署会有各种意想不到的问题。
apiVersion: apps/v1
kind: StatefulSet
metadata:
annotations:
esMajorVersion: "7"
labels:
app: elasticsearch-master
name: elasticsearch-master
namespace: skywalking-dev
spec:
replicas: 1
selector:
matchLabels:
app: elasticsearch-master
serviceName: elasticsearch-master-headless
template:
metadata:
labels:
app: elasticsearch-master
name: elasticsearch-master
spec:
containers:
- env:
- name: node.name
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: cluster.initial_master_nodes
value: elasticsearch-master-0,
- name: discovery.seed_hosts
value: elasticsearch-master-headless
- name: cluster.name
value: elasticsearch
- name: network.host
value: 0.0.0.0
- name: ES_JAVA_OPTS
value: -Xmx512m -Xms512m
- name: node.data
value: "true"
- name: node.ingest
value: "true"
- name: node.master
value: "true"
image: elasticsearch:7.5.2
imagePullPolicy: IfNotPresent
name: elasticsearch
ports:
- containerPort: 9200
name: http
protocol: TCP
- containerPort: 9300
name: transport
protocol: TCP
readinessProbe:
httpGet:
path: /_cluster/health?local=true
port: 9200
initialDelaySeconds: 10
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: 100m
memory: 1Gi
securityContext:
capabilities:
drop:
- ALL
runAsNonRoot: true
runAsUser: 1000
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /usr/share/elasticsearch/data
name: elasticsearch-master
dnsPolicy: ClusterFirst
nodeSelector:
kubernetes.io/os: linux
restartPolicy: Always
schedulerName: default-scheduler
securityContext:
fsGroup: 1000
runAsUser: 1000
terminationGracePeriodSeconds: 120
updateStrategy:
type: RollingUpdate
volumeClaimTemplates:
- apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: elasticsearch-master
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
selector:
matchLabels:
alicloud-pvname: d-bp18b67rjvn26sgccywi
storageClassName: alicloud-disk-efficiency
volumeMode: Filesystem
查看Elasticsearch是否部署成功
kubectl get pods -n skywalking-dev
NAME READY STATUS RESTARTS AGE
elasticsearch-master-0 1/1 Running 0 7m2
查看数据卷挂载情况
kubectl get pvc -n skywalking-dev
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
elasticsearch-master-elasticsearch-master-0 Bound d-bp18b67rjvn26sgccywi 20Gi RWO alicloud-disk-efficiency 7m57s
部署SkyWalking 8.7.0
修改values-my-es.yaml
oap:
image:
repository: apache/skywalking-oap-server
tag: 8.7.0-es7
storageType: elasticsearch7
ui:
image:
repository: apache/skywalking-ui
tag: 8.7.0
elasticsearch:
enabled: false
config:
host: 192.168.1.21
port:
http: 9200
安装前调试预演
使用自建ES,没必要显性设置一些值。
helm install --debug --dry-run "${SKYWALKING_RELEASE_NAME}" skywalking -n "${SKYWALKING_RELEASE_NAMESPACE}" -f ./skywalking/values-my-es.yaml
安装
helm install "${SKYWALKING_RELEASE_NAME}" skywalking -n "${SKYWALKING_RELEASE_NAMESPACE}" -f ./skywalking/values-es7.yaml
验证
kubectl get pods -n skywalking-dev
NAME READY STATUS RESTARTS AGE
elasticsearch-master-0 1/1 Running 0 45m
skywalking-es-init-7htv7 0/1 Completed 0 5m4s
skywalking-oap-8fbb9c7d-kzwgc 1/1 Running 0 5m5s
skywalking-oap-8fbb9c7d-scjgf 1/1 Running 0 5m5s
skywalking-ui-7c69dd8fdd-kjpfn 1/1 Running 0 5m5s
更新
helm upgrade "${SKYWALKING_RELEASE_NAME}" skywalking -n "${SKYWALKING_RELEASE_NAMESPACE}" -f ./skywalking/values-es7.yaml
参考文档:
[1]: https://github.com/apache/skywalking-kubernetes
[2]: https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-health.html#request-params%20wait_for_status
[3]: https://github.com/apache/skywalking-kubernetes/blob/v4.1.0/chart/skywalking/README.md
更多推荐
所有评论(0)