## 如何实现K8S服务不能用域名访问

### 一、整体流程

在Kubernetes中,如果希望某个服务不能通过域名进行访问,可以通过修改服务的配置来实现。下面是具体操作步骤的表格展示:

| 步骤 | 操作 |
| ---- | ---- |
| 1 | 创建一个Namespace(命名空间) |
| 2 | 创建一个Deployment(部署) |
| 3 | 创建一个Service(服务) |
| 4 | 修改Service的配置,使其不能被域名访问 |

### 二、具体操作步骤及代码示例

#### 步骤一:创建一个Namespace

```yaml
# 创建一个名为 "test-namespace" 的Namespace
apiVersion: v1
kind: Namespace
metadata:
name: test-namespace
```

#### 步骤二:创建一个Deployment

```yaml
# 创建一个Deployment,命名为 "test-deployment",部署到上一步创建的Namespace中
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-deployment
namespace: test-namespace
spec:
replicas: 1
selector:
matchLabels:
app: test
template:
metadata:
labels:
app: test
spec:
containers:
- name: test-container
image: nginx:latest
ports:
- containerPort: 80
```

#### 步骤三:创建一个Service

```yaml
# 创建一个Service,命名为 "test-service",指向上一步创建的Deployment
apiVersion: v1
kind: Service
metadata:
name: test-service
namespace: test-namespace
spec:
selector:
app: test
ports:
- protocol: TCP
port: 80
targetPort: 80
```

#### 步骤四:修改Service的配置,使其不能被域名访问

```yaml
# 修改Service的配置,使其只能通过ClusterIP进行访问,禁止通过域名访问
apiVersion: v1
kind: Service
metadata:
name: test-service
namespace: test-namespace
spec:
type: ClusterIP
selector:
app: test
ports:
- protocol: TCP
port: 80
targetPort: 80
```

### 三、总结

通过以上操作,我们成功地创建了一个在Kubernetes中不能通过域名访问的服务。首先,我们创建了一个Namespace用于隔离我们的资源;然后创建了一个Deployment来部署一个简单的应用;接着创建了一个Service来暴露Deployment中的应用;最后,通过修改Service的配置,将其设置为ClusterIP类型,使其只能通过ClusterIP进行访问,从而实现了不能通过域名访问的目的。希望以上内容能够帮助到你理解如何在Kubernetes中实现这一功能。如果有任何疑问,欢迎随时向我提问!