开发者社区 问答 正文

Kubernetes 集群创建服务

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

前提条件


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

步骤1 创建 deployment


  1. 登录容器服务管理控制台
  2. 在 Kubernetes 菜单下,单击左侧导航栏中的应用 > 部署,单击页面右上角的使用模板创建。
  3. 选择所需的集群,命名空间,选择样例模板或自定义,然后单击创建。

本例中,示例模板是一个 nginx 的 deployment。
apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1
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                                          ##需要在服务中暴露该端口
4.  进入 Kubernetes Dashboard,查看该 deployment 的运行状态。


步骤2 创建服务

  1. 登录容器服务管理控制台
  2. 在 Kubernetes 菜单下,单击左侧导航栏中的应用 > 服务,进入服务列表页面。
  3. 选择所需的集群和命名空间,单击页面右上角的创建。
  4. 在弹出的创建服务对话框中,进行配置。

  • 名称:输入服务的名称,本例中为 nginx-vc。
  • 类型:选择服务类型,即服务访问的方式,包括:
  • 虚拟集群 IP : 即 ClusterIP,指通过集群的内部 IP 暴露服务,选择该值,服务只能够在集群内部可以访问,这也是默认的 ServiceType。
  • 节点端口:即 NodePort,通过每个 Node 上的 IP 和静态端口(NodePort)暴露服务。NodePort 服务会路由到 ClusterIP 服务,这个 ClusterIP 服务会自动创建。通过请求 <NodeIP>:<NodePort>,可以从集群的外部访问一个 NodePort 服务。
  • 负载均衡:即 LoadBalancer,指阿里云提供的负载均衡服务(SLB),可选择公网访问或内网访问。阿里云负载均衡服务可以路由到 NodePort 服务和 ClusterIP 服务。
  • 关联部署:选择服务要绑定的后端对象,本例中是前面创建的 nginx-deployment-basic 。若不进行关联部署,则不会创建相关的 Endpoints 对象,您可自己进行绑定,参见 services-without-selectors。
  • 端口映射:添加服务端口和容器端口,容器端口需要与后端的 pod 中暴露的容器端口一致。
5. 单击创建,nginx-svc 服务出现在服务列表中。

6. 您可查看服务的基本信息,在浏览器中访问 nginx-svc 的外部端点。
至此,您完成如何创建一个关联到后端的 deployment 的服务,最后成功访问 Nginx 的欢迎页面。

展开
收起
青蛙跳 2018-08-17 19:02:56 1360 分享 版权
0 条回答
写回答
取消 提交回答