Files
k3s-configs/k3s/k3s-demo.yaml
2026-01-21 08:37:05 +00:00

132 lines
2.8 KiB
YAML

# 1. 创建一个独立的命名空间,保持环境整洁
apiVersion: v1
kind: Namespace
metadata:
name: demo-space
---
# 2. 定义网站内容 (ConfigMap) - 我们直接把 HTML 写在配置里
apiVersion: v1
kind: ConfigMap
metadata:
name: html-config
namespace: demo-space
data:
index-blue.html: |
<html><body style="background-color:#0000; text-align:center; padding-top:50px;">
<h1 style="color:#006064;">我是网站 1 (蓝色)</h1>
<p>部署在 K3s 集群中</p>
</body></html>
index-green.html: |
<html><body style="background-color:#4a148c; text-align:center; padding-top:50px;">
<h1 style="color:#1b5e20;">我是网站 2 (绿色)</h1>
<p>我有 3 个副本,正在为您提供高可用服务!</p>
</body></html>
---
# 3. 部署网站 1 (Blue)
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-blue
namespace: demo-space
spec:
replicas: 1
selector:
matchLabels:
app: site-blue
template:
metadata:
labels:
app: site-blue
spec:
containers:
- name: nginx
image: nginx:alpine
volumeMounts:
- name: html-volume
mountPath: /usr/share/nginx/html/index.html
subPath: index-blue.html
volumes:
- name: html-volume
configMap:
name: html-config
---
# 4. 部署网站 2 (Green) - 注意这里 replicas 是 3
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-green
namespace: demo-space
spec:
replicas: 3
selector:
matchLabels:
app: site-green
template:
metadata:
labels:
app: site-green
spec:
containers:
- name: nginx
image: nginx:alpine
volumeMounts:
- name: html-volume
mountPath: /usr/share/nginx/html/index.html
subPath: index-green.html
volumes:
- name: html-volume
configMap:
name: html-config
---
# 5. 定义服务 (Service) - 让集群内部能找到它们
apiVersion: v1
kind: Service
metadata:
name: service-blue
namespace: demo-space
spec:
selector:
app: site-blue
ports:
- port: 80
---
apiVersion: v1
kind: Service
metadata:
name: service-green
namespace: demo-space
spec:
selector:
app: site-green
ports:
- port: 80
---
# 6. 定义路由 (Ingress) - 这就是 K3s 的“大门”
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: demo-ingress
namespace: demo-space
spec:
rules:
- host: site1.u9.net3w.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: service-blue
port:
number: 80
- host: site2.u9.net3w.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: service-green
port:
number: 80