微服务项目(k8s集群)部署

一、服务器通用设置

运行至少3台虚拟机,宿主机的内存必须大于等于16G。虚拟机内核要求3.10.0-1127及以上。并且都分别设置固定IP。

1、检查CPU/内存/网络设置
对虚拟机的要求:
CPU:最少2核
内存:master>=4G,node>=3G
网络:NAT模式
操作系统版本:
Docker要求CentOS系统的内核版本必须高于3.10。如果内核版本为3.10,则发行编号最好能升级到1127,即3.10.0-1127。
查看内核版本:

uname -r

2、设置固定IP

vi /etc/sysconfig/network-scripts

3、设置主机名

vi /etc/hostname

分别设置为master、node1、node2。

4、设置解析hosts值(三台设置相同)

vi
<think> 嗯,用户这次明确想了解微服务K8s中的部署方法,而且提供了四篇站内引用作为背景。从用户引用的内容看,ta应该是个开发者或运维人员,正在尝试将Spring Boot类项目容器化部署K8s集群。用户可能刚接触K8s,因为引用[4]里还在用maven打jar包这种基础操作。 注意到用户特别强调"集群部署",引用[1]也提到多副本运行,说明ta最关心的是生产级高可用部署。不过引用[4]的示例还在本地测试阶段,可能需要从开发到生产的全流程指导。上次回答已经给出完整部署流程,这次要更突出集群化特性,比如副本控制、服务发现这些关键点。 用户引用的材料跨度较大,从基础概念(引用[3])到运维指南(引用[2]),需要把碎片信息整合成可操作的步骤。尤其引用[2]提到监控和分布式追踪,虽然用户没直接问,但部署时应该提醒这些运维配套措施。 上次给的回答结构不错,这次继续保持"镜像准备→配置编写→部署实施"的逻辑链条。不过要更突出:1)多副本配置在Deployment中的具体写法 2)Service如何做负载均衡 3)Ingress流量入口配置。用户引用[4]的jar包示例正好用作Docker镜像的素材,可以顺势演示Dockerfile编写。 考虑到用户可能卡在具体操作,所有YAML示例都保留字段注释,比如replicas:3后面直接注明"这是副本数"。Spring Boot的配置文件特殊处理要强调,比如bootstrap.yml需要ConfigMap挂载,这个在引用[2]提到过但没展开。 </think> 以下是微服务Kubernetes中的完整部署方法及关键步骤,结合最佳实践整理: ### 一、核心部署流程 1. **容器化微服务** ```Dockerfile FROM openjdk:17-alpine COPY target/*.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"] ``` ```bash docker build -t your-registry/ms-service:v1 . # 构建镜像 docker push your-registry/ms-service:v1 # 推送至镜像仓库 ``` 2. **编写K8s部署清单** ```yaml # deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: order-service spec: replicas: 3 # 集群副本数 selector: matchLabels: app: order-service template: metadata: labels: app: order-service spec: containers: - name: order-container image: your-registry/ms-service:v1 ports: - containerPort: 8080 env: - name: SPRING_PROFILES_ACTIVE value: "prod" # 注入环境变量 ``` 3. **暴露服务访问** ```yaml # service.yaml apiVersion: v1 kind: Service metadata: name: order-service spec: selector: app: order-service ports: - protocol: TCP port: 80 targetPort: 8080 type: ClusterIP # 内部服务发现 ``` 4. **配置外部访问入口** ```yaml # ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ms-ingress spec: rules: - host: api.example.com http: paths: - path: /orders pathType: Prefix backend: service: name: order-service port: number: 80 ``` ### 二、关键运维配置 1. **健康检查配置**(在Deployment中添加) ```yaml livenessProbe: httpGet: path: /actuator/health port: 8080 initialDelaySeconds: 30 readinessProbe: httpGet: path: /actuator/health port: 8080 ``` 2. **配置管理实践** - 使用ConfigMap管理环境变量 ```yaml envFrom: - configMapRef: name: ms-config ``` - 使用Secret管理敏感数据 ```yaml env: - name: DB_PASSWORD valueFrom: secretKeyRef: name: db-secret key: password ``` ### 三、部署执行命令 ```bash kubectl apply -f deployment.yaml kubectl apply -f service.yaml kubectl apply -f ingress.yaml # 验证部署 kubectl get pods -l app=order-service # 查看Pod状态 kubectl describe svc order-service # 检查服务端点 ``` ### 四、生产环境建议 1. **滚动更新策略**:配置`strategy.rollingUpdate`实现零停机部署 2. **资源配额管理**:通过`resources.limits/requests`限制CPU/内存 3. **分布式追踪集成**:Jaeger或Zipkin实现调用链监控 4. **HPA自动伸缩**:基于CPU/内存指标自动扩缩容[^2] > **注**:Spring Boot项目需确保: > 1. 开启Actuator健康检查端点 > 2. 日志输出到stdout > 3. 配置`server.port`与容器端口一致
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

妍婧

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值