背景:

参照上文 Kubernetes 1.20.5搭建sentinel 。想搭建一个服务去测试下sentinel服务的表现形式。当然了其他服务还没有集成 就找了一个demo,参照:https://blog.csdn.net/liuhuiteng/article/details/107399979

一. Sentinel之alibaba-sentinel-rate-limiting服务测试

1.maven构建测试jar包

参照https://gitee.com/didispace/SpringCloud-Learning/tree/master/4-Finchley/alibaba-sentinel-rate-limiting
image.png
image.png
就修改了连接setinel dashboard的连接修改为kubernetes集群中setinel服务的service ip与8858端口。
maven打包jar包。

image.png

2. 构建image镜像

其实 idea可以直接打出来image镜像的。以后研究吧。复用了一下原来做其他springboot的Dockerfile。
cat Dockerfile

  1. FROM openjdk:8-jdk-alpine
  2. VOLUME /tmp
  3. ADD app.jar app.jar
  4. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

注:我mv了下把打出来的jar包改名为app.jar了…也可以在pom.xml文件中自定义的修改了……

  1. docker build -t ccr.ccs.tencentyun.com/XXXX/testjava:0.3 .
  2. docker push ccr.ccs.tencentyun.com/XXXXX/testjava:0.3

3. 部署测试服务

cat alibaba-sentinel-rate-limiting.yaml

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: test
  5. spec:
  6. replicas: 1
  7. strategy:
  8. rollingUpdate:
  9. maxSurge: 1
  10. maxUnavailable: 1
  11. selector:
  12. matchLabels:
  13. app: test
  14. template:
  15. metadata:
  16. labels:
  17. app: test
  18. spec:
  19. containers:
  20. - name: test
  21. image: ccr.ccs.tencentyun.com/XXXX/testjava:0.3
  22. ports:
  23. - containerPort: 8001
  24. resources:
  25. requests:
  26. memory: "256M"
  27. cpu: "250m"
  28. limits:
  29. memory: "512M"
  30. cpu: "500m"
  31. imagePullSecrets:
  32. - name: tencent
  33. ---
  34. apiVersion: v1
  35. kind: Service
  36. metadata:
  37. name: test
  38. labels:
  39. app: test
  40. spec:
  41. ports:
  42. - port: 8001
  43. protocol: TCP
  44. targetPort: 8001
  45. selector:
  46. app: test

注意:服务就命名为test了 ……

  1. kubectl apply -f alibaba-sentinel-rate-limiting.yaml -n nacos

4. 访问 alibaba-sentinel-rate-limiting服务,观察sentinel dashboard

访问alibaba-sentinel-rate-limiting服务,内部测试就不用ingress对外暴露了。直接内部CluserIP访问了

  1. $kubectl get svc -n nacos
  2. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  3. mysql ClusterIP 172.254.43.125 <none> 3306/TCP 2d9h
  4. nacos-headless ClusterIP None <none> 8848/TCP,7848/TCP 2d8h
  5. sentinel ClusterIP 172.254.163.115 <none> 8858/TCP,8719/TCP 26h
  6. test ClusterIP 172.254.143.171 <none> 8001/TCP 3h5m

kubernetes 服务器集群内部 curl 172.254.143.171:8001/hello curl了十次……
登陆https://sentinel.saynaihe.com/观察

image.png

二. 测试下setinel功能

1. 流控规则

嗯访问了下还行实时监控是有记录了
随手做个流控阈值测试下qps就设置1吧
image.png

image.png
嗯效果如下。哈哈哈哈
image.png
嗯 有失败的了。
image.png
但是发现诡异的是我的这个应该是测试的没有配置存储什么的。经常的实时监控就没有了…..不知道是不是没有配置存储的原因。
image.png

2. 降级规则

降级规则就不测试了 觉得都一样…简单
image.png

3. 热点

image.png

4. 系统规则

image.png

5. 授权规则

image.png

6. 集群流控

image.png
机器列表。嗯 我想把pod变成两个试试 看看是不是我理解的这样会变成2个?
image.png
重温一下kubectl scale —help

  1. kubectl scale deployment/test --replicas=2 -n nacos

image.png
image.png
对于我来说基本效果已经达到…其他的继续研究吧