单机部署skywalking接入k8s
时间: 2025-05-28 16:48:25 浏览: 28
### 将单机版 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 安装 SkyWalking 到 Kubernetes 中:
```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}
```
---
阅读全文
相关推荐















