# 如何在Kubernetes上实现公网slb

## 1. 总体流程

| 步骤 | 操作 |
| ----------------- | ---------------------------------------- |
| 1. 创建一个服务 | 使用Kubernetes创建一个Service对象 |
| 2. 配置Ingress | 部署Ingress Controller并配置Ingress规则 |
| 3. 配置DNS解析 | 配置域名解析到Ingress Controller的公网IP |


## 2. 具体操作步骤

### 步骤1 - 创建一个服务

在Kubernetes中,Service用于抽象应用的服务访问方式。我们可以通过Service来暴露应用的端口,对外提供访问。

```yaml
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8080
selector:
app: my-app
```

- `kind: Service`定义了一个Service对象
- `type: ClusterIP`指定Service类型为ClusterIP,用于集群内部访问
- `port`定义Service暴露的端口
- `targetPort`定义Service转发请求的端口
- `selector`指定Service代理的Pod标签

### 步骤2 - 配置Ingress

Ingress是Kubernetes提供的一种API对象,用于暴露HTTP和HTTPS路由到集群内的服务。需要部署Ingress Controller才能生效。

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

- `kind: Ingress`定义了一个Ingress对象
- `host`指定Ingress规则的域名
- `path`定义Ingress请求路径
- `backend`指定请求转发的后端Service

### 步骤3 - 配置DNS解析

最后一步是将域名解析到Ingress Controller的公网IP地址,这样外部用户才能访问到应用。

以上为实现公网slb的整体流程和具体操作步骤,通过创建Service、配置Ingress和配置DNS解析三个步骤,可以实现在Kubernetes集群中实现公网slb的功能。希望对你有所帮助!