Kubernetes部署 #
一、Deployment配置 #
1.1 用户服务Deployment #
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: user-service
labels:
app: user-service
spec:
replicas: 3
selector:
matchLabels:
app: user-service
template:
metadata:
labels:
app: user-service
spec:
containers:
- name: user-service
image: user-service:1.0.0
ports:
- containerPort: 8001
env:
- name: NACOS_SERVER_ADDR
valueFrom:
configMapKeyRef:
name: spring-cloud-config
key: nacos.server-addr
- name: MYSQL_HOST
valueFrom:
configMapKeyRef:
name: spring-cloud-config
key: mysql.host
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /actuator/health
port: 8001
initialDelaySeconds: 60
periodSeconds: 10
readinessProbe:
httpGet:
path: /actuator/health
port: 8001
initialDelaySeconds: 30
periodSeconds: 10
二、Service配置 #
2.1 ClusterIP Service #
yaml
apiVersion: v1
kind: Service
metadata:
name: user-service
spec:
selector:
app: user-service
ports:
- port: 8001
targetPort: 8001
type: ClusterIP
2.2 NodePort Service #
yaml
apiVersion: v1
kind: Service
metadata:
name: gateway
spec:
selector:
app: gateway
ports:
- port: 8080
targetPort: 8080
nodePort: 30080
type: NodePort
三、ConfigMap配置 #
yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: spring-cloud-config
data:
nacos.server-addr: "nacos:8848"
mysql.host: "mysql"
redis.host: "redis"
四、Ingress配置 #
yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: spring-cloud-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: api.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: gateway
port:
number: 8080
五、部署命令 #
bash
# 部署应用
kubectl apply -f deployment.yaml
# 查看Pod
kubectl get pods
# 查看服务
kubectl get services
# 查看日志
kubectl logs -f pod/user-service-xxx
# 扩容
kubectl scale deployment user-service --replicas=5
六、总结 #
| 要点 | 说明 |
|---|---|
| Deployment | 应用部署 |
| Service | 服务发现 |
| ConfigMap | 配置管理 |
| Ingress | 外部访问 |
恭喜你完成了Spring Cloud完全指南的学习!
最后更新:2026-03-28