Kubernetes分布式集群架构







服务注册和服务发现问题怎么解决的?

分布式通讯的核心就是ip加端口

每个服务分配一个不变的虚拟IP+端口

系统env环境变量里有每个服务的服务名称到IP的映射

如下:

client = new redis\Client([
'scheme' => 'tcp',
'host' => getenv('REDIS_MASTER_SERVICE_HOST') ,
'port' => $read_port,
]);

对程序没有任何的入侵

服务的负载均衡问题怎么解决的?

每个节点上都有一个软件实现的服务代理来实现负载均衡



kube-proxy每个node上都会部署,一个任务是代理,一个任务是负载均衡。

kube-proxy如上图所示,既可以转发给本地的po的,也可以转发给其他的node中pod

服务的规模部署问题怎么解决的?



服务运维问题如何解决的?

自动监控、自我修复



Kubernetes 集群架构例子



1.创建redis-master Pod和服务

redis-master-controller.yaml,下面给出了该文件的完整内容



2. 创建redis-slave Pod和服务





3. 创建php frontend Pod和服务





注意:type:nodeport每一个node上开一个端口,访问任何一个node的30001就可以到容器里面的80,相当于docker中的端口映射,就是讲容器中的端口映射到主机上的端口,为了让集群之外的能访问容器的port,应为容器是属于内部的,集群之外的是访问不了的。



根据是读操作还是写操作来判断走哪个



注意:访问的地址是node节点的ip而不是master加点的ip

集群运维常见问题

资源隔离与调度问题

怎么把某些服务调度到特定的节点上去?



给node加入lable

rc上面设置nodeselector

扩容与升级问题



扩容:kubectl scale。。。。中的replicas参数

滚动升级:加入A中有二十个用例,在升级的过程中是会终端的,希望是不间断的服务,先减一个pod,更新一个pod加进去,再减去一个pod。。。。。。用法升级版本号

image:v2

资源配额问题



如果用到资源配额,需要增加插件 如上图右上角的命令LimitRanger,ResourceQuota

kubernetes权威指南:

当Kubernetes启动一个容器时,会将CPU配额值乘以1024并转为整数传递给docker run的–cpu-shares参数,之所以乘以1024是因为Docker的cpu-shares参数是以1024 为基数计算CPU时间的。另外,Docker官方文档里解释说cpu-shares是一个相对权 重值 (relative weight),因此Kubernetes官方文档里解释cpu: 0.5表示该容器占用0.5 个CPU计算时间的说法其实是不准确的。仅当该节点是单核心CPU而且只运行两个 容器,每个容器的CPU配额设定为0.5时,上述说法才成立。假如一个节点上同时运 行了3个容器A,B,C,其中A容器的CPU配额设置为1,B与C设置为0.5。那么,当 系统的CPU利用率达到100%时,A容器只占用了1X100/(1+0.5+0.5)=50%的CPU时 间,而B与C分别占用25%的CPU时间。如果此时我们加入一个新的容器D,它的 CPU配额也设置为1,则通过计算我们得到A此时只占据33%的CPU时间。对于目前 主流的多核CPU,容器的CPU配额会在多核心上进行承担。因此在多核CPU上,即 使某个容器声明CPU<1,它也可能会占满多个CPU核。例如2个设定cpu=0.5的容器 运行在4核的CPU上,每个容器可能会用光4*0.5/(0.5+0.5)=2个CPU核。

Docker系列(十一):Kubernetes集群集群部署实践的更多相关文章

  1. Docker 系列七(Dubbo 微服务部署实践).

    一.前言 之前我们公司部署服务,就是大家都懂的那一套(安装JDK.Tomcat —> 编译好文件或者打war包上传 —> 启动Tomcat),这种部署方式一直持续了很久,带来的问题也很多: ...

  2. K8S从入门到放弃系列-(16)Kubernetes集群Prometheus-operator监控部署

    Prometheus Operator不同于Prometheus,Prometheus Operator是 CoreOS 开源的一套用于管理在 Kubernetes 集群上的 Prometheus 控 ...

  3. 基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)

    基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)   前言 前几天对Apollo配置中心的demo进行一个部署试用,现公司已决定使用,这两天进行分布式部署的时候 ...

  4. K8S从入门到放弃系列-(15)Kubernetes集群Ingress部署

    Ingress是kubernetes集群对外提供服务的一种方式.ingress部署相对比较简单,官方把相关资源配置文件,都已经集合到一个yml文件中(mandatory.yaml),镜像地址也修改为q ...

  5. K8S从入门到放弃系列-(4)kubernetes集群之kubectl命令行工具部署

    摘要:随着版本的不断迭代,k8s为了集群安全,集群中趋向采用TLS+RBAC的安全配置方式,所以我们在部署过程中,所有组件都需要证书,并启用RBAC认证. 我们这里采用二进制安装,下载解压后,把对应组 ...

  6. K8S从入门到放弃系列-(13)Kubernetes集群mertics-server部署

    集群部署好后,如果我们想知道集群中每个节点及节点上的pod资源使用情况,命令行下可以直接使用kubectl top node/pod来查看资源使用情况,默认此命令不能正常使用,需要我们部署对应api资 ...

  7. 万台规模下的SDN控制器集群部署实践

    目前在网络世界里,云计算.虚拟化.SDN.NFV这些话题都非常热.今天借这个机会我跟大家一起来一场SDN的深度之旅,从概念一直到实践一直到一些具体的技术. 本次分享分为三个主要部分: SDN & ...

  8. K8S从入门到放弃系列-(9)kubernetes集群之kubelet部署

    摘要: Kubelet组件运行在Node节点上,维持运行中的Pods以及提供kuberntes运行时环境,主要完成以下使命: 1.监视分配给该Node节点的pods 2.挂载pod所需要的volume ...

  9. K8S从入门到放弃系列-(14)Kubernetes集群Dashboard部署

    Dashboard是k8s的web界面,用户可以用 Kubernetes Dashboard 部署容器化的应用.监控应用.并对集群本身进行管理,在 Kubernetes Dashboard 中可以查看 ...

随机推荐

  1. 通过Python SDK 获取tushare数据

    导入tushare import tushare as ts 这里注意, tushare版本需大于1.2.10 设置token ts.set_token('your token here') 以上方法 ...

  2. C++之常量

    常量 **作用**:用于记录程序中不可更改的数据 C++定义常量两种方式 1. **\#define** 宏常量: #define 常量名 常量值 * ==通常在文件上方定义==,表示一个常量 2. ...

  3. Android开发 AndroidStudio解决Error:moudle not specified

    问题描述 在使用Android Studio 进行Builder APKs的时候,如果发现无法degub, 进行配置的时候 没有module可以进行指定 问题原因 项目未与Grade Files 文件 ...

  4. VC++中的CString、char、int类型转换

    1.如何将CString类型的变量赋给char*类型的变量   方法一:GetBuffer函数  使用CString::GetBuffer函数.  char *p;  CString str=&quo ...

  5. LUOGU P3413 SAC#1 - 萌数(数位dp)

    传送门 解题思路 首先这道题如果有两个以上长度的回文串,那么就一定有三个或两个的回文串,所以只需要记录一下上一位和上上位填的数字就行了.数位\(dp\),用记忆化搜索来实现.设\(f[i][j][k] ...

  6. Windows便筏快捷键

    Ctrl + L:左对齐 Ctrl + E:居中对齐 Ctrl + R:右对齐 Ctrl + B:加粗 Ctrl + I:斜体 Ctrl + U:给文字添加下划线 Ctrl + T: 给文字添加删除线 ...

  7. 在.net core上,Web网站调用微信支付-统一下单接口(xml传参)一直返回错误:mch_id参数格式错误

    这是 微信支付-统一下单 接口文档 一.问题描述 在调用统一下单接口时,报mch_id参数格式错误,但商户ID确实是10位数字正确的,可就是一直报这个错误 返回的错误xml如下: 二.排错过程 1.多 ...

  8. final、static、package、import,和内部类、代码块总结

    final: final是最终修饰符,可以修饰类.成员方法.变量 final修饰的类无法被继承 final修饰的方法无法被重写 final修饰的变量无法被再次赋值,变为了常量 final修饰的引用数据 ...

  9. Spring - 框架入门

    认识 Spring 框架 Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of Control,控制反转) 和 AOP( ...

  10. <爬虫>黑板爬虫闯关02

    import requests from lxml import etree ''' 黑板爬虫闯关02 网址:http://www.heibanke.com/lesson/crawler_ex01/ ...