K8S容器之间互访是指在Kubernetes集群中,不同的容器之间可以通过网络进行通信。这在微服务架构中非常常见,各个微服务之间需要相互通信来完成业务逻辑。下面我们将一步步来教你如何实现K8S容器之间互访。

### 整体流程
首先,让我们看一下实现K8S容器之间互访的整体流程:

| 步骤 | 描述 |
|----|----|
| 1 | 创建一个Kubernetes集群 |
| 2 | 创建两个Deployment并暴露服务 |
| 3 | 添加网络策略 |

### 具体步骤

#### 步骤一:创建一个Kubernetes集群
如果你还没有搭建Kubernetes集群,可以使用Minikube来快速搭建一个本地的集群。在命令行中执行以下命令:

```bash
minikube start
```

#### 步骤二:创建两个Deployment并暴露服务
我们需要创建两个Deployment,每个Deployment里包含一个Pod。然后分别暴露这两个Deployment创建的服务。

首先,创建一个Nginx Deployment并暴露服务:

```bash
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80
```

接着,创建一个Busybox Deployment,Busybox是一个精简的Linux发行版,用于测试网络通信:

```bash
kubectl run -i --tty busybox --image=busybox --restart=Never -- sh
```

#### 步骤三:添加网络策略
为了让两个Deployment之间可以互相访问,我们需要添加网络策略。创建一个名为allow-nginx的网络策略,允许访问Nginx服务:

创建一个名为allow-nginx的网络策略文件 `allow-nginx.yaml`,内容如下:
```yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-nginx
spec:
podSelector:
matchLabels:
app: nginx
policyTypes:
- Ingress
- Egress
ingress:
- {}
egress:
- {}
```

然后应用这个网络策略:

```bash
kubectl apply -f allow-nginx.yaml
```

### 总结
通过以上步骤,我们成功实现了K8S容器之间的互访。首先是搭建Kubernetes集群,然后创建两个Deployment并暴露服务,最后添加网络策略来允许容器之间的通信。希望这篇教程能够帮助你理解和实现K8S容器之间的互访。如果有任何问题,欢迎留言讨论。