
参考:
K8s介绍:https://www.cnblogs.com/chiangchou/p/k8s-1.html
K8s安装:https://www.jianshu.com/p/a6abdc6f76e1
毫无疑问,K8s是目前云原生时代最优秀、最适合用来做容器技术的分布式架构解决方案,可以说K8s就是为了云原生时代大规模的容器编排而生的,大大提高了资源的利用效率。
K8s来自 Google 云平台的开源容器集群管理系统,前身为Google内部使用的Brog,在Google内部已经有十几年的应用历史,非常成熟及高效。
K8s全名为Kubernetes,Kubernetes在希腊语中意思是船长或领航员,这也恰好与它在容器集群管理中的作用吻合,即作为装载了集装箱(Container)的众多货船的指挥者,负担着全局调度和运行监控的职责。
K8s主要特性① 自我修复
在节点故障时,重新启动失败的容器,替换和重新部署,保证预期的副本数量;杀死健康检查失败的容器,并且在未准备好之前不会处理用户的请求,确保线上服务不中断。
② 弹性伸缩
使用命令、UI或者基于CPU使用情况自动快速扩容和缩容应用程序实例,保证应用业务高峰并发时的高可用性;业务低峰时回收资源,以最小成本运行服务。
③ 自动部署和回滚
K8S采用滚动更新策略更新应用,一次更新一个Pod,而不是同时删除所有Pod,如果更新过程中出现问题,将回滚更改,确保升级不影响业务。
④ 服务发现和负载均衡
K8S为多个容器提供一个统一访问入口(内部IP地址和一个DNS名称),并且负载均衡关联的所有容器,使得用户无需考虑容器IP问题。
⑤ 机密和配置管理
管理机密数据和应用程序配置,而不需要把敏感数据暴露在镜像里,提高敏感数据安全性。并可以将一些常用的配置存储在K8S中,方便应用程序使用。
⑥ 存储编排
挂载外部存储系统,无论是来自本地存储,公有云,还是网络存储,都作为集群资源的一部分使用,极大提高存储使用灵活性。
⑦ 批处理
提供一次性任务,定时任务;满足批量数据处理和分析的场景。
K8s架构图下面是K8s的架构图以及所包含的主要组件:
一个 Kubernetes 集群一般包含一个 Master 节点(也可以包含多个 Master 节点)和多个 Node 节点,一个节点可以看成是一台物理机或虚拟机。
K8s组件 MasterMaster是集群控制节点,管理和控制整个集群,基本上k8s的所有控制命令都发给它,Master 节点通常会占据一个独立的服务器,因为它太重要了,如果它不可用,那么所有的控制命令都将失效,Master节点上运行着以下关键组件:
除了 Master,K8S 集群中的其它机器被称为 Node 节点,Node 节点是 K8S 集群中的工作负载节点,每个 Node 都会被 Master 分配一些工作负载,当某个 Node 宕机时,其上的工作负载会被 Master 自动转移到其它节点上去。,Node节点上运行着以下关键组件:
Node 节点可以在运行期间动态增加到 K8S 集群中,前提是这个节点上已经正确安装、配置和启动了上述关键组件。在默认情况下 kubelet 会向 Master 注册自己,一旦 Node 被纳入集群管理范围,kubelet 就会定时向 Master 节点汇报自身的情况,例如操作系统、Docker 版本、机器的 CPU 和内存情况,以及之前有哪些 Pod 在运行等,这样 Master 可以获知每个 Node 的资源使用情况,并实现高效均衡的资源调度策略。而某个 Node 超过指定时间不上报信息时,会被 Master 判定为“失联”,Node 的状态被标记为不可用(Not Ready),随后 Master 会触发“工作负载大转移”的自动流程。
核心概念我这边使用的是M1芯片的Mac,装的是Docker Desktop,下面的安装方法主要也是基于M1的Docker Deskto进行K8s的安装,其他安装方法可以自行搜索一下,我自己的安装方法也是在网上根据教程一步步来的= =!
前置条件,必须安装好Docker Desktop,并保证版本较新,我这边的版本是:
第一步 克隆详细 git clone https://github.com/gotok8s/k8s-docker-desktop-for-mac.git 第二步 进入 k8s-docker-desktop-for-mac项目,拉取镜像 ./load_images.sh
执行完上面两步后,Docker Desktop就已经准备好安装K8s所需要的所有镜像了。
第三步 打开docker 配置页面,enable k8s。需要等k8s start一会
如果安装成功,则会显示kubernetes running,并且在Docker Desktop界面可以看到K8s running的标志。
然后我们就可以在本机通过命令验证一下K8s是否安装成功
验证 $ kubectl cluster-info $ kubectl get nodes $ kubectl describe node