Kubernetes,简称K8S,是一个用于自动部署、扩展和管理容器化应用程序的开源平台。在K8S中,如何让应用被外部访问是一个非常关键的问题。本文将介绍K8S应用如何被外部访问的流程,并提供相应的代码示例,帮助大家快速上手。

流程概述:

| 步骤 | 操作 |
|---------------------|----------------------------------------------------------------------------------------|
| 创建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应用如何被外部访问。