Kubernetes Notes
  • README
  • 序:Kubernetes之道
  • 搭建开发环境
    • 搭建本地开发测试环境
  • 基本概念
    • Workloads
      • StatefulSet
    • 认证鉴权
      • 理解证书
      • Kubelet配置
    • 垃圾回收
    • Service
  • 基础组件
    • Scheduler
    • 自动扩缩容(HPA)
  • 容器运行时(Container Runtime)
    • CRI
    • Docker
      • 安装配置Docker
      • Docker FAQ
    • Containerd
  • 资源隔离与限制
    • 基础知识
      • Cgroup
      • Namespaces
    • CPU
    • Memory
    • 网络出/入带宽
    • GPU
    • Container
    • FAQ
  • 网络
    • 基础知识
      • Linux network interfaces
      • Iptables
      • Overlay network
    • CNI
    • Flannel
      • Flannel原理
      • host-gw
      • vxlan
      • ipip
    • Calico
    • Cilium
  • Service Mesh
    • Istio
  • 扩展Kubernetes
    • Admission controller
    • Custom resource definition(CRD)
    • Scheduler extender
    • 扩展资源维度
    • Kubectl plugin
    • Aggregator
    • Device plugin
  • 现网问题
    • Kubernetes
    • ETCD
    • Docker
  • 最佳实践
    • 各组件参数配置调优
    • 各大公司生产环境实践
    • 如何打造一个Kubernetes平台
  • 生产力小工具
    • 生成特定权限和配额的kubeconfig
  • 社区贡献
  • 学习资料
  • 附录:RTFSC
    • Informer
    • Pod deletion
Powered by GitBook
On this page
  • 1. Headless service
  • 2. NodePort vs LoadBalancer vs Ingress
  • 3. 参考资料

Was this helpful?

  1. 基本概念

Service

Previous垃圾回收Next基础组件

Last updated 5 years ago

Was this helpful?

1. Headless service

的proposal在,主要是为了提供服务发现的接口,通过DNS查询这个service时,可以获取其对应的pods的ip列表:

The endpoints_controller already creates endpoint records in etcd for services, which are also made available via the API. Headless services would do the same, just without creating an IP and/or DNS name for the service. This would create an API that clients could use to watch the set of endpoints associated with the headless service, and which would take advantage of whatever UI, readiness probes, etc. we add for services more generally, and which would be available for Kubernetes applications without the need to run a separate discovery service.

后来对headless service的使用做了更多的扩展:

  • 如果headless service指定了selector时,k8s不会为它分配cluster ip,但endpoint controller会为该service创建selector对应的pod的ip的endpoints。这些endpoints会被DNS(根据)用于创建A record,这样通过nslookup这个service时,可以查到对应的pod列表,并且,通过podName.serviceName可以访问到对应的pod ip。创建statefulset对象前就要创建这样一个headless service,用于pod间通信。

  • 如果headless service没有指定selector,k8s不会为它分配cluster ip,endpoint controller也不会为它创建endpoint,但DNS会创建相应的CNAME records for -type services或A records for any Endpoints that share a name with the service, for all other types.

2. NodePort vs LoadBalancer vs Ingress

3. 参考资料

  • Headless service:

  • Proposal: Headless service:

Headless service
Proposal: Headless services
Kubernetes DNS-Based Service Discovery
ExternalName
https://medium.com/google-cloud/kubernetes-nodeport-vs-loadbalancer-vs-ingress-when-should-i-use-what-922f010849e0
https://kubernetes.io/docs/concepts/services-networking/service/#headless-services
https://github.com/kubernetes/kubernetes/issues/1607