在Kubernetes中,有三种不同的IP地址类型用于不同的目的:Cluster IP、Node IP和Pod IP。在这篇文章中,我将介绍k8s的三个IP地址类型,以及如何在Kubernetes集群中查找和使用它们。

### K8S的三个IP

#### 1. Cluster IP

Cluster IP地址是Service的默认类型,它提供了一个集群内部的虚拟IP地址,用于与Service进行通信。Cluster IP只能从集群内部访问,外部流量无法直接访问。

#### 2. Node IP

Node IP地址是Kubernetes节点的IP地址,用于节点之间的通信。Node IP可以用来直接访问节点上运行的Pod,但不是公共可访问的。

#### 3. Pod IP

Pod IP地址是Pod的IP地址,用于在集群内部进行通信。Pod IP是由CNI(Container Network Interface)插件分配的,每个Pod都有自己的IP地址。

### 实现"K8S的三个IP"流程

下面是实现"K8S的三个IP"的步骤:

| 步骤 | 描述 |
| ---- | ---- |
| 1 | 创建一个Deployment和一个Service |
| 2 | 查找Cluster IP |
| 3 | 查找Node IP |
| 4 | 查找Pod IP |

### 代码示例

#### 步骤1: 创建一个Deployment和一个Service

```yaml
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.17
ports:
- containerPort: 80

---
# service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
```

#### 步骤2: 查找Cluster IP

在Kubernetes中,您可以使用以下命令来查找Service的Cluster IP地址:

```bash
kubectl get svc nginx-service
```

#### 步骤3: 查找Node IP

您可以使用以下命令来查找节点的IP地址:

```bash
kubectl get nodes -o wide
```

#### 步骤4: 查找Pod IP

要查找Pod的IP地址,您可以使用以下命令:

```bash
kubectl get pods -o wide
```

通过上述步骤,您可以查找到Kubernetes集群中的Cluster IP、Node IP和Pod IP地址。这些IP地址是Kubernetes中非常重要的概念,对于理解和管理集群中的网络通信至关重要。希望这篇文章对您有所帮助!