在Kubernetes(K8S)中实现nginx和php的伪静态功能是一个常见的需求。伪静态可以让URL看起来更友好,同时也有利于SEO优化。在这篇文章中,我将向你介绍如何在K8S中实现nginx和php的伪静态功能。

首先让我们来看一下整个实现流程:

| 步骤 | 操作 |
| ---- | ------------ |
| 1 | 创建Deployment |
| 2 | 创建Service |
| 3 | 创建Ingress |

接下来,让我们一步一步地实现这些操作。

### 步骤一:创建Deployment

首先,我们需要创建一个Deployment来部署nginx和php。在这个Deployment中,我们需要同时包含nginx和php的容器。我们可以通过以下yaml文件来创建这个Deployment:

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-php
spec:
replicas: 1
selector:
matchLabels:
app: nginx-php
template:
metadata:
labels:
app: nginx-php
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
- name: php
image: php:latest
ports:
- containerPort: 9000
```

在这个yaml文件中,我们定义了一个拥有一个nginx容器和一个php容器的Deployment。nginx容器将监听80端口,而php容器将监听9000端口。

### 步骤二:创建Service

接下来,我们需要创建一个Service来暴露nginx和php容器。我们可以通过以下yaml文件来创建这个Service:

```yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-php-svc
spec:
selector:
app: nginx-php
ports:
- protocol: TCP
port: 80
targetPort: 80
- protocol: TCP
port: 9000
targetPort: 9000
```

在这个yaml文件中,我们定义了一个Service来暴露nginx和php容器,使它们可以被外部访问。

### 步骤三:创建Ingress

最后,我们需要创建一个Ingress来将流量引导到nginx和php容器。我们可以通过以下yaml文件来创建这个Ingress:

```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-php-ingress
spec:
rules:
- host: your.domain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-php-svc
port:
number: 80
```

在这个yaml文件中,我们定义了一个Ingress规则,将来自your.domain.com的流量引导到nginx-php-svc的80端口。

通过以上步骤,我们成功实现了在K8S中部署nginx和php,并使用Ingress实现伪静态功能的实现。希望这篇文章对于刚入行的小白有所帮助!