Dapr+Net6 服务调用04:集群负载均衡(k8s)

1. 认识Dapr集群组件

1.1. 架构

1.2. Dapr组件的作用

kubectl get pods

  • dapr-dashboard:              仪表盘,查看集群运行情况
  • dapr-operator:                  管理组件(state stores, pub/subs, etc.)
  • dapr-placement-server:    将actor实例映射到pods
  • dapr-sentry:                      管理服务之间的mTLS并做为证书颁发机构
  • dapr-sidecar-injector:       Dapr 注入 annotated pods(一个pod里有app和daprd两个container)

1.3. Dapr边车注解

 annotations:
    dapr.io/enabled: "true" # 允许注入daprd作为service01的的sidecar
    dapr.io/app-id: "service01"
    dapr.io/app-port: "80"

2. 请参考上一篇文章创建基础工程

https://shuaihj.blog.csdn.net/article/details/122670268icon-default.png?t=M1H3https://shuaihj.blog.csdn.net/article/details/122670268

3. 上传Service01和Service02的Docker镜像

3.1. 登录docker hub

https://hub.docker.com/
docker login

3.2. 给service01和service02打镜像

docker build -t netcorecore/service01:v1 -f ./Service01/Dockerfile .
docker build -t netcorecore/service02:v1 -f ./Service02/Dockerfile .

3.3. 上传Service01和service02的镜像

docker push netcorecore/service01:v1
docker push netcorecore/service02:v1

3.4. 查看上传结果

4. 创建Service01的部署文件: service01.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: service01
  labels:
    app: service01
spec:
  replicas: 2 # 2个副本
  selector:
    matchLabels:
      app: service01
  template:
    metadata:
      labels:
        app: service01
      annotations:
        dapr.io/enabled: "true" # 开启Dapr边车
        dapr.io/app-id: "service01"
        dapr.io/app-port: "80"
    spec:
      containers:
      - name: service01
        image: docker.io/netcorecore/service01:v1

5. 创建Service02的部署文件: service02.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: service02
  labels:
    app: service02
spec:
  replicas: 1
  selector:
    matchLabels:
      app: service02
  template:
    metadata:
      labels:
        app: service02
      annotations:
        dapr.io/enabled: "true"  # 开启Dapr边车
        dapr.io/app-id: "service02"
        dapr.io/app-port: "80"
    spec:
      containers:
      - name: service02
        image: docker.io/netcorecore/service02:v1        
---
apiVersion: v1
kind: Service
metadata:
  name: service02
spec:
  type: NodePort
  selector:
    app: service02
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30001

6. 部署到k8s集群

kubectl apply -f service01.yaml
kubectl apply -f service02.yaml

7. 查看部署结果

kubectl get service

8. 访问k8s集群,验证负载均衡效果

http://localhost:30001/api/hello
  • 刷新两次页面,验证负载均衡效果

9. 验证service02是否和dapr sidecar共同存在于一个pod中

9.1. 查看pod

kubectl get pods

9.2. 查看service02的pod中的container

kubectl describe pod service02-69b5c9fcc6-t5r8l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敦格

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值