我们要部署的程序很简单,我们使用 gin 对外提供一个接口返回 helloworld。

然后利用交叉编译生成 go 的执行文件。

我们在 ide 中点击开始按钮后,自动的帮我们生成了myserver可执行文件,我们将这个文件上传到 work 节点的 /data/k8s-volume/myapp 目录下。
scp build/myserver [email protected]:/data/k8s-volume/myapp

接下来,我们来部署 GoAPI,我们还是点击部署工作负载。

我们现将 workloads 的基础信息填写上。

这一次我们选择 HostPort 直接将容器的端口与所在节点的端口进行映射,这种模式下和我们 docker -p xx:xx 的效果是一样的。
和 docker 一样,我们也可以将容器内的目录映射到宿主机上,在这里我们选择主机映射。

通过配置,我们将容器 /app 目录下的内容映射到我们的宿主机上,目前我们只有一个 work 节点。
因为我们是吧运行程序上传到了服务器上,所以我们需要利用 k8s 来帮助我们的容器。

这一步其实就相当于我们的 docker run。

点击部署后,我们需要等待片刻。
如果部署失败,我们可以点进工程内进行查看失败原因。

在事件中显示了失败原因,在拉取apline 的时候出现失败。原来是我们的镜像名写错了,那么修改镜像名称。

修改后,将会新的 pod 来替换老 pod。

好了,现在已经部署成功了,我们来进行访问。


我们再来尝试,192.168.0.210:8080 能否访问。

我们可以看到 Master 节点是不会转发这次请求的,这就是 NodePort 和 HostPort 的区别。