这里我们在前面已经完成了grpc项目的编写,打包,上传镜像(详见:《Grpc框架实战微服务调用系列》),本文的话我们来使用普通的方式部署一下这里的Grpc项目。下面直接开始:
1)首先创建一个名称空间,我们把这个grpc的demo放在指定的名称空间里面去,这里我们的名称空间是:grpc-demo,如下图:
2)首先部署grpc-server,部署的yaml文件内容如下:
---
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
k8s.kuboard.cn/displayName: grpc-server
labels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: grpc-server
name: grpc-server
namespace: grpc-demo
resourceVersion: '7585'
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: grpc-server
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
annotations:
kubectl.kubernetes.io/restartedAt: '2024-01-04T14:36:15+08:00'
creationTimestamp: null
labels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: grpc-server
spec:
containers:
- env:
- name: grpc.server.port
value: '3001'
- name: GRPC_SERVER_PORT
value: '3001'
image: 'a85791d9bf0b9ade/grpc-server:1.0'
imagePullPolicy: IfNotPresent
name: grpc-server
resources:
limits:
cpu: '1'
memory: 1Gi
requests:
cpu: '1'
memory: 1Gi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
annotations: {}
labels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: grpc-server
name: grpc-server
namespace: grpc-demo
resourceVersion: '5553'
spec:
clusterIP: 10.233.242.85
clusterIPs:
- 10.233.242.85
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: apqsnd
port: 3001
protocol: TCP
targetPort: 3001
selector:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: grpc-server
sessionAffinity: ClientIP
sessionAffinityConfig:
clientIP:
timeoutSeconds: 10800
type: ClusterIP备注:
1、我这里主要使用kuboard进行可视化部署的,部署后的yaml文件内容如上,如果大家要使用它yaml部署,可以参考上面的yaml文件进行精简。
grpcserver部署完毕之后,如下图:
最后当然我们要看看启动日志是否报错:
可以看到这里的server启动很成功,没用任何报错。
3)接着我们部署client,同样的部署后的yaml文件内容示例如下:
---
apiVersion: apps/v1
kind: Deployment
metadata:
annotations: {}
labels:
k8s.kuboard.cn/layer: web
k8s.kuboard.cn/name: grpc-client
name: grpc-client
namespace: grpc-demo
resourceVersion: '8012'
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s.kuboard.cn/layer: web
k8s.kuboard.cn/name: grpc-client
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
k8s.kuboard.cn/layer: web
k8s.kuboard.cn/name: grpc-client
spec:
containers:
- image: 'a85791d9bf0b9ade/grpc-client:1.0'
imagePullPolicy: IfNotPresent
name: grpc-client
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
annotations: {}
labels:
k8s.kuboard.cn/layer: web
k8s.kuboard.cn/name: grpc-client
name: grpc-client
namespace: grpc-demo
resourceVersion: '8015'
spec:
clusterIP: 10.233.250.118
clusterIPs:
- 10.233.250.118
externalTrafficPolicy: Cluster
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: brsntb
nodePort: 32555
port: 8088
protocol: TCP
targetPort: 8088
selector:
k8s.kuboard.cn/layer: web
k8s.kuboard.cn/name: grpc-client
sessionAffinity: None
type: NodePort备注:
1、我这里主要使用kuboard进行可视化部署的,部署后的yaml文件内容如上,如果大家要使用它yaml部署,可以参考上面的yaml文件进行精简。
部署client完毕之后,如下图:
当然我们需要继续看下日志是否启动有问题,日志如下:
可以看到日志完全没用问题,此时我们的部署层级图如下:
4)测试
这里我们的client端使用nodeport的形式暴露的服务,所以我们可以直接通过nodeip+端口的形式访问服务。示例如下:
我们通过浏览器访问成功了,所以这里我们使用kuboard在k8s里面进行普通的部署是完全没问题的。
















还没有评论,来说两句吧...