k8s实战案例之运行dubbo微服务

打印 上一主题 下一主题

主题 531|帖子 531|积分 1593

1、dubbo微服务架构图


通过上述架构可以了解到,生产者通过注册中心,将服务注册至注册中心,消费者通过注册中心找到生产者,从而实现消费者拿到生产者的实际地址,然后直接和生产者通信;管理端通过注册中心发现生产者和消费者,通过svc来管理生产者和消费者;集群外部客户端通过负载均衡器来访问集群内部服务;dubbo产生的数据可以通过pv/pvc将数据放置外部存储,如ceph,nas,nfs等;
2、部署provider服务(生产者)

2.1、准备provider镜像

2.1.1、provider镜像数据目录文件


2.1.2、构建provider镜像Dockerfile
  1. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/provider# cat Dockerfile
  2. #Dubbo provider
  3. FROM harbor.ik8s.cc/pub-images/jdk-base:v8.212
  4. RUN yum install file nc -y
  5. RUN mkdir -p /apps/dubbo/provider
  6. ADD dubbo-demo-provider-2.1.5/  /apps/dubbo/provider
  7. ADD run_java.sh /apps/dubbo/provider/bin
  8. RUN chown nginx.nginx /apps -R
  9. RUN chmod a+x /apps/dubbo/provider/bin/*.sh
  10. CMD ["/apps/dubbo/provider/bin/run_java.sh"]
  11. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/provider#
复制代码
2.1.3、运行provider镜像脚本
  1. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/provider# cat run_java.sh
  2. #!/bin/bash
  3. #echo "nameserver 223.6.6.6" > /etc/resolv.conf
  4. #/usr/share/filebeat/bin/filebeat -c /etc/filebeat/filebeat.yml -path.home /usr/share/filebeat -path.config /etc/filebeat -path.data /var/lib/filebeat -path.logs /var/log/filebeat  &
  5. su - nginx -c "/apps/dubbo/provider/bin/start.sh"
  6. tail -f /etc/hosts
  7. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/provider#
复制代码
2.1.4、构建provider镜像脚本
  1. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/provider# cat build-command.sh
  2. #!/bin/bash
  3. #docker build -t harbor.ik8s.cc/magedu/dubbo-demo-provider:v1  .
  4. #sleep 3
  5. #docker push harbor.ik8s.cc/magedu/dubbo-demo-provider:v1
  6. nerdctl build -t harbor.ik8s.cc/magedu/dubbo-demo-provider:v1  .
  7. nerdctl push harbor.ik8s.cc/magedu/dubbo-demo-provider:v1
  8. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/provider#
复制代码
修改脚本权限
  1. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/provider# chmod a+x dubbo-demo-provider-2.1.5/bin/*.sh
  2. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/provider# ll dubbo-demo-provider-2.1.5/bin/*.sh
  3. -rwxr-xr-x 1 root root 2165 Jun 22  2021 dubbo-demo-provider-2.1.5/bin/dump.sh*
  4. -rwxr-xr-x 1 root root   49 Jun 22  2021 dubbo-demo-provider-2.1.5/bin/restart.sh*
  5. -rwxr-xr-x 1 root root  413 Jun 22  2021 dubbo-demo-provider-2.1.5/bin/server.sh*
  6. -rwxr-xr-x 1 root root 3227 Jun 22  2021 dubbo-demo-provider-2.1.5/bin/start.sh*
  7. -rwxr-xr-x 1 root root  807 Jun 22  2021 dubbo-demo-provider-2.1.5/bin/stop.sh*
  8. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/provider#
复制代码
修改注册中心zookeeper地址

这个注册中心地址我们写zk节点的svc名称即可,如果是在同一名称空间下,直接写svc名称加端口即可,不在同一名称空间下,需要写svc名称.名称空间后面跟上端口即可;
构建provider镜像

2.2、运⾏provider服务

运行provider配置清单
  1. kind: Deployment
  2. #apiVersion: extensions/v1beta1
  3. apiVersion: apps/v1
  4. metadata:
  5.   labels:
  6.     app: magedu-provider
  7.   name: magedu-provider-deployment
  8.   namespace: magedu
  9. spec:
  10.   replicas: 1
  11.   selector:
  12.     matchLabels:
  13.       app: magedu-provider
  14.   template:
  15.     metadata:
  16.       labels:
  17.         app: magedu-provider
  18.     spec:
  19.       containers:
  20.       - name: magedu-provider-container
  21.         image: harbor.ik8s.cc/magedu/dubbo-demo-provider:v1
  22.         #command: ["/apps/tomcat/bin/run_tomcat.sh"]
  23.         #imagePullPolicy: IfNotPresent
  24.         imagePullPolicy: Always
  25.         ports:
  26.         - containerPort: 20880
  27.           protocol: TCP
  28.           name: http
  29. ---
  30. kind: Service
  31. apiVersion: v1
  32. metadata:
  33.   labels:
  34.     app: magedu-provider
  35.   name: magedu-provider-spec
  36.   namespace: magedu
  37. spec:
  38.   type: NodePort
  39.   ports:
  40.   - name: http
  41.     port: 80
  42.     protocol: TCP
  43.     targetPort: 20880
  44.     #nodePort: 30001
  45.   selector:
  46.     app: magedu-provider
复制代码
应用配置清单
  1. root@k8s-master01:~/k8s-data/yaml/magedu/dubbo/provider# kubectl apply -f provider.yaml
  2. deployment.apps/magedu-provider-deployment created
  3. service/magedu-provider-spec created
  4. root@k8s-master01:~/k8s-data/yaml/magedu/dubbo/provider#
复制代码
2.3、验证provider服务

2.3.1、验证pod是否正常running?


2.3.2、zookeeper验证provider注册


3、部署consumer服务(消费者)

3.1、准备consumer镜像

3.1.1、consumer镜像数据目录文件


3.1.2、构建consumer镜像Dockerfile
  1. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/consumer# cat Dockerfile
  2. #Dubbo consumer
  3. FROM harbor.ik8s.cc/pub-images/jdk-base:v8.212
  4. RUN yum install file -y
  5. RUN mkdir -p /apps/dubbo/consumer
  6. ADD dubbo-demo-consumer-2.1.5  /apps/dubbo/consumer
  7. ADD run_java.sh /apps/dubbo/consumer/bin
  8. RUN chown nginx.nginx /apps -R
  9. RUN chmod a+x /apps/dubbo/consumer/bin/*.sh
  10. CMD ["/apps/dubbo/consumer/bin/run_java.sh"]
  11. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/consumer#
复制代码
3.1.3、运行consumer镜像脚本
  1. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/consumer# cat run_java.sh
  2. #!/bin/bash
  3. #echo "nameserver 223.6.6.6" > /etc/resolv.conf
  4. #/usr/share/filebeat/bin/filebeat -c /etc/filebeat/filebeat.yml -path.home /usr/share/filebeat -path.config /etc/filebeat -path.data /var/lib/filebeat -path.logs /var/log/filebeat  &
  5. su - nginx -c "/apps/dubbo/consumer/bin/start.sh"
  6. tail -f /etc/hosts
  7. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/consumer#
复制代码
3.1.4、构建consumer镜像脚本
  1. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/consumer# cat build-command.sh
  2. #!/bin/bash
  3. #docker build -t harbor.ik8s.cc/magedu/dubbo-demo-consumer:v1  .
  4. #sleep 3
  5. #docker push harbor.ik8s.cc/magedu/dubbo-demo-consumer:v1
  6. nerdctl build -t harbor.ik8s.cc/magedu/dubbo-demo-consumer:v1  .
  7. nerdctl push harbor.ik8s.cc/magedu/dubbo-demo-consumer:v1
  8. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/consumer#
复制代码
修改脚本权限
  1. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/consumer# chmod a+x dubbo-demo-consumer-2.1.5/bin/*.sh
  2. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/consumer# ll dubbo-demo-consumer-2.1.5/bin/*.sh
  3. -rwxr-xr-x 1 root root 2165 Jun 22  2021 dubbo-demo-consumer-2.1.5/bin/dump.sh*
  4. -rwxr-xr-x 1 root root   49 Jun 22  2021 dubbo-demo-consumer-2.1.5/bin/restart.sh*
  5. -rwxr-xr-x 1 root root  413 Jun 22  2021 dubbo-demo-consumer-2.1.5/bin/server.sh*
  6. -rwxr-xr-x 1 root root 3227 Jun 22  2021 dubbo-demo-consumer-2.1.5/bin/start.sh*
  7. -rwxr-xr-x 1 root root  807 Jun 22  2021 dubbo-demo-consumer-2.1.5/bin/stop.sh*
  8. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/consumer#
复制代码
修改注册中心zookeeper地址

构建consumer镜像

3.2、运行consumer服务

运行comsumer配置清单
  1. kind: Deployment
  2. #apiVersion: extensions/v1beta1
  3. apiVersion: apps/v1
  4. metadata:
  5.   labels:
  6.     app: magedu-consumer
  7.   name: magedu-consumer-deployment
  8.   namespace: magedu
  9. spec:
  10.   replicas: 1
  11.   selector:
  12.     matchLabels:
  13.       app: magedu-consumer
  14.   template:
  15.     metadata:
  16.       labels:
  17.         app: magedu-consumer
  18.     spec:
  19.       containers:
  20.       - name: magedu-consumer-container
  21.         image: harbor.ik8s.cc/magedu/dubbo-demo-consumer:v1
  22.         #command: ["/apps/tomcat/bin/run_tomcat.sh"]
  23.         #imagePullPolicy: IfNotPresent
  24.         imagePullPolicy: Always
  25.         ports:
  26.         - containerPort: 80
  27.           protocol: TCP
  28.           name: http
  29. ---
  30. kind: Service
  31. apiVersion: v1
  32. metadata:
  33.   labels:
  34.     app: magedu-consumer
  35.   name: magedu-consumer-server
  36.   namespace: magedu
  37. spec:
  38.   type: NodePort
  39.   ports:
  40.   - name: http
  41.     port: 80
  42.     protocol: TCP
  43.     targetPort: 80
  44.     #nodePort: 30001
  45.   selector:
  46.     app: magedu-consumer
复制代码
应用配置清单
  1. root@k8s-master01:~/k8s-data/yaml/magedu/dubbo/consumer# kubectl apply -f consumer.yaml
  2. deployment.apps/magedu-consumer-deployment created
  3. service/magedu-consumer-server created
  4. root@k8s-master01:~/k8s-data/yaml/magedu/dubbo/consumer#
复制代码
3.3、验证consumer服务

3.3.1、验证pod是否正常running?


3.3.2、zookeeper验证consumer注册


3.3.3、验证consumer调用provider


可以看到consumer通过注册中心找到了provider;
3.3.4、增加consumer副本数量看看对应consumer是否能够正常找到provide?

增加consumer副本

应用配置清单
  1. root@k8s-master01:~/k8s-data/yaml/magedu/dubbo/consumer# kubectl apply -f consumer.yaml
  2. deployment.apps/magedu-consumer-deployment configured
  3. service/magedu-consumer-server unchanged
  4. root@k8s-master01:~/k8s-data/yaml/magedu/dubbo/consumer# kubectl get pods -n magedu
  5. NAME                                          READY   STATUS      RESTARTS      AGE
  6. magedu-consumer-deployment-798c7d785b-fp4b9   1/1     Running     0             26s
  7. magedu-consumer-deployment-798c7d785b-wmv9p   1/1     Running     0             18m
  8. magedu-consumer-deployment-798c7d785b-zqm74   1/1     Running     0             26s
  9. magedu-provider-deployment-6fccc6d9f5-nl4zd   1/1     Running     0             73m
  10. mysql-0                                       2/2     Running     6 (97m ago)   56d
  11. mysql-1                                       2/2     Running     6 (97m ago)   56d
  12. mysql-2                                       2/2     Running     6 (97m ago)   56d
  13. redis-0                                       1/1     Running     5 (97m ago)   65d
  14. redis-1                                       1/1     Running     5 (97m ago)   65d
  15. redis-2                                       1/1     Running     5 (97m ago)   65d
  16. redis-3                                       1/1     Running     5 (97m ago)   65d
  17. redis-4                                       1/1     Running     5 (97m ago)   65d
  18. redis-5                                       1/1     Running     5 (97m ago)   65d
  19. ubuntu1804                                    0/1     Completed   0             65d
  20. zookeeper1-675c5477cb-vmwwq                   1/1     Running     7 (97m ago)   67d
  21. zookeeper2-759fb6c6f-7jktr                    1/1     Running     7 (97m ago)   67d
  22. zookeeper3-5c78bb5974-vxpbh                   1/1     Running     7 (97m ago)   67d
  23. root@k8s-master01:~/k8s-data/yaml/magedu/dubbo/consumer#
复制代码
查看provider日志

在provider中看日志,可以看到有3个consumer在调用provider,这说明consumer通过注册中兴可以正常发现provider,然后和provider正常通信;
3.3.5、增加provider副本,看看consumer是否能够找到多个provider?

增加provider副本

应用配置清单

查看任意一个consumer日志

可以看到provider副本增加,consumer也可以通过注册中心发现provider;
在注册中心zookeeper查看consumer和provider情况

可以看到多副本的provider和多副本consumer都正常注册到zookeeper;
4、部署dubbo admin

4.1、dubbo admin镜像准备

4.1.1、dubbo admin镜像数据目录文件


4.1.2、构建dubbo admin镜像Docerfile
  1. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/dubboadmin# cat Dockerfile
  2. #Dubbo dubboadmin
  3. #FROM harbor.ik8s.cc/pub-images/tomcat-base:v8.5.43
  4. FROM harbor.ik8s.cc/pub-images/tomcat-base:v8.5.43
  5. RUN yum install unzip -y  
  6. ADD server.xml /apps/tomcat/conf/server.xml
  7. ADD logging.properties /apps/tomcat/conf/logging.properties
  8. ADD catalina.sh /apps/tomcat/bin/catalina.sh
  9. ADD run_tomcat.sh /apps/tomcat/bin/run_tomcat.sh
  10. ADD dubboadmin.war  /data/tomcat/webapps/dubboadmin.war
  11. RUN cd /data/tomcat/webapps && unzip dubboadmin.war && rm -rf dubboadmin.war && chown -R nginx.nginx /data /apps
  12. EXPOSE 8080 8443
  13. CMD ["/apps/tomcat/bin/run_tomcat.sh"]
  14. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/dubboadmin#
复制代码
4.1.3、运行dubbo admin镜像脚本
  1. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/dubboadmin# cat run_tomcat.sh
  2. #!/bin/bash
  3. su - nginx -c "/apps/tomcat/bin/catalina.sh start"
  4. su - nginx -c "tail -f /etc/hosts"
  5. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/dubboadmin#
复制代码
4.1.4、构建dubbo admin镜像脚本
  1. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/dubboadmin# cat build-command.sh
  2. #!/bin/bash
  3. TAG=$1
  4. #docker build -t harbor.ik8s.cc/magedu/dubboadmin:${TAG}  .
  5. #sleep 3
  6. #docker push  harbor.ik8s.cc/magedu/dubboadmin:${TAG}
  7. nerdctl build -t  harbor.ik8s.cc/magedu/dubboadmin:${TAG}  .
  8. nerdctl push harbor.ik8s.cc/magedu/dubboadmin:${TAG}
  9. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/dubboadmin#
复制代码
修改注册中心zookeeper地址

打包dubboadmin文件夹为dubboadmin.war
  1. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/dubboadmin# zip -rmq dubboadmin.war dubboadmin/*
  2. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/dubboadmin# ll
  3. total 54312
  4. drwxr-xr-x 2 root root     4096 Aug 11 05:32 ./
  5. drwxr-xr-x 5 root root     4096 Aug  9  2022 ../
  6. -rw-r--r-- 1 root root      575 Aug 11 05:17 Dockerfile
  7. -rwxr-xr-x 1 root root      257 Aug 11 05:20 build-command.sh*
  8. -rwxr-xr-x 1 root root    22201 Jun 22  2021 catalina.sh*
  9. -rw-r--r-- 1 root root 27778001 Aug 11 05:32 dubboadmin.war
  10. -rw-r--r-- 1 root root 27777984 Jun 22  2021 dubboadmin.war.bak
  11. -rw-r--r-- 1 root root     3436 Jun 22  2021 logging.properties
  12. -rwxr-xr-x 1 root root       99 Jun 22  2021 run_tomcat.sh*
  13. -rw-r--r-- 1 root root     6427 Jun 22  2021 server.xml
  14. root@k8s-master01:~/k8s-data/dockerfile/web/magedu/dubbo/dubboadmin#
复制代码
运行构建脚本构建dubboadmin镜像

4.2、运行dubbo admin

dubboadmin配置清单
  1. kind: Deployment
  2. #apiVersion: extensions/v1beta1
  3. apiVersion: apps/v1
  4. metadata:
  5.   labels:
  6.     app: magedu-dubboadmin
  7.   name: magedu-dubboadmin-deployment
  8.   namespace: magedu
  9. spec:
  10.   replicas: 1
  11.   selector:
  12.     matchLabels:
  13.       app: magedu-dubboadmin
  14.   template:
  15.     metadata:
  16.       labels:
  17.         app: magedu-dubboadmin
  18.     spec:
  19.       containers:
  20.       - name: magedu-dubboadmin-container
  21.         image: harbor.ik8s.cc/magedu/dubboadmin:v1
  22.         #imagePullPolicy: IfNotPresent
  23.         imagePullPolicy: Always
  24.         ports:
  25.         - containerPort: 8080
  26.           protocol: TCP
  27.           name: http
  28. ---
  29. kind: Service
  30. apiVersion: v1
  31. metadata:
  32.   labels:
  33.     app: magedu-dubboadmin
  34.   name: magedu-dubboadmin-service
  35.   namespace: magedu
  36. spec:
  37.   type: NodePort
  38.   ports:
  39.   - name: http
  40.     port: 80
  41.     protocol: TCP
  42.     targetPort: 8080
  43.     nodePort: 31080
  44.   selector:
  45.     app: magedu-dubboadmin
复制代码
应用配置清单
  1. root@k8s-master01:~/k8s-data/yaml/magedu/dubbo/dubboadmin# kubectl apply -f dubboadmin.yaml
  2. deployment.apps/magedu-dubboadmin-deployment created
  3. service/magedu-dubboadmin-service created
  4. root@k8s-master01:~/k8s-data/yaml/magedu/dubbo/dubboadmin# kubectl get pods -n magedu
  5. NAME                                            READY   STATUS      RESTARTS       AGE
  6. magedu-consumer-deployment-798c7d785b-fp4b9     1/1     Running     0              41m
  7. magedu-consumer-deployment-798c7d785b-wmv9p     1/1     Running     0              60m
  8. magedu-consumer-deployment-798c7d785b-zqm74     1/1     Running     0              41m
  9. magedu-dubboadmin-deployment-798c4dfdd8-kvfvh   1/1     Running     0              49s
  10. magedu-provider-deployment-6fccc6d9f5-k6z7m     1/1     Running     0              33m
  11. magedu-provider-deployment-6fccc6d9f5-nl4zd     1/1     Running     0              115m
  12. magedu-provider-deployment-6fccc6d9f5-p94rb     1/1     Running     0              33m
  13. mysql-0                                         2/2     Running     6 (138m ago)   56d
  14. mysql-1                                         2/2     Running     6 (138m ago)   56d
  15. mysql-2                                         2/2     Running     6 (138m ago)   56d
  16. redis-0                                         1/1     Running     5 (138m ago)   65d
  17. redis-1                                         1/1     Running     5 (138m ago)   65d
  18. redis-2                                         1/1     Running     5 (138m ago)   65d
  19. redis-3                                         1/1     Running     5 (138m ago)   65d
  20. redis-4                                         1/1     Running     5 (138m ago)   65d
  21. redis-5                                         1/1     Running     5 (138m ago)   65d
  22. ubuntu1804                                      0/1     Completed   0              65d
  23. zookeeper1-675c5477cb-vmwwq                     1/1     Running     7 (138m ago)   67d
  24. zookeeper2-759fb6c6f-7jktr                      1/1     Running     7 (138m ago)   67d
  25. zookeeper3-5c78bb5974-vxpbh                     1/1     Running     7 (138m ago)   67d
  26. root@k8s-master01:~/k8s-data/yaml/magedu/dubbo/dubboadmin# kubectl get svc -n magedu
  27. NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                        AGE
  28. magedu-consumer-server      NodePort    10.100.208.121   <none>        80:49630/TCP                                   61m
  29. magedu-dubboadmin-service   NodePort    10.100.244.92    <none>        80:31080/TCP                                   2m11s
  30. magedu-provider-spec        NodePort    10.100.187.168   <none>        80:44873/TCP                                   116m
  31. mysql                       ClusterIP   None             <none>        3306/TCP                                       56d
  32. mysql-read                  ClusterIP   10.100.15.127    <none>        3306/TCP                                       56d
  33. redis                       ClusterIP   None             <none>        6379/TCP                                       65d
  34. redis-access                NodePort    10.100.117.185   <none>        6379:36379/TCP                                 65d
  35. zookeeper                   ClusterIP   10.100.237.95    <none>        2181/TCP                                       67d
  36. zookeeper1                  NodePort    10.100.63.118    <none>        2181:32181/TCP,2888:30541/TCP,3888:31200/TCP   67d
  37. zookeeper2                  NodePort    10.100.199.43    <none>        2181:32182/TCP,2888:32670/TCP,3888:32264/TCP   67d
  38. zookeeper3                  NodePort    10.100.41.9      <none>        2181:32183/TCP,2888:31329/TCP,3888:32546/TCP   67d
  39. root@k8s-master01:~/k8s-data/yaml/magedu/dubbo/dubboadmin#
复制代码
4.3、在dubbo admin web验证provider和consumer

登录dubboadmin web


在dubboadmin web查看provider和consumer


        出处:https://www.cnblogs.com/qiuhom-1874/        本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王海鱼

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表