|
什么是kubernetes? 首先,他是一个全新的基于容器技术的分布式架构领先方案。Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg)。
在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能。 Kubernetes是一个完备的分布式系统支撑平台,具有完备的集群管理能力,多扩多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、內建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力![](http://i2.51cto.com/images/blog/201806/30/a45d63dac8ce914f37afc52e58f2800a.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)。同时Kubernetes提供完善的管理工具,涵盖了包括开发、部署测试、运维监控在内的各个环节。提高了大规模容器集群管理的便捷性。
Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。
作用:
1. 自动化容器的部署和复制
2. 随时扩展或收缩容器规模
3. 将容器组织成组,并且提供容器间的负载均衡
4. 很容易地升级应用程序容器的新版本
4. 提供容器弹性,如果容器失效就替换它
Kubernetes解决的问题:
1. 调度 - 容器应该在哪个机器上运行
2. 生命周期和健康状况 - 容器在无错的条件下运行
3. 服务发现 - 容器在哪,怎样与它通信
4. 监控 - 容器是否运行正常
5. 认证 - 谁能访问容器
6. 容器聚合 - 如何将多个容器合并成一个工程
Kubernetes组件组成:
1. kubectl
客户端命令行工具,将接受的命令格式化后发送给kube-apiserver,作为整个系统的操作入口。
2. kube-apiserver
作为整个系统的控制入口,以REST API服务提供接口。
3. kube-controller-manager
用来执行整个系统中的后台任务,包括节点状态状况、Pod个数、Pods和Service的关联等。
4. kube-scheduler
负责节点资源管理,接受来自kube-apiserver创建Pods任务,并分配到某个节点。
5. etcd
负责节点间的服务发现和配置共享。
6. kube-proxy
运行在每个计算节点上,负责Pod网络代理。定时从etcd获取到service信息来做相应的策略。
7. kubelet
运行在每个计算节点上,作为agent,接受分配该节点的Pods任务及管理容器,周期性获取容器状态,反馈给kube-apiserver。
8. DNS
一个可选的DNS服务,用于为每个Service对象创建DNS记录,这样所有的Pod就可以通过DNS访问服务了。
搭建k8s环境
Master节点必需组件
etcd非关系型数据库
kube-apiserver核心组件,所有组件均与其通信,提供Http Restful接口
kube-controller-manager集群内部管理中心,负责各类资源管理,如RC,Pod,命名空间
kube-scheduler调度组件,负责node的调度
Node节点必需组件
kubelet Node节点中核心组件,负责执行Master下发的任务
kube-proxy 代理,负责kubelet与apiserver网络。相当于负载均衡,将请求转到后端pod中
步骤:
Master节点:
1.安装etcd数据库,通过yum安装即可,yum -y install etcd
2.解压原码包,并把server/bin/目录加入PATH中
/usr/bin/tar -zxf kubernetes-server-linux-amd64.tar.gz
echo export PATH=$PATH:/kubernetes/server/bin >> /etc/profile
3.
|
|
|