Serverless Kubernetes 集群  应用管理  创建服务


Kubernetes Service 定义了这样一种抽象:一个 Pod 的逻辑分组,一种可以访问它们的策略,通常称为微服务。这一组 Pod 能够被 Service 访问到,通常是通过 Label Selector 来实现。
在 Kubernetes 中,pod 虽然拥有独立的 IP, 但 pod 会快速地创建和删除,因此,通过 pod 直接对外界提供服务不符合高可用的设计准则。通过 service 这个抽象,Service 能够解耦 frontend(前端)和 backend(后端) 的关联,frontend 不用关心 backend 的具体实现,从而实现松耦合的微服务设计。
更多详细的原理,请参见 Kubernetes service

前提条件


您已经成功创建一个 Serverless Kubernetes 集群,参见 创建 Serverless Kubernetes 集群

步骤 1 创建 deployment


使用镜像创建一个 deployment,本例中创建 serverless-app-deployment。具体操作参见 使用镜像创建应用

步骤 2 创建服务

  1. 登录 容器服务管理控制台
  2. 在 Kubernetes 菜单下,单击左侧导航栏中的应用 > 服务,进入服务列表页面。
  3. 选择所需的集群和命名空间,单击页面右上角的创建。
  4. 在弹出的创建服务对话框中,进行配置。
    • 名称:输入服务的名称,本例中为 serverless-service。
    • 类型:选择服务类型,即服务访问的方式。目前仅支持负载均衡,即 LoadBalancer,指阿里云提供的负载均衡服务(SLB),可选择公网访问或内网访问。
    • 关联部署:选择服务要绑定的后端对象,本例中使用 serverless-app-deployment。若不进行关联部署,则不会创建相关的 Endpoints 对象,您可自己进行绑定,参见 services-without-selectors
    • 端口映射:添加服务端口和容器端口,容器端口需要与后端的 pod 中暴露的容器端口一致。
    • 注解:为该服务添加一个注解(annotation),配置负载均衡的参数,例如设置service.beta.kubernetes.io/alicloud-loadbalancer-bandwidth:20表示将该服务的带宽峰值设置为20Mbit/s,从而控制服务的流量。更多参数请参见负载均衡
    • 标签:您可为该服务添加一个标签,标识该服务。
  • 单击创建,serverless-service 服务出现在服务列表中。
  • 您可查看服务的基本信息,在浏览器中访问 serverless-service 的外部端点。
  • 至此,您完成如何创建一个关联到后端的 deployment 的服务,最后成功访问 Nginx 的欢迎页面。
  • 展开
    收起
    青蛙跳 2018-08-31 22:33:17 1356 分享 版权
    阿里云 AI 助理回答

    在阿里云的Kubernetes环境中,通过Serverless Kubernetes集群部署微服务时,创建Service是实现应用高可用性和松耦合架构的关键步骤。您已经概述了从创建Deployment到配置Service的整个流程,这里我将补充一些细节和建议,帮助您更好地理解和利用阿里云上的Kubernetes服务。

    1. Deployment的作用

    • 无状态应用管理:Deployment是Kubernetes中用于管理无状态应用实例(Pods)的资源对象。它确保指定数量的Pod副本按照期望的状态运行,自动处理Pod的创建、更新和回滚,从而保证应用的稳定性和可靠性。

    2. Service的核心价值

    • 解耦与发现:如您所述,Service为Pod提供了一个稳定的访问接口,无论后端Pod如何变化(例如因故障重建或水平扩展),前端只需知道Service的地址即可,实现了前后端的解耦。
    • 负载均衡:当Service类型设置为LoadBalancer时,阿里云会自动创建一个负载均衡器(SLB),该SLB负责将流量分发到关联的Pod上,实现请求的负载均衡,提高系统的可用性和扩展性。

    3. 创建Service时的注意事项

    • 端口映射:确保Service定义中的端口映射正确无误,容器端口需与Pod中实际暴露的服务端口一致,这是实现外部访问的基础。
    • 注解配置:通过添加特定的注解(Annotations),可以定制SLB的行为,比如带宽限制、会话保持等,这些配置根据业务需求灵活调整。
    • 标签选择器:虽然示例中未直接提及,但通常Service会通过标签选择器(Label Selector)来动态地绑定到具有匹配标签的Pods,即使不手动关联部署,这也是Service设计的重要一环。

    4. 后续操作与监控

    • 健康检查与日志:确保为SLB配置合适的健康检查策略,并利用阿里云的日志服务或Prometheus等工具监控Service及Pods的运行状态和性能指标。
    • 自动伸缩:结合Horizontal Pod Autoscaler (HPA) 实现基于CPU、内存使用率或其他自定义指标的Pod自动扩缩,进一步提升服务的弹性和成本效率。

    5. 安全性考量

    • 网络策略:考虑使用Kubernetes Network Policies来控制Pod间的通信,增强集群的安全性。
    • 密钥管理:对于敏感信息,推荐使用Secrets来安全地存储和传递,避免明文出现在配置文件中。

    综上所述,通过阿里云的Kubernetes服务,您可以高效地部署和管理微服务应用,充分利用其提供的基础设施和服务来构建高可用、可扩展且安全的应用环境。

    有帮助
    无帮助
    AI 助理回答生成答案可能存在不准确,仅供参考
    0 条回答
    写回答
    取消 提交回答

    快速交付实现商业价值。

    还有其他疑问?
    咨询AI助理