开发者社区> 李啊隆> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

k8s容器

简介: 容器
+关注继续查看

1.k8s是Kubernetes
2.什么是容器引擎?
容器引擎允许你绑定和运行一个应用在一个容器里,这是一个松散隔离的环境。由于隔离性和安全性,你可以在一台主机上操作多个容器。

容器引擎利用了操作系统的内核资源隔离特性,可以在同一个操作系统上运行多个容器。人们通常把容器引擎比作虚拟机(VMs)。

另一方面,虚拟机利用物理硬件资源抽象层之上可执行代码封装了整个操作系统。

3.什么是容器?
一个容器镜像是一个可运行的软件包,其中包含了一个完整的可执行程序,包括代码和运行时需要应用、系统库和全部重要设置的默认值。

应用程序通过使用容器与底层的宿主机架构解耦。如下图所示,我们可以利用底层机器在容器引擎之上运行多个容器。这促进了容器在各种操作系统和云场景中的部署。

容器通过容易扩展和部署应用程序的特性帮助企业实现现代化。然而,重新建立一个全新的基础环境,容器也带来了额外的问题和复杂性。

每天有数千个容器实例被大型和小型软件组织部署,这给他们的管理带来了持续增长的挑战。那么,他们是如何做到的呢?

4.什么是容器编排?
容器编排与容器的生命周期管理相关,特别是在大型动态环境中。软件团队用容器编排器来控制和自动化容器管理的各种任务。

容器编排器可以工作在使用容器的任何环境。它可以帮助你在多个环境中部署相同的程序,而不需要重新编写它。

5.容器编排工具
容器编排技术提供了一个控制容器和微服架构的框架。容器生命周期管理可以通过各种容器编排器解决方案来实现,Kubernetes、Docker Swarm和Apache Mesos是三种常见的解决方案/编排工具。

Docker Swarm是Docker原生工具,非常容易安装和配置。K8s需要大量手工干预来配置其组件,例如 etcd、flannel 和 docker 引擎。

与其他工具相比,K8s凭借其各种优势和功能特性在行业占据主导地位。

6.什么是K8s?
K8s是一个最初由Google开发的,用于自动化部署、扩展和管理容器化应用的开源容器编排器技术。

K8s使部署和管理微服务架构应用程序变得很简单。它通过在集群之上形成一个抽象层来实现这一点,允许开发团队平滑地部署应用程序,而 K8s主要处理以下任务:

控制和管理应用程序对资源的使用

自动负载均衡应用程序的多个实例之间请求

监控资源使用和资源限制,为了可以自动阻止应用消耗过多的资源并且可以再次恢复它们

如果主机资源耗尽或主机死机,将应用程序实例从一台主机迁移到另一台主机是一个可行的选项

当有新的主机加入集群时,新增加的额外资源可以被自动使用

7.为什么市场推荐K8s
K8s是第一个由云原生计算基金会(Cloud Native Computing Foundation, CNCF)和谷歌基金会倡议的项目,是继Linux之后增长最快的开源软件项目。

为什么现在有很多企业依赖K8s来满足他们的容器编排需求? 原因有很多:

可移植性和灵活性:K8s有很强的兼容性,因为它可以在各种基础设施和环境设置下运行。大多数其他编排器没有这种灵活性。它们被锁定在特定的运行时或基础架构中。

开源:CNCF负责管理K8s,这是一个完全开源、由社区驱动的项目。它有许多重要的企业赞助商,但没有一家公司能“控制”这个平台或者控制它的发展方向。

多云兼容性:K8s不但可以将工作负载托管在单个云上,而且可以将工作负载分布在多个云上。 K8s也能轻松地将其环境从一个云扩展到另一个云。虽然其它编排器也能支持多云架构,但K8s在多云兼容性性方面可以完全超越它们。

市场领导者:大部分公司都在使用K8s。根据红帽公司的一项调查,K8s被客户广泛使用 (88%),尤其在生产环境中(74%)。

8.K8s架构
K8s是一个架构良好的分布式系统的例子。它将集群中的所有机器都视为单个资源池的一部分。

K8s与其他成熟的分布式系统一样,有两层:头节点和工作节点。

头节点或主节点由控制面和工作节点应用程序组成。一个K8s集群由许多头节点和工作节点组成。

K8s引入了很多术语来描述应用程序的结构。 我们将带大家学习每个术语。

9.K8s组件
头节点/主节点和工作节点由它自己的组件组成,可以确保编排器稳定地运行。

控制平面
控制平面是管理员和用户管理不同节点的地方。它通过HTTP调用接收命令或者连接到系统并且运行命令行脚本。顾名思义,它控制了K8s与应用程序的交互方式。

API 服务器
API 服务器为K8s集群提供了一个REST接口。 所有在pod上激活的服务和别的对象都是可以用可编程的方式与与终端进行交互。

调度器
调度器负责将任务分配给各个节点。它监控资源容量并保证工作节点的性能保持在可接受的范围内。

控制器管理器
K8s控制器管理器是管理K8s核心控制循环的服务。它负责确保集群的共享状态正常运行。

Etcd
K8s使用了Etcd,一个提供分布式键值存储的数据库,用来共享集群的整体状态的信息。

节点
节点是运行了pod的物理机或虚拟机。控制平面管理集群中的每个节点,该节点包含运行 pod所需的服务。

Pods
K8s pod 是K8s管理容器集的最小单位。 每个pod有一个分配给pod中的所有容器的单独的IP 地址。在pod中的容器内存和存储资源是共享的。当应用程序只有一个进程时,pod 也可以有一个容器。

Kubelet
Kubelet是一个工作节点组件。它的任务是跟踪pod及其容器的运行状态。它与pod的YAML 或JSON描述文件相关。Kubelet检查 pod 规格并确定 pod 是否健康。

Kube代理
Kube代理是一个网络代理和负载均衡器,充当每个节点和API服务器之间的连接。它在集群中的每个节点上运行,并允许你从内部和外部连接到pod。

Kubectl
Kubectl是K8s的命令行工具。它用于部署应用程序、监控和控制集群资源以及查看日志。

从用户的角度来看,Kubectl 是你的K8s的控制面板。它使你能够执行所有K8s操作。从技术角度来看,Kubectl 是K8s API的客户端。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
企业级运维之云原生与Kubernetes实战课程 - 第四章第4讲 ACK集群弹性伸缩
弹性伸缩是根据业务需求和策略,经济地自动调整弹性计算资源的管理服务。
131 0
使用ip-masq-agent灵活的控制容器服务Kubernetes集群的SNAT规则
在容器服务的集群中,默认情况下的flannel会对POD访问到非POD的网段做SNAT,以确保POD到集群外部的资源访问,但在某些情况下,比如在容器服务的VPC集群中,POD到集群外部的资源是直接可以访问的,这时我们就可以自己定义节点上的SNAT规则,而达到直接用容器IP访问VPC内其他服务。
4549 0
手动安装kubernetes 1.8.3 高可用集群
kubernetes 1.8.3双master部署,以保证集群高可用。
2908 0
阿里云上弹性伸缩kubernetes集群 - autoscaler
阿里云Kubernetes服务简化了K8S集群的创建、升级和手动扩缩容。然而使用Kubernetes集群经常问到的一个问题是,我应该保持多大的节点规模来满足应用需求呢? Autoscaler的出现解决了这个问题,它可以自动的根据部署的应用所请求的资源量来动态的伸缩集群。
12318 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
如何让k8s集群30s扩容3000个Pod
立即下载
《当 K8s 遇到机密计算,阿里巴巴如何保护容器内数据的安全?》
立即下载
阿里云开源容器技术:K8S on 阿里云
立即下载