部署带有 NodePort 的工作负载

先决条件

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

1. 部署工作负载

你可以开始创建你的第一个 Kubernetes 工作负载。工作负载是一个对象,其中包含 pod 以及部署应用所需的其他文件和信息。

在本文的工作负载中,你将部署一个 Rancher Hello-World 应用。

  1. 点击 ☰ > 集群管理

  2. 集群页面中,进入需要部署工作负载的集群,然后单击 Explore

  3. 点击工作负载

  4. 单击创建

  5. 为工作负载设置名称

  6. 容器镜像字段中,输入 rancher/hello-world。注意区分大小写。

  7. 点击添加端口

  8. 服务类型下拉菜单中,确保选择了 NodePort

    NodePort 下拉菜单(在每个所选节点处)

  9. 发布容器端口字段中,输入端口80

    发布容器端口,端口 80 已输入

  10. 单击创建

结果

  • 工作负载已部署。此过程可能需要几分钟。
  • 当工作负载完成部署后,它的状态会变为 Active。你可以从项目的工作负载页面查看其状态。

2. 查看应用

工作负载页面中,点击工作负载下方的链接。如果 deployment 已完成,你的应用会打开。

注意事项

如果使用云虚拟机,你可能无法访问运行容器的端口。这种情况下,你可以使用 Execute Shell 在本地主机的 SSH 会话中测试 Nginx。如果可用的话,使用工作负载下方的链接中 : 后面的端口号。在本例中,端口号为 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" style='display:none'>
  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:~$

已完成!

恭喜!你已成功通过 NodePort 部署工作负载。

后续操作

使用完沙盒后,你需要清理 Rancher Server 和集群。详情请参见: