120L021230_chenbogeng/README.md

4.5 KiB
Raw Permalink Blame History

实践大作业

服务端

简介

服务端采用Golang编写提供PutPet、GetPet、DeletePet三个接口。

gRPC默认服务端口为5000

使用方式

cd PCGBigHomeworkServer
go run main.go

客户端

简介

客户端采用Golang编写可以进行宠物数据的写入、查询和删除操作。

采用Gin框架和Layui框架实现了一个简陋的前端页面和一套接口。

服务默认端口为80gRPC服务端默认为localhost:5000。可以通过指定环境变量GRPC_SERVER更改服务端地址(端口仍固定为5000)。

使用方式

Tips: 请先启动服务端,再启动客户端。

cd PCGBigHomeworkClient
go run main.go

运行截图

homepage

getpage

putpage

deletepage

镜像 & Minikube配置文件

简介

镜像

镜像已打包完成,Dockerfile已分别放置在PCGBigHomeworkClientPCGBigHomeworkServer下。

镜像使用腾讯云容器镜像服务个人版托管,地址为:

# 服务器端
ccr.ccs.tencentyun.com/pcgbigwork/petserver:v3
# 客户端
ccr.ccs.tencentyun.com/pcgbigwork/petclient:v5

Minikube配置文件

Minikube配置文件放在了repo根目录下文件名为k8s.yml

起了两个service一个用于客户端负载均衡一个用于固定服务端地址。

服务端的service类型为ClusterIP。客户端的service类型为NodePort暴露在节点上的端口为30080

由于要求使用minikubeminikube是模拟集群我们的机器并不是节点节点是minikube通过一个docker容器模拟出来的所以并不能直接在机器上通过localhost:30080访问到服务即便设置为了NodePort类型

客户端默认起了3个服务端默认只起1个。

在客户端的配置中使用了configMapL1 ~ L6+环境变量L43 ~ L48规定了K8S中的gRPC服务器地址。

使用方式

kubectl apply -f k8s.yml

验证工作正常

ubuntu@VM-0-10-ubuntu:~$ kubectl get pod
NAME                      READY   STATUS    RESTARTS   AGE
client-66554d7ffd-4znrb   1/1     Running   0          175m
client-66554d7ffd-59kcq   1/1     Running   0          175m
client-66554d7ffd-kgf5j   1/1     Running   0          176m
server-5fb78c447-mtcxq    1/1     Running   0          5h5m

ubuntu@VM-0-10-ubuntu:~$ kubectl get svc
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
client       NodePort    10.106.194.160   <none>        80:30080/TCP   5h23m
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        5h31m
server       ClusterIP   10.99.94.147     <none>        5000/TCP       5h23m

ubuntu@VM-0-10-ubuntu:~$ docker ps
CONTAINER ID   IMAGE                                 COMMAND                  CREATED       STATUS       PORTS                                                                                                                                  NAMES
afbc3c8c2c1c   gcr.io/k8s-minikube/kicbase:v0.0.32   "/usr/local/bin/entr…"   5 hours ago   Up 5 hours   127.0.0.1:49162->22/tcp, 127.0.0.1:49161->2376/tcp, 127.0.0.1:49160->5000/tcp, 127.0.0.1:49159->8443/tcp, 127.0.0.1:49158->32443/tcp   minikube
# 这里印证了上方提到的“节点是minikube通过一个docker容器模拟出来的”这一观点。因而只有先进入该容器节点才能通过指定的节点的30080端口访问客户端服务。

ubuntu@VM-0-10-ubuntu:~$ docker exec -it minikube bash
root@minikube:/# curl -d 'type=1&name=WangWang' -X POST localhost:30080/put
{"code":0,"message":"success","pet":{"pet_type":1,"pet_id":"1","name":"WangWang","created_at":{"year":2022,"month":7,"day":17,"hours":8,"minutes":32,"seconds":14,"nanos":566029499,"TimeOffset":null}}}
root@minikube:/# curl localhost:30080/get?id=1
{"code":0,"message":"success","pet":{"pet_type":1,"pet_id":"1","name":"WangWang","created_at":{"year":2022,"month":7,"day":17,"hours":8,"minutes":32,"seconds":14,"nanos":566029499,"TimeOffset":null}}}
root@minikube:/# curl -d 'id=1' -X POST localhost:30080/delete
{"code":0,"message":"success"}

# 各接口服务正常,与服务端之间的连接正常。