Zuul最主要的功能两个功能是:对请求的路由和过滤:
其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础
而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础
FROM adoptopenjdk/openjdk8:latest
ADD app /app
WORKDIR /app
ENV botp=""
EXPOSE 28601
ENTRYPOINT ["sh","-c","java -Duser.timezone=Asia/Shanghai -Djava.security.egd=file:/dev/./urandom -jar com.summer.zuul.jar $botp"]
[root@master app]# docker build -t k8szuul:v1 .
Sending build context to Docker daemon 59.23MB
Step 1/6 : FROM adoptopenjdk/openjdk8:latest
latest: Pulling from adoptopenjdk/openjdk8
da7391352a9b: Pull complete
14428a6d4bcd: Pull complete
2c2d948710f2: Pull complete
cb4bdbb5e5c9: Pull complete
ab9e86831f30: Pull complete
Digest: sha256:93e1e6a3e400895fca1f7ca0b3a0de284220ef4c5398b4e524286459a96e209a
Status: Downloaded newer image for adoptopenjdk/openjdk8:latest
---> 41e67cbb9188
Step 2/6 : ADD app /app
---> 8b55685c2d6d
Step 3/6 : WORKDIR /app
---> Running in 9d62ad302ecc
Removing intermediate container 9d62ad302ecc
---> dbb658fc1a83
Step 4/6 : ENV botp=""
---> Running in b531d18b6207
Removing intermediate container b531d18b6207
---> 7b17863aafa5
Step 5/6 : EXPOSE 28601
---> Running in 52317ca49c66
Removing intermediate container 52317ca49c66
---> a935ec824bc5
Step 6/6 : ENTRYPOINT ["sh","-c","java -Duser.timezone=Asia/Shanghai -Djava.security.egd=file:/dev/./urandom -jar com.summer.zuul.jar $botp"]
---> Running in 9a85d6ed00b9
Removing intermediate container 9a85d6ed00b9
---> b2637b333a58
Successfully built b2637b333a58
Successfully tagged k8szuul:v1
[root@master app]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
k8szuul v1 b2637b333a58 2 hours ago 382MB
35
[root@master soft]# docker save -o kzuul20210105.tar k8szuul:v1
[root@master soft]# scp kzuul20210105.tar root@192.168.0.96:/home/summer/soft/
kzuul20210105.tar 100% 370MB 50.9MB/s 00:07
[root@master soft]# scp kzuul20210105.tar root@192.168.0.98:/home/summer/soft/
kzuul20210105.tar 100% 370MB 58.4MB/s 00:06
点击查看
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: zuul
labels:
app: zuul
spec:
serviceName: zuul
replicas: 1
selector:
matchLabels:
app: zuul
template:
metadata:
labels:
app: zuul
spec:
containers:
- name: zuul
image: k8szuul:v1
imagePullPolicy: Never
resources:
limits:
cpu: 450m
memory: 1024Mi
requests:
cpu: 400m
memory: 1024Mi
env:
- name: TZ
value: Asia/Shanghai
command: ["sh","-c","java -Duser.timezone=Asia/Shanghai -Djava.security.egd=file:/dev/./urandom -jar com.summer.zuul.jar"]
ports:
- containerPort: 28601
volumeMounts:
- name: vol-conf
mountPath: /app/config
volumes:
- name: vol-conf
hostPath:
path: /home/summer/zuul/conf
type: Directory
点击查看
apiVersion: v1
kind: Service
metadata:
name: zuul
labels:
app: zuul
spec:
type: NodePort
ports:
- port: 28601
targetPort: 28601
nodePort: 32081
selector:
app: zuul
[root@master zuul]# kubectl create -f pod.yml
statefulset.apps/zuul created
[root@master zuul]# kubectl create -f service.yml
service/zuul created
[root@master zuul]# kubectl get pods
NAME READY STATUS RESTARTS AGE
elasticsearch-54b8764b4c-5sxk7 1/1 Running 0 19h
eureka-0 1/1 Running 0 24h
redis-0 1/1 Running 0 23h
zuul-0 1/1 Running 0 14s
[root@master zuul]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
elasticsearch NodePort 10.103.135.32 <none> 9200:30000/TCP 21h
eureka ClusterIP None <none> 8761/TCP 24h
eureka-np NodePort 10.102.231.246 <none> 8761:28600/TCP 24h
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 28h
redis NodePort 10.110.14.232 <none> 6379:30379/TCP 23h
zuul NodePort 10.108.240.84 <none> 28601:32081/TCP 23s
此时连接集群任意节点ip:32081验证即可
[root@new1 conf]# telnet 192.168.0.98 32081
Trying 192.168.0.98...
Connected to 192.168.0.98.
Escape character is '^]'.
注册中心也注册上了