在Kubernetes(K8S)中,要想访问Docker容器的端口,我们需要通过Kubernetes服务(Service)来实现。Kubernetes服务允许我们定义一组Pod的逻辑集合,并为它们提供一个稳定的网络端点,以便其他应用程序可以访问这些Pod。在本文中,我将向你展示如何使用Kubernetes服务来访问Docker容器的端口。

步骤概览:

| 步骤 | 描述 |
|-----------------------------------|-----------------------------------------------------|
| 创建Deployment | 创建Deployment来运行Docker容器 |
| 创建Service | 创建Service以公开Deployment中容器的端口 |
| 获取Service的Cluster IP地址 | 获取Service的Cluster IP地址以访问容器的端口 |
| 访问Docker容器的端口 | 使用Service的Cluster IP地址和端口号来访问Docker容器的端口|


步骤详解:

### 步骤 1: 创建Deployment

首先,我们需要创建一个Deployment来运行我们的Docker容器。下面是一个简单的Deployment配置示例:

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: my-docker-image:latest
ports:
- containerPort: 8080
```

在这个配置中,我们定义了一个名为`my-deployment`的Deployment,其中运行一个容器`my-container`,该容器使用`my-docker-image:latest`镜像,并在容器内部暴露了端口号`8080`。

### 步骤 2: 创建Service

接下来,我们需要创建一个Service来公开Deployment中容器的端口。下面是一个简单的Service配置示例:

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

在这个配置中,我们定义了一个名为`my-service`的Service,它将根据`selector`选择符合`app: my-app`标签的Pod,并将Service的端口`80`映射到Pod的端口`8080`。

### 步骤 3: 获取Service的Cluster IP地址

一旦Service创建成功,我们需要获取Service的Cluster IP地址,以便访问容器的端口。可以通过以下命令获取Service的Cluster IP地址:

```bash
kubectl get svc my-service
```

### 步骤 4: 访问Docker容器的端口

最后,我们可以使用Service的Cluster IP地址和端口号来访问Docker容器的端口。比如,如果Service的Cluster IP地址为`10.20.30.40`,端口为`80`,那么我们可以通过`http://10.20.30.40:80`来访问容器的端口。

通过以上步骤,我们就成功地实现了通过Kubernetes服务来访问Docker容器的端口。希望这篇文章可以帮助到你理解这一概念并顺利进行操作。如果还有任何疑问,欢迎继续探讨和学习。祝你在Kubernetes的学习和实践中一帆风顺!