部署带有 NodePort 的工作负载

先决条件

已经有一个正在运行的集群,且集群中有至少一个节点。

部署工作负载

参考前文完成Rancher Server 的快速部署后,您可以创建 Kubernetes 工作负载。工作负载即 Kubernetes 对一组 Pod 的抽象模型,用于描述业务的运行载体,包括 Deployment、Statefulset、Daemonset、Job、CronJob 等多种类型,详情请参考名词解释

以下步骤讲解了如何在 Rancher Server 中部署带有 NodePort 的工作负载。本文部署的工作负载是一个“Hello-World”应用。

  1. 访问集群页面,选择您刚刚创建的集群,进入集群页面。

  2. 从集群页面的主菜单中选择项目/命名空间

  3. 打开 项目:Default

  4. 单击资源 > 工作负载。如果您使用的是 v2.3.0 之前的版本,请单击 工作负载 > 工作负载

  5. 单击部署

    结果: 打开部署工作负载 页面。

  6. 输入工作负载的名称。

  7. Docker 镜像一栏,输入rancher/hello-world,请注意区分大小写字母。

  8. 端口映射单击添加端口

  9. 网络模式 下拉菜单选择 NodePort

    As a dropdown, NodePort (On every node selected)

  10. 主机监听端口一栏,保持随机选项。

    On Listening Port, Random selected

  11. 容器端口 输入80

    Publish the container port, 80 entered

  12. 余下的选项保持默认配置即可。

  13. 单击运行

结果:

  • 部署了工作负载。这个过程可能需要几分钟完成。
  • 当您的工作负载部署完成后,它的状态将变为Active,您可以从项目的工作负载页面查看工作负载当前的状态。

查看您的应用

负载均衡页面单击工作负载下方的链接,如果部署成功了,您的应用会在一个新窗口中打开。

注意事项

当您使用云端虚拟机时,您可能会因为权限不够而无法访问所运行容器的端口。在这种情况下,您可以在本地使用 ssh 连接到集群中的任意节点,然后通过命令行测试 Nginx。在 Rancher UI 中找到新建的工作负载的可用的端口,也就工作负载下面 : 后显示的端口。以下文代码为例,可用的端口是31568

  1. gettingstarted@rancher:~$ curl http://localhost:31568
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <title>Rancher</title>
  6. <link rel="icon" href="img/favicon.png">
  7. <style>
  8. body {
  9. background-color: white;
  10. text-align: center;
  11. padding: 50px;
  12. font-family: "Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
  13. }
  14. button {
  15. background-color: #0075a8;
  16. border: none;
  17. color: white;
  18. padding: 15px 32px;
  19. text-align: center;
  20. text-decoration: none;
  21. display: inline-block;
  22. font-size: 16px;
  23. }
  24. #logo {
  25. margin-bottom: 40px;
  26. }
  27. </style>
  28. </head>
  29. <body>
  30. <img id="logo" src="img/rancher-logo.svg" alt="Rancher logo" width=400 />
  31. <h1>Hello world!</h1>
  32. <h3>My hostname is hello-world-66b4b9d88b-78bhx</h3>
  33. <div id='Services'>
  34. <h3>k8s services found 2</h3>
  35. <b>INGRESS_D1E1A394F61C108633C4BD37AEDDE757</b> tcp://10.43.203.31:80<br />
  36. <b>KUBERNETES</b> tcp://10.43.0.1:443<br />
  37. </div>
  38. <br />
  39. <div id='rancherLinks' class="row social">
  40. <a class="p-a-xs" href="https://rancher.com/docs"><img src="img/favicon.png" alt="Docs" height="25" width="25"></a>
  41. <a class="p-a-xs" href="https://slack.rancher.io/"><img src="img/icon-slack.svg" alt="slack" height="25" width="25"></a>
  42. <a class="p-a-xs" href="https://github.com/rancher/rancher"><img src="img/icon-github.svg" alt="github" height="25" width="25"></a>
  43. <a class="p-a-xs" href="https://twitter.com/Rancher_Labs"><img src="img/icon-twitter.svg" alt="twitter" height="25" width="25"></a>
  44. <a class="p-a-xs" href="https://www.facebook.com/rancherlabs/"><img src="img/icon-facebook.svg" alt="facebook" height="25" width="25"></a>
  45. <a class="p-a-xs" href="https://www.linkedin.com/groups/6977008/profile"><img src="img/icon-linkedin.svg" height="25" alt="linkedin" width="25"></a>
  46. </div>
  47. <br />
  48. <button class='button' onclick='myFunction()'>Show request details</button>
  49. <div id="reqInfo">
  50. <h3>Request info</h3>
  51. <b>Host:</b> 172.22.101.111:31411 <br />
  52. <b>Pod:</b> hello-world-66b4b9d88b-78bhx </b><br />
  53. <b>Accept:</b> [*/*]<br />
  54. <b>User-Agent:</b> [curl/7.47.0]<br />
  55. </div>
  56. <br />
  57. <script>
  58. function myFunction() {
  59. var x = document.getElementById("reqInfo");
  60. if (x.style.display === "none") {
  61. x.style.display = "block";
  62. } else {
  63. x.style.display = "none";
  64. }
  65. }
  66. </script>
  67. </body>
  68. </html>
  69. gettingstarted@rancher:~$

Copy

结果

成功部署工作负载并通过 NodePort 暴露该工作负载。

后续操作

使用完您通过快速入门搭建的 Rancher 沙盒后,您可能想要清理遗留在环境中与 Rancher 相关的资源,并删除 Rancher Server 和您的集群,请单击下方链接查看操作指导。