K8s介绍及安装

K8s介绍及安装,第1张

参考:
K8s介绍:https://www.cnblogs.com/chiangchou/p/k8s-1.html
K8s安装:https://www.jianshu.com/p/a6abdc6f76e1

K8s是什么

毫无疑问,K8s是目前云原生时代最优秀、最适合用来做容器技术的分布式架构解决方案,可以说K8s就是为了云原生时代大规模的容器编排而生的,大大提高了资源的利用效率。

K8s来自 Google 云平台的开源容器集群管理系统,前身为Google内部使用的Brog,在Google内部已经有十几年的应用历史,非常成熟及高效。

K8s全名为Kubernetes,Kubernetes在希腊语中意思是船长或领航员,这也恰好与它在容器集群管理中的作用吻合,即作为装载了集装箱(Container)的众多货船的指挥者,负担着全局调度和运行监控的职责。

K8s主要特性

① 自我修复

在节点故障时,重新启动失败的容器,替换和重新部署,保证预期的副本数量;杀死健康检查失败的容器,并且在未准备好之前不会处理用户的请求,确保线上服务不中断。

② d性伸缩

使用命令、UI或者基于CPU使用情况自动快速扩容和缩容应用程序实例,保证应用业务高峰并发时的高可用性;业务低峰时回收资源,以最小成本运行服务。

③ 自动部署和回滚

K8S采用滚动更新策略更新应用,一次更新一个Pod,而不是同时删除所有Pod,如果更新过程中出现问题,将回滚更改,确保升级不影响业务。

④ 服务发现和负载均衡

K8S为多个容器提供一个统一访问入口(内部IP地址和一个DNS名称),并且负载均衡关联的所有容器,使得用户无需考虑容器IP问题。

⑤ 机密和配置管理

管理机密数据和应用程序配置,而不需要把敏感数据暴露在镜像里,提高敏感数据安全性。并可以将一些常用的配置存储在K8S中,方便应用程序使用。

⑥ 存储编排

挂载外部存储系统,无论是来自本地存储,公有云,还是网络存储,都作为集群资源的一部分使用,极大提高存储使用灵活性。

⑦ 批处理

提供一次性任务,定时任务;满足批量数据处理和分析的场景。

K8s架构图

下面是K8s的架构图以及所包含的主要组件:

一个 Kubernetes 集群一般包含一个 Master 节点(也可以包含多个 Master 节点)和多个 Node 节点,一个节点可以看成是一台物理机或虚拟机。

K8s组件 Master

Master是集群控制节点,管理和控制整个集群,基本上k8s的所有控制命令都发给它,Master 节点通常会占据一个独立的服务器,因为它太重要了,如果它不可用,那么所有的控制命令都将失效,Master节点上运行着以下关键组件:

  • kube-apiserver:是集群控制的统一入口,以 HTTP Rest 提供接口服务,所有对K8s集群的 *** 作都是通过ApiServer来调用。
  • kube-controller-manager:k8s中所有资源对象(pod、node、server等)的自动化控制中心,维护管理集群的状态,比如故障检测,自动扩展,滚动更新等,资源控制的最小单位为Pod。
  • kube-scheduler:根据调度算法为新创建的 Pod 选择一个 Node 节点,可以任意部署,可以部署在同一个节点上,也可以部署在不同的节点上。
  • etcd:是一个分布式的,一致的 key-value 存储,主要用途是共享配置和服务发现,保存集群状态数据,比如 Pod、Service 等对象信息。
Node

除了 Master,K8S 集群中的其它机器被称为 Node 节点,Node 节点是 K8S 集群中的工作负载节点,每个 Node 都会被 Master 分配一些工作负载,当某个 Node 宕机时,其上的工作负载会被 Master 自动转移到其它节点上去。,Node节点上运行着以下关键组件:

  • kubelet:是 Master 在 Node 节点上的 Agent(代理),负责Pod对应的容器的创建、启停等任务,同时与Master密切协作,实现集群管理的基本功能。
  • kube-proxy:在 Node 节点上实现 Pod 网络代理,实现 Kubernetes Service 的通信,维护网络规则和四层负载均衡工作。
  • docker(Docker Engine):Docker引擎,负责本机的容器创建和管理

Node 节点可以在运行期间动态增加到 K8S 集群中,前提是这个节点上已经正确安装、配置和启动了上述关键组件。在默认情况下 kubelet 会向 Master 注册自己,一旦 Node 被纳入集群管理范围,kubelet 就会定时向 Master 节点汇报自身的情况,例如 *** 作系统、Docker 版本、机器的 CPU 和内存情况,以及之前有哪些 Pod 在运行等,这样 Master 可以获知每个 Node 的资源使用情况,并实现高效均衡的资源调度策略。而某个 Node 超过指定时间不上报信息时,会被 Master 判定为“失联”,Node 的状态被标记为不可用(Not Ready),随后 Master 会触发“工作负载大转移”的自动流程。

核心概念
  • Master: 集群控制节点,每个集群至少要有一个控制节点负责集群的管控。
  • Node: 工作负载节点,由 Master 分配容器到这些 Node 工作节点上,然后Node节点上的docker负责容器的运行
  • Pod:K8s最小控制单元,容器都是运行在Pod中,一个Pod中可以有多个容器运行。
  • Controller: 控制器,通过它实现对Pod的管理,比如启动Pod、停止Pod、伸缩Pod的数量等等。
  • Service: Pod对外服务的统一入口,下面可以维护同一类的多个Pod。
  • Label: 标签,用于对Pod进行分类,同一类Pod拥有相同的标签。
  • NameSpace:命名空间,用来隔离Pod的运行环境。
K8s安装

我这边使用的是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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/917072.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存