Kubernetes(简称K8S)是一个用于自动化部署、扩展和管理容器化应用程序的开源平台。在K8S中,容器之间是相互隔离的,它们在自己的网络命名空间中运行,并且默认情况下容器之间是不能直接通信的。因此,如果你想要在K8S中打开容器端口,你需要做一些配置。

下面我将详细介绍如何在K8S中开放容器端口,并为你提供相关的代码示例。

### 步骤概览
在表格中,我列出了实现"K8S容器端口开放"的步骤及每个步骤的操作。

| 步骤 | 操作 | 代码示例 |
|----------|--------------------------------|-------------------------------------------------------------------------------------------|
| 步骤一 | 创建Deployment | kubectl create deployment my-app --image=my-image |
| 步骤二 | 创建Service | kubectl expose deployment my-app --port=80 --target-port=8080 --type=NodePort |
| 步骤三 | 查看Service信息 | kubectl get service my-app |
| 步骤四 | 访问容器端口 | curl http://NodeIP:NodePort |

### 具体步骤及代码示例
1. 创建一个Deployment来运行你的应用:

```shell
kubectl create deployment my-app --image=my-image
```

这段命令将创建一个名为my-app的Deployment,并使用镜像my-image来运行你的应用。

2. 创建Service来暴露Deployment中的容器端口:

```shell
kubectl expose deployment my-app --port=80 --target-port=8080 --type=NodePort
```

这段命令将创建一个Service,将Deployment中的容器端口80映射到Node上的端口8080,并使用NodePort类型来暴露Service。

3. 查看Service信息,获取NodePort端口:

```shell
kubectl get service my-app
```

运行这个命令后,你将看到类似以下的输出:

```
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-app NodePort 10.99.10.10 80:31417/TCP 1m
```

在这个例子中,NodePort端口为31417。你可以使用这个端口来访问容器中的应用。

4. 使用curl命令来访问容器端口:

```shell
curl http://NodeIP:NodePort
```

在这里,NodeIP是运行K8S的节点的IP地址,NodePort是第3步中获取到的NodePort端口。运行这个命令后,你就可以访问到容器中的应用了。

通过以上步骤,你已经成功在K8S中开放了容器端口,并可以通过Node的IP和NodePort来访问你的应用。希望这篇文章能够帮助你更好地理解和实践K8S容器端口开放的操作。如果有任何问题或疑问,欢迎随时向我提问。祝你学习进步!