首页 > 其他分享 >Kubernetes集群通过Helm部署skywalking及测试

Kubernetes集群通过Helm部署skywalking及测试

时间:2023-10-11 15:11:25浏览次数:41  
标签:8.7 name Kubernetes -- agent Helm skywalking root

  目录

 

1.前言

本文主要介绍Kubernetes中如何用Helm3部署skywalking,并对pod应用进行链路追踪。

2.skywalking组件

skywalking的几个组成部分:

  • skywalking-oap-server:后端服务
  • skywalking-ui:ui前端
  • skywalking-es-init: 初始化es集群数据使用
  • elasticsearch:存储skywalking的数据指标

3.Helm部署步骤

skywalking这里使用的版本是8.7版,elasticsearch用的是外部服务的单节点elasticsearch7.1
注意:多个skywalking共用1个elasticsearch,会冲突
可参考官方链接:https://github.com/apache/skywalking-kubernetes

3.1安装包下载

这里使用helm来部署skywalking

# 克隆skywalking-kubernetes到本地
export REPO=chart
git clone https://github.com/apache/skywalking-kubernetes
cd skywalking-kubernetes
helm repo add elastic https://helm.elastic.co

# 更新chart
helm dep up ${REPO}/skywalking
helm repo add skywalking https://apache.jfrog.io/artifactory/skywalking-helm

# 新建namespace
kubectl create namespace skywalking
3.2修改配置

修改values-my-es.yaml文件(修改elasticsearch连接地址,8.7版本的skywalking-oap镜像tag为8.7.0-es7)

[root@k8s-worker-node1 ~]# cd skywalking-kubernetes/chart/skywalking/
[root@k8s-worker-node1 ~/skywalking-kubernetes/chart/skywalking]# ll
total 92
drwxr-xr-x 2 root root  4096 Nov 23 17:54 charts
-rw-r--r-- 1 root root  1559 Nov 23 14:28 Chart.yaml
-rw-r--r-- 1 root root   877 Nov 23 14:28 OWNERS
-rw-r--r-- 1 root root 45982 Nov 23 14:28 README.md
drwxr-xr-x 2 root root  4096 Nov 23 14:28 templates
-rw-r--r-- 1 root root  1026 Nov 23 14:28 values-es6.yaml
-rw-r--r-- 1 root root  1027 Nov 25 13:47 values-es7.yaml
-rw-r--r-- 1 root root  1287 Nov 24 11:12 values-my-es.yaml
-rw-r--r-- 1 root root  1280 Nov 24 10:27 values-my-es.yaml.bak
-rw-r--r-- 1 root root 12032 Nov 24 11:13 values.yaml

# 因为我们用的是现有的elasticsearch,所以这里修改的文件是values-my-es.yaml,建议可以提前备份一份
[root@k8s-worker-node1 ~/skywalking-kubernetes/chart/skywalking]# cat values-my-es.yaml
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Default values for skywalking.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

oap:
  image:
    tag: 8.7.0-es7
  storageType: elasticsearch7

ui:
  image:
    tag: 8.7.0

elasticsearch:
  enabled: false
  config:               # For users of an existing elasticsearch cluster,takes effect when `elasticsearch.enabled` is false
    host: 172.16.108.119
    port:
      http: 9200
    user: "elastic"         # [optional]
    password: "*******"     # [optional]
3.3helm安装
# helm安装
helm install skywalking skywalking/skywalking -n skywalking --values /root/skywalking-kubernetes/chart/skywalking/values-my-es.yaml
3.4访问方式
# 通过nodeport暴露服务端口到集群外,选一个段内没有使用到的端口
kubectl edit svc skywalking-ui -n skywalking

[root@k8s-worker-node1 ~/skywalking-kubernetes/chart/skywalking]# kubectl get svc skywalking-ui -n skywalking -o yaml
apiVersion: v1
kind: Service
metadata:
  annotations:
    meta.helm.sh/release-name: skywalking
    meta.helm.sh/release-namespace: skywalking
  labels:
    app: skywalking
    app.kubernetes.io/managed-by: Helm
    chart: skywalking-4.3.0
    component: ui
    heritage: Helm
    release: skywalking
  name: skywalking-ui
  namespace: skywalking
spec:
  clusterIP: 10.43.123.47
  clusterIPs:
  - 10.43.123.47
  externalTrafficPolicy: Cluster
  internalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - nodePort: 30001
    port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: skywalking
    component: ui
    release: skywalking
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}

此时,就可以使用nodeIP:nodePort的方式访问skywalking的UI界面了。

4.制作skywalking-agent-sidecar镜像

# 下载skywalking-agent
wget https://archive.apache.org/dist/skywalking/8.7.0/apache-skywalking-apm-es7-8.7.0.tar.gz

# 解压
tar zxf apache-skywalking-apm-es7-8.7.0.tar.gz 

# 编写Dockerfile
[root@devops03 ~]# cat Dockerfile 
FROM busybox:latest
LABEL maintainer="even"
COPY apache-skywalking-apm-bin-es7/agent/ /usr/skywalking/agent/ 

# 封装镜像
docker build -t skywalking-agent-sidecar:8.7.0-el7 .
Sending build context to Docker daemon  993.9MB
Step 1/3 : FROM busybox:latest
latest: Pulling from library/busybox
405fecb6a2fa: Pull complete 
Digest: sha256:fcd85228d7a25feb59f101ac3a955d27c80df4ad824d65f5757a954831450185
Status: Downloaded newer image for busybox:latest
 ---> 9d5226e6ce3f
Step 2/3 : LABEL maintainer="even"
 ---> Running in 5930707a4a2c
Removing intermediate container 5930707a4a2c
 ---> f911940de7f1
Step 3/3 : COPY apache-skywalking-apm-bin-es7/agent/ /usr/skywalking/agent/
 ---> b74813f035e7
Successfully built b74813f035e7
Successfully tagged skywalking-agent-sidecar:8.7.0-el7

# 修改tag
docker tag skywalking-agent-sidecar:8.7.0-el7 harbor.xxx.xxx/library/skywalking-agent-sidecar:8.7.0-el7

# 推到harbor
[root@devops03 ~]# docker push harbor.xxx.xxx/library/skywalking-agent-sidecar:8.7.0-el7 
The push refers to repository [harbor.xxx.xxx/library/skywalking-agent-sidecar]
6efbbcc0e641: Pushed 
40cf597a9181: Pushed 
8.7.0-el7: digest: sha256:d9d842c53c848cfb81f2033b4d0ac4cd73fa39a25b199ba2c96529a9e2506d2d size: 739

5.在deployment中应用skywalking-agent

可以通过sidecar的方式将skywalking-agent挂载到需要监控的业务deployment中,主要是两部分需要改动,一是通过initContainers初始化加载skywalking-agent的镜像,二是通过volumes把agent文件挂载到业务容器中。

[root@k8s-worker-node1 ~]# cat deploy-skywalking.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: springboot-demo
  namespace: skywalking
  labels:
    app: springboot-demo
spec:
  replicas: 2
  selector:
    matchLabels:
      app: springboot-demo
  template:
    metadata:
      labels:
        app: springboot-demo
    spec:
      # 构建初始化镜像(通过初始化镜像的方式集成SkyWalking Agent)
      initContainers:
        - image: harbor.xxx.xxx/library/skywalking-agent-sidecar:8.7.0-el7
          name: skywalking-agent-sidecar
          imagePullPolicy: IfNotPresent
          command: [ "sh" ]
          args:
            [
                "-c",
                "cp -R /usr/skywalking/agent/* /skywalking/agent",
            ]
          volumeMounts:
            - mountPath: /skywalking/agent
              name: skywalking-agent
      containers:
        - name: springboot-demo
          # image: ${ORIGIN_REPO}/spring-boot-skywalking-demo:${IMAGE_TAG}
          # 这里用的是随便找到的一个springboot项目的镜像
          image: xjk27400861/springbootapp:42
          imagePullPolicy: IfNotPresent
          env:
            - name: TZ
              value: Asia/Shanghai
            - name: BUILD_TAG
              value: ${BUILD_TAG}
            - name: NAMESPACE
              value: skywalking
            #这里通过JAVA_TOOL_OPTIONS,而不是JAVA_OPTS可以实现不通过将agent命令加入到java应用jvm参数而实现agent的集成
            - name: JAVA_TOOL_OPTIONS
              value: -javaagent:/usr/skywalking/agent/skywalking-agent.jar
            - name: SW_AGENT_NAME
              value: springboot-demo
            - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
              # FQDN: servicename.namespacename.svc.cluster.local
              value: skywalking-oap.skywalking.svc:11800
          ports:
            - containerPort: 8080
          resources:
            requests:
              cpu: 200m
              memory: 512Mi
          volumeMounts:
            - mountPath: /usr/skywalking/agent
              name: skywalking-agent
      volumes:
        - name: skywalking-agent
          emptyDir: { }

---
apiVersion: v1
kind: Service
metadata:
  name: springboot-demo
  namespace: skywalking
  labels:
    app: springboot-demo
spec:
  ports:
    - name: port
      port: 80
      protocol: TCP
      targetPort: 8080
  selector:
    app: springboot-demo
  type: ClusterIP

参考链接:
1.https://segmentfault.com/a/1190000039878680/en
2.https://www.cnblogs.com/lina-2159/p/16190984.html

  标签: K8S学习 TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
  TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back     此页面的语言为中文(简体)   翻译为        
  • 中文(简体)
  • 中文(繁体)
  • 丹麦语
  • 乌克兰语
  • 乌尔都语
  • 亚美尼亚语
  • 俄语
  • 保加利亚语
  • 克罗地亚语
  • 冰岛语
  • 加泰罗尼亚语
  • 匈牙利语
  • 卡纳达语
  • 印地语
  • 印尼语
  • 古吉拉特语
  • 哈萨克语
  • 土耳其语
  • 威尔士语
  • 孟加拉语
  • 尼泊尔语
  • 布尔语(南非荷兰语)
  • 希伯来语
  • 希腊语
  • 库尔德语
  • 德语
  • 意大利语
  • 拉脱维亚语
  • 挪威语
  • 捷克语
  • 斯洛伐克语
  • 斯洛文尼亚语
  • 旁遮普语
  • 日语
  • 普什图语
  • 毛利语
  • 法语
  • 波兰语
  • 波斯语
  • 泰卢固语
  • 泰米尔语
  • 泰语
  • 海地克里奥尔语
  • 爱沙尼亚语
  • 瑞典语
  • 立陶宛语
  • 缅甸语
  • 罗马尼亚语
  • 老挝语
  • 芬兰语
  • 英语
  • 荷兰语
  • 萨摩亚语
  • 葡萄牙语
  • 西班牙语
  • 越南语
  • 阿塞拜疆语
  • 阿姆哈拉语
  • 阿尔巴尼亚语
  • 阿拉伯语
  • 韩语
  • 马尔加什语
  • 马拉地语
  • 马拉雅拉姆语
  • 马来语
  • 马耳他语
  • 高棉语
 

标签:8.7,name,Kubernetes,--,agent,Helm,skywalking,root
From: https://www.cnblogs.com/gaoyuechen/p/17757217.html

相关文章

  • 原云生技术Kubernetes和Doker
    一、云计算云计算是一种新型的分布式计算模式,它通过互联网将计算和存储资源进行集中和共享,为用户提供各种计算服务、存储服务、应用服务等.二、原云生CNCF(原云生基金会)为,Kubernetes为第一个项目2019年云原生技术基础和容器(Doker)大规模应用......
  • 软件开发人员 Kubernetes 入门指南|Part 1
    Kubernetes是一个用于部署和管理容器的编排系统。使用Kubernetes,用户可以通过自动执行管理任务(例如在跨节点间扩展容器并在容器停止时重新启动任务),在不同环境中可靠地运行容器。 Kubernetes提供的抽象可以让你从Pod(容器)、Services(网络端点)和Jobs(一次性任务)等应用组件的角度......
  • 微服务监控-Skywalking
       ......
  • Kubernetes 集群 troubleshooting
    Kubernetes集群troubleshooting–陈少文的网站(chenshaowen.com)1、FailedCreatePodSandBox错误Errorresponsefromdaemon:OCIruntimecreatefailed:container_linux.go:380:startingcontainerprocesscaused:process_linux.go:402:gettingthefinalchild'......
  • Kubernetes 部署 Python Flask 项目
    1、编写源代码及Dockerfiletest.pyfromflaskimportFlaskimportsocketapp=Flask(__name__)@app.route('/')defhello():returnsocket.gethostbyname(socket.gethostname())if__name__=='__main__':app.run(host='0.0.0.0......
  • k8s之Helm
    Helm帮助您管理Kubernetes应用——HelmChart,Helm是查找、分享和使用软件构建Kubernetes的最优方式。复杂性管理——即使是最复杂的应用,HelmChart依然可以描述,提供使用单点授权的可重复安装应用程序。易于升级——随时随地升级和自定义的钩子消除您升级的痛苦。分......
  • kubernetes基础排错
    目录删除ping不通pod的IP要查看Kubernetes集群是否正常运行,可以执行以下操作:集群节点状态检查:运行以下命令检查集群中所有节点的状态:CopyCodekubectlgetnodes输出将显示集群中每个节点的名称、状态和相关信息。确保所有节点都处于正常的Ready状态。POD状态检查:......
  • kubernetes 持久化存储
    目录kubernetes持久化存储k8s存储介绍特地对象存储本地存储网络共享存储EmptyDir类型hostPath类型type类型说明持久化存储PV和PVCPV和PVC生命周期PV和PVC需要注意的地方pv资源清单PVC资源清单POD要挂载PVCwordpress完整综合实践mysqlwordpressmysql主从复制实......
  • 三台Centos7虚拟机部署kubernetes集群服务
     简介kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。部署centos7虚拟机安装Vmwareworkstation......
  • Helm Deploy Online Rancher Demo
    文章目录简介预备条件在线安装RancherHelmChart选择SSL配置安装cert-managerHelm安装Rancher验证RancherServer是否部署成功简介Rancher是一个开源的企业级全栈化容器部署及管理平台。已有超过1900万次下载,4000+生产环境的应用。简单的说,就是一个可以让你通过web......