在Kubernetes(K8S)集群中添加公网Node是一项常见的操作,可以帮助我们扩展集群的规模以及增加集群中节点的访问性。下面我将介绍如何实现在K8S中添加公网Node的流程以及具体步骤和代码示例。

### 流程概述
在K8S中添加公网Node的主要步骤如下:

| 步骤 | 操作 |
| ---- | ---- |
| 1 | 准备好公网Node |
| 2 | 将Node添加到K8S集群 |
| 3 | 配置Node的网络访问权限 |
| 4 | 部署应用到公网Node上 |

### 具体步骤与代码示例

#### 步骤一:准备好公网Node

首先,需要确保你已经有一个可用于公网访问的Node。这个Node可以是在公网上购买的云服务器,也可以是通过端口映射等方式让内网Node可访问外网。

#### 步骤二:将Node添加到K8S集群

1. 首先,通过ssh等方式连接到K8S Master节点。
2. 运行以下命令,将Node添加到K8S集群中:
```bash
kubectl label node node-type=public
```
其中,``替换为你要添加的Node的名称,`node-type=public`是为该Node添加一个标签,用于后续区分。

#### 步骤三:配置Node的网络访问权限

1. 为了让公网Node能够访问K8S集群内部服务,我们需要配置网络策略,可以使用Calico等网络插件。
2. 在Master节点上运行以下命令,部署Calico网络插件:
```bash
kubectl apply -f https://docs.projectcalico.org/v3.16/manifests/calico.yaml
```

#### 步骤四:部署应用到公网Node上

1. 确保你的应用已经容器化,并可以在K8S集群中运行。
2. 创建一个Deployment资源,部署你的应用到公网Node:
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: your-image:tag
ports:
- containerPort: 80
```
在上面的示例中,首先给Deployment资源一个名称`my-app`,然后定义了一个容器运行的镜像和端口。

通过以上步骤,你就成功地将一个公网Node添加到了K8S集群中,并部署了一个应用到该Node上,实现了在K8S中添加公网Node的操作。希望这篇文章对小白朋友有所帮助!