背景介绍
我们已经完成了一个单 Server 的 K3S 集群的搭建,现在开始部署第一个应用。
创建部署文件
创建一个 nginx-demo.yaml 文件,包含以下资源配置:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3 # 创建3个Pod副本
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginxdemos/hello:latest # 使用nginx演示镜像
ports:
- containerPort: 80 # 容器内暴露80端口
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx # 选择所有带有app=nginx标签的Pod
ports:
- protocol: TCP
port: 80 # 服务暴露的端口
targetPort: 80 # 目标Pod的端口
type: ClusterIP # 创建集群内部IP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: web
traefik.ingress.kubernetes.io/service.loadbalancer.method: drr # 使用轮询负载均衡
traefik.ingress.kubernetes.io/service.sticky: "false" # 禁用会话粘性
spec:
rules:
- host: example.com # 设置访问域名
http:
paths:
- path: / # 根路径
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80
部署应用
执行以下命令部署应用:
kubectl apply -f nginx-demo.yaml
成功部署后,将看到类似以下输出:
deployment.apps/nginx-deployment created
service/nginx-service created
ingress.networking.k8s.io/nginx-ingress created
验证部署状态
检查 Pod 状态
kubectl get pods -o wide
输出示例:
CodeBlock Loading...
可以看到已创建了三个容器实例,分布在三个节点上。
检查 Service 状态
CodeBlock Loading...
输出示例:
CodeBlock Loading...
检查 Ingress 状态
CodeBlock Loading...
输出示例:
CodeBlock Loading...
访问应用
将域名解析到任一已部署 Pod 的节点 IP 上,即可访问应用。

轮询展示