Kubernetes 部署微服务 Spring Cloud 方案

本文详细介绍了如何在Kubernetes环境中部署SpringCloud微服务,包括微服务部署方案、环境规划、Harbor私有镜像仓库的使用以及Dockerfile配置。涉及了Helm部署、命名空间管理、服务访问信息和私有密钥管理等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# Kubernetes

https://iothub.org.cn/docs/kubernetes/
https://iothub.org.cn/docs/kubernetes/pro/microservice/cloud-deploy-plan/

一、部署方案

1.微服务部署方案

1.架构图
在这里插入图片描述

2.部署图
在这里插入图片描述

2.微服务部署规划

1.微服务部署方式

微服务部署方式实例数备注
IngressNodePort
EurekaStatefulSet3有状态服务
GatewayDeployment3
ZipkinDeployment3
XXL-JOBDeployment3
SentinelDeployment1只能部署1个实例
msa-deploy-producerDeployment3
msa-deploy-consumerDeployment3
msa-deploy-jobDeployment3

2.微服务功能

微服务功能备注
Gateway服务接口通过网关调用
msa-deploy-producer实现日志、调用链、Prometheus
msa-deploy-consumer实现日志、调用链、Prometheus、openfeign
msa-deploy-job分布式任务调度平台(XXL-JOB)、日志

3.微服务访问信息

微服务内部端口外部端口访问地址
注册中心1000130001http://172.51.216.81:30001/
网关8888curl 10.99.231.140:8888/dconsumer/hello
curl 10.99.231.140:8888/dconsumer/say
curl 10.99.231.140:8888/dproducer/hello
curl 10.99.231.140:8888/dproducer/say
流量控制885830858访问地址:http://172.51.216.81:30858/#/login
账户密码:sentinel/sentinel
调用链监控941130411http://172.51.216.81:30411/zipkin
分布式任务调度平台808030880访问地址:http://172.51.216.81:30880/xxl-job-admin
账户密码:admin/123456
生产者8911curl 10.110.15.159:8911/hello
curl 10.110.15.159:8911/say
消费者8912curl 10.108.141.96:8912/hello
curl 10.108.141.96:8912/say
Ingress80:31208
443:32099
zipkin
http://zipkin.k8s.com:31208/zipkin

sentinel
http://sentinel.k8s.com:31208/#/login
账户密码:sentinel/sentinel

xxl-job
http://xxljob.k8s.com:31208/xxl-job-admin
账户密码:admin/123456

# eureka
http://eureka.k8s.com:31208/

# gateway
http://gateway.k8s.com:31208/dconsumer/hello
http://gateway.k8s.com:31208/dconsumer/say
http://gateway.k8s.com:31208/dproducer/hello
http://gateway.k8s.com:31208/dproducer/say
Prometheus消费者 msa-deploy-consumer
http://gateway.k8s.com:31208/dconsumer/actuator/prometheus

生产者 msa-deploy-producer
http://gateway.k8s.com:31208/dproducer/actuator/prometheus

3.准备工作

3.1.创建名字空间
[root@k8s-master ~]# kubectl create ns dev
namespace/dev created

[root@k8s-master ~]# kubectl get ns
...
dev                    Active   4s
3.2.Harbor创建项目

在私有镜像仓库创建springcloud项目,存储微服务镜像

3.3.创建私有镜像密钥Secret

K8S所有工作节点登陆Harbor镜像仓库

# 登陆 admin/admin
# docker login http://172.51.216.85:8888


[root@k8s-node1 ~]# docker login http://172.51.216.85:8888
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

提示登录成功。

登录过程创建或更新一个包含授权令牌的config.json文件。
查看config.json文件:

cat ~/.docker/config.json

输出包含类似以下内容的部分:

{
	"auths": {
		"172.51.216.85:8888": {
			"auth": "YWRtaW46YWRtaW4="
		}
	}
}

注意:如果您使用Docker凭据存储,您将看不到该auth条目,而是看到一个以存储名称为值的credsstore条目。

在master节点操作

# 对秘钥文件进行base64加密
cat ~/.docker/config.json |base64 -w 0


[root@k8s-master harbor]# cat ~/.docker/config.json |base64 -w 0
ewoJImF1dGhzIjogewoJCSIxNzIuNTEuMjE2Ljg1Ojg4ODgiOiB7CgkJCSJhdXRoIjogIllXUnRhVzQ2WVdSdGFXND0iCgkJfQoJfQp9

k8s创建secret秘钥

注意:必须在相同的命名空间,默认在default

# secret
harbor-secret.yaml

apiVersion: v1
kind: Secret
metadata:
  name: harborsecret
  namespace: dev
type: kubernetes.io/dockerconfigjson
data:
  .dockerconfigjson: ewoJImF1dGhzIjogewoJCSIxNzIuNTEuMjE2Ljg1Ojg4ODgiOiB7CgkJCSJhdXRoIjogIllXUnRhVzQ2WVdSdGFXND0iCgkJfQoJfQp9



[root@k8s-master harbor]# kubectl apply -f harbor-secret.yaml 
secret/harborsecret created

[root@k8s-master springcloud]# kubectl get secret -n dev
NAME                  TYPE                                  DATA   AGE
default-token-kjvf5   kubernetes.io/service-account-token   3      51m
harborsecret          kubernetes.io/dockerconfigjson        1      37s
3.4.Dockerfile标准配置
FROM openjdk:8-jdk-alpine

VOLUME /temp

ENV JVM_OPS="-Xms256m -Xmx256m -XX:PermSize=512M -XX:MaxPermSize=512m"

ENV JAVA_POS=""

ENV ACTIVE="-Dspring.profiles.active=test"

ADD *.jar app.jar

ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar ${JVM_OPS} ${ACTIVE} app.jar ${JAVA_OPS}

ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone


#编译命令
# docker build -t 172.51.216.85:8888/springcloud/msa-app:1.0.0 .

二、环境部署规划

1.环境介绍

开发过程中四个环境分别是:pro、pre、test、dev环境,中文名字:生产环境、灰度环境、测试环境、开发环境。

  • **pro环境:**生产环境,面向外部用户的环境,连接上互联网即可访问的正式环境
  • **pre环境:**灰度环境,外部用户可以访问,但是服务器配置相对低,其它和生产一样
  • **test环境:**测试环境,外部用户无法访问,专门给测试人员使用的,版本相对稳定
  • **dev环境:**开发环境,外部用户无法访问,开发人员使用,版本变动很大

在这里插入图片描述

2.微服务环境规划

微服务部署原则:

  1. 微服务采用Helm部署
  2. pro、pre、test、dev环境,分别部署在名字空间:pro、pre、test、dev
  3. 通过修改 values.yaml 进行部署升级
  4. Harbor作为私有镜像仓库,存储微服务镜像
  5. Harbor作为Helm仓库
# Kubernetes

https://iothub.org.cn/docs/kubernetes/
https://iothub.org.cn/docs/kubernetes/pro/microservice/cloud-deploy-plan/

有镜像仓库,存储微服务镜像
4. Harbor作为Helm仓库

# Kubernetes

https://iothub.org.cn/docs/kubernetes/
https://iothub.org.cn/docs/kubernetes/pro/microservice/cloud-deploy-plan/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IoTHub - 物联网开源技术社区

支持开源技术! 传播开源文化!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值