在Kubernetes(K8S)集群中,有时候我们需要限制一些本地端口的访问,以保证集群的安全性。本文将介绍如何在K8S中实现本地端口的拒绝访问,并提供相应的代码示例供大家参考。

### 步骤概览

下面是实现“本地端口拒绝访问”的步骤概览:

| 步骤 | 操作 |
|------------------------|----------------------|
| 步骤一:创建 Namespace | 创建一个新的 Namespace 来存放相关资源 |
| 步骤二:创建 NetworkPolicy | 创建一个 NetworkPolicy 对象来定义访问策略 |
| 步骤三:应用 NetworkPolicy | 将 NetworkPolicy 应用到指定的 Pod 上 |

### 步骤详解

#### 步骤一:创建 Namespace

首先,我们需要创建一个新的 Namespace 来存放相关资源。Namespace 的作用是对 K8S 集群中的资源进行逻辑隔离,以便更好地管理和控制这些资源。

```yaml
apiVersion: v1
kind: Namespace
metadata:
name: my-namespace
```

在上面的代码示例中,我们定义了一个名为 "my-namespace" 的 Namespace。通过 `kubectl apply -f namespace.yaml` 命令来创建该 Namespace。

#### 步骤二:创建 NetworkPolicy

接下来,我们需要创建一个 NetworkPolicy 对象来定义访问策略。NetworkPolicy 可以用来定义 Pod 之间的网络访问控制规则,包括允许或拒绝特定的流量。

```yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-port-access
namespace: my-namespace
spec:
podSelector:
matchLabels: {}
policyTypes:
- Ingress
- Egress
```

在上面的代码示例中,我们创建了一个名为 "deny-port-access" 的 NetworkPolicy 对象,并将其应用到之前创建的 Namespace "my-namespace" 中。该 NetworkPolicy 拒绝了所有的入口和出口流量。

#### 步骤三:应用 NetworkPolicy

最后,我们需要将创建的 NetworkPolicy 应用到指定的 Pod 上,以实现对本地端口的访问控制。

```yaml
apiVersion: v1
kind: Pod
metadata:
name: my-pod
namespace: my-namespace
spec:
containers:
- name: my-container
image: nginx:latest
```

在上面的代码示例中,我们创建了一个名为 "my-pod" 的 Pod,并将其部署在之前创建的 Namespace "my-namespace" 中。接下来,通过 `kubectl apply -f pod.yaml` 命令来部署该 Pod,并确保之前创建的 NetworkPolicy 已经成功应用到该 Pod 上。

### 总结

通过以上步骤,我们成功实现了在K8S集群中对本地端口的访问进行拒绝。对于新手来说,可能需要花费一些时间来理解和熟悉这些概念和操作步骤,但通过不断的实践和学习,相信大家都可以掌握这些技能并运用到实际项目中。希望本文能对大家有所帮助,谢谢阅读!