Kubernetes (K8S) 是一款开源的容器编排引擎,它可以帮助我们管理容器化的应用程序。在K8S中,ClusterIP 是一种服务类型,它会给集群内部的其他服务提供一个虚拟 IP 地址,用于在集群内部进行通信。在本文中,我们将学习如何在K8S中创建一个单机 ClusterIP 服务。

整体流程如下所示:

| 步骤 | 操作 |
|---|---|
| 1 | 编写一个 Deployment 配置文件 |
| 2 | 创建 Deployment |
| 3 | 编写一个 Service 配置文件 |
| 4 | 创建 Service |

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

### 步骤一:编写一个 Deployment 配置文件

首先,我们需要编写一个 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: nginx
ports:
- containerPort: 80
```

在上面的配置文件中,我们定义了一个名为 "my-app" 的 Deployment,它包含了 3 个副本,使用 Nginx 镜像,并暴露了端口 80。

### 步骤二:创建 Deployment

接下来,我们使用 kubectl 命令来创建上面定义的 Deployment。

```bash
kubectl apply -f deployment.yaml
```

### 步骤三:编写一个 Service 配置文件

现在我们需要定义一个 Service 资源,来暴露我们的 Deployment。

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

上面的配置文件定义了一个名为 "my-app-svc" 的 ClusterIP Service,它会将流量引导到 Deployment 中的 Pods 的 80 端口。

### 步骤四:创建 Service

最后,我们使用 kubectl 命令来创建上面定义的 Service。

```bash
kubectl apply -f service.yaml
```

现在,我们成功创建了一个单机 ClusterIP 服务。你可以使用以下命令检查服务是否成功创建:

```bash
kubectl get services
```

通过以上步骤,我们成功创建了一个单机 ClusterIP 服务,并且将其与 Deployment 关联,实现了集群内部的通信。希望这篇文章能够帮助到你理解和使用 K8S 中的 ClusterIP 服务。