Kubernetes是目前很多大企业都选择的一个容器平台,Kubernetes经过这么多年的更新迭代,到现在已经比较成熟了。有些企业选择使用Kubernetes,肯定做了很多准备,有的没有使用或者说使用了一段时间又不用了,可能是准备的不充分,或者使用者没有考虑周全的原因。这里我就把我使用的一些经验做一个分享,有不足之处,还望多多理解并留言提出来,大家一起改进。
Kubernetes简介
Kubernetes又称k8s,因为Kubernetes的第一个字母和最后一个字母间隔8个字母所以简称k8s。Kubernetes主要包括两种资源分别是Master和Nodes节点。Master主要负责集群的管理和协调集群中的所有行为或活动,例如:应用的运行、修改、更新等。应用程序运行在Nodes节点上,每个Nodes节点有一个Kubelet,负责和Kubernetes master通信,还要有一个container runtime(CRI)负责管理镜像以及pod和容器的运行。首先,我们要理解master和node都是运行在宿主机上的,master里安装了哪些程序如何和node通信,管理node中的pod以及pod中的容器的,别急,慢慢来。先看一个效果图
Kubernetes包含以下几个核心组件:
* etcd 保存Kubernetes Cluster的配置信息和各种资源的信息,一旦数据发生变化,会快速的通知其他组件; * apiserver 提供资源操作入口,并提供认证,授权,访问控制,API注册和发现等机制; * controller manager 负责集群的状态,比如故障检测,自动扩展,滚动更新等; * scheduler 负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上; * kubelet 负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理; * Container runtime负责镜像管理以及Pod和容器的真正运行(CRI); * kube-proxy 负责为Service提供cluster内部的服务发现和负载均衡; * flannel网络 负责各个节点上的pod通信,也可以使用calico(两者的区别请查看flannel和calico)
Kubernetes其他组件
除了核心的组件外,推荐几个比较常用的组件
* kube-dns 负责为整个集群提供DNS服务 * Ingress Controller为服务提供外网入口 * Heapster 提供资源监控 * Dashboard提供GUI * Federation提供跨可用区的集群 * Fluentd-elasticsearch提供集群日志采集,存储与查询
Kubernetes特点
* 快速部署应用 * 快速扩展应用 * 无缝对接新的应用功能 * 节省资源,优化硬件资源的使用 * 可移植:支持公有云,私有云,混合云,多重云(multi-cloud) * 可扩展:模块化,插件化,可挂载,可组合 * 自动化:自动部署,自动重启,自动复制,自动伸缩/扩展
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏