2.Kubernetes组件和部署

2.Kubernetes组件和部署

重点!!!

代码地址在这里:https://github.com/flqandlcq/kubernetes.git 

通过上一章节的学习,想必你对kubernetes已经有了一个较初步的了解,接着本章节将首先就基础组件、集群基础对象和控制器进行详细的介绍和说明,然后辨析集群网络中的三种网络和专有名词,最后关于新手部署测试和生产环境的部署要点进行一些归纳和说明

1.基础组件
在这里插入图片描述

如图所示,kubernetes集群中主要分为三个组件:

1.Master Components
1.kube-apiserver:作为k8s控制平面的前端,也是所有请求接收的入口
2.etcd:k8s集群后端所有集群数据的高可用k/v存储数据库
3.kube-scheduler:监听变更请求,然后通过一系列filtering(过滤)、scoring(打分)策略,调度pod运行
4.kube-controller-manager:一个独立的进程,通过控制循环(control loop),将期望态和运行态保持一致
5.cloud-controller-manager:kubernetes与云厂商提供的服务能力对接的关键组件。

又称kubernetes cloudprovider。
通过这个组件,可以让用户在创建k8s LoadBalancer 类型的service的时候,自动的为用户创建一个阿里云SLB,同时动态的绑定与解绑SLB后端,并且提供了丰富的配置允许用户自定义生成的LoadBalancer。

2.Node Components
1.kubelet:每个node节点的k8s客户端,用于确保pod的运行
2.kube-proxy:确保k8s服务间连接和转发的组件
3.Container Runtime:运行容器的软件引擎,常见的有:Docker, rkt等

3.Addons(附加组件)
1.DNS: 常用的有CoreDNS
2.CNI (flannel, calico, …) :网络插件接口
3.Web UI (Dashboard) :可视化平台
4.Container Resource Monitoring:容器资源监控
5.Cluster-level Logging:负责保存、搜索和查看容器日志

2.基础对象(Objects)
除了上面提到的基础组件之外,kubernetes还提供了丰富的基础对象(Objects),如:

Pod、Service、NameSpace和Volume
我们来看一下这几个基础对象的定义:

1>Pod:你可以理解为一组docker容器的集合,如redis pod、tomcat pod;其通过pod controller负责pod数量的变更通知和执行,和service相互协作,达到动态的特性;
2>Service:类似于服务注册中心eureka,负责上游服务的动态发现、注册和续约;
3>Volume:就是个存储卷,其支持很多类型的存储系统,如分布式存储、临时存储、网络存储等;
4>NameSpace:名称空间,你可以理解为资源的作用域、虚拟围栏;

在这里插入图片描述

这是一张传统架构tomcat请求redis集群于kubernetes集群中的新架构。
如图可知,

1、外部流量首先访问tomcat service,tomcat service再将流量分发至相关的tomcat pod上面;
2、接着,tomcat pod也不是直接访问相关redis pod,而是同理,只访问redis server,redis server负责后续流量的转发。

如果你了解eureka框架,想必你对这张图的理解是很快的。

3.控制器
在这里插入图片描述

另外,kubernetes还包含了更高一层的抽象,称之为控制器(Controllers)。
控制器建立在基础对象之上,并提供了额外、丰富且方便的功能,他们包括:

ReplicaSet、Deployment、DaemonSet、StatefulSet、Job等
注意:这里你只需要先有一个基础概念的了解,对于每个控制器的区别和应用场景,我们后续的章节会逐个讲解。

4.集群网络
如上图所示,kubernetes集群可分为三种网络:节点网络、Pod网络和Service网络。

在kubernetes中,你会碰到以下三种IP,具体如下:

1>node ip: 配置在节点的网卡上,用于表示node节点的ip地址
2>pod ip:配置在容器的虚拟网卡上,用于表示pod资源的ip地址
3>service ip:又称为cluster ip,不进行具体配置,只存在于iptables条目和DNS的解析记录中,用于表示service资源的ip地址

5.部署要点
测试环境:

可以使用单Master节点,单etcd实例;
Node节点按需配置;
存储直接使用Nfs或glusterfs

生产环境:

1>高可用etcd集群(需定期备份etcd数据文件),建立3、5或7个节点,保证一定的冗余能力;
2>Master节点要保证高可用之一:
kube-apiserver是无状态的,可多实例部署,并借助于Haproxy、nginx或keepalived进行vip流量实现多实例冗余;
3>Master节点要保证高可用之二:
kube-scheduler和kube-controller-manager组件只能有一个活动实例,但可以有多个备用(主备模式);

4>Node节点:数量越多,冗余和负载能力就越强;

5>集群存储建议采用Ceph、glusterfs、iSCSI及各种云存储等。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

湫一刀

希望大家多多支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值