使用Kuboard界面在k8s上部署SpringCloud项目
先安装Ingress Controller
安装Ingress Controller后,其他服务设置Ingress后就可以通过设置的域名进行访问了,就不用通过代理的方式或者ip:port的方式进行访问了
安装Ingress Controller
教程地址:https://www.cnblogs.com/sanduzxcvbnm/p/13208837.html
安装Ingress Controller后的效果
几种不同的访问方式
1.通过代理方式访问
2.通过ip:port方式访问
3.通过域名方式访问
因为是在本机进行的测试,需要在本机hosts中添加解析
192.168.75.11 cloud-eureka.hkd.demo.kuboard.cn
改造项目使用的Dockerfile文件
详细地址:https://www.cnblogs.com/sanduzxcvbnm/p/13209058.html
部署eureka
需要采用Statefulsets,不能采用Delpoyments
原因分析:
采用Delpoyments的话,设置三个副本,eureka界面上会显示三个出来
但是会有问题,其他服务无法注册进来
采用Statefulsets的话,设置三个副本,eureka界面上会显示随机显示两个出来,刷新页面,会显示的这俩会随机变动,总之不会显示三个,并且其他服务也能注册进来
步骤选项
部署config
部署gateway
部署auth
eureka,config,gateway,auth效果
其他模块
剩余的其他模块配置差不多都一样,都是在StatefulSet,镜像tag是0.3,都开启了Service,但是没有开启ingress
最终效果
思考:关于模块要不要开启访问方式 Service?要不要开启ingress?
1.Service是必须要开的
因为若关闭的话,有些服务是依赖于其他服务的,假若把config模块的给关了,则gateway模块会因为找不到config而无法启动
关闭后的效果
开启后的效果
2.ingress,这个根据情况而定,这个是给外网访问用的,有些模块需要进行外网访问,比如eureka,有些不需要,那么只给有需要的开启,没需要的就不开启
导出工作负载
地址:https://files.cnblogs.com/files/sanduzxcvbnm/kuboard_hkd_20200630093006.7z
文件内容:
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
namespace: hkd
name: cloud-config
annotations:
k8s.kuboard.cn/workload: cloud-config
k8s.kuboard.cn/displayName: 配置中心
k8s.kuboard.cn/ingress: 'false'
k8s.kuboard.cn/service: NodePort
labels:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: cloud-config
spec:
selector:
matchLabels:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: cloud-config
revisionHistoryLimit: 10
template:
metadata:
labels:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: cloud-config
spec:
securityContext:
seLinuxOptions: {}
imagePullSecrets:
- name: nexus
restartPolicy: Always
initContainers: []
containers:
- image: 'idocker.io/hkd-config:0.3'
imagePullPolicy: Always
name: hkd-config
volumeMounts: []
resources:
limits:
requests:
env: []
envFrom:
- configMapRef:
name: eureka-config
lifecycle: {}
volumes: []
dnsPolicy: ClusterFirst
dnsConfig: {}
nodeName: worker
terminationGracePeriodSeconds: 30
replicas: 1
volumeClaimTemplates: []
serviceName: cloud-config
---
apiVersion: v1
kind: Service
metadata:
namespace: hkd
name: cloud-config
annotations:
k8s.kuboard.cn/workload: cloud-config
k8s.kuboard.cn/displayName: 配置中心
labels:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: cloud-config
spec:
selector:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: cloud-config
type: NodePort
ports:
- port: 8888
targetPort: 8888
protocol: TCP
name: msbf6b
nodePort: 30886
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
namespace: hkd
name: cloud-eureka
annotations:
k8s.kuboard.cn/workload: cloud-eureka
k8s.kuboard.cn/displayName: 服务注册中心
k8s.kuboard.cn/ingress: 'true'
k8s.kuboard.cn/service: NodePort
labels:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: cloud-eureka
spec:
selector:
matchLabels:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: cloud-eureka
revisionHistoryLimit: 10
template:
metadata:
labels:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: cloud-eureka
spec:
securityContext:
seLinuxOptions: {}
imagePullSecrets:
- name: nexus
restartPolicy: Always
initContainers: []
containers:
- image: 'idocker.io/hkd-eureka:0.3'
imagePullPolicy: Always
name: eureka-server
volumeMounts: []
resources:
limits:
requests:
env: []
envFrom:
- configMapRef:
name: eureka-config
lifecycle: {}
volumes: []
dnsPolicy: ClusterFirst
dnsConfig: {}
terminationGracePeriodSeconds: 30
replicas: 3
volumeClaimTemplates: []
serviceName: cloud-eureka
---
apiVersion: v1
kind: Service
metadata:
namespace: hkd
name: cloud-eureka
annotations:
k8s.kuboard.cn/workload: cloud-eureka
k8s.kuboard.cn/displayName: 服务注册中心
labels:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: cloud-eureka
spec:
selector:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: cloud-eureka
type: NodePort
ports:
- port: 8761
targetPort: 8761
protocol: TCP
name: siwrzh
nodePort: 30242
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
namespace: hkd
name: cloud-eureka
annotations:
k8s.kuboard.cn/workload: cloud-eureka
k8s.kuboard.cn/displayName: 服务注册中心
labels:
k8s.kuboard.cn/layer: cloud
k8s.kuboard.cn/name: cloud-eureka
spec:
rules:
- host: cloud-eureka.hkd.demo.kuboard.cn
http:
paths:
- path: /
backend:
serviceName: cloud-eureka
servicePort: siwrzh
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
namespace: hkd
name: gateway-gw2
annotations:
k8s.kuboard.cn/workload: gateway-gw2
k8s.kuboard.cn/displayName: 网关中心
k8s.kuboard.cn/ingress: 'true'
k8s.kuboard.cn/service: NodePort
labels:
k8s.kuboard.cn/layer: gateway
k8s.kuboard.cn/name: gateway-gw2
spec:
selector:
matchLabels:
k8s.kuboard.cn/layer: gateway
k8s.kuboard.cn/name: gateway-gw2
revisionHistoryLimit: 10
template:
metadata:
labels:
k8s.kuboard.cn/layer: gateway
k8s.kuboard.cn/name: gateway-gw2
spec:
securityContext:
seLinuxOptions: {}
imagePullSecrets:
- name: nexus
restartPolicy: Always
initContainers: []
containers:
- image: 'idocker.io/hkd-gateway:0.3'
imagePullPolicy: Always
name: hkd-gateway
volumeMounts: []
resources:
limits:
requests:
env: []
envFrom:
- configMapRef:
name: eureka-config
lifecycle: {}
volumes: []
dnsPolicy: ClusterFirst
dnsConfig: {}
terminationGracePeriodSeconds: 30
replicas: 1
volumeClaimTemplates: []
serviceName: gateway-gw2
---
apiVersion: v1
kind: Service
metadata:
namespace: hkd
name: gateway-gw2
annotations:
k8s.kuboard.cn/workload: gateway-gw2
k8s.kuboard.cn/displayName: 网关中心
labels:
k8s.kuboard.cn/layer: gateway
k8s.kuboard.cn/name: gateway-gw2
spec:
selector:
k8s.kuboard.cn/layer: gateway
k8s.kuboard.cn/name: gateway-gw2
type: NodePort
ports:
- port: 5000
targetPort: 5000
protocol: TCP
name: m6ykbh
nodePort: 31646
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
namespace: hkd
name: gateway-gw2
annotations:
k8s.kuboard.cn/workload: gateway-gw2
k8s.kuboard.cn/displayName: 网关中心
labels:
k8s.kuboard.cn/layer: gateway
k8s.kuboard.cn/name: gateway-gw2
spec:
rules:
- host: gwateway-gw2.hkd.demo.kuboard.cn
http:
paths:
- path: /
backend:
serviceName: gateway-gw2
servicePort: m6ykbh
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
namespace: hkd
name: svc-auth
annotations:
k8s.kuboard.cn/workload: svc-auth
k8s.kuboard.cn/displayName: 验证中心
k8s.kuboard.cn/ingress: 'false'
k8s.kuboard.cn/service: NodePort
labels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-auth
spec:
selector:
matchLabels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-auth
revisionHistoryLimit: 10
template:
metadata:
labels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-auth
spec:
securityContext:
seLinuxOptions: {}
imagePullSecrets:
- name: nexus
restartPolicy: Always
initContainers: []
containers:
- image: 'idocker.io/hkd-auth:0.3'
imagePullPolicy: Always
name: hkd-auth
volumeMounts: []
resources:
limits:
requests:
env: []
envFrom:
- configMapRef:
name: eureka-config
lifecycle: {}
volumes: []
dnsPolicy: ClusterFirst
dnsConfig: {}
terminationGracePeriodSeconds: 30
replicas: 1
volumeClaimTemplates: []
serviceName: svc-auth
---
apiVersion: v1
kind: Service
metadata:
namespace: hkd
name: svc-auth
annotations:
k8s.kuboard.cn/workload: svc-auth
k8s.kuboard.cn/displayName: 验证中心
labels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-auth
spec:
selector:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-auth
type: NodePort
ports:
- port: 8765
targetPort: 8765
protocol: TCP
name: wjn5hh
nodePort: 32443
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
namespace: hkd
name: svc-cash
annotations:
k8s.kuboard.cn/workload: svc-cash
k8s.kuboard.cn/ingress: 'false'
k8s.kuboard.cn/service: NodePort
labels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-cash
spec:
selector:
matchLabels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-cash
revisionHistoryLimit: 10
template:
metadata:
labels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-cash
spec:
securityContext:
seLinuxOptions: {}
imagePullSecrets:
- name: nexus
restartPolicy: Always
initContainers: []
containers:
- image: 'idocker.io/hkd-cash:0.3'
imagePullPolicy: Always
name: hkd-cash
volumeMounts: []
resources:
limits:
requests:
env: []
envFrom:
- configMapRef:
name: eureka-config
lifecycle: {}
volumes: []
dnsPolicy: ClusterFirst
dnsConfig: {}
terminationGracePeriodSeconds: 30
replicas: 1
volumeClaimTemplates: []
serviceName: svc-cash
---
apiVersion: v1
kind: Service
metadata:
namespace: hkd
name: svc-cash
annotations:
k8s.kuboard.cn/workload: svc-cash
labels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-cash
spec:
selector:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-cash
type: NodePort
ports:
- port: 8766
targetPort: 8766
protocol: TCP
name: kfcdez
nodePort: 31091
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
namespace: hkd
name: svc-custom
annotations:
k8s.kuboard.cn/workload: svc-custom
k8s.kuboard.cn/ingress: 'false'
k8s.kuboard.cn/service: NodePort
labels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-custom
spec:
selector:
matchLabels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-custom
revisionHistoryLimit: 10
template:
metadata:
labels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-custom
spec:
securityContext:
seLinuxOptions: {}
imagePullSecrets:
- name: nexus
restartPolicy: Always
initContainers: []
containers:
- image: 'idocker.io/hkd-custom:0.3'
imagePullPolicy: Always
name: hkd-custom
volumeMounts: []
resources:
limits:
requests:
env: []
envFrom:
- configMapRef:
name: eureka-config
lifecycle: {}
volumes: []
dnsPolicy: ClusterFirst
dnsConfig: {}
terminationGracePeriodSeconds: 30
replicas: 1
volumeClaimTemplates: []
serviceName: svc-custom
---
apiVersion: v1
kind: Service
metadata:
namespace: hkd
name: svc-custom
annotations:
k8s.kuboard.cn/workload: svc-custom
labels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-custom
spec:
selector:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-custom
type: NodePort
ports:
- port: 8764
targetPort: 8764
protocol: TCP
name: e82zsm
nodePort: 32733
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
namespace: hkd
name: svc-portal
annotations:
k8s.kuboard.cn/workload: svc-portal
k8s.kuboard.cn/ingress: 'false'
k8s.kuboard.cn/service: NodePort
labels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-portal
spec:
selector:
matchLabels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-portal
revisionHistoryLimit: 10
template:
metadata:
labels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-portal
spec:
securityContext:
seLinuxOptions: {}
imagePullSecrets:
- name: nexus
restartPolicy: Always
initContainers: []
containers:
- image: 'idocker.io/hkd-portal:0.3'
imagePullPolicy: Always
name: hkd-portal
volumeMounts: []
resources:
limits:
requests:
env: []
envFrom:
- configMapRef:
name: eureka-config
lifecycle: {}
volumes: []
dnsPolicy: ClusterFirst
dnsConfig: {}
terminationGracePeriodSeconds: 30
replicas: 1
volumeClaimTemplates: []
serviceName: svc-portal
---
apiVersion: v1
kind: Service
metadata:
namespace: hkd
name: svc-portal
annotations:
k8s.kuboard.cn/workload: svc-portal
labels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-portal
spec:
selector:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-portal
type: NodePort
ports:
- port: 8767
targetPort: 8767
protocol: TCP
name: sbwmf2
nodePort: 31346
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
namespace: hkd
name: svc-user
annotations:
k8s.kuboard.cn/workload: svc-user
k8s.kuboard.cn/displayName: 用户
k8s.kuboard.cn/ingress: 'false'
k8s.kuboard.cn/service: NodePort
labels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-user
spec:
selector:
matchLabels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-user
revisionHistoryLimit: 10
template:
metadata:
labels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-user
spec:
securityContext:
seLinuxOptions: {}
imagePullSecrets:
- name: nexus
restartPolicy: Always
initContainers: []
containers:
- image: 'idocker.io/hkd-user:0.3'
imagePullPolicy: Always
name: hkd-user
volumeMounts: []
resources:
limits:
requests:
env: []
envFrom:
- configMapRef:
name: eureka-config
lifecycle: {}
volumes: []
dnsPolicy: ClusterFirst
dnsConfig: {}
terminationGracePeriodSeconds: 30
replicas: 1
volumeClaimTemplates: []
serviceName: svc-user
---
apiVersion: v1
kind: Service
metadata:
namespace: hkd
name: svc-user
annotations:
k8s.kuboard.cn/workload: svc-user
k8s.kuboard.cn/displayName: 用户
labels:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-user
spec:
selector:
k8s.kuboard.cn/layer: svc
k8s.kuboard.cn/name: svc-user
type: NodePort
ports:
- port: 8763
targetPort: 8763
protocol: TCP
name: s5egas
nodePort: 30083
---
metadata:
name: eureka-config
namespace: hkd
managedFields:
- manager: Mozilla
operation: Update
apiVersion: v1
time: '2020-06-29T01:44:36Z'
fieldsType: FieldsV1
fieldsV1:
'f:data':
.: {}
'f:eureka.client.serviceUrl.defaultZone': {}
'f:eureka.instance.prefer-ip-address': {}
data:
eureka.client.serviceUrl.defaultZone: >-
http://cloud-eureka-0.cloud-eureka.hkd.svc.cluster.local:8761/eureka,http://cloud-eureka-1.cloud-eureka.hkd.svc.cluster.local:8761/eureka,http://cloud-eureka-2.cloud-eureka.hkd.svc.cluster.local:8761/eureka
eureka.instance.prefer-ip-address: 'false'
kind: ConfigMap
apiVersion: v1
---
metadata:
name: nexus
namespace: hkd
managedFields:
- manager: Mozilla
operation: Update
apiVersion: v1
time: '2020-06-28T07:45:21Z'
fieldsType: FieldsV1
fieldsV1:
'f:data':
.: {}
'f:.dockerconfigjson': {}
'f:type': {}
data:
.dockerconfigjson: >-
eyJhdXRocyI6eyJodHRwczovL2lkb2NrZXIuaW8iOnsidXNlcm5hbWUiOiJhZG1pbiIsInBhc3N3b3JkIjoibmV3bm9kZTc4NTIiLCJhdXRoIjoiWVdSdGFXNDZibVYzYm05a1pUYzROVEk9In19fQ==
type: kubernetes.io/dockerconfigjson
kind: Secret
apiVersion: v1