k8s搭建consul集群

Consul中文文档—Consul打通k8s内外服务发现 Consul Sync组件,实现Consul服务同步至K8s, 实现K8s Services同步至Consul,打通Kubernetes内外服务发现。 阅读详情

本文主要通过k8s集群搭建Consul集群

满足条件:

1. 有一个部署好的k8s集群

2. 集群内部支持DNS服务

3.最好对consul及配置有相应的了解

    consul学习参考文章:https://blog.youkuaiyun.com/skh2015java/article/details/108853881

 

部署

1. 部署一个Service

# consul-server-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: consul-server
  labels:
    name: consul-server
spec:
  selector:
    name: consul-server
  ports:
    - name: http
      port: 8500
      targetPort: 8500
    - name: https
      port: 8443
      targetPort: 8443
    - name: rpc
      port: 8400
      targetPort: 8400
    - name: serf-lan-tcp
      protocol: "TCP"
      port: 8301
      targetPort: 8301
    - name: serf-lan-udp
      protocol: "UDP"
      port: 8301
      targetPort: 8301
    - name: serf-wan-tcp
      protocol: "TCP"
      port: 8302
      targetPort: 8302
    - name: serf-wan-udp
      protocol: "UDP"
      port: 8302
      targetPort: 8302
    - name: server
      port: 8300
      targetPort: 8300
    - name: consul-dns
      port: 8600
      targetPort: 8600

kubect create -f consul-server-service.yaml

用于通过dns查找agent pod

 

2.以StatefulSet方式部署3个有状态的Consul Server

# consul-server.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: consul-server
  labels:
    name: consul-server
spec:
  serviceName: consul-server
  selector:
    matchLabels:
      name: consul-server
  replicas: 3
  template:
    metadata:
      labels:
        name: consul-server
    spec:
      terminationGracePeriodSeconds: 10
      containers:
        - name: consul
          image: consul:latest
          imagePullPolicy: IfNotPresent
          args:
            - "agent"
            - "-server"
            - "-bootstrap-expect=3"
            - "-ui"
            - "-data-dir=/consul/data"
            - "-bind=0.0.0.0"
            - "-client=0.0.0.0"
            - "-advertise=$(POD_IP)"
            - "-retry-join=consul-server-0.consul-server.$(NAMESPACE).svc.cluster.local"
            - "-retry-join=consul-server-1.consul-server.$(NAMESPACE).svc.cluster.local"
            - "-retry-join=consul-server-2.consul-server.$(NAMESPACE).svc.cluster.local"
            - "-domain=cluster.local"
            - "-disable-host-node-id"
          env:
            - name: POD_IP
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
            - name: NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
          ports:
            - containerPort: 8500
              name: http
            - containerPort: 8400
              name: rpc
            - containerPort: 8443
              name: https-port
            - containerPort: 8301
              name: serf-lan
            - containerPort: 8302
              name: serf-wan
            - containerPort: 8600
              name: consul-dns
            - containerPort: 8300
              name: server

kubect create -f   consul-server.yaml

 

3个consul server正常运行

 

3.对外NodePort方式对外暴露服务端口

# consul-server-http.yaml

apiVersion: v1
kind: Service
metadata:
  name: consul-server-http
spec:
  selector:
    name: consul-server
  type: NodePort
  ports:
    - protocol: TCP
      port: 8500
      targetPort: 8500
      nodePort: 30098
      name: consul-server-tcp

kubectl create -f consul-server-http.yaml

 

对外暴露节点端口是30098

通过控制台访问

consul-server-0是leader节点,共有3个Server节点

 

4.以daemonSet方式在工作节点上部署client

#consul-client.yaml

apiVersion: apps/v1
kind: DaemonSet
metadata:
 name: consul-client
 labels:
  name: consul-client
spec:
  selector:
    matchLabels:
      name: consul-client
  template:
    metadata:
      labels:
        name: consul-client
    spec:
      containers:
        - name: consul
          image: consul:latest
          imagePullPolicy: IfNotPresent
          args:
            - "agent"
            - "-data-dir=/consul/data"
            - "-bind=0.0.0.0"
            - "-client=0.0.0.0"
            - "-advertise=$(POD_IP)"
            - "-retry-join=consul-server-0.consul-server.$(NAMESPACE).svc.cluster.local"
            - "-retry-join=consul-server-1.consul-server.$(NAMESPACE).svc.cluster.local"
            - "-retry-join=consul-server-2.consul-server.$(NAMESPACE).svc.cluster.local"
            - "-domain=cluster.local"
            - "-disable-host-node-id"
          env:
            - name: POD_IP
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
            - name: NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
          lifecycle:
            postStart:
              exec:
                command:
                  - /bin/sh
                  - -c
                  - consul reload
            preStop:
              exec:
                command:
                  - /bin/sh
                  - -c
                  - consul leave
          volumeMounts:
            - name: consul-data-dir
              mountPath: /consul/data
          ports:
            - containerPort: 8500
              hostPort: 8500
              name: http
            - containerPort: 8400
              name: rpc
            - containerPort: 8443
              name: https
            - containerPort: 8301
              name: serf-lan
            - containerPort: 8302
              name: serf-wan
            - containerPort: 8600
              name: consul
            - containerPort: 8300
              name: server
      volumes:
        - name: consul-data-dir
          hostPath:
            path: /Users/xuan/desktop/consul/data
            type: DirectoryOrCreate

kubectl create -f consul-client.yaml

创建client

 

通过控制台可以看到有两个client加入了集群

整个Consul集群已经搭建完成

Prometheus通过consul实现自动服务发现 我们先来普及一下的功能, Prometheus 允许用户在采集任务设置中,通过来添加自定义的 Relabeling 的额过程,来对标签进行指定规则的重写。Prometheus 加载 Targets 后,这些 Targets 会自动包含一些默认的标签,Target 以__作为前置的标签是在系统内部使用的,这些标签不会被写入到样本数据中。眼尖的会发现,每次增加 Target 时会自动增加一个 instance 标签,而 instance 标签的内容刚好对应 Target 实例的。 阅读详情

相关推荐

在k8s集群中部署consul集群

前提已经安装了k8s与helm3 下载consul官网安装文件: git clone https://github.com/hashicorp/consul-helm.git git checkout 你要安装的版本 1.创建nfs类型的storageclass 创建nfs 配置accountRBAC apiVersion: v1 kind: ServiceAcc...

soga_ht的博客 1249

k8s部署(单点或)高可用consul集群

k8s部署(单点或)高可用consul集群

qq_41905051的博客 1863

go微服务系列(七):consul给微服务添加服务注册与发现

微服务架构按业务划分微服务的特点,使得原本聚合了大量业务模块的单体应用被划分为众多的微服务。而大量微服务的出现,势必会带来运维管理上的巨大挑战,于是服务注册与发现这类自动化策略应运而生。但是引入服务注册与发现就可能引入额外技术栈,增加系统总体的复杂性,比如会引入中心化的服务注册与发现中心这类基础组件。在本课时,我们将基于 Consul 给微服务添加服务注册与发现的能力。首先,我们会基于 Kubernetes 搭建一个接近生产环境的 Consul 集群;接着再基于搭建好的 Consul 集群,为我们的微服务添

阿白, 2328

k8s部署consul集群

k8s以StatefulSet方式部署consul集群: public-service-ns.yaml apiVersion: v1 kind: Namespace metadata: name: public-service consul-server.yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: name: consul namespace: public-service spec: rules: - h

变成习惯 7020

RK3588S开发板实战:手把手教你调试IMX415摄像头(附常见问题排查)

本文提供了基于RK3588S开发板调试IMX415摄像头的完整实战指南。从硬件连接到软件配置,详细解析了设备树(DTS)设置、驱动加载验证及V4L2工具链使用,并附带了常见问题排查方法,帮助开发者快速解决摄像头调试中的典型问题,实现图像采集与性能调优。

assembly8low的博客 598

基于springboot生鲜食品订购系统的设计与实现

近年来互联网络的迅猛发展和电子终端设备的普及,赋予了各行业充足的发展空间。微信小程序的O2O生鲜食品订购相比于传统信息技术,时效性是它最大的特色,已经在电子娱乐、经济等中发挥着举足轻重的作用。短时间内迅速扩大了线上管理系统的规模。尽管O2O生鲜食品订购已经有了很大程度的发展,但在微信小程序的O2O生鲜食品订购领域上却少有建设。

1024

Consul中文文档—一篇文章带你搭建Consul开发环境

Consul开发环境搭建, K8s Helm部署Consul,Dokcer部署Consul, 云主机CentOS/Linux 部署Consul, Mac安装Consul

shuai_wy的专栏 1965

手把手教你用89C52单片机驱动0.96寸OLED(IIC接口,附完整代码)

本文详细介绍了如何使用89C52单片机通过I2C接口驱动0.96寸OLED显示屏,包括硬件连接、I2C通信原理、SSD1306驱动芯片的初始化及显存管理技巧,并提供了完整的代码示例和常见问题排查方法,帮助电子爱好者快速掌握OLED显示技术。

weixin_30781433的博客 370

Kubernates 搭建Consul集群遇到的问题总结

前言 首先感谢 kubernetes实战之部署一个接近生产环境的consul集群 此文的内容分享,给了我一个整体搭建的思路和参考。但是在搭建过程中遇到了几个问题,经过反复的查询和调研最后都一一解决,特此用本文来记录,并给后续搭建的同学一个参考。 问题1 使用StatefulSet 配置文件创建后,consul无法生成集群 描述: 使用连接中的StatefulSet 配置文件创建后,POD都正常创建成功,但是使用下面命令查看,各POD的集群列表中只有自己,没有其他节点。 consul members 排查思

betterfxx2017的博客 722

TortoiseSVN的安装与使用

TortoiseSVN的安装与应用1、安装1.1、下载TortoiseSVN    点击下载TortoiseSvn1.2、下载汉化包。上面的页面中,找到Chinese, simplified汉化包,点击32位或者64位的Setup,下载汉化包。1.3、安装TortoiseSVN。在选择安装路径页面时要记得勾选“command line client tools”,默认不是勾选的。这里不勾选的话在I...

qq_28566071的博客 4万+

Lumerical FDTD新手必看:从零开始搭建光子晶体仿真环境(附完整脚本)

本文为Lumerical FDTD新手提供光子晶体仿真环境的完整搭建指南,涵盖从基础参数设置到脚本编写的全流程。通过典型光子晶体带隙分析案例,详细讲解结构建模、仿真参数配置及后处理技巧,并附赠完整MATLAB脚本,帮助用户快速掌握FDTD仿真核心技术。

3c4x5z6v7b的博客 1054

springcloud + k8s + consul搭建微服务平台

【代码】springcloud + k8s + consul搭建微服务平台。

FengShiLiuNian的博客 377

【Agora 本地录制最全总结- 基于Java SDK】

Agora 本地服务端录制

lizhengze1117的博客 1790

Consul部署【在kubernetes集群中部署】【实现ACL机制】

consul具体配置、ACL配置可以参考Consul系列文章 首先创建k8s-consul-config.json文件,注意token需要自己创建一个,这里加密处理了 { "datacenter":"dc8", "primary_datacenter":"dc8", "acl":{ "enabled":true, "default_pol...

Happywzy~的博客 1416

Autosar诊断实战系列23-NRC优先级解析

NRC分类,优先级判断逻辑及测试注意事项介绍。

initiallizer的博客 2619

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

consul实现kubernetes-1.15集群master的高可用访问实现

1、准备consul环境,参考我之前的博客实现或参考consul的官网部署最新的consul。 2、本次测试使用的是kubernetes-1.15.0 3、初始化集群 1)准备初始化文件 controlPlaneEndpoint: "kubeadm-ha.service.hq:6443" ,kubeadm-ha.service.hq是注册到consul的域名。kubeadm-ha是serv...

weixin_30372371的博客 222

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

k8s部署consul简易版

metadata:spec:selector:template:metadata:labels:spec:ports:command:- "-c"name: dataspec:resources:requests:---metadata:spec:ports:port: 8500selector:---metadata:labels:

青春不流名 389

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

发布 HashiCorp Consul Helm Chart

SEP 12 2018 MITCHELL HASHIMOTOWe're releasing HashiCorp Consul + Kubernetes features every week. This week we're releasing the official Consul Helm Chart for running and configuring Consul on Kubernet...

weixin_34082695的博客 210

八、kubernetes部署rocketmq高可用集群

kubernetes部署rocketmq高可用集群

wangweiji的博客 871

Kubernetes 1.32 高可用集群部署系列(九)

本篇介绍完整监控体系的搭建,包括 Prometheus 指标监控、Grafana 可视化、Loki 日志聚合。

ldp1105472011qq的博客 503

Alacritty 遇到渲染异常如何用 [debug] renderer 强制指定渲染器排查?

Alacritty 是一个跨平台的 OpenGL 终端模拟器,它的渲染基于 GPU:正常情况下由程序根据 GPU 支持的 OpenGL 版本自动选择渲染器。当你遇到渲染异常——画面错乱、文字显示不正确、某些内容绘制不出来等,而怀疑问题出在渲染器与你的显卡或图形栈的组合上时,可以用配置文件 `[debug]` 表中的 `renderer` 选项强制指定某一个渲染器,逐一切换对比,从而判断异常是否与特

gitblog_00439的博客 543

GO微服务实战第十三节 如何基于 Consul 给微服务添加服务注册与发现?

今天我和你分享的是如何基于 Consul 给微服务添加服务注册与发现的案例。微服务架构按业务划分微服务的特点,使得原本聚合了大量业务模块的单体应用被划分为众多的微服务。而大量微服务的出现,势必会带来运维管理上的巨大挑战,于是。但是引入服务注册与发现就可能引入额外技术栈,增加系统总体的复杂性,比如会引入中心化的服务注册与发现中心这类基础组件。在本课时,我们将基于 Consul 给微服务添加的能力。首先,我们会基于 Kubernetes 搭建一个接近生产环境的 Consul 集群;

fegus的博客 641

kubernetes实战篇之部署一个.net core微服务项目

目录 1.kubernetes实战篇之nexus oss服务器部署及基于nexus的docker镜像仓库搭建 2.kubernetes实战篇之windows添加自签ca证书信任 3.kubernetes实战篇之创建密钥自动拉取私服镜像 4.kubernetes实战篇之为默认账户创建镜像拉取密钥 5.kubernetes实战篇之dashboard搭建 6.kubernetes实战篇之通过api-se...

weixin_30595035的博客 383

3分钟搞定Orleans集群部署:静态配置vs动态服务全攻略

Orleans是由微软研究团队创建的面向云应用和服务的分布式计算框架,特别适合构建虚拟 actor模型的服务端应用。通过管理actors生命周期和透明地处理网络通信,Orleans简化了构建高度可扩展、容错的云服务的过程。本文将对比静态配置与动态服务两种集群部署方式,助你快速掌握Orleans集群搭建技巧。 ## 🌟 为什么选择Orleans集群 在分布式系统中,集群部署是保证高可用性和可扩

gitblog_00851的博客 939

0110.Kubeadm.安装k8s1.28

本文详细介绍了如何在Rocky Linux操作系统上,聚焦于基于containerd作为容器运行时的实践,利用kubeadm工具部署Kubernetes 1.28版本集群,并安装dashboard、k9s工具,注册consule服务中心。

weixin_57370131的博客 1551
上一篇: Consul介绍及常用的命令行
下一篇: k8s之Secret详细理解及使用
思维的深度
博客等级 码龄11年 2万+粉丝 391原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值