1. Kubernetes 部署 Sentinel Dashboard 1.8.9 完整指南
Sentinel 是阿里巴巴开源的分布式系统流量控制组件,而 Sentinel Dashboard 则是其可视化控制台。在 Kubernetes 集群中部署 Sentinel Dashboard 可以方便地管理微服务架构中的流量控制规则。本文将详细介绍如何在 K8s 中部署 Sentinel Dashboard 1.8.9 版本,包括镜像准备、资源配置和实际部署的全过程。
2. 准备工作与环境要求
2.1 基础环境检查
在开始部署前,请确保你的 Kubernetes 集群满足以下要求:
- 正常运行中的 Kubernetes 集群(版本 1.16+)
- 配置好的 kubectl 命令行工具
- Docker 环境(用于镜像处理)
- 可用的私有镜像仓库(如 Harbor、Nexus 等)
- 已配置的 NFS StorageClass(用于持久化存储)
提示:可以通过
kubectl version和kubectl get nodes命令验证集群状态。
2.2 存储准备
Sentinel Dashboard 需要持久化存储日志数据,因此需要预先配置好 StorageClass。本文以 NFS 为例:
bash复制# 检查集群中可用的 StorageClass
kubectl get storageclass
如果输出中没有可用的 StorageClass,需要先配置 NFS 服务并创建对应的 StorageClass。可以参考 Kubernetes 官方文档或相关教程进行设置。
3. 镜像准备与处理
3.1 拉取官方镜像
我们使用社区维护的 bladex/sentinel-dashboard 镜像:
bash复制docker pull bladex/sentinel-dashboard:1.8.9
docker images | grep bladex/sentinel
3.2 镜像标签与推送
将镜像重新打标签并推送到私有仓库:
bash复制docker tag bladex/sentinel-dashboard:1.8.9 your-private-registry.com/bladex/sentinel-dashboard:1.8.9
docker push your-private-registry.com/bladex/sentinel-dashboard:1.8.9
注意:推送前确保已登录私有镜像仓库(
docker login your-private-registry.com)
4. Kubernetes 资源配置
4.1 创建 PVC 配置
创建 sentinel-pvc.yaml 文件:
yaml复制apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: sentinel
labels:
app: sentinel
spec:
accessModes:
- ReadWriteOnce
storageClassName: "nfs-storage"
resources:
requests:
storage: 10Gi
关键参数说明:
accessModes: ReadWriteOnce:单节点读写模式storageClassName:必须与集群中已有的 StorageClass 名称一致storage: 10Gi:分配的存储空间大小
4.2 创建 StatefulSet 和服务配置
创建 sentinel-statefulset.yaml 文件:
yaml复制apiVersion: v1
kind: Service
metadata:
labels:
app: sentinel
name: sentinel-node
spec:
type: NodePort
ports:
- name: "web"
port: 8858
targetPort: 8858
nodePort: 30280
selector:
app: sentinel
---
apiVersion: v1
kind: Service
metadata:
name: sentinel
labels:
app: sentinel
spec:
type: ClusterIP
ports:
- port: 8858
targetPort: 8858
name: web
- port: 8719
targetPort: 8719
name: api
selector:
app: sentinel
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: sentinel
namespace: default
labels:
app: sentinel
spec:
serviceName: sentinel
replicas: 1
selector:
matchLabels:
app: sentinel
template:
metadata:
labels:
app: sentinel
spec:
containers:
- name: sentinel
image: your-private-registry.com/bladex/sentinel-dashboard:1.8.9
imagePullPolicy: IfNotPresent
resources:
limits:
cpu: 450m
memory: 1536Mi
requests:
cpu: 400m
memory: 1536Mi
env:
- name: TZ
value: Asia/Shanghai
- name: JAVA_OPT_EXT
value: -Dserver.servlet.session.timeout=7200
- name: SERVER_HOST
value: -Dcsp.sentinel.dashboard.server=sentinel:8858
- name: SERVER_PORT
value: -Dserver.port=8858
- name: SERVER_API
value: -Dcsp.sentinel.api.port=8719
ports:
- containerPort: 8858
- containerPort: 8719
volumeMounts:
- name: vol-log
mountPath: /opt/logs
volumes:
- name: vol-log
persistentVolumeClaim:
claimName: sentinel
imagePullSecrets:
- name: regsecret
配置解析:
- 创建了两个 Service:
- NodePort 类型(30280 端口)用于外部访问
- ClusterIP 类型用于集群内部通信
- StatefulSet 配置:
- 资源限制:CPU 400m-450m,内存 1.5GB
- 环境变量配置时区和 JVM 参数
- 挂载 PVC 用于日志持久化
5. 部署与验证
5.1 创建 PVC
bash复制kubectl apply -f sentinel-pvc.yaml
kubectl get pvc -o wide
预期输出应显示 PVC 状态为 Bound。
5.2 部署 StatefulSet
bash复制kubectl apply -f sentinel-statefulset.yaml
kubectl get pod -o wide | grep sentinel
kubectl get services -o wide | grep sentinel
检查 Pod 状态应为 Running,服务应正常分配 ClusterIP 和 NodePort。
5.3 访问 Dashboard
通过任意节点 IP 和 30280 端口访问:
code复制http://<node-ip>:30280
默认登录凭证:
- 用户名:sentinel
- 密码:sentinel
成功登录后应看到 Sentinel Dashboard 的初始界面。
6. 常见问题与解决方案
6.1 镜像拉取失败
错误现象:
code复制ErrImagePull or ImagePullBackOff
解决方案:
- 检查镜像地址是否正确
- 验证私有仓库的访问权限
- 确保 imagePullSecrets 配置正确
6.2 PVC 无法绑定
错误现象:
code复制Pending 状态持续
解决方案:
- 检查 StorageClass 是否存在且可用
- 验证 NFS 服务器是否正常运行
- 检查 PVC 配置中的 storageClassName 是否正确
6.3 服务无法访问
错误现象:
code复制无法通过 NodePort 访问
解决方案:
- 检查防火墙规则是否放行 30280 端口
- 验证 NodePort 服务是否正常创建
- 检查 Pod 是否正常运行(
kubectl logs <pod-name>)
7. 高级配置与优化
7.1 自定义登录凭证
可以通过环境变量修改默认凭证:
yaml复制env:
- name: SENTINEL_USERNAME
value: "admin"
- name: SENTINEL_PASSWORD
value: "yourpassword"
7.2 高可用部署
修改 StatefulSet 配置实现多副本:
yaml复制replicas: 2
注意:多实例部署需要考虑会话共享问题,建议配置 Redis 等外部会话存储
7.3 资源监控与告警
可以配置 Prometheus 监控 Sentinel 指标:
- 暴露 metrics 端口
- 配置 ServiceMonitor(如使用 Prometheus Operator)
8. 维护与升级
8.1 日志查看
bash复制kubectl logs -f <pod-name>
日志默认存储在挂载的 PVC 中,路径为 /opt/logs。
8.2 版本升级
升级步骤:
- 拉取新版本镜像并推送到私有仓库
- 修改 StatefulSet 中的镜像版本
- 滚动更新部署
bash复制kubectl set image statefulset/sentinel sentinel=your-private-registry.com/bladex/sentinel-dashboard:1.8.10
8.3 备份与恢复
重要数据包括:
- 持久化的日志
- 配置的规则(建议通过 API 定期导出)
可以通过备份 PVC 数据实现完整恢复。