USERS › APPLICATION DEVELOPER › INTERMEDIATE
Introduction
sections in this doc

本文假设您之前已经尝试过使用 Kubernetes。此时,您应该拥有与 Kubernetes 集群(本地 Minikube 或其它)交互的基本经验,并可以使用 Deployment 等 API 对象来运行应用程序。如果还没有这样的能力,您应该先查看 新手 APP 开发人员 主题。

在查看本页及其链接的内容后,您应该会对以下内容有更好的理解:

  • 除 Deployment 外的其他 Kubernetes 工作负载
  • 使 Kubernetes 应用程序符合生产条件需要做些什么
  • 能够改进您工作流程的社区工具

了解其它工作负载模式

随着您的 Kubernetes 用例变得更复杂,您可能会发现熟悉更多 Kubernetes 提供的工具包会有所帮助。类似 DeploymentAn API object that manages a replicated application. 一类的 基本工作负载 对象可以直接运行、更新和伸缩应用程序,但他们并不适用于所有情况。

以下 API 对象提供了其它工作负载类型的功能,不管他们是 持久型 还是 终止型

持久型工作负载

像 Deployment 一样,这些 API 对象在集群上无限期的运行,直到被手动终止。他们最适合长时间运行的应用程序。

终止型工作负载

与 Deployment 相反,这些 API 对象(的运行时间)是有限的。一旦指定数量的 Pod 成功完成,它们就会停止。

其它资源

有关更多信息,可以查看 附加 Kubernetes 资源类型列表 以及 API 参考文档

可能还有一些您可能觉得有用的功能没有在这里提及到,这些功能在 完整 Kubernetes 文档 中有介绍。

部署一个生产就绪的工作负载

本网站上的初学者教程(例如 Guestbook app)的目的是在集群上启动并运行工作负载。这种原型设计非常适合在建立您关于 Kubernetes 的直觉!但是,为了可靠安全地将工作负载推向生产,您需要遵循一些其他最佳实践。

声明式配置

您可能会通过 kubectlA command line tool for communicating with a Kubernetes API server. 与您的Kubernetes 集群进行交互。kubectl 可用于调试集群的当前状态(如检查节点数量),或修改活动 Kubernetes 对象(例如使用 kubectl scale 更新工作负载的副本数)。

当使用 kubectl 更新 Kubernetes 对象时,注意不同的命令对应不同的方法这点很重要:

每种方法都有优点和缺点,尽管声明式方法(如kubectl apply -f)可能是生产环境中最有用的。通过这些方法,您可以依靠本地 YAML 文件确保获得真正的期望状态。这还使得您可以对配置进行版本控制,对代码审查和审计跟踪很有帮助。

想要了解其他的配置最佳实践,请熟悉 这个指南

安全

您可能熟悉最小特权原则——如果您在编写或使用软件时过于慷慨,权限的负面影响可能会变得失控。你会谨慎地向你的操作系统上的软件发放 sudo 权限吗?如果是这样在向 Kubernetes APIThe application that serves Kubernetes functionality through a RESTful interface and stores the state of the cluster. 服务器授予工作负载权限时,您应该谨慎行事!API server 是您集群数据源的网关;它提供了读取或修改集群状态的 endpoint。

您(或您的集群运维人员A person who configures, controls, and monitors clusters.)可以使用以下方式锁定 API 访问权限:

想要阅读更全面的关于安全的最佳实践,请考虑查看以下主题:

  • 身份验证 (他们说他们是谁?)
  • 授权 (用户是否有权限去做他们要求的内容?)

资源隔离和管理

如果您的工作负载在具有多个团队或项目的多租户环境中运行,则您的容器不一定在节点上独自运行。他们与其他您不拥有的容器共享节点资源。

即使您的集群运维人员代表您管理集群,也需要注意以下事项:

这份清单可能并不全面,但许多团队都有现有的流程来处理这一切。如果情况并非如此,那么您会发现 Kubernetes 文档相当丰富。

使用工具改进您的开发工作流程

作为应用程序开发人员,您可能会在工作流程中遇到以下工具。

kubectl

kubectl 是一个命令行工具,可让您轻松读取或修改您的 Kubernetes 集群。它为普通操作提供方便,简短的命令,如伸缩应用程序实例和获取节点信息。kubectl 如何做到这一点?它基本上只是一个用于发起 API 请求的用户友好的包装。它使用 client-go 编写(它是 Kubernetes API 的 Go 库)。

要了解最常用的 kubectl 命令,请查看 kubectl cheatsheet。它对以下主题进行了说明:

有关 kubectl 命令及其选项的完整列表,请查看 参考指南

Helm

要利用社区中的预打包配置,您可以使用 Helm chartsA package of pre-configured Kubernetes resources that can be managed with the Helm tool.

Helm chart 为特定应用程序(如 Jenkins 和 Postgres)打包 YAML 配置。然后,您可以使用最少的额外配置在集群上安装和运行这些应用程序。这种方法对于不需要太多定制实现逻辑的“现成”组件最为合理。

对于编写自己的 Kubernetes 应用配置,有一个 繁荣的工具生态系统,您可能会觉得有用。

探索更多资源

参考

现在您已经非常熟悉 Kubernetes,您可能会发现浏览以下参考页面非常有用。这样可能发现其他功能可能存在的高级视图:

此外,Kubernetes博客 通常会在 Kubernetes 设计模式和案例研究上发布有用的帖子

下一步

如果您对此页面上的主题很满意,并且想要了解更多的信息,请查看以下用户旅程:

Analytics

Create an Issue Edit this Page