Kubernetes
是一款 容器编排工具,以下 简称k8s
(k到s中间有8个字母所以是k8s),为了更快的入门k8s我们首先要对k8s的一些概念有所了解。
官方定义的k8s是能够对容器化软件进行部署和管理,也就是可以在不停机的情况下提供简单快速的发布和更新方式。简单点来说,**如果项目需要多机器节点的微服务架构,并且采用的是Docker进行容器化部署的,那么k8s就可以帮我们屏蔽集群的复杂性,自动选择最优资源分配方式进行部署。**k8s提供简单的多实例部署及更新方案,几个命令就可以实现。
为了理解Kubernetes的用处,我们先回顾部署应用的历史。
在部署应用上经历了以上三个时代:
传统部署:应用直接部署到物理机上,缺陷很明显!有的应用占用资源多,有的占用资源少,这就造成了资源分配不均、利用率不足的情况。
虚拟机部署:针对上述问题,虚拟化技术应运而生。用户可以在单台物理机的cpu上运行多个虚拟机。
容器化部署时代:容器与虚拟机类似,它降低了隔离层级,共享了OS。所以,容器可以认为是轻量级的
k8s可以通过ip地址暴露容器的的访问方式,在同组容器中可实现负载均衡
k8s可以自动挂在指定的存储系统,nfs、云存储…
我们可以在k8s中声明应用程序容器应该达到的状态,K8s将以合适的速率调整容器的状态,并自动达到期望的效果
replicas
字段的规定时,启动一个新的 Pod)为了简介性,master组件运行在同一台机器上(master)
这个组件提供K8s的API。它属于k8s平台的前端,可以水平扩展也就是加服务器数量以提高性能。像后面会用到的kubectl/ kubernetes dashboard / kuboard 等k8s的管理工具其本质上就是调用了k8s的api实现了对k8s集群的管理。
存储组件,k8s集群相关的配置信息都存储在etcd里。更多信息可以看官方文档
此组件监控所有新创建尚未分配到节点上的 Pod,而且自动的为pod选择一个合适的节点运行
就像它的名字一样,所有的控制器都被它管理
它包含的控制器有:
cloud-controller-manager 中运行了与具体云基础设施供应商互动的控制器。
Node 组件运行在每一个节点上(包括 master 节点和 worker 节点),负责维护运行中的 Pod 并提供 Kubernetes 运行时环境
此组件是运行在每一个集群节点上的代理程序。它确保 Pod 中的容器处于运行状态。
kube-proxy
是一个网络代理程序,运行在集群中的每一个节点上,是实现 Kubernetes Service 概念的重要部分。
kube-proxy 在节点上维护网络规则。这些网络规则使得您可以在集群内、集群外正确地与 Pod 进行网络通信。
容器引擎负责运行容器。
Addons 使用 Kubernetes 资源(DaemonSet、Deployment等)实现集群的功能特性。由于他们提供集群级别的功能特性,addons使用到的Kubernetes资源都放置在 kube-system
名称空间下。
除了 DNS Addon 以外,其他的 addon 都不是必须的,所有 Kubernetes 集群都应该有 Cluster DNS
Cluster DNS 是一个 DNS 服务器,是对您已有环境中其他 DNS 服务器的一个补充,存放了 Kubernetes Service 的 DNS 记录。
如果安装过K8s集群的话对这个组件会有印象
Dashboard (opens new window)
是一个Kubernetes集群的 Web 管理界面。用户可以通过该界面管理集群。
将容器的度量指标(metrics)记录在时间序列数据库中,并提供了 UI 界面查看这些数据
将容器的日志存储到一个统一存储中,并提供搜索浏览的界面
Kuboard是一款基于Kubernetes的微服务管理界面,相较于 Dashboard,Kuboard 强调:
KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统
提供全栈的 IT 自动化运维能力,简化企业的 DevOps 工作流。