环境
  centos 7

一、Kubernetes分布式集群架构
1、Kubernetes服务注册和服务发现问题怎么解决的?
每个服务分配一个不变的虚拟IP+端口, 系统env环境变量里有每个服务的服务名称到IP的映射。


2、服务的负载均衡问题怎么解决的?
每个节点上都有一个软件实现的服务代理来实现负载均衡

3、服务的规模部署问题怎么解决的?
目标导向的做法:确定部署实例数,系统自动调度

4、服务运维问题如何解决的?
自动监控、自我修复

5、集中配置,并且实时配置实施生效

二、集群架构示例
1、示例
一个PHP做的留言板:3台webserver做PHP-Frontend前台,1台redis-master用来写,2台redis-slave做读。


2、集群搭建图
创建三个service:frontend Service、redis-master Service、redis-slave Service

三、搭建
1、创建redis-master Pod
(1)定义redis-master-controller.yaml文件:

[root@node106 ~]# vi redis-master-controller.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: redis-master
labels:
name: redis-master
spec:
replicas:
selector:
name: redis-master
template:
metadata:
labels:
name: redis-master
spec:
containers:
- name: master
image: kubeguide/redis-master
ports:
- containerPort:

(2)执行创建命令

[root@node106 ~]# kubectl create -f redis-master-controller.yaml
replicationcontroller/redis-master created

(3)查看pod

[root@node106 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
redis-master-659bm / Running 4m46s

2、创建redis-master 服务

(1)定义redis-master-service.yaml

[root@node106 ~]# vi redis-master-service.yaml
apiVersion: v1
kind: Service
metadata:
name: redis-master
labels:
name: redis-master
spec:
ports:
- port:
targetPort:
selector:
name: redis-master

(2)执行创建命令

[root@node106 ~]# kubectl create -f redis-master-service.yaml
service/redis-master created

(3)查看服务

[root@node106 ~]# kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> /TCP 46h
redis-master ClusterIP 10.96.187.196 <none> /TCP 18s

3、创建redis-slave Pod

(1)创建redis-slave-controller.yaml

[root@node106 ~]# vi redis-slave-controller.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: redis-slave
labels:
name: redis-slave
spec:
replicas:
selector:
name: redis-slave
template:
metadata:
labels:
name: redis-slave
spec:
containers:
- name: slave
image: kubeguide/guestbook-redis-slave
env:
- name: GET_HOSTS_FROM
value: env
ports:
- containerPort:

(2)执行创建命令

[root@node106 ~]# kubectl create -f redis-slave-controller.yaml
replicationcontroller/redis-slave created

(3)查看pod和rc

[root@node106 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
redis-master-659bm / Running 16m
redis-slave-kqllg / Running 119s
redis-slave-rfbr8 / Running 119s
[root@node106 ~]# kubectl get rc
NAME DESIRED CURRENT READY AGE
redis-master 17m
redis-slave 2m24s

4、创建redis-slave 服务

(1)创建redis-slave-service.yaml

[root@node106 ~]# vi redis-slave-service.yaml
apiVersion: v1
kind: Service
metadata:
name: redis-slave
labels:
name: redis-slave
spec:
ports:
- port:
selector:
name: redis-slave

(2)执行创建命令

[root@node106 ~]# kubectl create -f redis-slave-service.yaml
service/redis-slave created

(3)查看服务

[root@node106 ~]# kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> /TCP 46h
redis-master ClusterIP 10.96.187.196 <none> /TCP 11m
redis-slave ClusterIP 10.99.146.233 <none> /TCP 33s

5、创建frontend Pod

(1)创建frontend-controller.yaml

[root@node106 ~]# vi frontend-controller.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: frontend
labels:
name: frontend
spec:
replicas:
selector:
name: frontend
template:
metadata:
labels:
name: frontend
spec:
containers:
- name: frontend
image: kubeguide/guestbook-php-frontend
env:
- name: GET_HOSTS_FROM
value: env
ports:
- containerPort:

(2)执行创建命令

[root@node106 ~]# kubectl create -f frontend-controller.yaml
replicationcontroller/frontend created

(3)查看pod

[root@node106 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
curl-6bf6db5c4f-dn65h / Running 41h
frontend-jjpzd / Running 6m50s
frontend-p2jpn / Running 6m50s
frontend-rm4z4 / Running 6m50s
redis-master-659bm / Running 30m
redis-slave-kqllg / Running 15m
redis-slave-rfbr8 / Running 15m

6、创建frontend 服务

(1)创建frontend-service.yaml

[root@node106 ~]# vi frontend-service.yaml
apiVersion: v1
kind: Service
metadata:
name: frontend
labels:
name: frontend
spec:
type: NodePort
ports:
- port:
nodePort:
selector:
name: frontend

(2)执行创建命令

[root@node106 ~]# kubectl create -f frontend-service.yaml
service/frontend created

(3)查看服务

[root@node106 ~]# kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
frontend NodePort 10.110.39.201 <none> :/TCP 34s
kubernetes ClusterIP 10.96.0.1 <none> /TCP 46h
redis-master ClusterIP 10.96.187.196 <none> /TCP 24m
redis-slave ClusterIP 10.99.146.233 <none> /TCP 13m

验证:

【Kubernetes学习之三】Kubernetes分布式集群架构的更多相关文章

  1. 2020重新出发,NOSQL,MongoDB分布式集群架构

    MongoDB分布式集群架构 看到这里相信你已经掌握了 MongoDB 的大部分基本知识,现在在单机环境下操作 MongoDB 已经不存在问题,但是单机环境只适合学习和开发测试,在实际的生产环境中,M ...

  2. 关于RabbitMQ分布式集群架构

    RabbitMQ分布式集群架构和高可用性(HA) (一) 功能和原理 设计集群的目的 允许消费者和生产者在RabbitMQ节点崩溃的情况下继续运行 通过增加更多的节点来扩展消息通信的吞吐量 1 集群配 ...

  3. RabbitMQ分布式集群架构和高可用性(HA)

    (一) 功能和原理 设计集群的目的 允许消费者和生产者在RabbitMQ节点崩溃的情况下继续运行 通过增加更多的节点来扩展消息通信的吞吐量 1 集群配置方式 RabbitMQ可以通过三种方法来部署分布 ...

  4. rabbitmq系统学习(三)集群架构

    RabbitMQ集群架构模式 主备模式 实现RabbitMQ的高可用集群,一般在并发和数据量不高的情况下,这种模型非常的好用且简单.主备模式也称为Warren模式 HaProxy配置 listen r ...

  5. Hadoop学习笔记—13.分布式集群中节点的动态添加与下架

    开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群.现在,我们来了解一下在一个Hadoop分布式集群中,如何动态(不关机且正在运行的情况下)地添加一个Hadoop节点与 ...

  6. Hadoop+Hbase分布式集群架构“完全篇”

    本文收录在Linux运维企业架构实战系列 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建,操作完成后整理的个人心得,分享给大家~~~ 1.认识Hadoop和Hbase 1.1 hadoop简 ...

  7. 项目十八-Hadoop+Hbase分布式集群架构“完全篇”

    本文收录在Linux运维企业架构实战系列 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建,操作完成后整理的个人心得,分享给大家~~~ 1.认识Hadoop和Hbase 1.1 hadoop简 ...

  8. 【Spark-core学习之三】 Spark集群搭建 & spark-shell & Master HA

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...

  9. 【kafka学习之三】kafka集群运维

    kafka集群维护一.kafka集群启停#启动kafka/home/cluster/kafka211/bin/kafka-server-start.sh -daemon /home/cluster/k ...

随机推荐

  1. Linux学习笔记之AIX系统上压缩与解压文件

    0x00 概述 AIX机器真难用,一时半会还真适应不了.   0x01 压缩tar 命令格式: # tar -cvf (或xvf)+文件名+设备 C:是本地到其他设备 x:是其他设备到本地 r:是追加 ...

  2. C# vb .NET读取识别条形码线性条码ISBN

    ISBN是比较常见的条形码编码规则类型的一种.如何在C#,vb等.NET平台语言里实现快速准确读取该类型条形码呢?答案是使用SharpBarcode! SharpBarcode是C#快速高效.准确的条 ...

  3. vue工作原理分析

    初始化 在 new Vue() 时会调⽤用_init()进⾏行行初始化,会初始化各种实例例⽅方法.全局⽅方法.执⾏行行⼀一些⽣生命周期. 初始化props. data等状态.其中最重要的是data的「 ...

  4. SPring boot jpa 封装查询条件

    最近使用spring data jpa做了两个项目,对于动态查询的不友好做了个类似hibernate的封装,记录也分享下 首先定义一个所有条件的容器,继承Specification /** * 定义一 ...

  5. SpingMVC流程图

    Struts的请求流程 springmvc的流程 0.struts2       MVC框架  Controller  Hibernate     持久化框架   Model  spring      ...

  6. Excel分列,Excel 列拆分,Excel根据分隔符号拆分某列

    解决方案: https://zhidao.baidu.com/question/572807483.html 步骤:数据--分列--下一步--其它---下一步-- 注意的此操作会覆盖当前列和后n列(根 ...

  7. IoU与非极大值抑制(NMS)的理解与实现

    1. IoU(区域交并比) 计算IoU的公式如下图,可以看到IoU是一个比值,即交并比. 在分子中,我们计算预测框和ground-truth之间的重叠区域: 分母是并集区域,或者更简单地说,是预测框和 ...

  8. 2-剑指offer: 最小的K个数

    题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 代码: // 这种topN问题比较常见的是使用堆来解决,最小的k个 ...

  9. vector、ArryList、LinkedList的区别与联系

    vector.ArryList.LinkedList的区别与联系 vectory类:底层 采用数组结构算法,使用了线程锁(synchronized),线程安全,但是性能相对ArryList比较低. A ...

  10. lynis安装和扫描Linux的安全漏洞

    今天客户的服务器出了点问题需要排查具体的原因,在德国朋友的建议下用Lynis进行扫描,Lynis是Linux系统中的审计工具,能够对Linux系统的安全进行检测,在对系统进行扫描检测后,会生成安全报告 ...