Docker系列(十一):Kubernetes集群集群部署实践
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集群集群部署实践的更多相关文章
- Docker 系列七(Dubbo 微服务部署实践).
一.前言 之前我们公司部署服务,就是大家都懂的那一套(安装JDK.Tomcat —> 编译好文件或者打war包上传 —> 启动Tomcat),这种部署方式一直持续了很久,带来的问题也很多: ...
- K8S从入门到放弃系列-(16)Kubernetes集群Prometheus-operator监控部署
Prometheus Operator不同于Prometheus,Prometheus Operator是 CoreOS 开源的一套用于管理在 Kubernetes 集群上的 Prometheus 控 ...
- 基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)
基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势) 前言 前几天对Apollo配置中心的demo进行一个部署试用,现公司已决定使用,这两天进行分布式部署的时候 ...
- K8S从入门到放弃系列-(15)Kubernetes集群Ingress部署
Ingress是kubernetes集群对外提供服务的一种方式.ingress部署相对比较简单,官方把相关资源配置文件,都已经集合到一个yml文件中(mandatory.yaml),镜像地址也修改为q ...
- K8S从入门到放弃系列-(4)kubernetes集群之kubectl命令行工具部署
摘要:随着版本的不断迭代,k8s为了集群安全,集群中趋向采用TLS+RBAC的安全配置方式,所以我们在部署过程中,所有组件都需要证书,并启用RBAC认证. 我们这里采用二进制安装,下载解压后,把对应组 ...
- K8S从入门到放弃系列-(13)Kubernetes集群mertics-server部署
集群部署好后,如果我们想知道集群中每个节点及节点上的pod资源使用情况,命令行下可以直接使用kubectl top node/pod来查看资源使用情况,默认此命令不能正常使用,需要我们部署对应api资 ...
- 万台规模下的SDN控制器集群部署实践
目前在网络世界里,云计算.虚拟化.SDN.NFV这些话题都非常热.今天借这个机会我跟大家一起来一场SDN的深度之旅,从概念一直到实践一直到一些具体的技术. 本次分享分为三个主要部分: SDN & ...
- K8S从入门到放弃系列-(9)kubernetes集群之kubelet部署
摘要: Kubelet组件运行在Node节点上,维持运行中的Pods以及提供kuberntes运行时环境,主要完成以下使命: 1.监视分配给该Node节点的pods 2.挂载pod所需要的volume ...
- K8S从入门到放弃系列-(14)Kubernetes集群Dashboard部署
Dashboard是k8s的web界面,用户可以用 Kubernetes Dashboard 部署容器化的应用.监控应用.并对集群本身进行管理,在 Kubernetes Dashboard 中可以查看 ...
随机推荐
- CentOS增加swap分区大小
来自:http://www.centoscn.com/CentOS/Intermediate/2014/0222/2446.html 1. 查看当前分区情况 free -m 2. 增加 swap 大小 ...
- ECMAScript中所有参数传递的都是值,不可能通过引用传递参数
今天在看JavaScript高级程序设计(第三版)时,看到了这个问题:ECMAScript中所有参数传递的都是值,不可能通过引用传递参数. 在我的印象中,其他语言比如Java,C++等,传递参数有两种 ...
- NPE问题
“防止 NPE,是程序员的基本修养.”NPE(Null Pointer Exception) 参考: https://www.jianshu.com/p/9915f2e34a13
- vue项目使用history模式打包应该注意的地方
1.在config/index.js中将assetsPublicPath原来的’/‘修改为‘./’. build: { env: require('./prod.env'), index: path. ...
- 《软件调试修炼之道》Part 1(CH1~5)读书笔记 PB16110698 第八周(~4.26)
编程中,调试几乎是必不可少的,一劳永逸.一次完成预想功能而完全不出bug的情况凤毛麟角,出现bug→调试→再出现bug→再调试……基本是软件工程中的常态.可以说,软件调试是每个coder的必修课,而& ...
- PKUSC加油加油加油!
一句话,把学过的掌握的甚至还未掌握的,都用上吧! 1.题目不要再再再看错了!在纸上记下关键字. 2.记得有预处理这个东西可以降低复杂度! 3.仔细阅读数据范围,取值范围的0要注意! 4.不要每次像开新 ...
- Java 基础 - 比较方式选择(什么类型用equals()比较,什么类型用==比较)
ref: https://www.cnblogs.com/lori/p/8308671.html 在 java 中进行比较,我们需要根据比较的类型来选择合适的比较方式: 对象域,使用 equals 方 ...
- 【JZOJ6287】扭动的树
description analysis 区间\(DP\),首先按照键值排个序,这样保证树的中序遍历就为原序列 设\(f[0][i][j]\)表示\([i..j]\)区间作为\([unknown..i ...
- thinkphp 模版引擎
系统支持原生的PHP模板,而且本身内置了一个基于XML的高效的编译型模板引擎,系统默认使用的模板引擎是内置模板引擎,关于这个模板引擎的标签详细使用可以参考模版引擎部分. 内置的大理石平台检定规程模板引 ...
- nginx的配置:目的是使用nginx反向代理后,应用程序获取用户真实ip
一.了解nginx Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的.从2004年发布至今,凭借开源的力量,已经接近成熟与完善. Nginx功能丰富,可作为HT ...