# K8S创建NodePort

在Kubernetes中,NodePort是一种Service类型,用于公开应用程序以便可以从集群外部访问。NodePort允许将外部流量引导到集群内部的某个Pod,通过亲和性规则和负载均衡来提供服务。在这篇文章中,我将教你如何使用Kubernetes创建NodePort。

## 整体流程

下面是创建NodePort的整体流程:

| 步骤 | 描述 |
| --- | --- |
| 1 | 创建一个Deployment来运行你的应用程序 |
| 2 | 创建一个Service,类型为NodePort来公开你的应用程序 |
| 3 | 确认Service已经成功创建,并查看NodePort端口号 |
| 4 | 通过NodePort端口号访问你的应用程序 |

## 代码示例

### 步骤1:创建Deployment

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

在上面的代码中,我们创建了一个名为my-app的Deployment,它运行3个Pod实例,每个Pod都是一个名为my-app的容器。容器暴露端口80以接受流量。

### 步骤2:创建Service

```yaml
apiVersion: v1
kind: Service
metadata:
name: my-app-svc
spec:
selector:
app: my-app
type: NodePort
ports:
- protocol: TCP
port: 80
targetPort: 80
```

上面的代码创建了一个名为my-app-svc的Service,Selector选择与Deployment中标签为app=my-app的Pod匹配的Pod,类型为NodePort。我们将容器端口80映射到NodePort上。

### 步骤3:确认Service和NodePort端口号

```bash
kubectl get svc my-app-svc
```

运行上面的命令,将会显示Service的详细信息,包括NodePort端口号。

### 步骤4:访问应用程序

可以通过NodePort端口号访问你的应用程序。假设NodePort端口号为32000,你可以在浏览器中输入`http://Node_IP:32000`来访问你的应用程序。

现在,你已经成功创建了一个NodePort,可以从集群外部访问你的应用程序了。

希望这篇文章能帮助你了解如何在Kubernetes中创建NodePort,并为你的应用程序提供外部访问。祝你好运!