容器编排技术 -- Kubernetes 使用Service暴露应用

Kubernetes Services概述

(凡人皆有一死来描述pod,没有比这跟准确的了)。事实上,Pod是有生命周期的。当一个工作节点(Node)销毁时,节点上运行的Pod也会销毁,然后通过ReplicationController动态创建新的Pods来保持应用的运行。作为另一个例子,考虑一个图片处理 backend,它运行了3个副本,这些副本是可互换的 —— 前端不需要关心它们调用了哪个 backend 副本。也就是说,Kubernetes集群中的每个Pod都有一个独立的IP地址,甚至是同一个节点上的Pod,因此需要有一种方式来自动协调各个Pod之间的变化,以便应用能够持续运行。

Enter Services。Kubernetes中的Service 是一个抽象的概念,它定义了Pod的逻辑分组和一种可以访问它们的策略,这组Pod能被Service访问,使用YAML (优先)或JSON 来定义Service,Service所针对的一组Pod通常由LabelSelector实现(参见下文,为什么可能需要没有 selector 的 Service)。

可以通过type在ServiceSpec中指定一个需要的类型的 Service,Service的四种type:

  • ClusterIP(默认) - 在集群中内部IP上暴露服务。此类型使Service只能从群集中访问。
  • NodePort - 通过每个 Node 上的 IP 和静态端口(NodePort)暴露服务。NodePort 服务会路由到 ClusterIP 服务,这个 ClusterIP 服务会自动创建。通过请求 <NodeIP>:<NodePort>,可以从集群的外部访问一个 NodePort 服务。
  • LoadBalancer - 使用云提供商的负载均衡器(如果支持),可以向外部暴露服务。外部的负载均衡器可以路由到 NodePort 服务和 ClusterIP 服务。
  • ExternalName - 通过返回 CNAME 和它的值,可以将服务映射到 externalName 字段的内容,没有任何类型代理被创建。这种类型需要v1.7版本或更高版本kube-dnsc才支持。

更多不同类型Service的信息,请参考“Using Source IP”教程,Connecting Applications with Services。

使用ExternalName类型可以实现一种情况,在创建Service涉及未定义selector的示例,创建的Service selector不创建相应的Endpoints对象,可以通过手动将Service映射到特定Endpoints。

Kubernetes Service 是一个抽象层,它定义了一组逻辑的Pods,借助Service,应用可以方便的实现服务发现与负载均衡。

Services和Labels

如上图,A中Service 路由一组Pods的流量。Service允许pod在Kubernetes中被销毁并复制pod而不影响应用。相关Pod之间的发现和路由(如应用中的前端和后端组件)由Kubernetes Services处理。

Service 使用label selectors来匹配一组Pod,允许对Kubernetes中的对象进行逻辑运算,Label以key/value 键/值对附加到对象上。以多种方式使用:

  • 指定用于开发,测试和生产的对象
  • 嵌入版本Label
  • 使用Label分类对象

你可以在使用
--exposekubectl 创建 Deployment 的同时创建 Service 。

Label可以在创建时或以后附加到对象上,可以随时修改。

容器编排技术 -- Kubernetes 使用Service暴露应用相关推荐

  1. 容器编排技术 -- Kubernetes 调试 Service

    容器编排技术 -- Kubernetes 调试 Service 1 约定 2 在 pod 中运行命令 3 安装 4 Service 存在吗? 5 Service 是否通过 DNS 工作? 5.1 DN ...

  2. 容器编排技术 -- Kubernetes DNS Pod 与 Service 介绍

    容器编排技术 -- Kubernetes DNS Pod 与 Service 介绍 1 介绍 2 怎样获取 DNS 名字? 3 支持的 DNS 模式 3.1 Service 3.1.1 A 记录 3. ...

  3. 容器编排技术 -- Kubernetes 应用连接到 Service

    容器编排技术 -- Kubernetes 应用连接到 Service 1 Kubernetes 连接容器模型 2 在集群中暴露 Pod 3 创建 Service 4 访问 Service 4.1 环境 ...

  4. 容器编排技术 -- Kubernetes Service

    容器编排技术 -- Kubernetes Service 1 定义 Service 1.1 没有 selector 的 Service 2 VIP 和 Service 代理 2.1 userspace ...

  5. 容器编排技术 -- kubernetes 通过环境变量向容器暴露 Pod 信息

    容器编排技术 -- kubernetes 通过环境变量向容器暴露 Pod 信息 1 Before you begin 2 Downward API 3 使用 Pod 字段作为环境变量的值 4 使用容器 ...

  6. 容器编排技术 -- Kubernetes kubectl create service nodeport 命令详解

    容器编排技术 -- Kubernetes kubectl create service nodeport 命令详解 1 kubectl create service nodeport 2 语法 3 示 ...

  7. 容器编排技术 -- Kubernetes kubectl create service loadbalancer 命令详解

    容器编排技术 -- Kubernetes kubectl create service loadbalancer 命令详解 1 kubectl create service loadbalancer ...

  8. 容器编排技术 -- Kubernetes kubectl create service externalname 命令详解

    容器编排技术 -- Kubernetes kubectl create service externalname 命令详解 1 kubectl create service externalname ...

  9. 容器编排技术 -- Kubernetes kubectl create service clusterip 命令详解

    容器编排技术 -- Kubernetes kubectl create service clusterip 命令详解 1 kubectl create service clusterip 2 语法 3 ...

最新文章

  1. 手机通讯录分组名称_基于Aandroid的手机操作系统(7)
  2. golang表单及验证支持
  3. 静态static关键字修饰成员变量
  4. web压测工具http_load原理分析
  5. linux上修改html,linux进程名修改
  6. php实现分页mssql,PHP操作mssql数据库类,含分页类[分页类原创]
  7. 鲜花海报设计没有思路?看这里吧!
  8. memset()函数及其作用
  9. VC下关于debug和release的不同的讨论(收藏-转载)
  10. linux——uuid挂载硬盘
  11. 提问的智慧 程序员成长之路
  12. 【转载好文】对char *和char []做形参的深入理解+const char*/char const*/char *const的解析
  13. QCC3008项目实战:BlueVest体感背心
  14. 21种常见产品的电磁兼容检测项目与检测标准
  15. 9行代码制作一个简单的油猴插件
  16. Redis和消息队列
  17. 协众技术教你玩转电商海报设计
  18. 五年北京,这个改变我命运的城市,终于要离开了
  19. Vertx中的verticle详解
  20. Robotframework自动化测试框架

热门文章

  1. 在ASP.NET Web Application 中如何处理图片 【转】-有用
  2. Magento教程 18:Magento功能导览(2) 展示商品
  3. Linux中7个用来浏览网页和下载文件的命令
  4. magento转移搬家
  5. UITableView 系列五 :自定义UITableViewCell (实例)
  6. 收起虚拟键盘的各种方法 -- IOS
  7. ie 调试器,类似firebug
  8. python-演练-数据排除-从学生得分中去除题目源中并不存在的题
  9. Nginx进程间通信机制
  10. python定义只有一个元素的元组