关于cluster:Cilium-多集群-ClusterMesh-介绍

Cluster Mesh 是 Cilium 的多集群实现,能够帮忙 Cilium 实现跨数据中心、跨 VPC 的多 Kubernetes 集群治理,ClusterMesh 次要有以下性能: 1.通过隧道或间接路由的形式,在多个 Kubernetes 集群间进行 Pod IP 路由,而无需任何网关或代理。2.应用规范 Kubernetes 服务发现机制。3.跨多个集群的网络策略。策略能够应用 Kubernetes 原生的 NetworkPolicy 资源或者扩大的 CiliumNetworkPolicy CRD。4.通明加密本集群以及跨集群节点间所有通信的流量。 接下来让咱们一起看看 Cilium Cluster Mesh 有哪些具体的应用场景。1 应用场景1.1 高可用对大多数人来说,高可用是最广泛的应用场景。能够在多个区域(regions)或可用区(availability zones)中运行多个 Kubernetes 集群,并在每个集群中运行雷同服务的正本。 一旦产生异样,申请能够故障转移到其余集群。1.2 共享服务某些公共根底服务能够在集群间进行共享(如密钥治理,日志记录,监控或 DNS 服务等),以防止额定的资源开销。1.3 拆分有状态和无状态服务运行有状态或无状态服务的操作复杂性是十分不同的。无状态服务易于扩大,迁徙和降级。 齐全应用无状态服务运行集群可使集群放弃灵便和麻利。有状态服务(例如 MySQL,Elasticsearch, Etcd 等)可能会引入潜在的简单依赖,迁徙有状态服务通常波及存储的迁徙。为无状态和有状态服务别离运行独立的集群能够将依赖复杂性隔离到较少数量的集群中。2 架构Cilium Cluster Mesh 的架构如下: 每个 Kubernetes 集群都保护本人的 etcd 集群,保留本身集群的状态。来自多个集群的状态永远不会在本集群的 etcd 中混同。每个集群通过一组 etcd 代理裸露本人的 etcd,在其余集群中运行的 Cilium agent 连贯到 etcd 代理以监督更改。Cilium 应用 clustermesh-apiserver Pod 来建设多集群的互联,在 clustermesh-apiserver Pod 中有两个容器:其中 apiserver 容器负责将多集群的相干信息写入 etcd 容器;etcd 容器(etcd 代理)用来存储 Cluster Mesh 相干的配置信息。从一个集群到另一个集群的拜访始终是只读的。这确保了故障域放弃不变,即一个集群中的故障永远不会流传到其余集群。 ...

May 12, 2022 · 1 min · jiezi

dockercompose构建mysql主从复制集群

docker-compose构建mysql主从复制集群docker-compose构建 mysql 主从复制(读写分离)集群 MySQL master-slave replication with using Docker. 源码在github上: https://github.com/docker-box... 运行git clone https://github.com/docker-box/mysql-cluster.gitcd mysql-cluster./build.sh可以在build.sh内自定义对应参数提示: 运行前需要确保安装了docker和docker-compose,具体安装方法请参考官网 如果想手动安装, 则可以按照build.sh内的命令来手动执行即可 测试看看效果给主库创建一个表, 并添加两条数据docker exec mysql_master sh -c "export MYSQL_PWD=111; mysql -u root mydb -e 'create table code(code int); insert into code values (100), (200)'"查看两个从库是否同步了该表以及数据docker exec mysql_slave sh -c "export MYSQL_PWD=111; mysql -u root mydb -e 'select * from code \G'"docker exec mysql_slave2 sh -c "export MYSQL_PWD=111; mysql -u root mydb -e 'select * from code \G'"如果前边的安装正确的话, 就可以看到第一步插入的两条数据了相关命令查看docker-compose运行日志docker-compose logs查看运行的docker容器docker-compose ps查看主库运行状态docker exec mysql_master sh -c 'mysql -u root -p111 -e "SHOW MASTER STATUS \G"'查看从库运行状态docker exec mysql_slave sh -c 'mysql -u root -p111 -e "SHOW SLAVE STATUS \G"'docker exec mysql_slave2 sh -c 'mysql -u root -p111 -e "SHOW SLAVE STATUS \G"'进入主库docker exec -it mysql_master bash进入从库docker exec -it mysql_slave bashdocker exec -it mysql_slave2 bash

November 5, 2019 · 1 min · jiezi

Knative-Serving-之路由管理和-Ingress

Knative 默认会为每一个 Service 生成一个域名,并且 Istio Gateway 要根据域名判断当前的请求应该转发给哪个 Knative Service。Knative 默认使用的主域名是 example.com,这个域名是不能作为线上服务的。本文我首先介绍一下如何修改 默认主域名,然后再深入一层介绍如何添加自定义域名以及如何根据 path 关联到不同的 Knative Service。 Knative Serving 的默认域名 example.com首先需要部署一个 Knative Service,可以参考 Knative 初体验:Serving Hello World。如果你已经有了一个 Knative 集群,那么直接把下面的内容保存到 helloworld.yaml 文件中。然后执行一下 kubectl apply -f helloworld.yaml  即可把 hello 服务部署到 helloworld namespace 中。 ---apiVersion: v1kind: Namespacemetadata: name: helloworld---apiVersion: serving.knative.dev/v1alpha1kind: Servicemetadata: name: hello namespace: helloworldspec: template: metadata: labels: app: hello annotations: autoscaling.knative.dev/target: "10" spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/simple-app:132e07c14c49 env: - name: TARGET value: "World!"现在我们来看一下 Knative Service 自动生成的域名配置: ...

August 19, 2019 · 2 min · jiezi

Kafka 集群 Golang 应用实例

项目见:???? kafka cluster example这个实例做了些什么?搭建了拥有 3 节点 kafka、 3 节点 zookeeper 的 docker 集群服务;分别创建了 1 个消息发布者和 2 个相同消费组的消息订阅者的 docker 应用;使用 ab 进行并发测试,验证该实例消息的订阅 / 发布功能;通过这个实例,能够了解些什么?使用 Docker Compose 构建 Kafka 集群使用 Golang 创建 Kafka Pub/Sub 实例使用 ApacheBench 进行并发测试使用 Makefile 简化构建操作命令如果这个实例,对你了解 kakfa 有所帮助,请为项目添加 star ,非常感谢!

February 15, 2019 · 1 min · jiezi