k8s之服务发现

一、概述

  k8s中支持两种服务发现方法: 环境变量和DNS

二、环境变量

  当Pod被创建的时候,k8s将为Pod设置每一个Service的相关环境变量,这些环境变量包括两种类型:

  • k8s Service环境变量:

    k8s为Service设置的环境变量形式, 包括:

    • {SVCNAME}_SERVICE_HOST
    • {SVCNAME}_SERVICE_PORT
    • {SVCNAME}_SERVICE_PORT_{PORTNAME}

    其中的服务名和端口名转为大写,连字符转换为下划线。

  • Docker Link环境变量:

    相当于通过 Docker 的--link 参数实现容器连接时设置的环境变量形式; 

三、DNS

   DNS服务发现需要k8s提供 Cluster DNS支持,Cluster DNS会监控k8s API,为每一个Service创建DNS记录用于域名解析,这样在Pod中可以通过DNS域名获取Service的访问地址。而对于一个Service, Cluster DNS会创建两条DNS记录:

  • [service_name].[namespace_name].[cluster_domain]
  • [service_name].[namespace_name].svc.[cluster_domain] 

 

时间: 2024-09-28 16:45:53

k8s之服务发现的相关文章

Docker网络和服务发现

本文讲的是Docker网络和服务发现[编者的话] 本文是<Docker网络和服务发现>一书的全文,作者是Michael Hausenblas.本文介绍了Docker世界中的网络和服务发现的工作原理,并提供了一系列解决方案. 前言 当你开始使用Docker构建应用的时候,对于Docker的能力和它带来的机会,你会感到很兴奋.它可以同时在开发环境和生产环境中运行,只需要将一切打包进一个Docker镜像中,然后通过Docker Hub分发镜像,这是很直接了当的.你会发现以下过程很令人满意:你可以快速

docker服务发现——etcd集群

etcd etcd用于服务发现的基础注册和通知,功能类似于zk,通过注册和监听,实现基础的服务发现. 安装 etcd安装非常简单,可以用go自己编译,etcd也提供了可以直接使用的二进制包(64位). 具体的安装提示页面在github上, 直接按照上面的描述下载即可.为了方便,把里面的etcd相关的二进制文件(etcd, etcdctl等) 复制到了/usr/local/bin中,方便后续使用. 运行 首先尝试单机版启动,参照手册先直接启动,etcd默认监听的是localhost,既只监听了lo

我是如何通过fuzz apache httpd服务发现CVE-2017-7668

本文讲的是我是如何通过fuzz apache httpd服务发现CVE-2017-7668, 目标 在fuzz过程中发现apache httpd服务在AFL下崩溃掉了,导致出现了很多问题,比如模糊测试程序稳定性下降,模糊测试之外的程序不会崩溃等等.在这篇文章中,我会在展示漏洞的同时尝试解释这些问题,最后再对崩溃本身进行一定的说明. 测试用例 由于这只是我自己用AFL来模拟继续程序的网络模糊测试,所以我没有考虑太多复杂以及覆盖范围广的例子. 所以,为了获得大量安装apache httpd服务的案例

Spring Cloud 接入 EDAS 之服务发现篇

目前 EDAS 已经完全支持 Spring Cloud 应用的部署了,您可以直接将 Spring Cloud 应用部署到 EDAS 中. 同时,为了更好地将阿里中间件的功能以云服务的方式提供给大家,我们也对 Spring Cloud 中的一些组件进行了加强或替换的工作. 让我们先来聊聊服务发现.我们知道原生的 Spring Cloud 支持多种服务注册与发现的方式,Eureka . Consul . Zookeeper 等,目前使用最多最广的就是 Eureka了,那我们就先从一个简单的 Eure

Docker结合Consul实现的服务发现(二)

本文讲的是Docker结合Consul实现的服务发现(二),[编者的话]这是Docker结合Consul实现服务发现系列文章的第二篇,在本文中,作者引入了HAproxy,并且利用Consul的EnvConsul及ConsulTemplate特性实现了对服务发现一些周边功能的支持. 那么,欢迎来到"Docker结合Consul实现的服务发现"系列的第二部分.在这第二篇里,我们将一起来看看你该如何使用Consul相关的系列工具,以使得服务发现其他的周边功能更容易实现. 想要了解本系列的其他

基于Docker的负载均衡和服务发现

应用的容器化和微服务化带来的问题 在缺省网络模型中,容器每次重启后,IP会发生变动,在一个大的分布式系统保证IP地址不变是比较复杂的事情 IP频繁发生变动,动态应用部署无法预知容器的IP地址,client端如何发现server端的访问端点? 解决方案(根据客户端是否有感知进行分类) 客户端的发现.client 订阅注册中心,有一个固定的注册中心地址,client订阅某个服务的注册中心,注册中心根据服务的运行状态推送某个服务的访问端点列表给client端. 该方案的实现举例有dubbo,DNS的解

基于Docker的应用负载均衡与服务发现

基于Docker的应用负载均衡与服务发现 概述 现在微服务架构越来越流行,阿里云容器服务对于微服务架构提供了很好的支撑,平台提供了便利的服务注册与发现机制,内置的服务负载均衡与路由功能,以及灵活的模板编排.全生命周期管理. 对于Web应用,下图是阿里云容器服务对弹性高可用Web应用负载均衡及路由支持的一种形式: 阿里云容器路由服务 假如你有一个Web应用需要运行多个实例,并对外提供服务.可以配置docker compose模板如下(以Java应用的Tomcat+Mysql为例), 这里通过Doc

DockOne微信分享(七十一):基于Docker的负载均衡和服务发现

本文讲的是DockOne微信分享(七十一):基于Docker的负载均衡和服务发现[编者的话]Docker已经成为时下热门的容器技术,各大公司,中小创业者,都选择采用Docker技术架构其下一代的系统和应用. 随着系统规模扩大,单一Docker容器不能应对压力,需要横向扩展到多个容器,我们需要考虑负载均衡的问题:单一职责的Docker容器之间需要相互通信,而容器在每一次重启之后,它的IP都可能发生变化,那么服务和服务之间如何发现对方? 这一次我们一起来交流基于Docker的负载均衡和服务发现.内容

Docker结合Consul实现的服务发现(一)

本文讲的是Docker结合Consul实现的服务发现(一),[编者的话]这是Docker结合Consul实现服务发现系列文章的第一篇,在本文中,作者介绍了一个基础的前后端服务架构并讲解了如何通过Consul实现服务的注册和发现. 在过去的一年里,我开始变得热衷于使用Consul来实现一切和服务发现相关的东西.如果你正在做微服务的话,你可能会碰到一个问题,那就是当你创建的服务数量越多时,这些服务之间的通信便越难管理.针对这个问题,Consul给出了一份完美的答卷.它提供了一个易于使用,基于开放标准