k8s 核心概念 2 service

我们现在已经有了 pod ,那让他们相互访问不可以么?答案是,不可以,因为 pod 是有生命周期的,他可能随时被创建也可能随时被销毁,而 每次新建 pod 就会给其分配一个随机的 ip,并且 k8s 也会自动调控 pod 的数量。这就导致了 pod 之间直接访问是不现实的,如果有一个入口,可以动态绑定那些提供相同服务的 pod,并将其开放在固定端口上,这样访问起来不就方便很多了么?这个入口在 k8s 中被称为service。

Service是一组逻辑Pods的抽像,并定义了这组逻辑Pods的访问策略,来解决应用之间的内部访问。

我们看下服务例子:

apiVersion: v1
kind: Service
metadata:
  name: kubia
spec:
  ports:
  - port: 80
    targetPort: 8080
  selector:
    app: kubia


代理模型

目前k8s提供了三种服务代理模型

  • userspace
  • iptables:默认配置
  • ipvs

Kubernetesv1.2之前默认是userspace之后是iptables模式,iptables模式性能和可靠性更好,但是iptables模式依赖健康检查,在没有健康检查的情况下如果一个pod不响应,iptables模式不会切换另一个pod上

Kubernetes v1.9版本会支持lvs的ipvs模式目前还是beta版

服务类型

当前服务支持如下几种类型

  • ClusterIP:通过集群的内部IP暴露服务, 不设置类型时,此值是默认值
  • NodePort:通过每个Node上的IP和静态端口暴露服务
  • LoadBalancer:外部云供商的负载均衡器
  • ExternalName:将服务映射成一个externalName(e.g. foo.bar.example.com)
发布了69 篇原创文章 · 获赞 1 · 访问量 3465
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览