SkyWalking部署-K8S

本文详细介绍了如何使用kubeadm部署K8S集群并配置Skywalking2.1,包括创建命名空间、给节点打标签、部署OAP和UI,以及采用sidecar模式挂载SkywalkingAgent和微服务对接Skywalking的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、安装K8S集群
kubeadm部署K8s集群V1.19.0
二、部署skywalking
2.1.创建命名空间

kubectl create ns skywalking

2.2.给节点打标签

kubectl label node 节点名 nodetype=wedesign

2.3.skywalking-oap.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: oap
  namespace: skywalking
spec:
  replicas: 1
  selector:
    matchLabels:
      app: oap
      release: skywalking
  template:
    metadata:
      labels:
        app: oap
        release: skywalking
    spec:
      nodeSelector:
       nodetype: wedesign
      containers:
        - name: oap
          image: apache/skywalking-oap-server:6.6.0-es6
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 11800
              name: grpc
            - containerPort: 12800
              name: rest
---
apiVersion: v1
kind: Service
metadata:
  name: oap
  namespace: skywalking
  labels:
    service: oap
spec:
  ports:
    - port: 12800
      name: rest
    - port: 11800
      name: grpc
  selector:
    app: oap
kubectl apply -f skywalking-oap.yml

2.4.skywalking-ui.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ui-deployment
  namespace: skywalking
  labels:
    app: ui
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ui
  template:
    metadata:
      labels:
        app: ui
    spec:
      nodeSelector:
       nodetype: wedesign
      containers:
        - name: ui
          image: apache/skywalking-ui:6.6.0
          ports:
            - containerPort: 8080
              name: page
          env:
            - name: SW_OAP_ADDRESS
              value: oap:12800
---
apiVersion: v1
kind: Service
metadata:
  name: ui
  namespace: skywalking
  labels:
    service: ui
spec:
  ports:
    - port: 8080
      name: page
      nodePort: 31008
  type: NodePort
  selector:
    app: ui
kubectl apply -f skywalking-ui.yml
2.5.访问
http://NodeIP:31008


三、sidecar 模式挂载 agent
参考文章:https://skywalking.apache.org/zh/blog/2019-08-30-how-to-use-Skywalking-Agent.html


四、微服务对接skywalking

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: web
  replicas: 1
  template:
    metadata:
      labels:
        app: web
    spec:
      initContainers:
        - image: spring2go/skywalking-agent-sidecar:6.6.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: web
          image: spring2go/spring-petclinic-web-app:1.0.0.RELEASE
          env:
            - name: JAVA_OPTS
              value: -javaagent:/usr/skywalking/agent/skywalking-agent.jar
            - name: SW_AGENT_NAME
              value: petclinic-web
            - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
              value: oap.skywalking:11800 # FQDN: servicename.namespacename.svc.cluster.local
            - name: SERVER_PORT
              value: "8080"
            - name: VISITS_SERVICE_ENDPOINT
              value: http://visits:8080
            - name: CUSTOMERS_SERVICE_ENDPOINT
              value: http://customers:8080
          volumeMounts:
            - mountPath: /usr/skywalking/agent
              name: sw-agent
      volumes:
        - name: sw-agent
          emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
  name: web
  labels:
    svc: web
spec:
  selector:
    app: web
  ports:
    - name: http
      port: 8080
      targetPort: 8080
  type: ClusterIP

注意:在java启动jar包时需要在java后面添加${JAVA_OPTS}变量,如java ${JAVA_OPTS} -jar /opt/app.jar;如果不是用root用户启动java程序【例如devops】,还需要修改/usr/skywalking目录的所有者为devops

chown -R devops.devops /usr/skywalking


 

### 将单机版 SkyWalking 集成到 Kubernetes (k8s) 环境 为了将单机部署SkyWalking 接入到 Kubernetes 环境中,需要完成以下几个方面的配置和调整: #### 1. **准备 SkyWalking 的 Helm Chart** Apache SkyWalking 提供了官方支持的 Helm Chart 来简化在 Kubernetes 上的安装过程。可以通过以下命令获取最新的 Helm Chart: ```bash helm repo add apache-skywalking https://apache.github.io/skywalking-helm/ helm repo update ``` 使用 Helm 安装 SkyWalkingKubernetes 中: ```bash helm install skywalking apache-skywalking/skywalking \ --set oap.image.repository=apache/skywalking-oap-server \ --set ui.image.repository=apache/skywalking-ui \ --set backend.elasticsearch.enabled=true \ --namespace skywalking --create-namespace ``` 此操作会自动创建一个名为 `skywalking` 的命名空间并部署 SkyWalking 组件[^4]。 #### 2. **修改 Agent 配置文件** 对于运行在 Kubernetes Pod 内的应用程序,需确保其能够连接到 SkyWalking OAP Server。可以在启动应用程序时挂载自定义的 `agent.config` 文件,或者通过环境变量动态设置参数。以下是典型的配置项: ```properties agent.service_name=${SW_AGENT_NAME:my-service} agent.namespace=${SW_AGENT_NAMESPACE:k8s-cluster} collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:skywalking-oap.skywalking.svc.cluster.local:11800} ``` 其中,`skywalking-oap.skywalking.svc.cluster.local` 是默认的服务发现地址,指向 Kubernetes 集群内的 SkyWalking OAP Service[^3]。 #### 3. **注入 SkyWalking Java Agent** 为了让应用程序接入 SkyWalking 跟踪功能,可以采用以下方法之一: - **手动注入**:在 Dockerfile 或者 Deployment YAML 文件中指定 `-javaagent` 参数。 ```yaml spec: containers: - name: my-app-container image: my-application-image:latest args: - "-javaagent:/path/to/skywalking-agent.jar" env: - name: SW_AGENT_NAME value: "my-k8s-service" - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES value: "skywalking-oap.skywalking.svc.cluster.local:11800" ``` - **自动化工具**:利用 Istio 或 Linkerd 等服务网格技术实现透明化的流量拦截与跟踪数据采集[^5]。 #### 4. **持久化存储配置** 推荐启用 Elasticsearch 作为 SkyWalking 数据库后端以保存长期历史记录。Helm Chart 默认已包含该选项 (`backend.elasticsearch.enabled`) ,只需确认集群中有足够的资源满足 ES 运行需求即可。 --- ### 示例代码片段 下面是一个完整的 Kubernetes Deployment YAML 示例,展示如何为 Spring Boot 应用添加 SkyWalking 支持: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: springboot-demo spec: replicas: 1 template: metadata: labels: app: springboot-demo spec: containers: - name: springboot-container image: your-repo/springboot-demo:latest ports: - containerPort: 8080 volumeMounts: - mountPath: /opt/skywalking/agent name: skywalking-agent-volume env: - name: SW_AGENT_NAME value: "springboot-demo" - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES value: "skywalking-oap.skywalking.svc.cluster.local:11800" volumes: - name: skywalking-agent-volume configMap: name: skywalking-agent-configmap --- apiVersion: v1 kind: ConfigMap metadata: name: skywalking-agent-configmap data: agent.config: | agent.service_name=${SW_AGENT_NAME:springboot-demo} agent.namespace=${SW_AGENT_NAMESPACE:k8s-cluster} collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:skywalking-oap.skywalking.svc.cluster.local:11800} ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值