流程概述:
| 步骤 | 操作 |
|---------------------|----------------------------------------------------------------------------------------|
| 创建Deployment | 创建一个Deployment用于部署应用程序 |
| 创建Service | 创建一个Service来公开Deployment内的Pod |
| 创建Ingress | 创建一个Ingress资源,将外部流量路由到Service |
步骤详解:
1. 创建Deployment
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app-image:latest
ports:
- containerPort: 80
```
代码解释:
- 定义了一个Deployment,指定了所需的Pod数量、标签选择器和容器模板。
- 在容器模板中定义了容器名称、镜像和端口。
2. 创建Service
```yaml
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
```
代码解释:
- 声明一个Service,通过selector与Deployment中的Pod进行关联。
- 定义了Service的端口配置,指定了端口和目标端口的映射关系。
3. 创建Ingress
```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app-ingress
spec:
rules:
- host: my-app.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-app-service
port:
number: 80
```
代码解释:
- 创建一个Ingress资源,定义了将外部流量路由到内部Service的规则。
- 通过host指定了域名,paths定义了路径和Service的映射关系。
通过以上步骤,我们成功地将K8S应用暴露给外部访问。小白开发者可以按照这个流程进行操作,快速实现应用的外部访问。希望本文能够帮助大家更好地理解K8S应用如何被外部访问。