您可以在阿里云容器服务 Kubernetes 版中创建服务。本文介绍如何创建服务。
前提条件 创建一个 kubernetes 集群,参见创建 Kubernetes 集群。 背景信息 Kubernetes Service 定义了这样一种抽象:一个 Pod 的逻辑分组,一种可以访问它们的策略,通常称为微服务。这一组 Pod 能够被 Service 访问到,通常是通过 Label Selector 来实现的。 在 Kubernetes 中,Pod 虽然拥有独立的 IP, 但 Pod 会快速地创建和删除,因此,通过 Pod 直接对外界提供服务不符合高可用的设计准则。通过 Service 这个抽象,Service 能够解耦 frontend(前端)和 backend(后端) 的关联,frontend 不用关心 backend 的具体实现,从而实现松耦合的微服务设计。
更多详细的原理,请参见 Kubernetes service。
步骤1 创建 deployment 登录容器服务管理控制台。 在 Kubernetes 菜单下,单击左侧导航栏中的应用 > 无状态,进入无状态(Deployment)页面。 单击页面右上角的使用模板创建。 模板创建应用 选择所需的集群和命名空间,选择样例模板或自定义,然后单击创建。 设置参数 本例中,示例模板是一个 nginx 的 deployment。
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment-basic labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 # replace it with your exactly <image_name:tags> ports: - containerPort: 80 ##需要在服务中暴露该端口 单击Kubernetes 控制台,进入 Kubernetes Dashboard,查看该 Deployment 的运行状态。 查看运行状态 步骤2 创建服务 在 Kubernetes 菜单下,单击左侧导航栏中的路由与负载均衡 > 服务,进入服务列表页面。 选择所需的集群和命名空间,单击页面右上角的创建。 创建服务 在弹出的创建服务对话框中,进行配置。 配置参数 名称:输入服务的名称,本例中为 nginx-svc。 类型:选择服务类型,即服务访问的方式。包括: 虚拟集群 IP :即 ClusterIP,指通过集群的内部 IP 暴露服务,选择该值,服务只能够在集群内部可以访问,这也是默认的 ServiceType。 说明 您的服务类型为虚拟集群IP时,才能设置实例间发现服务(Headless Service)。 节点端口:即 NodePort,通过每个 Node 上的 IP 和静态端口(NodePort)暴露服务。NodePort 服务会路由到 ClusterIP 服务,这个 ClusterIP 服务会自动创建。通过请求 : ,可以从集群的外部访问一个 NodePort 服务。 负载均衡:即 LoadBalancer,指阿里云提供的负载均衡服务(SLB),可选择公网访问或内部访问。阿里云负载均衡服务可以路由到 NodePort 服务和 ClusterIP 服务。 新建 SLB:您可以通过单击修改,修改 SLB 规格。 使用已有负载均衡: 您可以在已有的列表中选择 SLB 规格。 说明 负载均衡类型支持新建 SLB 和使用已有 SLB,且多个 Kubernetes Service 可以复用同一个 SLB,但是存在以下限制: 使用已有的负载均衡实例会强制覆盖已有监听。 Kubernetes 通过 Service 创建的 SLB 不能复用(会导致 SLB 被意外删除)。只能复用您手动在控制台(或调用 OpenAPI)创建的 SLB。 复用同一个 SLB 的多个 Service 不能有相同的前端监听端口,否则会造成端口冲突。 复用 SLB 时,监听的名字以及虚拟服务器组的名字被 Kubernetes 作为唯一标识符。请勿修改监听和虚拟服务器组的名字。 不支持跨集群复用 SLB。 关联:选择服务要绑定的后端对象,本例中是前面创建的 nginx-deployment-basic 。若不进行关联部署,则不会创建相关的 Endpoints 对象,您可自己进行绑定,参见 services-without-selectors。 外部流量策略:可选值为Local或Cluster。 说明 您的服务类型为节点端口或负载均衡时,才能设置外部流量策略。 端口映射:添加服务端口和容器端口,容器端口需要与后端的 Pod 中暴露的容器端口一致。 注解:为该服务添加一个注解(annotation),配置负载均衡的参数,例如设置service.beta.kubernetes.io/alicloud-loadbalancer-bandwidth:20表示将该服务的带宽峰值设置为 20Mbit/s,从而控制服务的流量。更多参数请参见通过负载均衡(Server Load Balancer)访问服务。 标签:您可为该服务添加一个标签,标识该服务。 单击创建,nginx-svc 服务出现在服务列表中。 服务列表 您可查看服务的基本信息,在浏览器中访问 nginx-svc 的外部端点。 查看外部端点 至此,您已成功创建了一个关联到后端的 deployment 的服务,最后成功访问 Nginx 的欢迎页面。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。