一、docker部署consul集群

参考文献:https://www.cnblogs.com/lonelyxmas/p/10880717.html

https://blog.csdn.net/qq_36228442/article/details/89085373

consul是提供服务发现、简单配置管理、分区部署的服务注册发现解决方案。
主要特性:服务发现\健康检查\基于Key-Value的配置\支持TLS安全通讯\支持多数据中心部署

consul的实例叫agent
agent有两种运行模式:server和client
每个数据中心至少要有一个server,一般推荐3-5个server(避免单点故障)
client模式agent是一个轻量级进程,执行健康检查,转发查询请求到server。
服务service是注册到consul的外部应用,比如spring web server

以下为docker-compose.yaml文件

version: "3.0"
services:
consulserver:
image: progrium/consul:latest
hostname: consulserver
ports:
- "8300:8300"
- "8400:8400"
- "8500:8500"
- ""
command: -server -ui-dir /ui -data-dir /tmp/consul --bootstrap-expect=
consulserver1:
image: progrium/consul:latest
hostname: consulserver1
depends_on:
- "consulserver"
ports:
- "8301:8300"
- "8401:8400"
- "8501:8500"
- ""
command: -server -data-dir /tmp/consul -join consulserver
consulserver2:
image: progrium/consul:latest
hostname: consulserver2
depends_on:
- "consulserver"
ports:
- "8302:8300"
- "8402:8400"
- "8502:8500"
- ""
command: -server -data-dir /tmp/consul -join consulserver

宿主机浏览器访问:http://localhost:8500 或者 http://localhost:8501 或者 http://localhost:8502

创建test.json文件,以脚本形式注册服务到consul:

test.json文件内容如下:

{
"ID": "test-service1",
"Name": "test-service1",
"Tags": [
"test",
"v1"
],
"Address": "127.0.0.1",
"Port": ,
"Meta": {
"X-TAG": "testtag"
},
"EnableTagOverride": false,
"Check": {
"DeregisterCriticalServiceAfter": "90m",
"HTTP": "http://zhihu.com",
"Interval": "10s"
}
}

通过 http 接口注册服务(端口可以是8500. 8501, 8502等能够正常访问consul的就行):

curl -X PUT --data @test.json http://localhost:8500/v1/agent/service/register

二、k8s部署consul集群

参考文献:https://www.cnblogs.com/tylerzhou/p/11161634.html

https://www.jianshu.com/p/b00de040d92e

由于node节点只有两个,所以配置集群也两个实例,测试时候,配置三个实例不能正常工作,所以配置俩个

1、先创建service资源

apiVersion: v1
kind: Service
metadata:
name: consul
labels:
name: consul
spec:
type: ClusterIP
ports:
- name: http
port:
targetPort:
# - name: https
# port:
# targetPort:
# - name: rpc
# port:
# targetPort:
# - name: serflan-tcp
# port:
# targetPort:
# - name: serflan-udp
# port:
# targetPort:
# protocol: "UDP"
# - name: serfwan-tcp
# port:
# targetPort:
# - name: serfwan-udp
# port:
# targetPort:
# protocol: "UDP"
# - name: server
# port:
# targetPort:
# - name: consuldns
# port:
# targetPort:
selector:
app: consul

由于只暴露8500的ui端口,所以将其他端口都没有创建service,service为clusterIP

2、创建statefulset资源

apiVersion: apps/v1
kind: StatefulSet
metadata:
name: consul
spec:
serviceName: consul
replicas:
selector:
matchLabels:
app: consul
template:
metadata:
labels:
app: consul
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- consul
topologyKey: kubernetes.io/hostname
terminationGracePeriodSeconds:
containers:
- name: consul
image: consul:latest
args:
- "agent"
- "-server"
- "-bootstrap-expect=2"
- "-ui"
- "-data-dir=/consul/data"
- "-bind=0.0.0.0"
- "-client=0.0.0.0"
- "-advertise=$(PODIP)"
- "-retry-join=consul-0.consul.$(NAMESPACE).svc.cluster.local"
- "-retry-join=consul-1.consul.$(NAMESPACE).svc.cluster.local"
- "-retry-join=consul-2.consul.$(NAMESPACE).svc.cluster.local"
- "-domain=cluster.local"
- "-disable-host-node-id"
env:
- name: PODIP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
ports:
- containerPort:
name: ui-port
- containerPort:
name: alt-port
- containerPort:
name: udp-port
- containerPort:
name: https-port
- containerPort:
name: http-port
- containerPort:
name: serflan
- containerPort:
name: serfwan
- containerPort:
name: consuldns
- containerPort:
name: server

3、创建ingress,以使用域名访问

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-consul
namespace: default
annotations:
kubernets.io/ingress.class: "nginx"
spec:
rules:
- host: consul.cabel.com
http:
paths:
- path:
backend:
serviceName: consul
servicePort:

以上资源创建完成后就可以访问了:

docker及k8s安装consul的更多相关文章

  1. centos7.7下docker与k8s安装(DevOps三)

    1.系统配置 centos7.7 docker 1.13.1 centos7下安装docker:https://www.cnblogs.com/pu20065226/p/10536744.html 2 ...

  2. Docker安装Consul集群

    Docker 安装Consul集群 使用windows 环境,Docker desktop community 构建consul集群. 1.docker 容器网络 docker安装后,默认会创建三种网 ...

  3. docker k8s安装

    docker安装 删除依赖包 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docke ...

  4. k8s 安装步骤

    1 安装Docker 1.1 增加中国区镜像 https://registry.docker-cn.com 2 下载安装k8s的镜像的脚本 https://github.com/AliyunConta ...

  5. docker概述与安装及运行容器

    传统虚拟化 传统虚拟化步骤 1.安装虚拟化软件以及虚拟化的管理软件 2.创建虚拟机 3.给虚拟机安装os 4.在虚拟机内部不是应用(http.db之类的应用) 传统虚拟化的特点 1.VM与VM之间是完 ...

  6. Kubernetes(K8s) 安装(使用kubeadm安装Kubernetes集群)

    背景: 由于工作发生了一些变动,很长时间没有写博客了. 概述: 这篇文章是为了介绍使用kubeadm安装Kubernetes集群(可以用于生产级别).使用了Centos 7系统. 一.Centos7 ...

  7. 使用虚拟机在3台centos7系统安装docker和k8s集群

    一.安装docker 环境:准备3台centos7系统,都安装上docker环境,具体安装步骤和流程如下 参考: https://docs.docker.com/install/linux/docke ...

  8. docker学习(1) 安装

    docker是啥就不多讲了,简言之就是更轻量.更牛叉的新一代虚拟机技术.下面是安装步骤: 一.mac/windows平台的安装 docker是在linux内核基础上发展而来的,无法直接运行在mac/w ...

  9. 原创docker dcos 的安装

    原创哈,上个星期无意间发现了一个可以好东西 DC/OS https://dcos.io 这个是官网哈 然后就痛苦的折磨了一个多星期; 基本是参照到https://dcos.io/docs/1.7/ad ...

随机推荐

  1. Redis(1.3)Redis的基本特性(事务、多数据库)

    [1]两大特性 (1)多数据库 1个redis实例 可以有16个数据库,默认下标为0~15,默认连接到的是 0 下标的数据库. (2)事务 [2]多数据库 [2.1]概念 1个redis实例 可以有1 ...

  2. Docker 运行 MYSQL 数据库的总结

    公司里面要求做一个小demo 学习java相关的东西 然后使用了mysql数据库 很早之前做过mysql的容器化运行. 现在想想已经忘记的差不多了  所以这里总结一下 docker化运行mysql数据 ...

  3. DRF 认证 权限 视图 频率

    认证组件 使用:写一个认证类,继承BaseAuthentication 在类中写authenticate方法,把request对象传入 能从request对象中取出用户携带的token根据token判 ...

  4. python 基础(十九)--re正则表达式模块

    正则表达式模式 模式 描述 ^ 匹配字符串的开头 $ 匹配字符串的末尾. . 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符. [...] 用来表示一组字符 ...

  5. 牛客 40F 珂朵莉的约数 (莫队)

    珂朵莉给你一个长为n的序列,有m次查询 每次查询给两个数l,r 设s为区间[l,r]内所有数的乘积 求s的约数个数mod 1000000007 直接莫队暴力维护复杂度是$O(8m\sqrt{m})$. ...

  6. 不同主机的docker内容器通过直接路由的方式进行通信

    引用文章链接:https://www.cnblogs.com/xiao987334176/p/10049844.html 六.操作总结 修改不同主机上docker默认的网络参数 主机1:192.168 ...

  7. 使用kafka-eagle监控Kafka

    # 监控kafka集群,开启监控趋势图使用 # 有一个问题,需要在kafka-server-start.sh文件中配置端口,有如下三种办法 # 第一种:复制并修改kafka目录,比如kafka-1,k ...

  8. 手把手教你搭建FastDFS集群(上)

    手把手教你搭建FastDFS集群(上) 本文链接:https://blog.csdn.net/u012453843/article/details/68957209        FastDFS是一个 ...

  9. 【weixin】微信支付---PC网站微信支付

    一.PC网站支付 微信支付支持完成域名ICP备案的网站接入支付功能.PC网站接入支付后,可以通过JSAPI支付或Native支付,自行开发生成二维码,用户使用微信“扫一扫”来完成支付. 二.支付产品介 ...

  10. python之数字类型小知识

    数字是表示计数的抽象事物,也是数学运算和推理的基础,所以,生活中数字是生活中无处不在的,那么,在python语言中运用数字有哪些小知识呢,不妨花点时间看一下这篇博文,牢记这些小知识. 整数类型中四种进 ...