环境
  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. jquery动画控制非css属性

    JQuery的animate()方法可以通过渐变的更改CSS属性来实现简单的动画效果, 比如 $("#box").animate({height:"300px" ...

  2. DISK2VHD 转win2008 无法启动

    windows 2008R2物理机,使用微软的DISK2VHD转换成虚拟盘,挂到虚拟机上,无法启动只有光标闪.找来window2008安装盘 选择“修复windows系统”, 调出cmd命令提示符Bo ...

  3. Redis之缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级

    目录 Redis之缓存雪崩.缓存穿透.缓存预热.缓存更新.缓存降级 1.缓存雪崩 2.缓存穿透 3.缓存预热 4.缓存更新 5.缓存降级 Redis之缓存雪崩.缓存穿透.缓存预热.缓存更新.缓存降级 ...

  4. MySQL难点语法——连接

    本篇涉及的数据表格可以自行查阅上篇<MySQL难点语法——子查询> MySQL的数据表格之间有三种连接方式:等值连接.外连接.自连接.以下是通过举例介绍这三种连接方式 1.等值连接 等值连 ...

  5. Qt Creator清除最近工程历史信息

    Qt Creator清除最近工程历史信息 随着不断打开和关闭qt工程,欢迎->Projects->Recent projects下的历史工程信息越来越多,是该清理一下了,强迫症会追求干净一 ...

  6. 25. Apache Shiro Java反序列化漏洞

    前言: 最近在审核漏洞的时候,发现尽管Apache shiro这个反序列化漏洞爆出来好久了,但是由于漏洞特征不明显,并且shiro这个组件之前很少听说,导致大厂很多服务还存在shiro反序列化的漏洞, ...

  7. Android 培训准备资料之project与module的区别(1)

    project和module的区别? 现在我们来看看在Android studio中怎样新建一个project (1)file->new->new project. Application ...

  8. html5表单上传控件Files筛选指定格式的文件:accept属性过滤excel文件

    摘自:http://blog.csdn.net/jyy_12/article/details/9851349 (IE9及以下不支持下面这些功能,其它浏览器最新版本均已支持.) 1.允许上传文件数量 允 ...

  9. spring boot缓存excel临时文件后再操作

    1. 引入poi的两个依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi ...

  10. django_restframework项目之数据库搭建(二)

    数据库配置 创建数据库 """ 1.管理员连接数据库 2.创建数据库 >: create database luffy default charset=utf8; ...