标题 :

1.利用consul实现k8s服务自动发现

目录 :

微服务架构设计

序号 :

1

                ]
}
}
]
}

}


- consul自身支持ACL,但目前,Helm图表不支持其中一些功能,需要额外的手动配置,
有关详细信息可参阅:https://www.consul.io/docs/platform/k8s/helm.html
- 我们使用basic-auth作了授权,当用户访问consul-ui时需要提供用户名和密码

```shell
yum -y install httpd
echo "$(htpasswd -nb -C 5 consul yourpassword)" >> auth
kubectl create secret generic basic-auth --from-file=auth
  • 当您使用basic-auth时,建议使用Https,否则您的用户名和密码可能会被窃听



[按需]卸载consul
helm del --purge registry
kubectl delete pvc -l app=consul
kubectl delete svc -l consul=true

查看服务是否被注册

登录到consul的ui,https://yourdomain/ui/dc1/services



可以看到我们的服务已经被注册到了consul中



以下事项需要您注意:

  • 如果您的服务没有被正确注册,请检查registry-consul-sync-catalog-*的日志,另外如果您的服务本身存在问题(例如:服务本身不能正确反代到pod)服务也不能被注册
  • 您需要为pod创建service, consul才能发现. 也就是说consul发现的资源对象时svc,并非pod

服务注册时的一些规范
  • 从上图可以看出,我们的服务名称很长.这将影响我们使用网关进行路由的体验(有关网关的设计会在后面章节提及),您可以更改此设置.请更改您的service的亲和属性:"consul.hashicorp.com/service-name": "yourservicename"
  • 为方便辨识服务,可以为服务打上标签.方便检索
  • 有些服务不应该被注册,例如网关服务(因为网关作为外部流量的入口,应该由它路由到具体的服务).您可以更改亲和属性:"consul.hashicorp.com/service-sync": "false"
 "annotations": {
"consul.hashicorp.com/service-name": "terminal",
"consul.hashicorp.com/service-tags": "honeysuckle,terminalserver"
}

最后的效果应该类型这样:





引用链接

https://github.com/helm/charts/tree/master/stable/consul

https://www.sunnyos.com/article-show-85.html

1.利用consul实现k8s服务自动发现的更多相关文章

  1. prometheus(5)之consul服务自动发现及pushgetway

    pushgetway(push上传metric数据) Pushgateway简介 Pushgateway是prometheus的一个组件,prometheus server默认是通过exporter主 ...

  2. marathon的高可用服务自动发现和负载均衡

    上一篇我们说谈了docker+zookeeper+mesos+marathon集群,本篇我们来谈谈marathon的集群和自动发现服务. marathon的服务自动发现和负载均衡有两种,1是mesos ...

  3. python与consul 实现gRPC服务注册-发现

    背景 通过对gRPC的介绍我们知道,当正常启动服务后,我们只需要知道ip,port就可以进行gRPC的连接.可以想到,这种方式并不适合用于线上环境,因为这样直连的话就失去了扩展性,当需要多机部署的时候 ...

  4. Kubernetes 服务自动发现CoreDNS

    前言 Service服务,是一个概念,逻辑通过selector标签代理指定后端pod.众所周知,pod生命周期短,状态不稳定,pod错误异常后新生成的Pod IP会发生变化,之前Pod的访问方式均不可 ...

  5. dubbo与zk注册中心如何对接,如何做到服务自动发现

    先看下consumer端发起调用时的链路流程: +---------------------------+ +---------------------------+ +--------------- ...

  6. 服务注册发现、配置中心集一体的 Spring Cloud Consul

    前面讲了 Eureka 和 Spring Cloud Config,今天介绍一个全能选手 「Consul」.它是 HashiCorp 公司推出,用于提供服务发现和服务配置的工具.用 go 语言开发,具 ...

  7. 玩转Spring Cloud之服务注册发现(eureka)及负载均衡消费(ribbon、feign)

    如果说用Spring Boot+Spring MVC是开发单体应用(或单体服务)的利器,那么Spring Boot+Spring MVC+Spring Cloud将是开发分布式应用(快速构建微服务)的 ...

  8. Docker集群实验环境布署--swarm【3 注册服务监控与自动发现组件--consul】

    参考官网集群配置方式 https://hub.docker.com/r/progrium/consul/   集群中需要manager与node能通信consul的发现服务,不然,管理节点选举不了,无 ...

  9. Ocelot + Consul + Registrator 基于Docker 实现服务发现、服务自动注册

    目录 1. Consul集群搭建 1.1 F&Q Consul官方推荐的host网络模式运行 2. Registrator服务注册工具 2.1 F&Q Registrator悬挂服务 ...

随机推荐

  1. ctfshow——web_AK赛

    签到_观己 从题目描述中没发现什么有用的信息 发现文件包含 尝试使用PHP伪协议执行命令,发现无法执行 尝试使用远程文件包含,发现也未开启 尝试使用日志注入 记录了UA值,抓包写入一句话木马 使用蚁剑 ...

  2. AQS之ReentrantReadWriteLock写锁

    用法 1.1 定义一个安全的list集合 public class LockDemo { ArrayList<Integer> arrayList = new ArrayList<& ...

  3. 特斯拉Toolbox诊断检测仪工具Tesla诊断电脑 Tesla Toolbox

    Tesla特斯拉Toolbox诊断工具Tesla诊断电脑检测仪 Tesla Toolbox, Tesla Toolbox Diagnostic Tester.Language: English,Deu ...

  4. 通过js给某个标签添加内容或者删除标签

    添加内容 //先保存div中原来的html var tag = document.getElementById("tag").innerHTML; //构造新的内容 var cou ...

  5. Py-时间,随机,os,sys,jsonpickle序列化,shelve,xml模块

    内置模块 1.时间模块 第一:time.time()是时间戳 时间戳默认是 从1970年到现在过的秒数,是一个很长的数值它可以做时间的计算以及显示 第二:localtime() 获取当前的时间,按元组 ...

  6. 使用 .NETCore自带框架快速实现依赖注入

    Startup 在Startup的ConfigureServices()中配置DI的接口与其实现 public void ConfigureServices(IServiceCollection se ...

  7. 使用Bat自动打包并通过FTP发送到备份服务器——实战测试

    这个bat文件要求本地安装有winrar解压软件,位置是:C:\Program Files\WinRAR\WinRAR.exe 如果执行报错,请检查你复制我的代码是否有问题,有些复制粘贴进去后因为一些 ...

  8. Redis布隆过滤器与布谷鸟过滤器

    大家都知道,在计算机中,IO一直是一个瓶颈,很多框架以及技术甚至硬件都是为了降低IO操作而生,今天聊一聊过滤器,先说一个场景: 我们业务后端涉及数据库,当请求消息查询某些信息时,可能先检查缓存中是否有 ...

  9. 异步日志 Loguru

    https://mp.weixin.qq.com/s/hy68s610B9GbL_wgwTn7nA 更优美的python日志管理库Loguru Asynchronous, Thread-safe, M ...

  10. 浅谈JavaScript异步编程

    单线程模式 我们知道JS的执行环境是单线程的,是因为JS语言最早是运行在浏览器端的语言,目的是为了实现页面上的动态交互.实现动态交互的核心就是DOM操作,因此决定了JS必须是单线程模式工作.我们来假设 ...