使用 Pod

通过 CLI 或 Marathon API 端点创建和管理 Pod

您可通过 DC/OS CLI 或通过Marathon API/v2/pods/ 端点创建和管理 Pod。

使用 Pod CLI

Pod CLI 中提供以下命令:

  • dcos marathon pod add [<pod-resource>]
  • dcos marathon pod list [--json]
  • dcos marathon pod remove [--force] <pod-id>
  • dcos marathon pod show <pod-id>
  • dcos marathon pod update [--force] <pod-id>

添加 Pod

若要添加 pod,首先创建 JSON pod 定义。然后运行以下命令:

  1. dcos marathon pod add <pod-json-file>

列出 pod

使用以下命令列出 pod 及其拥有的容器数:

  1. dcos marathon pod list

删除 Pod

使用以下命令删除 pod:

  1. dcos marathon pod remove <pod-id>

如果当前 pod 正在部署,您将无法删除该 pod。若仍然要删除 pod,请使用 --force 标记运行该命令。

显示 Pod JSON

要查看 pod 定义,请运行以下命令:

  1. dcos marathon pod show <pod-id>

您可使用 show 命令以编程方式读取有关 pod 的数据。

更新 Pod

若要更新 pod,首先修改 pod 的 JSON 定义,然后运行以下命令:

  1. dcos marathon pod update <pod-id> < <new-pod-definition>

如果当前 pod 正在部署,您将无法更新该 pod。若仍然要更新 pod,请使用 --force 标记运行该命令。

使用 REST API

创建

  1. curl -X POST -H "Content-type: application/json" -d@<mypod>.json http://<ip>:<port>/v2/pods

样本响应:

  1. {
  2. "containers": [
  3. {
  4. "artifacts": [],
  5. "endpoints": [],
  6. "environment": {},
  7. "exec": {
  8. "command": {
  9. "shell": "sleep 1000"
  10. }
  11. },
  12. "healthCheck": null,
  13. "image": null,
  14. "labels": {},
  15. "lifecycle": null,
  16. "name": "sleep1",
  17. "resources": {
  18. "cpus": 0.1,
  19. "disk": 0,
  20. "gpus": 0,
  21. "mem": 32
  22. },
  23. "user": null,
  24. "volumeMounts": []
  25. }
  26. ],
  27. "environment": {},
  28. "id": "/simplepod2",
  29. "labels": {},
  30. "networks": [
  31. {
  32. "labels": {},
  33. "mode": "host",
  34. "name": null
  35. }
  36. ],
  37. "scaling": {
  38. "instances": 2,
  39. "kind": "fixed",
  40. "maxInstances": null
  41. },
  42. "scheduling": {
  43. "backoff": {
  44. "backoff": 1,
  45. "backoffFactor": 1.15,
  46. "maxLaunchDelaySeconds": 3600
  47. },
  48. "placement": {
  49. "acceptedResourceRoles": [],
  50. "constraints": []
  51. },
  52. "upgrade": {
  53. "maximumOverCapacity": 1,
  54. "minimumHealthCapacity": 1
  55. }
  56. },
  57. "secrets": {},
  58. "user": null,
  59. "volumes": []
  60. }

状态

获得所有 Pod 的状态:

  1. curl -X GET http://<ip>:<port>/v2/pods/::status

获取单个 Pod 的状态:

  1. curl -X GET http://<ip>:<port>/v2/pods/<pod-id>::status

删除

  1. curl -X DELETE http://<ip>:<port>/v2/pods/<pod-id>