前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubernetes:核心概念

Kubernetes:核心概念

作者头像
CNCF
发布2019-12-04 11:25:44
5220
发布2019-12-04 11:25:44
举报
文章被收录于专栏:CNCF

最初在Medium上发布。

https://medium.com/yld-engineering-blog/kubernetes-core-concepts-324ea7028c29

作者:Tom Gallacher, YLD工程师

不需要很难

掌握Kubernetes是非常困难的,因为有如此多的信息漂浮在互联网的海洋上,有时很难找到理解Kubernetes的“核心”信息,尤其是当看到Kubernetes.io的概念页和文档上的信息多么密集时。在这个“Kubernetes”博客系列的第一部分中,我们将探索Kubernetes的核心概念,以获得基本的知识,这样我们就可以一起揭开Kubernetes的神秘面纱。

Kubernetes是什么?

Kubernetes提供了基本基础和构建块,为你的团队构建一个可用于开发和发布的可用平台。

用户可以通过图形用户界面,以及命令式和声明式命令行界面管理Kubernetes集群,旨在管理你的容器化应用程序和服务的整个生命周期。

可以上下伸缩应用程序、执行滚动部署并管理哪些服务应该响应某些请求。它还提供了一个可扩展的开发框架,允许你的团队扩展核心kubernetes基本功能,直到他们高兴为止!以及创建自己概念的选项。

但是,与大多数框架一样,它的缺点之一是缺少了许多现成的功能,无法分类作为一站式解决方案。在标准发行版中,它不包含关于服务如何相互通信的方法(甚至不包含网络组件!),但有其他发行版存在,你也可以构建自己的发行版。

容器(Container)

容器是一个独立的、可执行的软件,它包含运行容器所需的所有内容。例如代码、库和任何外部依赖项。它确保运行的内容是相同的,即使运行在不同的环境中也是如此。这是通过将运行代码与其执行环境隔离来实现的。

这在Linux中是通过使用称为cgroup的API来分割Linux内核的子集来实现的。这提供了与操作系统的高度隔离,但没有虚拟化环境运行时性能的影响,如VMWare、KVM等。

Pod

Pod是Kubernetes中最基本的物件。

Pod是容器的集合,共享存储和网络,有关于如何运行它们的规范。每个Pod获分配自己的IP地址。Pod中的容器共享这个IP地址、端口空间,并且可以通过localhost彼此查找。

Pod应该被看作是短暂的基本功能。

Replicaset

一个replicaset根据提供的模板运行n个Pod。

Replicaset不被直接使用,但是需要理解该资源,因为它是用于在Kubernetes上构建应用程序的基本构建。

Replicaset可以(在指示下)按比例增加或减少所需的Pod数量。

服务(Service)

由于Pod是短暂的(Replicaset通过上下伸Pod的数量来实现这一点),就出现了一个问题;现在,如果没有跟踪拓扑变化的复杂逻辑,几乎不可能引用单个pod。

服务通过提供对Pod的抽象和提供与Pod通信的可寻址方法来解决这个问题。

服务在OSI模型中“第4层”(IP上的TCP/UDP)操作。

部署(Deployment)

部署管理Replicaset,并可用于在应用程序的不同版本之间运行滚动升级。

这是最常用的资源类型,它通过一个接口提供了对Replicaset和Pod的抽象。

在更新此部署的情况下,也就是说,部署应用程序的新版本,部署控制器将创建一个新的Replicaset,并管理从旧版本到新版本的滚动升级。

在Kubernetes 1.11发行版中,部署目前不自动处理回滚。

ConfigMap

设计良好的应用程序应该遵循12因素的应用程序声明,对于应用程序的配置,应该将配置存储在“环境”中。尽管现在常见的安全实践指出,在环境中存储配置可能会导致机密的意外泄漏,因为一些应用程序在失败时抛出了它们的环境,但是配置应该与构建的应用程序分开存储,因为每个环境都有配置更改。(开发、临时、生产)。

ConfigMap允许将配置文件作为环境变量或文件系统挂载到Pod中,从而解决了这个问题。

秘密(Secret)

Secret非常类似于ConfigMap,它们跟名称一样,是“秘密”[1][2][3][4]。

Daemonset

Daemonset确保所有节点运行特定的Pod。这对于在所有节点上运行诸如fluentd之类的日志代理非常有用。

也可以通过使用污点(Taint)略过某些节点。

入口(Ingress)

在大多数情况下,服务和Pod的IP地址只能从Kubernetes集群中访问。服务与互联网流量隔离。

“入口是允许入站连接到达集群服务的规则集合。”

它可以用于负载平衡、终止TLS、提供外部可路由URL等等。一个入口只是另一个Kubernetes资源,然而,在大多数情况下,它需要有一个入口控制器(Ingress Controller)像Nginx或Træfik等。


Kubernetes是一个用于自动化容器编排的平台,使应用程序能够在大量平台上大规模运行,这些平台可以包含处理器体系结构和操作系统的组合,由实现者决定。


使用这些核心概念,Kubernetes可以将Pod编排到适当的节点上,由Kubernetes实现多种算法(如Bin Packing)来控制,以确保Pod的最大密度,从而实现更高的硬件容量利用率。


[1] https://medium.com/google-cloud/kubernetes-configmaps-and-secrets-68d061f7ab5b

[2] https://medium.com/google-cloud/kubernetes-configmaps-and-secrets-part-2-3dc37111f0dc

[3] https://kubernetes.io/docs/concepts/configuration/secret/

[4] https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/

作者:Tom Gallacher - YLD工程师。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档